new static files.
Signed-off-by: rscnt <rascnt@gmail.com>
							
								
								
									
										847
									
								
								static/admin/css/base.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,847 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					    DJANGO Admin styles
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					body {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    font-size: 12px;
 | 
				
			||||||
 | 
					    font-family: "Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif;
 | 
				
			||||||
 | 
					    color: #333;
 | 
				
			||||||
 | 
					    background: #fff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LINKS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a:link, a:visited {
 | 
				
			||||||
 | 
					    color: #5b80b2;
 | 
				
			||||||
 | 
					    text-decoration: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a:hover {
 | 
				
			||||||
 | 
					    color: #036;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a img {
 | 
				
			||||||
 | 
					    border: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a.section:link, a.section:visited {
 | 
				
			||||||
 | 
					    color: #fff;
 | 
				
			||||||
 | 
					    text-decoration: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* GLOBAL DEFAULTS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					p, ol, ul, dl {
 | 
				
			||||||
 | 
					    margin: .2em 0 .8em 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					p {
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    line-height: 140%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					h1,h2,h3,h4,h5 {
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					h1 {
 | 
				
			||||||
 | 
					    font-size: 18px;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    padding: 0 6px 0 0;
 | 
				
			||||||
 | 
					    margin: 0 0 .2em 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					h2 {
 | 
				
			||||||
 | 
					    font-size: 16px;
 | 
				
			||||||
 | 
					    margin: 1em 0 .5em 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					h2.subhead {
 | 
				
			||||||
 | 
					    font-weight: normal;
 | 
				
			||||||
 | 
					    margin-top: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					h3 {
 | 
				
			||||||
 | 
					    font-size: 14px;
 | 
				
			||||||
 | 
					    margin: .8em 0 .3em 0;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					h4 {
 | 
				
			||||||
 | 
					    font-size: 12px;
 | 
				
			||||||
 | 
					    margin: 1em 0 .8em 0;
 | 
				
			||||||
 | 
					    padding-bottom: 3px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					h5 {
 | 
				
			||||||
 | 
					    font-size: 10px;
 | 
				
			||||||
 | 
					    margin: 1.5em 0 .5em 0;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    text-transform: uppercase;
 | 
				
			||||||
 | 
					    letter-spacing: 1px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul li {
 | 
				
			||||||
 | 
					    list-style-type: square;
 | 
				
			||||||
 | 
					    padding: 1px 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.plainlist {
 | 
				
			||||||
 | 
					    margin-left: 0 !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.plainlist li {
 | 
				
			||||||
 | 
					    list-style-type: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					li ul {
 | 
				
			||||||
 | 
					    margin-bottom: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					li, dt, dd {
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    line-height: 14px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dt {
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					    margin-top: 4px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dd {
 | 
				
			||||||
 | 
					    margin-left: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					form {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fieldset {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					blockquote {
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    color: #777;
 | 
				
			||||||
 | 
					    margin-left: 2px;
 | 
				
			||||||
 | 
					    padding-left: 10px;
 | 
				
			||||||
 | 
					    border-left: 5px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					code, pre {
 | 
				
			||||||
 | 
					    font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace;
 | 
				
			||||||
 | 
					    background: inherit;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pre.literal-block {
 | 
				
			||||||
 | 
					    margin: 10px;
 | 
				
			||||||
 | 
					    background: #eee;
 | 
				
			||||||
 | 
					    padding: 6px 8px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					code strong {
 | 
				
			||||||
 | 
					    color: #930;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					hr {
 | 
				
			||||||
 | 
					    clear: both;
 | 
				
			||||||
 | 
					    color: #eee;
 | 
				
			||||||
 | 
					    background-color: #eee;
 | 
				
			||||||
 | 
					    height: 1px;
 | 
				
			||||||
 | 
					    border: none;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    font-size: 1px;
 | 
				
			||||||
 | 
					    line-height: 1px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* TEXT STYLES & MODIFIERS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.small {
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tiny {
 | 
				
			||||||
 | 
					    font-size: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					p.tiny {
 | 
				
			||||||
 | 
					    margin-top: -2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.mini {
 | 
				
			||||||
 | 
					    font-size: 9px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					p.mini {
 | 
				
			||||||
 | 
					    margin-top: -3px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.help, p.help {
 | 
				
			||||||
 | 
					    font-size: 10px !important;
 | 
				
			||||||
 | 
					    color: #999;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					img.help-tooltip {
 | 
				
			||||||
 | 
					    cursor: help;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					p img, h1 img, h2 img, h3 img, h4 img, td img {
 | 
				
			||||||
 | 
					    vertical-align: middle;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.quiet, a.quiet:link, a.quiet:visited {
 | 
				
			||||||
 | 
					    color: #999 !important;
 | 
				
			||||||
 | 
					    font-weight: normal !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.quiet strong {
 | 
				
			||||||
 | 
					    font-weight: bold !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.float-right {
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.float-left {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.clear {
 | 
				
			||||||
 | 
					    clear: both;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.align-left {
 | 
				
			||||||
 | 
					    text-align: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.align-right {
 | 
				
			||||||
 | 
					    text-align: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.example {
 | 
				
			||||||
 | 
					    margin: 10px 0;
 | 
				
			||||||
 | 
					    padding: 5px 10px;
 | 
				
			||||||
 | 
					    background: #efefef;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.nowrap {
 | 
				
			||||||
 | 
					    white-space: nowrap;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* TABLES */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table {
 | 
				
			||||||
 | 
					    border-collapse: collapse;
 | 
				
			||||||
 | 
					    border-color: #ccc;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					td, th {
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    line-height: 13px;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #eee;
 | 
				
			||||||
 | 
					    vertical-align: top;
 | 
				
			||||||
 | 
					    padding: 5px;
 | 
				
			||||||
 | 
					    font-family: "Lucida Grande", Verdana, Arial, sans-serif;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					th {
 | 
				
			||||||
 | 
					    text-align: left;
 | 
				
			||||||
 | 
					    font-size: 12px;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					thead th,
 | 
				
			||||||
 | 
					tfoot td {
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    padding: 2px 5px;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;
 | 
				
			||||||
 | 
					    border-left: 1px solid #ddd;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tfoot td {
 | 
				
			||||||
 | 
					    border-bottom: none;
 | 
				
			||||||
 | 
					    border-top: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					thead th:first-child,
 | 
				
			||||||
 | 
					tfoot td:first-child {
 | 
				
			||||||
 | 
					    border-left: none !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					thead th.optional {
 | 
				
			||||||
 | 
					    font-weight: normal !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fieldset table {
 | 
				
			||||||
 | 
					    border-right: 1px solid #eee;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tr.row-label td {
 | 
				
			||||||
 | 
					    font-size: 9px;
 | 
				
			||||||
 | 
					    padding-top: 2px;
 | 
				
			||||||
 | 
					    padding-bottom: 0;
 | 
				
			||||||
 | 
					    border-bottom: none;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    margin-top: -1px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tr.alt {
 | 
				
			||||||
 | 
					    background: #f6f6f6;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.row1 {
 | 
				
			||||||
 | 
					    background: #EDF3FE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.row2 {
 | 
				
			||||||
 | 
					    background: #fff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* SORTABLE TABLES */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					thead th {
 | 
				
			||||||
 | 
					    padding: 2px 5px;
 | 
				
			||||||
 | 
					    line-height: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					thead th a:link, thead th a:visited {
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					thead th.sorted {
 | 
				
			||||||
 | 
					    background: #c5c5c5 url(../img/nav-bg-selected.gif) top left repeat-x;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					thead th.sorted .text {
 | 
				
			||||||
 | 
					    padding-right: 42px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table thead th .text span {
 | 
				
			||||||
 | 
					    padding: 2px 5px;
 | 
				
			||||||
 | 
					    display:block;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table thead th .text a {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					    padding: 2px 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table thead th.sortable:hover {
 | 
				
			||||||
 | 
					    background: #fff url(../img/nav-bg-reverse.gif) 0 -5px repeat-x;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					thead th.sorted a.sortremove {
 | 
				
			||||||
 | 
					    visibility: hidden;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table thead th.sorted:hover a.sortremove {
 | 
				
			||||||
 | 
					    visibility: visible;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table thead th.sorted .sortoptions {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    padding: 4px 5px 0 5px;
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					    text-align: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table thead th.sorted .sortpriority {
 | 
				
			||||||
 | 
					    font-size: .8em;
 | 
				
			||||||
 | 
					    min-width: 12px;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    vertical-align: top;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table thead th.sorted .sortoptions a {
 | 
				
			||||||
 | 
					    width: 14px;
 | 
				
			||||||
 | 
					    height: 12px;
 | 
				
			||||||
 | 
					    display: inline-block;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table thead th.sorted .sortoptions a.sortremove {
 | 
				
			||||||
 | 
					    background: url(../img/sorting-icons.gif) -4px -5px no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table thead th.sorted .sortoptions a.sortremove:hover {
 | 
				
			||||||
 | 
					    background: url(../img/sorting-icons.gif) -4px -27px no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table thead th.sorted .sortoptions a.ascending {
 | 
				
			||||||
 | 
					    background: url(../img/sorting-icons.gif) -5px -50px no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table thead th.sorted .sortoptions a.ascending:hover {
 | 
				
			||||||
 | 
					    background: url(../img/sorting-icons.gif) -5px -72px no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table thead th.sorted .sortoptions a.descending {
 | 
				
			||||||
 | 
					    background: url(../img/sorting-icons.gif) -5px -94px no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table thead th.sorted .sortoptions a.descending:hover {
 | 
				
			||||||
 | 
					    background: url(../img/sorting-icons.gif) -5px -115px no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ORDERABLE TABLES */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table.orderable tbody tr td:hover {
 | 
				
			||||||
 | 
					    cursor: move;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table.orderable tbody tr td:first-child {
 | 
				
			||||||
 | 
					    padding-left: 14px;
 | 
				
			||||||
 | 
					    background-image: url(../img/nav-bg-grabber.gif);
 | 
				
			||||||
 | 
					    background-repeat: repeat-y;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table.orderable-initalized .order-cell, body>tr>td.order-cell {
 | 
				
			||||||
 | 
					    display: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* FORM DEFAULTS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					input, textarea, select, .form-row p {
 | 
				
			||||||
 | 
					    margin: 2px 0;
 | 
				
			||||||
 | 
					    padding: 2px 3px;
 | 
				
			||||||
 | 
					    vertical-align: middle;
 | 
				
			||||||
 | 
					    font-family: "Lucida Grande", Verdana, Arial, sans-serif;
 | 
				
			||||||
 | 
					    font-weight: normal;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					textarea {
 | 
				
			||||||
 | 
					    vertical-align: top !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					input[type=text], input[type=password], input[type=email], input[type=url], input[type=number],
 | 
				
			||||||
 | 
					textarea, select, .vTextField {
 | 
				
			||||||
 | 
					    border: 1px solid #ccc;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* FORM BUTTONS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.button, input[type=submit], input[type=button], .submit-row input {
 | 
				
			||||||
 | 
					    background: #fff url(../img/nav-bg.gif) bottom repeat-x;
 | 
				
			||||||
 | 
					    padding: 3px 5px;
 | 
				
			||||||
 | 
					    color: black;
 | 
				
			||||||
 | 
					    border: 1px solid #bbb;
 | 
				
			||||||
 | 
					    border-color: #ddd #aaa #aaa #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.button:active, input[type=submit]:active, input[type=button]:active {
 | 
				
			||||||
 | 
					    background-image: url(../img/nav-bg-reverse.gif);
 | 
				
			||||||
 | 
					    background-position: top;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.button[disabled], input[type=submit][disabled], input[type=button][disabled] {
 | 
				
			||||||
 | 
					    background-image: url(../img/nav-bg.gif);
 | 
				
			||||||
 | 
					    background-position: bottom;
 | 
				
			||||||
 | 
					    opacity: 0.4;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.button.default, input[type=submit].default, .submit-row input.default {
 | 
				
			||||||
 | 
					    border: 2px solid #5b80b2;
 | 
				
			||||||
 | 
					    background: #7CA0C7 url(../img/default-bg.gif) bottom repeat-x;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					    color: #fff;
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.button.default:active, input[type=submit].default:active {
 | 
				
			||||||
 | 
					    background-image: url(../img/default-bg-reverse.gif);
 | 
				
			||||||
 | 
					    background-position: top;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.button[disabled].default, input[type=submit][disabled].default, input[type=button][disabled].default {
 | 
				
			||||||
 | 
					    background-image: url(../img/default-bg.gif);
 | 
				
			||||||
 | 
					    background-position: bottom;
 | 
				
			||||||
 | 
					    opacity: 0.4;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* MODULES */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.module {
 | 
				
			||||||
 | 
					    border: 1px solid #ccc;
 | 
				
			||||||
 | 
					    margin-bottom: 5px;
 | 
				
			||||||
 | 
					    background: #fff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.module p, .module ul, .module h3, .module h4, .module dl, .module pre {
 | 
				
			||||||
 | 
					    padding-left: 10px;
 | 
				
			||||||
 | 
					    padding-right: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.module blockquote {
 | 
				
			||||||
 | 
					    margin-left: 12px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.module ul, .module ol {
 | 
				
			||||||
 | 
					    margin-left: 1.5em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.module h3 {
 | 
				
			||||||
 | 
					    margin-top: .6em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.module h2, .module caption, .inline-group h2 {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    padding: 2px 5px 3px 5px;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    text-align: left;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					    background: #7CA0C7 url(../img/default-bg.gif) top left repeat-x;
 | 
				
			||||||
 | 
					    color: #fff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.module table {
 | 
				
			||||||
 | 
					    border-collapse: collapse;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* MESSAGES & ERRORS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.messagelist {
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.messagelist li {
 | 
				
			||||||
 | 
					    font-size: 12px;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    padding: 5px 5px 4px 25px;
 | 
				
			||||||
 | 
					    margin: 0 0 3px 0;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #ddd;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    background: #dfd url(../img/icon_success.gif) 5px .3em no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.messagelist li.warning {
 | 
				
			||||||
 | 
					    background: #ffc url(../img/icon_alert.gif) 5px .3em no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.messagelist li.error {
 | 
				
			||||||
 | 
					    background: #ffefef url(../img/icon_error.gif) 5px .3em no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.errornote {
 | 
				
			||||||
 | 
					    font-size: 12px !important;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    padding: 5px 5px 4px 25px;
 | 
				
			||||||
 | 
					    margin: 0 0 3px 0;
 | 
				
			||||||
 | 
					    border: 1px solid #c22;
 | 
				
			||||||
 | 
					    color: #c11;
 | 
				
			||||||
 | 
					    background: #ffefef url(../img/icon_error.gif) 5px .38em no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.errornote, ul.errorlist {
 | 
				
			||||||
 | 
					    border-radius: 1px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.errorlist {
 | 
				
			||||||
 | 
					    margin: 0 0 4px !important;
 | 
				
			||||||
 | 
					    padding: 0 !important;
 | 
				
			||||||
 | 
					    color: #fff;
 | 
				
			||||||
 | 
					    background: #c11;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.errorlist li {
 | 
				
			||||||
 | 
					    font-size: 12px !important;
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    padding: 5px 5px 4px 7px;
 | 
				
			||||||
 | 
					    margin: 3px 0 0 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.errorlist li:first-child {
 | 
				
			||||||
 | 
					    margin-top: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.errorlist li a {
 | 
				
			||||||
 | 
					    color: #fff;
 | 
				
			||||||
 | 
					    text-decoration: underline;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					td ul.errorlist {
 | 
				
			||||||
 | 
					    margin: 0 !important;
 | 
				
			||||||
 | 
					    padding: 0 !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					td ul.errorlist li {
 | 
				
			||||||
 | 
					    margin: 0 !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.errors, .form-row.errors {
 | 
				
			||||||
 | 
					    background: #ffefef;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.form-row.errors {
 | 
				
			||||||
 | 
					    border: 1px solid #c22;
 | 
				
			||||||
 | 
					    margin: -1px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.errors input, .errors select, .errors textarea {
 | 
				
			||||||
 | 
					    border: 1px solid #c11;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					div.system-message {
 | 
				
			||||||
 | 
					    background: #ffc;
 | 
				
			||||||
 | 
					    margin: 10px;
 | 
				
			||||||
 | 
					    padding: 6px 8px;
 | 
				
			||||||
 | 
					    font-size: .8em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					div.system-message p.system-message-title {
 | 
				
			||||||
 | 
					    padding: 4px 5px 4px 25px;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    color: #c11;
 | 
				
			||||||
 | 
					    background: #ffefef url(../img/icon_error.gif) 5px .3em no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.description {
 | 
				
			||||||
 | 
					    font-size: 12px;
 | 
				
			||||||
 | 
					    padding: 5px 0 0 12px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* BREADCRUMBS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					div.breadcrumbs {
 | 
				
			||||||
 | 
					    background: #fff url(../img/nav-bg-reverse.gif) 0 -10px repeat-x;
 | 
				
			||||||
 | 
					    padding: 2px 8px 3px 8px;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    color: #999;
 | 
				
			||||||
 | 
					    border-top: 1px solid #fff;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #ddd;
 | 
				
			||||||
 | 
					    text-align: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ACTION ICONS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.addlink {
 | 
				
			||||||
 | 
					    padding-left: 12px;
 | 
				
			||||||
 | 
					    background: url(../img/icon_addlink.gif) 0 .2em no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.changelink {
 | 
				
			||||||
 | 
					    padding-left: 12px;
 | 
				
			||||||
 | 
					    background: url(../img/icon_changelink.gif) 0 .2em no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.deletelink {
 | 
				
			||||||
 | 
					    padding-left: 12px;
 | 
				
			||||||
 | 
					    background: url(../img/icon_deletelink.gif) 0 .25em no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a.deletelink:link, a.deletelink:visited {
 | 
				
			||||||
 | 
					    color: #CC3434;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a.deletelink:hover {
 | 
				
			||||||
 | 
					    color: #993333;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* OBJECT TOOLS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.object-tools {
 | 
				
			||||||
 | 
					    font-size: 10px;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					    font-family: Arial,Helvetica,sans-serif;
 | 
				
			||||||
 | 
					    padding-left: 0;
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    margin-top: -2.4em;
 | 
				
			||||||
 | 
					    margin-bottom: -2em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.form-row .object-tools {
 | 
				
			||||||
 | 
					    margin-top: 5px;
 | 
				
			||||||
 | 
					    margin-bottom: 5px;
 | 
				
			||||||
 | 
					    float: none;
 | 
				
			||||||
 | 
					    height: 2em;
 | 
				
			||||||
 | 
					    padding-left: 3.5em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.object-tools li {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    margin-left: 5px;
 | 
				
			||||||
 | 
					    height: 16px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.object-tools a {
 | 
				
			||||||
 | 
					    border-radius: 15px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.object-tools a:link, .object-tools a:visited {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    color: #fff;
 | 
				
			||||||
 | 
					    padding: .2em 10px;
 | 
				
			||||||
 | 
					    background: #999;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.object-tools a:hover, .object-tools li:hover a {
 | 
				
			||||||
 | 
					    background-color: #5b80b2;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.object-tools a.viewsitelink, .object-tools a.golink {
 | 
				
			||||||
 | 
					    background: #999 url(../img/tooltag-arrowright.png) 95% center no-repeat;
 | 
				
			||||||
 | 
					    padding-right: 26px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.object-tools a.addlink {
 | 
				
			||||||
 | 
					    background: #999 url(../img/tooltag-add.png) 95% center no-repeat;
 | 
				
			||||||
 | 
					    padding-right: 26px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* OBJECT HISTORY */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table#change-history {
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table#change-history tbody th {
 | 
				
			||||||
 | 
					    width: 16em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* PAGE STRUCTURE */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#container {
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					    min-width: 760px;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#content {
 | 
				
			||||||
 | 
					    margin: 10px 15px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#content-main {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#content-related {
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					    width: 18em;
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    margin-right: -19em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#footer {
 | 
				
			||||||
 | 
					    clear: both;
 | 
				
			||||||
 | 
					    padding: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* COLUMN TYPES */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.colMS {
 | 
				
			||||||
 | 
					    margin-right: 20em !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.colSM {
 | 
				
			||||||
 | 
					    margin-left: 20em !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.colSM #content-related {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    margin-right: 0;
 | 
				
			||||||
 | 
					    margin-left: -19em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.colSM #content-main {
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.popup .colM {
 | 
				
			||||||
 | 
					    width: 95%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.subcol {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    width: 46%;
 | 
				
			||||||
 | 
					    margin-right: 15px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.dashboard #content {
 | 
				
			||||||
 | 
					    width: 500px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* HEADER */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#header {
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					    background: #417690;
 | 
				
			||||||
 | 
					    color: #ffc;
 | 
				
			||||||
 | 
					    overflow: hidden;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#header a:link, #header a:visited {
 | 
				
			||||||
 | 
					    color: #fff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#header a:hover {
 | 
				
			||||||
 | 
					    text-decoration: underline;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#branding {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#branding h1 {
 | 
				
			||||||
 | 
					    padding: 0 10px;
 | 
				
			||||||
 | 
					    font-size: 18px;
 | 
				
			||||||
 | 
					    margin: 8px 0;
 | 
				
			||||||
 | 
					    font-weight: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#branding h1, #branding h1 a:link, #branding h1 a:visited {
 | 
				
			||||||
 | 
					    color: #f4f379;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#branding h2 {
 | 
				
			||||||
 | 
					    padding: 0 10px;
 | 
				
			||||||
 | 
					    font-size: 14px;
 | 
				
			||||||
 | 
					    margin: -8px 0 8px 0;
 | 
				
			||||||
 | 
					    font-weight: normal;
 | 
				
			||||||
 | 
					    color: #ffc;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#branding a:hover {
 | 
				
			||||||
 | 
					    text-decoration: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#user-tools {
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					    padding: 1.2em 10px;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    text-align: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* SIDEBAR */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#content-related h3 {
 | 
				
			||||||
 | 
					    font-size: 12px;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    margin-bottom: 3px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#content-related h4 {
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#content-related .module h2 {
 | 
				
			||||||
 | 
					    background: #eee url(../img/nav-bg.gif) bottom left repeat-x;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										293
									
								
								static/admin/css/changelists.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,293 @@
 | 
				
			||||||
 | 
					/* CHANGELISTS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist {
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist table {
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list .hiddenfields { display:none; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list .filtered table {
 | 
				
			||||||
 | 
					    border-right: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list .filtered {
 | 
				
			||||||
 | 
					    min-height: 400px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list .filtered {
 | 
				
			||||||
 | 
					    background: white url(../img/changelist-bg.gif) top right repeat-y !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull {
 | 
				
			||||||
 | 
					    margin-right: 160px !important;
 | 
				
			||||||
 | 
					    width: auto !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list .filtered table tbody th {
 | 
				
			||||||
 | 
					    padding-right: 1em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist-form .results {
 | 
				
			||||||
 | 
					  overflow-x: auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist .toplinks {
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #ccc !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist .paginator {
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    border-top: 1px solid #eee;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #eee;
 | 
				
			||||||
 | 
					    background: white url(../img/nav-bg.gif) 0 180% repeat-x;
 | 
				
			||||||
 | 
					    overflow: hidden;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list .filtered .paginator {
 | 
				
			||||||
 | 
					    border-right: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* CHANGELIST TABLES */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist table thead th {
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    white-space: nowrap;
 | 
				
			||||||
 | 
					    vertical-align: middle;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist table thead th.action-checkbox-column {
 | 
				
			||||||
 | 
					    width: 1.5em;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist table tbody td, #changelist table tbody th {
 | 
				
			||||||
 | 
					    border-left: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist table tbody td:first-child, #changelist table tbody th:first-child {
 | 
				
			||||||
 | 
					    border-left: 0;
 | 
				
			||||||
 | 
					    border-right: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist table tbody td.action-checkbox {
 | 
				
			||||||
 | 
					    text-align:center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist table tfoot {
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* TOOLBAR */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist #toolbar {
 | 
				
			||||||
 | 
					    padding: 3px;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #ddd;
 | 
				
			||||||
 | 
					    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist #toolbar form input {
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    padding: 1px 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist #toolbar form #searchbar {
 | 
				
			||||||
 | 
					    padding: 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist #changelist-search img {
 | 
				
			||||||
 | 
					    vertical-align: middle;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* FILTER COLUMN */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist-filter {
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    right: 0;
 | 
				
			||||||
 | 
					    z-index: 1000;
 | 
				
			||||||
 | 
					    width: 160px;
 | 
				
			||||||
 | 
					    border-left: 1px solid #ddd;
 | 
				
			||||||
 | 
					    background: #efefef;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist-filter h2 {
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    padding: 2px 5px;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist-filter h3 {
 | 
				
			||||||
 | 
					    font-size: 12px;
 | 
				
			||||||
 | 
					    margin-bottom: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist-filter ul {
 | 
				
			||||||
 | 
					    padding-left: 0;
 | 
				
			||||||
 | 
					    margin-left: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist-filter li {
 | 
				
			||||||
 | 
					    list-style-type: none;
 | 
				
			||||||
 | 
					    margin-left: 0;
 | 
				
			||||||
 | 
					    padding-left: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist-filter a {
 | 
				
			||||||
 | 
					    color: #999;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist-filter a:hover {
 | 
				
			||||||
 | 
					    color: #036;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist-filter li.selected {
 | 
				
			||||||
 | 
					    border-left: 5px solid #ccc;
 | 
				
			||||||
 | 
					    padding-left: 5px;
 | 
				
			||||||
 | 
					    margin-left: -10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist-filter li.selected a {
 | 
				
			||||||
 | 
					    color: #5b80b2 !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* DATE DRILLDOWN */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list ul.toplinks {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    background: white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x;
 | 
				
			||||||
 | 
					    border-top: 1px solid white;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    padding: 0 !important;
 | 
				
			||||||
 | 
					    margin: 0 !important;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list ul.toplinks li {
 | 
				
			||||||
 | 
					    padding: 3px 6px;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					    list-style-type: none;
 | 
				
			||||||
 | 
					    display: inline-block;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list ul.toplinks .date-back a {
 | 
				
			||||||
 | 
					    color: #999;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list ul.toplinks .date-back a:hover {
 | 
				
			||||||
 | 
					    color: #036;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* PAGINATOR */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.paginator {
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    padding-top: 10px;
 | 
				
			||||||
 | 
					    padding-bottom: 10px;
 | 
				
			||||||
 | 
					    line-height: 22px;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    border-top: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.paginator a:link, .paginator a:visited {
 | 
				
			||||||
 | 
					    padding: 2px 6px;
 | 
				
			||||||
 | 
					    border: solid 1px #ccc;
 | 
				
			||||||
 | 
					    background: white;
 | 
				
			||||||
 | 
					    text-decoration: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.paginator a.showall {
 | 
				
			||||||
 | 
					    padding: 0 !important;
 | 
				
			||||||
 | 
					    border: none !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.paginator a.showall:hover {
 | 
				
			||||||
 | 
					    color: #036 !important;
 | 
				
			||||||
 | 
					    background: transparent !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.paginator .end {
 | 
				
			||||||
 | 
					    border-width: 2px !important;
 | 
				
			||||||
 | 
					    margin-right: 6px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.paginator .this-page {
 | 
				
			||||||
 | 
					    padding: 2px 6px;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					    font-size: 13px;
 | 
				
			||||||
 | 
					    vertical-align: top;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.paginator a:hover {
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    background: #5b80b2;
 | 
				
			||||||
 | 
					    border-color: #036;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ACTIONS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.filtered .actions {
 | 
				
			||||||
 | 
					    margin-right: 160px !important;
 | 
				
			||||||
 | 
					    border-right: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist table input {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist table tbody tr.selected {
 | 
				
			||||||
 | 
					    background-color: #FFFFCC;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist .actions {
 | 
				
			||||||
 | 
					    color: #999;
 | 
				
			||||||
 | 
					    padding: 3px;
 | 
				
			||||||
 | 
					    border-top: 1px solid #fff;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #ddd;
 | 
				
			||||||
 | 
					    background: white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist .actions.selected {
 | 
				
			||||||
 | 
					    background: #fffccf;
 | 
				
			||||||
 | 
					    border-top: 1px solid #fffee8;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #edecd6;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist .actions span.all,
 | 
				
			||||||
 | 
					#changelist .actions span.action-counter,
 | 
				
			||||||
 | 
					#changelist .actions span.clear,
 | 
				
			||||||
 | 
					#changelist .actions span.question {
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    margin: 0 0.5em;
 | 
				
			||||||
 | 
					    display: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist .actions:last-child {
 | 
				
			||||||
 | 
					    border-bottom: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist .actions select {
 | 
				
			||||||
 | 
					    border: 1px solid #aaa;
 | 
				
			||||||
 | 
					    margin-left: 0.5em;
 | 
				
			||||||
 | 
					    padding: 1px 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist .actions label {
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    margin-left: 0.5em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist #action-toggle {
 | 
				
			||||||
 | 
					    display: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist .actions .button {
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    padding: 1px 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										30
									
								
								static/admin/css/dashboard.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,30 @@
 | 
				
			||||||
 | 
					/* DASHBOARD */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.dashboard .module table th {
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.dashboard .module table td {
 | 
				
			||||||
 | 
					    white-space: nowrap;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.dashboard .module table td a {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    padding-right: .6em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* RECENT ACTIONS MODULE */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.module ul.actionlist {
 | 
				
			||||||
 | 
					    margin-left: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.actionlist li {
 | 
				
			||||||
 | 
					    list-style-type: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.actionlist li {
 | 
				
			||||||
 | 
					    overflow: hidden;
 | 
				
			||||||
 | 
					    text-overflow: ellipsis;
 | 
				
			||||||
 | 
					    -o-text-overflow: ellipsis;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										376
									
								
								static/admin/css/forms.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,376 @@
 | 
				
			||||||
 | 
					@import url('widgets.css');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* FORM ROWS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.form-row {
 | 
				
			||||||
 | 
					    overflow: hidden;
 | 
				
			||||||
 | 
					    padding: 8px 12px;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #eee;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.form-row img, .form-row input {
 | 
				
			||||||
 | 
					    vertical-align: middle;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					form .form-row p {
 | 
				
			||||||
 | 
					    padding-left: 0;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.hidden {
 | 
				
			||||||
 | 
					    display: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* FORM LABELS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					form h4 {
 | 
				
			||||||
 | 
					    margin: 0 !important;
 | 
				
			||||||
 | 
					    padding: 0 !important;
 | 
				
			||||||
 | 
					    border: none !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					label {
 | 
				
			||||||
 | 
					    font-weight: normal !important;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    font-size: 12px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.required label, label.required {
 | 
				
			||||||
 | 
					    font-weight: bold !important;
 | 
				
			||||||
 | 
					    color: #333 !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* RADIO BUTTONS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					form ul.radiolist li {
 | 
				
			||||||
 | 
					    list-style-type: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					form ul.radiolist label {
 | 
				
			||||||
 | 
					    float: none;
 | 
				
			||||||
 | 
					    display: inline;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					form ul.inline {
 | 
				
			||||||
 | 
					    margin-left: 0;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					form ul.inline li {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    padding-right: 7px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ALIGNED FIELDSETS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.aligned label {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    padding: 3px 10px 0 0;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    width: 8em;
 | 
				
			||||||
 | 
					    word-wrap: break-word;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.aligned ul label {
 | 
				
			||||||
 | 
					    display: inline;
 | 
				
			||||||
 | 
					    float: none;
 | 
				
			||||||
 | 
					    width: auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField {
 | 
				
			||||||
 | 
					    width: 350px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					form .aligned p, form .aligned ul {
 | 
				
			||||||
 | 
					    margin-left: 7em;
 | 
				
			||||||
 | 
					    padding-left: 30px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					form .aligned table p {
 | 
				
			||||||
 | 
					    margin-left: 0;
 | 
				
			||||||
 | 
					    padding-left: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					form .aligned p.help {
 | 
				
			||||||
 | 
					    padding-left: 38px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.aligned .vCheckboxLabel {
 | 
				
			||||||
 | 
					    float: none !important;
 | 
				
			||||||
 | 
					    display: inline;
 | 
				
			||||||
 | 
					    padding-left: 4px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField {
 | 
				
			||||||
 | 
					    width: 610px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.checkbox-row p.help {
 | 
				
			||||||
 | 
					    margin-left: 0;
 | 
				
			||||||
 | 
					    padding-left: 0 !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fieldset .field-box {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    margin-right: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* WIDE FIELDSETS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.wide label {
 | 
				
			||||||
 | 
					    width: 15em !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					form .wide p {
 | 
				
			||||||
 | 
					    margin-left: 15em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					form .wide p.help {
 | 
				
			||||||
 | 
					    padding-left: 38px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField {
 | 
				
			||||||
 | 
					    width: 450px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* COLLAPSED FIELDSETS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fieldset.collapsed * {
 | 
				
			||||||
 | 
					    display: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fieldset.collapsed h2, fieldset.collapsed {
 | 
				
			||||||
 | 
					    display: block !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fieldset.collapsed h2 {
 | 
				
			||||||
 | 
					    background-image: url(../img/nav-bg.gif);
 | 
				
			||||||
 | 
					    background-position: bottom left;
 | 
				
			||||||
 | 
					    color: #999;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fieldset.collapsed .collapse-toggle {
 | 
				
			||||||
 | 
					    background: transparent;
 | 
				
			||||||
 | 
					    display: inline !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* MONOSPACE TEXTAREAS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fieldset.monospace textarea {
 | 
				
			||||||
 | 
					    font-family: "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* SUBMIT ROW */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.submit-row {
 | 
				
			||||||
 | 
					    padding: 5px 7px;
 | 
				
			||||||
 | 
					    text-align: right;
 | 
				
			||||||
 | 
					    background: white url(../img/nav-bg.gif) 0 100% repeat-x;
 | 
				
			||||||
 | 
					    border: 1px solid #ccc;
 | 
				
			||||||
 | 
					    margin: 5px 0;
 | 
				
			||||||
 | 
					    overflow: hidden;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					body.popup .submit-row {
 | 
				
			||||||
 | 
					    overflow: auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.submit-row input {
 | 
				
			||||||
 | 
					    margin: 0 0 0 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.submit-row p {
 | 
				
			||||||
 | 
					    margin: 0.3em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.submit-row p.deletelink-box {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.submit-row .deletelink {
 | 
				
			||||||
 | 
					    background: url(../img/icon_deletelink.gif) 0 50% no-repeat;
 | 
				
			||||||
 | 
					    padding-left: 14px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* CUSTOM FORM FIELDS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.vSelectMultipleField {
 | 
				
			||||||
 | 
					    vertical-align: top !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.vCheckboxField {
 | 
				
			||||||
 | 
					    border: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.vDateField, .vTimeField {
 | 
				
			||||||
 | 
					    margin-right: 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.vDateField {
 | 
				
			||||||
 | 
					    min-width: 6.85em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.vTimeField {
 | 
				
			||||||
 | 
					    min-width: 4.7em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.vURLField {
 | 
				
			||||||
 | 
					    width: 30em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.vLargeTextField, .vXMLLargeTextField {
 | 
				
			||||||
 | 
					    width: 48em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.flatpages-flatpage #id_content {
 | 
				
			||||||
 | 
					    height: 40.2em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.module table .vPositiveSmallIntegerField {
 | 
				
			||||||
 | 
					    width: 2.2em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.vTextField {
 | 
				
			||||||
 | 
					    width: 20em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.vIntegerField {
 | 
				
			||||||
 | 
					    width: 5em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.vBigIntegerField {
 | 
				
			||||||
 | 
					    width: 10em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.vForeignKeyRawIdAdminField {
 | 
				
			||||||
 | 
					    width: 5em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* INLINES */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-group {
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    border: 1px solid #ccc;
 | 
				
			||||||
 | 
					    margin: 10px 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-group .aligned label {
 | 
				
			||||||
 | 
					    width: 8em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-related {
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-related h3 {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    padding: 3px 5px;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-related h3 span.delete {
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-related h3 span.delete label {
 | 
				
			||||||
 | 
					    margin-left: 2px;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-related fieldset {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    background: #fff;
 | 
				
			||||||
 | 
					    border: none;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-related fieldset.module h3 {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    padding: 2px 5px 3px 5px;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    text-align: left;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					    background: #bcd;
 | 
				
			||||||
 | 
					    color: #fff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-group .tabular fieldset.module {
 | 
				
			||||||
 | 
					    border: none;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-related.tabular fieldset.module table {
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.last-related fieldset {
 | 
				
			||||||
 | 
					    border: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-group .tabular tr.has_original td {
 | 
				
			||||||
 | 
					    padding-top: 2em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-group .tabular tr td.original {
 | 
				
			||||||
 | 
					    padding: 2px 0 0 0;
 | 
				
			||||||
 | 
					    width: 0;
 | 
				
			||||||
 | 
					    _position: relative;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-group .tabular th.original {
 | 
				
			||||||
 | 
					    width: 0px;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-group .tabular td.original p {
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    left: 0;
 | 
				
			||||||
 | 
					    height: 1.1em;
 | 
				
			||||||
 | 
					    padding: 2px 7px;
 | 
				
			||||||
 | 
					    overflow: hidden;
 | 
				
			||||||
 | 
					    font-size: 9px;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    _width: 700px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-group ul.tools {
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    list-style: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-group ul.tools li {
 | 
				
			||||||
 | 
					    display: inline;
 | 
				
			||||||
 | 
					    padding: 0 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-group div.add-row,
 | 
				
			||||||
 | 
					.inline-group .tabular tr.add-row td {
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    padding: 3px 5px;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #ddd;
 | 
				
			||||||
 | 
					    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-group .tabular tr.add-row td {
 | 
				
			||||||
 | 
					    padding: 4px 5px 3px;
 | 
				
			||||||
 | 
					    border-bottom: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-group ul.tools a.add,
 | 
				
			||||||
 | 
					.inline-group div.add-row a,
 | 
				
			||||||
 | 
					.inline-group .tabular tr.add-row td a {
 | 
				
			||||||
 | 
					    background: url(../img/icon_addlink.gif) 0 50% no-repeat;
 | 
				
			||||||
 | 
					    padding-left: 14px;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    outline: 0; /* Remove dotted border around link */
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.empty-form {
 | 
				
			||||||
 | 
					    display: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										63
									
								
								static/admin/css/ie.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,63 @@
 | 
				
			||||||
 | 
					/* IE 6 & 7 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Proper fixed width for dashboard in IE6 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.dashboard #content {
 | 
				
			||||||
 | 
					    *width: 768px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.dashboard #content-main {
 | 
				
			||||||
 | 
					    *width: 535px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* IE 6 ONLY */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Keep header from flowing off the page */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#container {
 | 
				
			||||||
 | 
					    _position: static;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Put the right sidebars back on the page */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.colMS #content-related {
 | 
				
			||||||
 | 
					    _margin-right: 0;
 | 
				
			||||||
 | 
					    _margin-left: 10px;
 | 
				
			||||||
 | 
					    _position: static;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Put the left sidebars back on the page */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.colSM #content-related {
 | 
				
			||||||
 | 
					    _margin-right: 10px;
 | 
				
			||||||
 | 
					    _margin-left: -115px;
 | 
				
			||||||
 | 
					    _position: static;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.form-row {
 | 
				
			||||||
 | 
					    _height: 1%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Fix right margin for changelist filters in IE6 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist-filter ul {
 | 
				
			||||||
 | 
					    _margin-right: -10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* IE ignores min-height, but treats height as if it were min-height */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list .filtered {
 | 
				
			||||||
 | 
					    _height: 400px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* IE doesn't know alpha transparency in PNGs */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-deletelink {
 | 
				
			||||||
 | 
					    background: transparent url(../img/inline-delete-8bit.png) no-repeat;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* IE7 doesn't support inline-block */
 | 
				
			||||||
 | 
					.change-list ul.toplinks li {
 | 
				
			||||||
 | 
					    zoom: 1;
 | 
				
			||||||
 | 
					    *display: inline;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										60
									
								
								static/admin/css/login.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,60 @@
 | 
				
			||||||
 | 
					/* LOGIN FORM */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					body.login {
 | 
				
			||||||
 | 
					    background: #eee;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.login #container {
 | 
				
			||||||
 | 
					    background: white;
 | 
				
			||||||
 | 
					    border: 1px solid #ccc;
 | 
				
			||||||
 | 
					    width: 28em;
 | 
				
			||||||
 | 
					    min-width: 300px;
 | 
				
			||||||
 | 
					    margin-left: auto;
 | 
				
			||||||
 | 
					    margin-right: auto;
 | 
				
			||||||
 | 
					    margin-top: 100px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.login #content-main {
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.login form {
 | 
				
			||||||
 | 
					    margin-top: 1em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.login .form-row {
 | 
				
			||||||
 | 
					    padding: 4px 0;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.login .form-row label {
 | 
				
			||||||
 | 
					    padding-right: 0.5em;
 | 
				
			||||||
 | 
					    line-height: 2em;
 | 
				
			||||||
 | 
					    font-size: 1em;
 | 
				
			||||||
 | 
					    clear: both;
 | 
				
			||||||
 | 
					    color: #333;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.login .form-row #id_username, .login .form-row #id_password {
 | 
				
			||||||
 | 
					    clear: both;
 | 
				
			||||||
 | 
					    padding: 6px;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					    -webkit-box-sizing: border-box;
 | 
				
			||||||
 | 
					       -moz-box-sizing: border-box;
 | 
				
			||||||
 | 
					            box-sizing: border-box;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.login span.help {
 | 
				
			||||||
 | 
					    font-size: 10px;
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.login .submit-row {
 | 
				
			||||||
 | 
					    clear: both;
 | 
				
			||||||
 | 
					    padding: 1em 0 0 9.4em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.login .password-reset-link {
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										250
									
								
								static/admin/css/rtl.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,250 @@
 | 
				
			||||||
 | 
					body {
 | 
				
			||||||
 | 
					    direction: rtl;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LOGIN */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.login .form-row {
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.login .form-row label {
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					    padding-left: 0.5em;
 | 
				
			||||||
 | 
					    padding-right: 0;
 | 
				
			||||||
 | 
					    text-align: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.login .submit-row {
 | 
				
			||||||
 | 
					    clear: both;
 | 
				
			||||||
 | 
					    padding: 1em 9.4em 0 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* GLOBAL */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					th {
 | 
				
			||||||
 | 
					    text-align: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.module h2, .module caption {
 | 
				
			||||||
 | 
					    text-align: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.addlink, .changelink {
 | 
				
			||||||
 | 
					    padding-left: 0px;
 | 
				
			||||||
 | 
					    padding-right: 12px;
 | 
				
			||||||
 | 
					    background-position: 100% 0.2em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.deletelink {
 | 
				
			||||||
 | 
					    padding-left: 0px;
 | 
				
			||||||
 | 
					    padding-right: 12px;
 | 
				
			||||||
 | 
					    background-position: 100% 0.25em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.object-tools {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					thead th:first-child,
 | 
				
			||||||
 | 
					tfoot td:first-child {
 | 
				
			||||||
 | 
					    border-left: 1px solid #ddd !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* LAYOUT */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#user-tools {
 | 
				
			||||||
 | 
					    right: auto;
 | 
				
			||||||
 | 
					    left: 0;
 | 
				
			||||||
 | 
					    text-align: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					div.breadcrumbs {
 | 
				
			||||||
 | 
					    text-align: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#content-main {
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#content-related {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    margin-left: -19em;
 | 
				
			||||||
 | 
					    margin-right: auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.colMS {
 | 
				
			||||||
 | 
					    margin-left: 20em !important;
 | 
				
			||||||
 | 
					    margin-right: 10px !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* SORTABLE TABLES */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table thead th.sorted .sortoptions {
 | 
				
			||||||
 | 
					   float: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					thead th.sorted .text {
 | 
				
			||||||
 | 
						padding-right: 0;
 | 
				
			||||||
 | 
						padding-left: 42px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* dashboard styles */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.dashboard .module table td a {
 | 
				
			||||||
 | 
					    padding-left: .6em;
 | 
				
			||||||
 | 
					    padding-right: 12px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* changelists styles */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list .filtered {
 | 
				
			||||||
 | 
					    background: white url(../img/changelist-bg_rtl.gif) top left repeat-y !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list .filtered table {
 | 
				
			||||||
 | 
					    border-left: 1px solid #ddd;
 | 
				
			||||||
 | 
					    border-right: 0px none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist-filter {
 | 
				
			||||||
 | 
					    right: auto;
 | 
				
			||||||
 | 
					    left: 0;
 | 
				
			||||||
 | 
					    border-left: 0px none;
 | 
				
			||||||
 | 
					    border-right: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull {
 | 
				
			||||||
 | 
					    margin-right: 0px !important;
 | 
				
			||||||
 | 
					    margin-left: 160px !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist-filter li.selected {
 | 
				
			||||||
 | 
					    border-left: 0px none;
 | 
				
			||||||
 | 
					    padding-left: 0px;
 | 
				
			||||||
 | 
					    margin-left: 0;
 | 
				
			||||||
 | 
					    border-right: 5px solid #ccc;
 | 
				
			||||||
 | 
					    padding-right: 5px;
 | 
				
			||||||
 | 
					    margin-right: -10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.filtered .actions {
 | 
				
			||||||
 | 
					    border-left:1px solid #DDDDDD;
 | 
				
			||||||
 | 
					    margin-left:160px !important;
 | 
				
			||||||
 | 
					    border-right: 0 none;
 | 
				
			||||||
 | 
					    margin-right:0 !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#changelist table tbody td:first-child, #changelist table tbody th:first-child {
 | 
				
			||||||
 | 
					    border-right: 0;
 | 
				
			||||||
 | 
					    border-left: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* FORMS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.aligned label {
 | 
				
			||||||
 | 
					    padding: 0 0 3px 1em;
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.submit-row {
 | 
				
			||||||
 | 
					    text-align: left
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.submit-row p.deletelink-box {
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.submit-row .deletelink {
 | 
				
			||||||
 | 
					    background: url(../img/icon_deletelink.gif) 0 50% no-repeat;
 | 
				
			||||||
 | 
					    padding-right: 14px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.vDateField, .vTimeField {
 | 
				
			||||||
 | 
					    margin-left: 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					form ul.inline li {
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					    padding-right: 0;
 | 
				
			||||||
 | 
					    padding-left: 7px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					input[type=submit].default, .submit-row input.default {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fieldset .field-box {
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					    margin-left: 20px;
 | 
				
			||||||
 | 
					    margin-right: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.errorlist li {
 | 
				
			||||||
 | 
					    background-position: 100% .3em;
 | 
				
			||||||
 | 
					    padding: 4px 25px 4px 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.errornote {
 | 
				
			||||||
 | 
					    background-position: 100% .3em;
 | 
				
			||||||
 | 
					    padding: 4px 25px 4px 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* WIDGETS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendarnav-previous {
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: auto;
 | 
				
			||||||
 | 
					    right: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendarnav-next {
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    right: auto;
 | 
				
			||||||
 | 
					    left: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar caption, .calendarbox h2 {
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector {
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector .selector-filter {
 | 
				
			||||||
 | 
					    text-align: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-deletelink {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* MISC */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-related h2, .inline-group h2 {
 | 
				
			||||||
 | 
					    text-align: right
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-related h3 span.delete {
 | 
				
			||||||
 | 
					    padding-right: 20px;
 | 
				
			||||||
 | 
					    padding-left: inherit;
 | 
				
			||||||
 | 
					    left: 10px;
 | 
				
			||||||
 | 
					    right: inherit;
 | 
				
			||||||
 | 
					    float:left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-related h3 span.delete label {
 | 
				
			||||||
 | 
					    margin-left: inherit;
 | 
				
			||||||
 | 
					    margin-right: 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* IE7 specific bug fixes */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					div.colM {
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.submit-row input {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										578
									
								
								static/admin/css/widgets.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,578 @@
 | 
				
			||||||
 | 
					/* SELECTOR (FILTER INTERFACE) */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector {
 | 
				
			||||||
 | 
					    width: 840px;
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector select {
 | 
				
			||||||
 | 
					    width: 400px;
 | 
				
			||||||
 | 
					    height: 17.2em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector-available, .selector-chosen {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    width: 400px;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    margin-bottom: 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector-chosen select {
 | 
				
			||||||
 | 
					    border-top: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector-available h2, .selector-chosen h2 {
 | 
				
			||||||
 | 
					    border: 1px solid #ccc;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector .selector-available h2 {
 | 
				
			||||||
 | 
					    background: white url(../img/nav-bg.gif) bottom left repeat-x;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector .selector-filter {
 | 
				
			||||||
 | 
					    background: white;
 | 
				
			||||||
 | 
					    border: 1px solid #ccc;
 | 
				
			||||||
 | 
					    border-width: 0 1px;
 | 
				
			||||||
 | 
					    padding: 3px;
 | 
				
			||||||
 | 
					    color: #999;
 | 
				
			||||||
 | 
					    font-size: 10px;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    text-align: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector .selector-filter label,
 | 
				
			||||||
 | 
					.inline-group .aligned .selector .selector-filter label {
 | 
				
			||||||
 | 
					    width: 16px;
 | 
				
			||||||
 | 
					    padding: 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector .selector-available input {
 | 
				
			||||||
 | 
					    width: 360px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector ul.selector-chooser {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    width: 22px;
 | 
				
			||||||
 | 
					    background-color: #eee;
 | 
				
			||||||
 | 
					    border-radius: 10px;
 | 
				
			||||||
 | 
					    margin: 10em 5px 0 5px;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector-chooser li {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    padding: 3px;
 | 
				
			||||||
 | 
					    list-style-type: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector select {
 | 
				
			||||||
 | 
					    margin-bottom: 10px;
 | 
				
			||||||
 | 
					    margin-top: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector-add, .selector-remove {
 | 
				
			||||||
 | 
					    width: 16px;
 | 
				
			||||||
 | 
					    height: 16px;
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    text-indent: -3000px;
 | 
				
			||||||
 | 
					    overflow: hidden;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector-add {
 | 
				
			||||||
 | 
					    background: url(../img/selector-icons.gif) 0 -161px no-repeat;
 | 
				
			||||||
 | 
					    cursor: default;
 | 
				
			||||||
 | 
					    margin-bottom: 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.active.selector-add {
 | 
				
			||||||
 | 
					    background: url(../img/selector-icons.gif) 0 -187px no-repeat;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.selector-remove {
 | 
				
			||||||
 | 
					    background: url(../img/selector-icons.gif) 0 -109px no-repeat;
 | 
				
			||||||
 | 
					    cursor: default;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.active.selector-remove {
 | 
				
			||||||
 | 
					    background: url(../img/selector-icons.gif) 0 -135px no-repeat;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a.selector-chooseall, a.selector-clearall {
 | 
				
			||||||
 | 
					    display: inline-block;
 | 
				
			||||||
 | 
					    text-align: left;
 | 
				
			||||||
 | 
					    margin-left: auto;
 | 
				
			||||||
 | 
					    margin-right: auto;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a.selector-chooseall {
 | 
				
			||||||
 | 
					    padding: 3px 18px 3px 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a.selector-clearall {
 | 
				
			||||||
 | 
					    padding: 3px 0 3px 18px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a.active.selector-chooseall:hover, a.active.selector-clearall:hover {
 | 
				
			||||||
 | 
					    color: #036;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a.selector-chooseall {
 | 
				
			||||||
 | 
					    background: url(../img/selector-icons.gif) right -263px no-repeat;
 | 
				
			||||||
 | 
					    cursor: default;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a.active.selector-chooseall {
 | 
				
			||||||
 | 
					    background: url(../img/selector-icons.gif) right -289px no-repeat;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a.selector-clearall {
 | 
				
			||||||
 | 
					    background: url(../img/selector-icons.gif) left -211px no-repeat;
 | 
				
			||||||
 | 
					    cursor: default;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a.active.selector-clearall {
 | 
				
			||||||
 | 
					    background: url(../img/selector-icons.gif) left -237px no-repeat;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* STACKED SELECTORS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stacked {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    width: 500px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stacked select {
 | 
				
			||||||
 | 
					    width: 480px;
 | 
				
			||||||
 | 
					    height: 10.1em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stacked .selector-available, .stacked .selector-chosen {
 | 
				
			||||||
 | 
					    width: 480px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stacked .selector-available {
 | 
				
			||||||
 | 
					    margin-bottom: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stacked .selector-available input {
 | 
				
			||||||
 | 
					    width: 442px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stacked ul.selector-chooser {
 | 
				
			||||||
 | 
					    height: 22px;
 | 
				
			||||||
 | 
					    width: 50px;
 | 
				
			||||||
 | 
					    margin: 0 0 3px 40%;
 | 
				
			||||||
 | 
					    background-color: #eee;
 | 
				
			||||||
 | 
					    border-radius: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stacked .selector-chooser li {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    padding: 3px 3px 3px 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stacked .selector-chooseall, .stacked .selector-clearall {
 | 
				
			||||||
 | 
					    display: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stacked .selector-add {
 | 
				
			||||||
 | 
					    background: url(../img/selector-icons.gif) 0 -57px no-repeat;
 | 
				
			||||||
 | 
					    cursor: default;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stacked .active.selector-add {
 | 
				
			||||||
 | 
					    background: url(../img/selector-icons.gif) 0 -83px no-repeat;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stacked .selector-remove {
 | 
				
			||||||
 | 
					    background: url(../img/selector-icons.gif) 0 -5px no-repeat;
 | 
				
			||||||
 | 
					    cursor: default;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.stacked .active.selector-remove {
 | 
				
			||||||
 | 
					    background: url(../img/selector-icons.gif) 0 -31px no-repeat;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* DATE AND TIME */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					p.datetime {
 | 
				
			||||||
 | 
					    line-height: 20px;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.datetime span {
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    color: #ccc;
 | 
				
			||||||
 | 
					    font-weight: normal;
 | 
				
			||||||
 | 
					    white-space: nowrap;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table p.datetime {
 | 
				
			||||||
 | 
					    font-size: 10px;
 | 
				
			||||||
 | 
					    margin-left: 0;
 | 
				
			||||||
 | 
					    padding-left: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* URL */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					p.url {
 | 
				
			||||||
 | 
					    line-height: 20px;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.url a {
 | 
				
			||||||
 | 
					    font-weight: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* FILE UPLOADS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					p.file-upload {
 | 
				
			||||||
 | 
					    line-height: 20px;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.file-upload a {
 | 
				
			||||||
 | 
					    font-weight: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.file-upload .deletelink {
 | 
				
			||||||
 | 
					    margin-left: 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					span.clearable-file-input label {
 | 
				
			||||||
 | 
					    color: #333;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    display: inline;
 | 
				
			||||||
 | 
					    float: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* CALENDARS & CLOCKS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendarbox, .clockbox {
 | 
				
			||||||
 | 
					    margin: 5px auto;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    width: 16em;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    background: white;
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.clockbox {
 | 
				
			||||||
 | 
					    width: auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar table {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    border-collapse: collapse;
 | 
				
			||||||
 | 
					    background: white;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar caption, .calendarbox h2 {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    border-top: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar th {
 | 
				
			||||||
 | 
					    font-size: 10px;
 | 
				
			||||||
 | 
					    color: #666;
 | 
				
			||||||
 | 
					    padding: 2px 3px;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    background: #e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar td {
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    border-top: 1px solid #eee;
 | 
				
			||||||
 | 
					    border-bottom: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar td.selected a {
 | 
				
			||||||
 | 
					    background: #C9DBED;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar td.nonday {
 | 
				
			||||||
 | 
					    background: #efefef;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar td.today a {
 | 
				
			||||||
 | 
					    background: #ffc;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar td a, .timelist a {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					    padding: 4px;
 | 
				
			||||||
 | 
					    text-decoration: none;
 | 
				
			||||||
 | 
					    color: #444;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar td a:hover, .timelist a:hover {
 | 
				
			||||||
 | 
					    background: #5b80b2;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar td a:active, .timelist a:active {
 | 
				
			||||||
 | 
					    background: #036;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendarnav {
 | 
				
			||||||
 | 
					    font-size: 10px;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    color: #ccc;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    padding: 1px 3px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendarnav a:link, #calendarnav a:visited, #calendarnav a:hover {
 | 
				
			||||||
 | 
					    color: #999;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar-shortcuts {
 | 
				
			||||||
 | 
					    background: white;
 | 
				
			||||||
 | 
					    font-size: 10px;
 | 
				
			||||||
 | 
					    line-height: 11px;
 | 
				
			||||||
 | 
					    border-top: 1px solid #eee;
 | 
				
			||||||
 | 
					    padding: 3px 0 4px;
 | 
				
			||||||
 | 
					    color: #ccc;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					    font-size: 12px;
 | 
				
			||||||
 | 
					    background: #C9DBED url(../img/default-bg.gif) bottom left repeat-x;
 | 
				
			||||||
 | 
					    padding: 1px 4px 2px 4px;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendarnav-previous:hover, .calendarnav-next:hover {
 | 
				
			||||||
 | 
					    background: #036;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendarnav-previous {
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendarnav-next {
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    right: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar-cancel {
 | 
				
			||||||
 | 
					    margin: 0 !important;
 | 
				
			||||||
 | 
					    padding: 0 !important;
 | 
				
			||||||
 | 
					    font-size: 10px;
 | 
				
			||||||
 | 
					    background: #e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x;
 | 
				
			||||||
 | 
					    border-top: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar-cancel:hover {
 | 
				
			||||||
 | 
					    background: #e1e1e1 url(../img/nav-bg-reverse.gif) 0 50% repeat-x;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar-cancel a {
 | 
				
			||||||
 | 
					    color: black;
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.timelist, .timelist li {
 | 
				
			||||||
 | 
					    list-style-type: none;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.timelist a {
 | 
				
			||||||
 | 
					    padding: 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* INLINE ORDERER */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.orderer {
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    padding: 0 !important;
 | 
				
			||||||
 | 
					    margin: 0 !important;
 | 
				
			||||||
 | 
					    list-style-type: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.orderer li {
 | 
				
			||||||
 | 
					    list-style-type: none;
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    border: 1px solid #bbb;
 | 
				
			||||||
 | 
					    border-width: 0 1px 1px 0;
 | 
				
			||||||
 | 
					    white-space: nowrap;
 | 
				
			||||||
 | 
					    overflow: hidden;
 | 
				
			||||||
 | 
					    background: #e2e2e2 url(../img/nav-bg-grabber.gif) repeat-y;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.orderer li:hover {
 | 
				
			||||||
 | 
					    cursor: move;
 | 
				
			||||||
 | 
					    background-color: #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.orderer li a.selector {
 | 
				
			||||||
 | 
					    margin-left: 12px;
 | 
				
			||||||
 | 
					    overflow: hidden;
 | 
				
			||||||
 | 
					    width: 83%;
 | 
				
			||||||
 | 
					    font-size: 10px !important;
 | 
				
			||||||
 | 
					    padding: 0.6em 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.orderer li a:link, ul.orderer li a:visited {
 | 
				
			||||||
 | 
					    color: #333;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.orderer li .inline-deletelink {
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    right: 4px;
 | 
				
			||||||
 | 
					    margin-top: 0.6em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.orderer li.selected {
 | 
				
			||||||
 | 
					    background-color: #f8f8f8;
 | 
				
			||||||
 | 
					    border-right-color: #f8f8f8;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.orderer li.deleted {
 | 
				
			||||||
 | 
					    background: #bbb url(../img/deleted-overlay.gif);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.orderer li.deleted a:link, ul.orderer li.deleted a:visited {
 | 
				
			||||||
 | 
					    color: #888;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.orderer li.deleted .inline-deletelink {
 | 
				
			||||||
 | 
					    background-image: url(../img/inline-restore.png);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul.orderer li.deleted:hover, ul.orderer li.deleted a.selector:hover {
 | 
				
			||||||
 | 
					    cursor: default;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* EDIT INLINE */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-deletelink {
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					    text-indent: -9999px;
 | 
				
			||||||
 | 
					    background: transparent url(../img/inline-delete.png) no-repeat;
 | 
				
			||||||
 | 
					    width: 15px;
 | 
				
			||||||
 | 
					    height: 15px;
 | 
				
			||||||
 | 
					    border: 0px none;
 | 
				
			||||||
 | 
					    outline: 0; /* Remove dotted border around link */
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inline-deletelink:hover {
 | 
				
			||||||
 | 
					    background-position: -15px 0;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.editinline button.addlink {
 | 
				
			||||||
 | 
					    border: 0px none;
 | 
				
			||||||
 | 
					    color: #5b80b2;
 | 
				
			||||||
 | 
					    font-size: 100%;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.editinline button.addlink:hover {
 | 
				
			||||||
 | 
					    color: #036;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.editinline table .help {
 | 
				
			||||||
 | 
					    text-align: right;
 | 
				
			||||||
 | 
					    float: right;
 | 
				
			||||||
 | 
					    padding-left: 2em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.editinline tfoot .addlink {
 | 
				
			||||||
 | 
					    white-space: nowrap;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.editinline table thead th:last-child {
 | 
				
			||||||
 | 
					    border-left: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.editinline tr.deleted {
 | 
				
			||||||
 | 
					    background: #ddd url(../img/deleted-overlay.gif);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.editinline tr.deleted .inline-deletelink {
 | 
				
			||||||
 | 
					    background-image: url(../img/inline-restore.png);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.editinline tr.deleted td:hover {
 | 
				
			||||||
 | 
					    cursor: default;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.editinline tr.deleted td:first-child {
 | 
				
			||||||
 | 
					    background-image: none !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* EDIT INLINE - STACKED */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.editinline-stacked {
 | 
				
			||||||
 | 
					    min-width: 758px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.editinline-stacked .inline-object {
 | 
				
			||||||
 | 
					    margin-left: 210px;
 | 
				
			||||||
 | 
					    background: white;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.editinline-stacked .inline-source {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    width: 200px;
 | 
				
			||||||
 | 
					    background: #f8f8f8;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.editinline-stacked .inline-splitter {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    width: 9px;
 | 
				
			||||||
 | 
					    background: #f8f8f8 url(../img/inline-splitter-bg.gif) 50% 50% no-repeat;
 | 
				
			||||||
 | 
					    border-right: 1px solid #ccc;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.editinline-stacked .controls {
 | 
				
			||||||
 | 
					    clear: both;
 | 
				
			||||||
 | 
					    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;
 | 
				
			||||||
 | 
					    padding: 3px 4px;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    border-top: 1px solid #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/changelist-bg.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 50 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/changelist-bg_rtl.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 75 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/default-bg-reverse.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 835 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/default-bg.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 836 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/deleted-overlay.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 45 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/gis/move_vertex_off.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 711 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/gis/move_vertex_on.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 506 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon-no.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 176 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon-unknown.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 130 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon-yes.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_addlink.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_alert.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 145 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_calendar.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.4 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_changelink.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_clock.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_deletelink.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_error.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 319 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_searchbox.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.1 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_success.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 341 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/inline-delete-8bit.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 395 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/inline-delete.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 707 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/inline-restore-8bit.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 363 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/inline-restore.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 557 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/inline-splitter-bg.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 94 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/nav-bg-grabber.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 116 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/nav-bg-reverse.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 178 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/nav-bg-selected.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 265 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/nav-bg.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 265 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/selector-icons.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 4.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/selector-search.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/sorting-icons.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 369 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/tooltag-add.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 119 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/tooltag-arrowright.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 200 B  | 
							
								
								
									
										20
									
								
								static/admin/js/LICENSE-JQUERY.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					Copyright (c) 2010 John Resig, http://jquery.com/
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					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.
 | 
				
			||||||
							
								
								
									
										114
									
								
								static/admin/js/SelectBox.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,114 @@
 | 
				
			||||||
 | 
					var SelectBox = {
 | 
				
			||||||
 | 
					    cache: new Object(),
 | 
				
			||||||
 | 
					    init: function(id) {
 | 
				
			||||||
 | 
					        var box = document.getElementById(id);
 | 
				
			||||||
 | 
					        var node;
 | 
				
			||||||
 | 
					        SelectBox.cache[id] = new Array();
 | 
				
			||||||
 | 
					        var cache = SelectBox.cache[id];
 | 
				
			||||||
 | 
					        for (var i = 0; (node = box.options[i]); i++) {
 | 
				
			||||||
 | 
					            cache.push({value: node.value, text: node.text, displayed: 1});
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    redisplay: function(id) {
 | 
				
			||||||
 | 
					        // Repopulate HTML select box from cache
 | 
				
			||||||
 | 
					        var box = document.getElementById(id);
 | 
				
			||||||
 | 
					        box.options.length = 0; // clear all options
 | 
				
			||||||
 | 
					        for (var i = 0, j = SelectBox.cache[id].length; i < j; i++) {
 | 
				
			||||||
 | 
					            var node = SelectBox.cache[id][i];
 | 
				
			||||||
 | 
					            if (node.displayed) {
 | 
				
			||||||
 | 
					                var new_option = new Option(node.text, node.value, false, false);
 | 
				
			||||||
 | 
					                // Shows a tooltip when hovering over the option
 | 
				
			||||||
 | 
					                new_option.setAttribute("title", node.text);
 | 
				
			||||||
 | 
					                box.options[box.options.length] = new_option;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    filter: function(id, text) {
 | 
				
			||||||
 | 
					        // Redisplay the HTML select box, displaying only the choices containing ALL
 | 
				
			||||||
 | 
					        // the words in text. (It's an AND search.)
 | 
				
			||||||
 | 
					        var tokens = text.toLowerCase().split(/\s+/);
 | 
				
			||||||
 | 
					        var node, token;
 | 
				
			||||||
 | 
					        for (var i = 0; (node = SelectBox.cache[id][i]); i++) {
 | 
				
			||||||
 | 
					            node.displayed = 1;
 | 
				
			||||||
 | 
					            for (var j = 0; (token = tokens[j]); j++) {
 | 
				
			||||||
 | 
					                if (node.text.toLowerCase().indexOf(token) == -1) {
 | 
				
			||||||
 | 
					                    node.displayed = 0;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        SelectBox.redisplay(id);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    delete_from_cache: function(id, value) {
 | 
				
			||||||
 | 
					        var node, delete_index = null;
 | 
				
			||||||
 | 
					        for (var i = 0; (node = SelectBox.cache[id][i]); i++) {
 | 
				
			||||||
 | 
					            if (node.value == value) {
 | 
				
			||||||
 | 
					                delete_index = i;
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        var j = SelectBox.cache[id].length - 1;
 | 
				
			||||||
 | 
					        for (var i = delete_index; i < j; i++) {
 | 
				
			||||||
 | 
					            SelectBox.cache[id][i] = SelectBox.cache[id][i+1];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        SelectBox.cache[id].length--;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    add_to_cache: function(id, option) {
 | 
				
			||||||
 | 
					        SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1});
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    cache_contains: function(id, value) {
 | 
				
			||||||
 | 
					        // Check if an item is contained in the cache
 | 
				
			||||||
 | 
					        var node;
 | 
				
			||||||
 | 
					        for (var i = 0; (node = SelectBox.cache[id][i]); i++) {
 | 
				
			||||||
 | 
					            if (node.value == value) {
 | 
				
			||||||
 | 
					                return true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    move: function(from, to) {
 | 
				
			||||||
 | 
					        var from_box = document.getElementById(from);
 | 
				
			||||||
 | 
					        var to_box = document.getElementById(to);
 | 
				
			||||||
 | 
					        var option;
 | 
				
			||||||
 | 
					        for (var i = 0; (option = from_box.options[i]); i++) {
 | 
				
			||||||
 | 
					            if (option.selected && SelectBox.cache_contains(from, option.value)) {
 | 
				
			||||||
 | 
					                SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1});
 | 
				
			||||||
 | 
					                SelectBox.delete_from_cache(from, option.value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        SelectBox.redisplay(from);
 | 
				
			||||||
 | 
					        SelectBox.redisplay(to);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    move_all: function(from, to) {
 | 
				
			||||||
 | 
					        var from_box = document.getElementById(from);
 | 
				
			||||||
 | 
					        var to_box = document.getElementById(to);
 | 
				
			||||||
 | 
					        var option;
 | 
				
			||||||
 | 
					        for (var i = 0; (option = from_box.options[i]); i++) {
 | 
				
			||||||
 | 
					            if (SelectBox.cache_contains(from, option.value)) {
 | 
				
			||||||
 | 
					                SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1});
 | 
				
			||||||
 | 
					                SelectBox.delete_from_cache(from, option.value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        SelectBox.redisplay(from);
 | 
				
			||||||
 | 
					        SelectBox.redisplay(to);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    sort: function(id) {
 | 
				
			||||||
 | 
					        SelectBox.cache[id].sort( function(a, b) {
 | 
				
			||||||
 | 
					            a = a.text.toLowerCase();
 | 
				
			||||||
 | 
					            b = b.text.toLowerCase();
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                if (a > b) return 1;
 | 
				
			||||||
 | 
					                if (a < b) return -1;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (e) {
 | 
				
			||||||
 | 
					                // silently fail on IE 'unknown' exception
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return 0;
 | 
				
			||||||
 | 
					        } );
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    select_all: function(id) {
 | 
				
			||||||
 | 
					        var box = document.getElementById(id);
 | 
				
			||||||
 | 
					        for (var i = 0; i < box.options.length; i++) {
 | 
				
			||||||
 | 
					            box.options[i].selected = 'selected';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										161
									
								
								static/admin/js/SelectFilter2.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,161 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					SelectFilter2 - Turns a multiple-select box into a filter interface.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Requires core.js, SelectBox.js and addevent.js.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					(function($) {
 | 
				
			||||||
 | 
					function findForm(node) {
 | 
				
			||||||
 | 
					    // returns the node of the form containing the given node
 | 
				
			||||||
 | 
					    if (node.tagName.toLowerCase() != 'form') {
 | 
				
			||||||
 | 
					        return findForm(node.parentNode);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return node;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					window.SelectFilter = {
 | 
				
			||||||
 | 
					    init: function(field_id, field_name, is_stacked, admin_static_prefix) {
 | 
				
			||||||
 | 
					        if (field_id.match(/__prefix__/)){
 | 
				
			||||||
 | 
					            // Don't initialize on empty forms.
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        var from_box = document.getElementById(field_id);
 | 
				
			||||||
 | 
					        from_box.id += '_from'; // change its ID
 | 
				
			||||||
 | 
					        from_box.className = 'filtered';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var ps = from_box.parentNode.getElementsByTagName('p');
 | 
				
			||||||
 | 
					        for (var i=0; i<ps.length; i++) {
 | 
				
			||||||
 | 
					            if (ps[i].className.indexOf("info") != -1) {
 | 
				
			||||||
 | 
					                // Remove <p class="info">, because it just gets in the way.
 | 
				
			||||||
 | 
					                from_box.parentNode.removeChild(ps[i]);
 | 
				
			||||||
 | 
					            } else if (ps[i].className.indexOf("help") != -1) {
 | 
				
			||||||
 | 
					                // Move help text up to the top so it isn't below the select
 | 
				
			||||||
 | 
					                // boxes or wrapped off on the side to the right of the add
 | 
				
			||||||
 | 
					                // button:
 | 
				
			||||||
 | 
					                from_box.parentNode.insertBefore(ps[i], from_box.parentNode.firstChild);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // <div class="selector"> or <div class="selector stacked">
 | 
				
			||||||
 | 
					        var selector_div = quickElement('div', from_box.parentNode);
 | 
				
			||||||
 | 
					        selector_div.className = is_stacked ? 'selector stacked' : 'selector';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // <div class="selector-available">
 | 
				
			||||||
 | 
					        var selector_available = quickElement('div', selector_div);
 | 
				
			||||||
 | 
					        selector_available.className = 'selector-available';
 | 
				
			||||||
 | 
					        var title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name]));
 | 
				
			||||||
 | 
					        quickElement('img', title_available, '', 'src', admin_static_prefix + 'img/icon-unknown.gif', 'width', '10', 'height', '10', 'class', 'help help-tooltip', 'title', interpolate(gettext('This is the list of available %s. You may choose some by selecting them in the box below and then clicking the "Choose" arrow between the two boxes.'), [field_name]));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter');
 | 
				
			||||||
 | 
					        filter_p.className = 'selector-filter';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var search_filter_label = quickElement('label', filter_p, '', 'for', field_id + "_input");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var search_selector_img = quickElement('img', search_filter_label, '', 'src', admin_static_prefix + 'img/selector-search.gif', 'class', 'help-tooltip', 'alt', '', 'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name]));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        filter_p.appendChild(document.createTextNode(' '));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext("Filter"));
 | 
				
			||||||
 | 
					        filter_input.id = field_id + '_input';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        selector_available.appendChild(from_box);
 | 
				
			||||||
 | 
					        var choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', 'javascript: (function(){ SelectBox.move_all("' + field_id + '_from", "' + field_id + '_to"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_add_all_link');
 | 
				
			||||||
 | 
					        choose_all.className = 'selector-chooseall';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // <ul class="selector-chooser">
 | 
				
			||||||
 | 
					        var selector_chooser = quickElement('ul', selector_div);
 | 
				
			||||||
 | 
					        selector_chooser.className = 'selector-chooser';
 | 
				
			||||||
 | 
					        var add_link = quickElement('a', quickElement('li', selector_chooser), gettext('Choose'), 'title', gettext('Choose'), 'href', 'javascript: (function(){ SelectBox.move("' + field_id + '_from","' + field_id + '_to"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_add_link');
 | 
				
			||||||
 | 
					        add_link.className = 'selector-add';
 | 
				
			||||||
 | 
					        var remove_link = quickElement('a', quickElement('li', selector_chooser), gettext('Remove'), 'title', gettext('Remove'), 'href', 'javascript: (function(){ SelectBox.move("' + field_id + '_to","' + field_id + '_from"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_remove_link');
 | 
				
			||||||
 | 
					        remove_link.className = 'selector-remove';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // <div class="selector-chosen">
 | 
				
			||||||
 | 
					        var selector_chosen = quickElement('div', selector_div);
 | 
				
			||||||
 | 
					        selector_chosen.className = 'selector-chosen';
 | 
				
			||||||
 | 
					        var title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name]));
 | 
				
			||||||
 | 
					        quickElement('img', title_chosen, '', 'src', admin_static_prefix + 'img/icon-unknown.gif', 'width', '10', 'height', '10', 'class', 'help help-tooltip', 'title', interpolate(gettext('This is the list of chosen %s. You may remove some by selecting them in the box below and then clicking the "Remove" arrow between the two boxes.'), [field_name]));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', from_box.getAttribute('name'));
 | 
				
			||||||
 | 
					        to_box.className = 'filtered';
 | 
				
			||||||
 | 
					        var clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'title', interpolate(gettext('Click to remove all chosen %s at once.'), [field_name]), 'href', 'javascript: (function() { SelectBox.move_all("' + field_id + '_to", "' + field_id + '_from"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_remove_all_link');
 | 
				
			||||||
 | 
					        clear_all.className = 'selector-clearall';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        from_box.setAttribute('name', from_box.getAttribute('name') + '_old');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Set up the JavaScript event handlers for the select box filter interface
 | 
				
			||||||
 | 
					        addEvent(filter_input, 'keyup', function(e) { SelectFilter.filter_key_up(e, field_id); });
 | 
				
			||||||
 | 
					        addEvent(filter_input, 'keydown', function(e) { SelectFilter.filter_key_down(e, field_id); });
 | 
				
			||||||
 | 
					        addEvent(from_box, 'change', function(e) { SelectFilter.refresh_icons(field_id) });
 | 
				
			||||||
 | 
					        addEvent(to_box, 'change', function(e) { SelectFilter.refresh_icons(field_id) });
 | 
				
			||||||
 | 
					        addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); });
 | 
				
			||||||
 | 
					        addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); });
 | 
				
			||||||
 | 
					        addEvent(findForm(from_box), 'submit', function() { SelectBox.select_all(field_id + '_to'); });
 | 
				
			||||||
 | 
					        SelectBox.init(field_id + '_from');
 | 
				
			||||||
 | 
					        SelectBox.init(field_id + '_to');
 | 
				
			||||||
 | 
					        // Move selected from_box options to to_box
 | 
				
			||||||
 | 
					        SelectBox.move(field_id + '_from', field_id + '_to');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (!is_stacked) {
 | 
				
			||||||
 | 
					            // In horizontal mode, give the same height to the two boxes.
 | 
				
			||||||
 | 
					            var j_from_box = $(from_box);
 | 
				
			||||||
 | 
					            var j_to_box = $(to_box);
 | 
				
			||||||
 | 
					            var resize_filters = function() { j_to_box.height($(filter_p).outerHeight() + j_from_box.outerHeight()); }
 | 
				
			||||||
 | 
					            if (j_from_box.outerHeight() > 0) {
 | 
				
			||||||
 | 
					                resize_filters(); // This fieldset is already open. Resize now.
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                // This fieldset is probably collapsed. Wait for its 'show' event.
 | 
				
			||||||
 | 
					                j_to_box.closest('fieldset').one('show.fieldset', resize_filters);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Initial icon refresh
 | 
				
			||||||
 | 
					        SelectFilter.refresh_icons(field_id);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    refresh_icons: function(field_id) {
 | 
				
			||||||
 | 
					        var from = $('#' + field_id + '_from');
 | 
				
			||||||
 | 
					        var to = $('#' + field_id + '_to');
 | 
				
			||||||
 | 
					        var is_from_selected = from.find('option:selected').length > 0;
 | 
				
			||||||
 | 
					        var is_to_selected = to.find('option:selected').length > 0;
 | 
				
			||||||
 | 
					        // Active if at least one item is selected
 | 
				
			||||||
 | 
					        $('#' + field_id + '_add_link').toggleClass('active', is_from_selected);
 | 
				
			||||||
 | 
					        $('#' + field_id + '_remove_link').toggleClass('active', is_to_selected);
 | 
				
			||||||
 | 
					        // Active if the corresponding box isn't empty
 | 
				
			||||||
 | 
					        $('#' + field_id + '_add_all_link').toggleClass('active', from.find('option').length > 0);
 | 
				
			||||||
 | 
					        $('#' + field_id + '_remove_all_link').toggleClass('active', to.find('option').length > 0);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    filter_key_up: function(event, field_id) {
 | 
				
			||||||
 | 
					        var from = document.getElementById(field_id + '_from');
 | 
				
			||||||
 | 
					        // don't submit form if user pressed Enter
 | 
				
			||||||
 | 
					        if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {
 | 
				
			||||||
 | 
					            from.selectedIndex = 0;
 | 
				
			||||||
 | 
					            SelectBox.move(field_id + '_from', field_id + '_to');
 | 
				
			||||||
 | 
					            from.selectedIndex = 0;
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        var temp = from.selectedIndex;
 | 
				
			||||||
 | 
					        SelectBox.filter(field_id + '_from', document.getElementById(field_id + '_input').value);
 | 
				
			||||||
 | 
					        from.selectedIndex = temp;
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    filter_key_down: function(event, field_id) {
 | 
				
			||||||
 | 
					        var from = document.getElementById(field_id + '_from');
 | 
				
			||||||
 | 
					        // right arrow -- move across
 | 
				
			||||||
 | 
					        if ((event.which && event.which == 39) || (event.keyCode && event.keyCode == 39)) {
 | 
				
			||||||
 | 
					            var old_index = from.selectedIndex;
 | 
				
			||||||
 | 
					            SelectBox.move(field_id + '_from', field_id + '_to');
 | 
				
			||||||
 | 
					            from.selectedIndex = (old_index == from.length) ? from.length - 1 : old_index;
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // down arrow -- wrap around
 | 
				
			||||||
 | 
					        if ((event.which && event.which == 40) || (event.keyCode && event.keyCode == 40)) {
 | 
				
			||||||
 | 
					            from.selectedIndex = (from.length == from.selectedIndex + 1) ? 0 : from.selectedIndex + 1;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // up arrow -- wrap around
 | 
				
			||||||
 | 
					        if ((event.which && event.which == 38) || (event.keyCode && event.keyCode == 38)) {
 | 
				
			||||||
 | 
					            from.selectedIndex = (from.selectedIndex == 0) ? from.length - 1 : from.selectedIndex - 1;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})(django.jQuery);
 | 
				
			||||||
							
								
								
									
										144
									
								
								static/admin/js/actions.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,144 @@
 | 
				
			||||||
 | 
					(function($) {
 | 
				
			||||||
 | 
						var lastChecked;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						$.fn.actions = function(opts) {
 | 
				
			||||||
 | 
							var options = $.extend({}, $.fn.actions.defaults, opts);
 | 
				
			||||||
 | 
							var actionCheckboxes = $(this);
 | 
				
			||||||
 | 
							var list_editable_changed = false;
 | 
				
			||||||
 | 
							var checker = function(checked) {
 | 
				
			||||||
 | 
								if (checked) {
 | 
				
			||||||
 | 
									showQuestion();
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									reset();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								$(actionCheckboxes).prop("checked", checked)
 | 
				
			||||||
 | 
									.parent().parent().toggleClass(options.selectedClass, checked);
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							updateCounter = function() {
 | 
				
			||||||
 | 
								var sel = $(actionCheckboxes).filter(":checked").length;
 | 
				
			||||||
 | 
								// _actions_icnt is defined in the generated HTML
 | 
				
			||||||
 | 
								// and contains the total amount of objects in the queryset
 | 
				
			||||||
 | 
								$(options.counterContainer).html(interpolate(
 | 
				
			||||||
 | 
								ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), {
 | 
				
			||||||
 | 
									sel: sel,
 | 
				
			||||||
 | 
									cnt: _actions_icnt
 | 
				
			||||||
 | 
								}, true));
 | 
				
			||||||
 | 
								$(options.allToggle).prop("checked", function() {
 | 
				
			||||||
 | 
									var value;
 | 
				
			||||||
 | 
									if (sel == actionCheckboxes.length) {
 | 
				
			||||||
 | 
										value = true;
 | 
				
			||||||
 | 
										showQuestion();
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										value = false;
 | 
				
			||||||
 | 
										clearAcross();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									return value;
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							showQuestion = function() {
 | 
				
			||||||
 | 
								$(options.acrossClears).hide();
 | 
				
			||||||
 | 
								$(options.acrossQuestions).show();
 | 
				
			||||||
 | 
								$(options.allContainer).hide();
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							showClear = function() {
 | 
				
			||||||
 | 
								$(options.acrossClears).show();
 | 
				
			||||||
 | 
								$(options.acrossQuestions).hide();
 | 
				
			||||||
 | 
								$(options.actionContainer).toggleClass(options.selectedClass);
 | 
				
			||||||
 | 
								$(options.allContainer).show();
 | 
				
			||||||
 | 
								$(options.counterContainer).hide();
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							reset = function() {
 | 
				
			||||||
 | 
								$(options.acrossClears).hide();
 | 
				
			||||||
 | 
								$(options.acrossQuestions).hide();
 | 
				
			||||||
 | 
								$(options.allContainer).hide();
 | 
				
			||||||
 | 
								$(options.counterContainer).show();
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							clearAcross = function() {
 | 
				
			||||||
 | 
								reset();
 | 
				
			||||||
 | 
								$(options.acrossInput).val(0);
 | 
				
			||||||
 | 
								$(options.actionContainer).removeClass(options.selectedClass);
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
							// Show counter by default
 | 
				
			||||||
 | 
							$(options.counterContainer).show();
 | 
				
			||||||
 | 
							// Check state of checkboxes and reinit state if needed
 | 
				
			||||||
 | 
							$(this).filter(":checked").each(function(i) {
 | 
				
			||||||
 | 
								$(this).parent().parent().toggleClass(options.selectedClass);
 | 
				
			||||||
 | 
								updateCounter();
 | 
				
			||||||
 | 
								if ($(options.acrossInput).val() == 1) {
 | 
				
			||||||
 | 
									showClear();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
							$(options.allToggle).show().click(function() {
 | 
				
			||||||
 | 
								checker($(this).prop("checked"));
 | 
				
			||||||
 | 
								updateCounter();
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
							$("a", options.acrossQuestions).click(function(event) {
 | 
				
			||||||
 | 
								event.preventDefault();
 | 
				
			||||||
 | 
								$(options.acrossInput).val(1);
 | 
				
			||||||
 | 
								showClear();
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
							$("a", options.acrossClears).click(function(event) {
 | 
				
			||||||
 | 
								event.preventDefault();
 | 
				
			||||||
 | 
								$(options.allToggle).prop("checked", false);
 | 
				
			||||||
 | 
								clearAcross();
 | 
				
			||||||
 | 
								checker(0);
 | 
				
			||||||
 | 
								updateCounter();
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
							lastChecked = null;
 | 
				
			||||||
 | 
							$(actionCheckboxes).click(function(event) {
 | 
				
			||||||
 | 
								if (!event) { event = window.event; }
 | 
				
			||||||
 | 
								var target = event.target ? event.target : event.srcElement;
 | 
				
			||||||
 | 
								if (lastChecked && $.data(lastChecked) != $.data(target) && event.shiftKey === true) {
 | 
				
			||||||
 | 
									var inrange = false;
 | 
				
			||||||
 | 
									$(lastChecked).prop("checked", target.checked)
 | 
				
			||||||
 | 
										.parent().parent().toggleClass(options.selectedClass, target.checked);
 | 
				
			||||||
 | 
									$(actionCheckboxes).each(function() {
 | 
				
			||||||
 | 
										if ($.data(this) == $.data(lastChecked) || $.data(this) == $.data(target)) {
 | 
				
			||||||
 | 
											inrange = (inrange) ? false : true;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										if (inrange) {
 | 
				
			||||||
 | 
											$(this).prop("checked", target.checked)
 | 
				
			||||||
 | 
												.parent().parent().toggleClass(options.selectedClass, target.checked);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								$(target).parent().parent().toggleClass(options.selectedClass, target.checked);
 | 
				
			||||||
 | 
								lastChecked = target;
 | 
				
			||||||
 | 
								updateCounter();
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
							$('form#changelist-form table#result_list tr').find('td:gt(0) :input').change(function() {
 | 
				
			||||||
 | 
								list_editable_changed = true;
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
							$('form#changelist-form button[name="index"]').click(function(event) {
 | 
				
			||||||
 | 
								if (list_editable_changed) {
 | 
				
			||||||
 | 
									return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."));
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
							$('form#changelist-form input[name="_save"]').click(function(event) {
 | 
				
			||||||
 | 
								var action_changed = false;
 | 
				
			||||||
 | 
								$('select option:selected', options.actionContainer).each(function() {
 | 
				
			||||||
 | 
									if ($(this).val()) {
 | 
				
			||||||
 | 
										action_changed = true;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
								if (action_changed) {
 | 
				
			||||||
 | 
									if (list_editable_changed) {
 | 
				
			||||||
 | 
										return confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action."));
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										return confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."));
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						/* Setup plugin defaults */
 | 
				
			||||||
 | 
						$.fn.actions.defaults = {
 | 
				
			||||||
 | 
							actionContainer: "div.actions",
 | 
				
			||||||
 | 
							counterContainer: "span.action-counter",
 | 
				
			||||||
 | 
							allContainer: "div.actions span.all",
 | 
				
			||||||
 | 
							acrossInput: "div.actions input.select-across",
 | 
				
			||||||
 | 
							acrossQuestions: "div.actions span.question",
 | 
				
			||||||
 | 
							acrossClears: "div.actions span.clear",
 | 
				
			||||||
 | 
							allToggle: "#action-toggle",
 | 
				
			||||||
 | 
							selectedClass: "selected"
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					})(django.jQuery);
 | 
				
			||||||
							
								
								
									
										6
									
								
								static/admin/js/actions.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,6 @@
 | 
				
			||||||
 | 
					(function(a){var f;a.fn.actions=function(q){var b=a.extend({},a.fn.actions.defaults,q),g=a(this),e=!1,m=function(c){c?k():l();a(g).prop("checked",c).parent().parent().toggleClass(b.selectedClass,c)},h=function(){var c=a(g).filter(":checked").length;a(b.counterContainer).html(interpolate(ngettext("%(sel)s of %(cnt)s selected","%(sel)s of %(cnt)s selected",c),{sel:c,cnt:_actions_icnt},!0));a(b.allToggle).prop("checked",function(){var a;c==g.length?(a=!0,k()):(a=!1,n());return a})},k=function(){a(b.acrossClears).hide();
 | 
				
			||||||
 | 
					a(b.acrossQuestions).show();a(b.allContainer).hide()},p=function(){a(b.acrossClears).show();a(b.acrossQuestions).hide();a(b.actionContainer).toggleClass(b.selectedClass);a(b.allContainer).show();a(b.counterContainer).hide()},l=function(){a(b.acrossClears).hide();a(b.acrossQuestions).hide();a(b.allContainer).hide();a(b.counterContainer).show()},n=function(){l();a(b.acrossInput).val(0);a(b.actionContainer).removeClass(b.selectedClass)};a(b.counterContainer).show();a(this).filter(":checked").each(function(c){a(this).parent().parent().toggleClass(b.selectedClass);
 | 
				
			||||||
 | 
					h();1==a(b.acrossInput).val()&&p()});a(b.allToggle).show().click(function(){m(a(this).prop("checked"));h()});a("a",b.acrossQuestions).click(function(c){c.preventDefault();a(b.acrossInput).val(1);p()});a("a",b.acrossClears).click(function(c){c.preventDefault();a(b.allToggle).prop("checked",!1);n();m(0);h()});f=null;a(g).click(function(c){c||(c=window.event);var d=c.target?c.target:c.srcElement;if(f&&a.data(f)!=a.data(d)&&!0===c.shiftKey){var e=!1;a(f).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,
 | 
				
			||||||
 | 
					d.checked);a(g).each(function(){if(a.data(this)==a.data(f)||a.data(this)==a.data(d))e=e?!1:!0;e&&a(this).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked)})}a(d).parent().parent().toggleClass(b.selectedClass,d.checked);f=d;h()});a("form#changelist-form table#result_list tr").find("td:gt(0) :input").change(function(){e=!0});a('form#changelist-form button[name="index"]').click(function(a){if(e)return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."))});
 | 
				
			||||||
 | 
					a('form#changelist-form input[name="_save"]').click(function(c){var d=!1;a("select option:selected",b.actionContainer).each(function(){a(this).val()&&(d=!0)});if(d)return e?confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")):confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."))})};
 | 
				
			||||||
 | 
					a.fn.actions.defaults={actionContainer:"div.actions",counterContainer:"span.action-counter",allContainer:"div.actions span.all",acrossInput:"div.actions input.select-across",acrossQuestions:"div.actions span.question",acrossClears:"div.actions span.clear",allToggle:"#action-toggle",selectedClass:"selected"}})(django.jQuery);
 | 
				
			||||||
							
								
								
									
										356
									
								
								static/admin/js/admin/DateTimeShortcuts.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,356 @@
 | 
				
			||||||
 | 
					// Inserts shortcut buttons after all of the following:
 | 
				
			||||||
 | 
					//     <input type="text" class="vDateField">
 | 
				
			||||||
 | 
					//     <input type="text" class="vTimeField">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var DateTimeShortcuts = {
 | 
				
			||||||
 | 
					    calendars: [],
 | 
				
			||||||
 | 
					    calendarInputs: [],
 | 
				
			||||||
 | 
					    clockInputs: [],
 | 
				
			||||||
 | 
					    dismissClockFunc: [],
 | 
				
			||||||
 | 
					    dismissCalendarFunc: [],
 | 
				
			||||||
 | 
					    calendarDivName1: 'calendarbox', // name of calendar <div> that gets toggled
 | 
				
			||||||
 | 
					    calendarDivName2: 'calendarin',  // name of <div> that contains calendar
 | 
				
			||||||
 | 
					    calendarLinkName: 'calendarlink',// name of the link that is used to toggle
 | 
				
			||||||
 | 
					    clockDivName: 'clockbox',        // name of clock <div> that gets toggled
 | 
				
			||||||
 | 
					    clockLinkName: 'clocklink',      // name of the link that is used to toggle
 | 
				
			||||||
 | 
					    shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts
 | 
				
			||||||
 | 
					    timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch
 | 
				
			||||||
 | 
					    timezoneOffset: 0,
 | 
				
			||||||
 | 
					    admin_media_prefix: '',
 | 
				
			||||||
 | 
					    init: function() {
 | 
				
			||||||
 | 
					        // Get admin_media_prefix by grabbing it off the window object. It's
 | 
				
			||||||
 | 
					        // set in the admin/base.html template, so if it's not there, someone's
 | 
				
			||||||
 | 
					        // overridden the template. In that case, we'll set a clearly-invalid
 | 
				
			||||||
 | 
					        // value in the hopes that someone will examine HTTP requests and see it.
 | 
				
			||||||
 | 
					        if (window.__admin_media_prefix__ != undefined) {
 | 
				
			||||||
 | 
					            DateTimeShortcuts.admin_media_prefix = window.__admin_media_prefix__;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            DateTimeShortcuts.admin_media_prefix = '/missing-admin-media-prefix/';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (window.__admin_utc_offset__ != undefined) {
 | 
				
			||||||
 | 
					            var serverOffset = window.__admin_utc_offset__;
 | 
				
			||||||
 | 
					            var localOffset = new Date().getTimezoneOffset() * -60;
 | 
				
			||||||
 | 
					            DateTimeShortcuts.timezoneOffset = localOffset - serverOffset;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var inputs = document.getElementsByTagName('input');
 | 
				
			||||||
 | 
					        for (i=0; i<inputs.length; i++) {
 | 
				
			||||||
 | 
					            var inp = inputs[i];
 | 
				
			||||||
 | 
					            if (inp.getAttribute('type') == 'text' && inp.className.match(/vTimeField/)) {
 | 
				
			||||||
 | 
					                DateTimeShortcuts.addClock(inp);
 | 
				
			||||||
 | 
					                DateTimeShortcuts.addTimezoneWarning(inp);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else if (inp.getAttribute('type') == 'text' && inp.className.match(/vDateField/)) {
 | 
				
			||||||
 | 
					                DateTimeShortcuts.addCalendar(inp);
 | 
				
			||||||
 | 
					                DateTimeShortcuts.addTimezoneWarning(inp);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // Return the current time while accounting for the server timezone.
 | 
				
			||||||
 | 
					    now: function() {
 | 
				
			||||||
 | 
					        if (window.__admin_utc_offset__ != undefined) {
 | 
				
			||||||
 | 
					            var serverOffset = window.__admin_utc_offset__;
 | 
				
			||||||
 | 
					            var localNow = new Date();
 | 
				
			||||||
 | 
					            var localOffset = localNow.getTimezoneOffset() * -60;
 | 
				
			||||||
 | 
					            localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset));
 | 
				
			||||||
 | 
					            return localNow;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return new Date();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // Add a warning when the time zone in the browser and backend do not match.
 | 
				
			||||||
 | 
					    addTimezoneWarning: function(inp) {
 | 
				
			||||||
 | 
					        var $ = django.jQuery;
 | 
				
			||||||
 | 
					        var warningClass = DateTimeShortcuts.timezoneWarningClass;
 | 
				
			||||||
 | 
					        var timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Only warn if there is a time zone mismatch.
 | 
				
			||||||
 | 
					        if (!timezoneOffset)
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Check if warning is already there.
 | 
				
			||||||
 | 
					        if ($(inp).siblings('.' + warningClass).length)
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var message;
 | 
				
			||||||
 | 
					        if (timezoneOffset > 0) {
 | 
				
			||||||
 | 
					            message = ngettext(
 | 
				
			||||||
 | 
					                'Note: You are %s hour ahead of server time.',
 | 
				
			||||||
 | 
					                'Note: You are %s hours ahead of server time.',
 | 
				
			||||||
 | 
					                timezoneOffset
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            timezoneOffset *= -1
 | 
				
			||||||
 | 
					            message = ngettext(
 | 
				
			||||||
 | 
					                'Note: You are %s hour behind server time.',
 | 
				
			||||||
 | 
					                'Note: You are %s hours behind server time.',
 | 
				
			||||||
 | 
					                timezoneOffset
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        message = interpolate(message, [timezoneOffset]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var $warning = $('<span>');
 | 
				
			||||||
 | 
					        $warning.attr('class', warningClass);
 | 
				
			||||||
 | 
					        $warning.text(message);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $(inp).parent()
 | 
				
			||||||
 | 
					            .append($('<br>'))
 | 
				
			||||||
 | 
					            .append($warning)
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // Add clock widget to a given field
 | 
				
			||||||
 | 
					    addClock: function(inp) {
 | 
				
			||||||
 | 
					        var num = DateTimeShortcuts.clockInputs.length;
 | 
				
			||||||
 | 
					        DateTimeShortcuts.clockInputs[num] = inp;
 | 
				
			||||||
 | 
					        DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Shortcut links (clock icon and "Now" link)
 | 
				
			||||||
 | 
					        var shortcuts_span = document.createElement('span');
 | 
				
			||||||
 | 
					        shortcuts_span.className = DateTimeShortcuts.shortCutsClass;
 | 
				
			||||||
 | 
					        inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);
 | 
				
			||||||
 | 
					        var now_link = document.createElement('a');
 | 
				
			||||||
 | 
					        now_link.setAttribute('href', "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", -1);");
 | 
				
			||||||
 | 
					        now_link.appendChild(document.createTextNode(gettext('Now')));
 | 
				
			||||||
 | 
					        var clock_link = document.createElement('a');
 | 
				
			||||||
 | 
					        clock_link.setAttribute('href', 'javascript:DateTimeShortcuts.openClock(' + num + ');');
 | 
				
			||||||
 | 
					        clock_link.id = DateTimeShortcuts.clockLinkName + num;
 | 
				
			||||||
 | 
					        quickElement('img', clock_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/icon_clock.gif', 'alt', gettext('Clock'));
 | 
				
			||||||
 | 
					        shortcuts_span.appendChild(document.createTextNode('\240'));
 | 
				
			||||||
 | 
					        shortcuts_span.appendChild(now_link);
 | 
				
			||||||
 | 
					        shortcuts_span.appendChild(document.createTextNode('\240|\240'));
 | 
				
			||||||
 | 
					        shortcuts_span.appendChild(clock_link);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Create clock link div
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
 | 
					        // Markup looks like:
 | 
				
			||||||
 | 
					        // <div id="clockbox1" class="clockbox module">
 | 
				
			||||||
 | 
					        //     <h2>Choose a time</h2>
 | 
				
			||||||
 | 
					        //     <ul class="timelist">
 | 
				
			||||||
 | 
					        //         <li><a href="#">Now</a></li>
 | 
				
			||||||
 | 
					        //         <li><a href="#">Midnight</a></li>
 | 
				
			||||||
 | 
					        //         <li><a href="#">6 a.m.</a></li>
 | 
				
			||||||
 | 
					        //         <li><a href="#">Noon</a></li>
 | 
				
			||||||
 | 
					        //     </ul>
 | 
				
			||||||
 | 
					        //     <p class="calendar-cancel"><a href="#">Cancel</a></p>
 | 
				
			||||||
 | 
					        // </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var clock_box = document.createElement('div');
 | 
				
			||||||
 | 
					        clock_box.style.display = 'none';
 | 
				
			||||||
 | 
					        clock_box.style.position = 'absolute';
 | 
				
			||||||
 | 
					        clock_box.className = 'clockbox module';
 | 
				
			||||||
 | 
					        clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num);
 | 
				
			||||||
 | 
					        document.body.appendChild(clock_box);
 | 
				
			||||||
 | 
					        addEvent(clock_box, 'click', cancelEventPropagation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        quickElement('h2', clock_box, gettext('Choose a time'));
 | 
				
			||||||
 | 
					        var time_list = quickElement('ul', clock_box);
 | 
				
			||||||
 | 
					        time_list.className = 'timelist';
 | 
				
			||||||
 | 
					        quickElement("a", quickElement("li", time_list), gettext("Now"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", -1);");
 | 
				
			||||||
 | 
					        quickElement("a", quickElement("li", time_list), gettext("Midnight"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 0);");
 | 
				
			||||||
 | 
					        quickElement("a", quickElement("li", time_list), gettext("6 a.m."), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 6);");
 | 
				
			||||||
 | 
					        quickElement("a", quickElement("li", time_list), gettext("Noon"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 12);");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var cancel_p = quickElement('p', clock_box);
 | 
				
			||||||
 | 
					        cancel_p.className = 'calendar-cancel';
 | 
				
			||||||
 | 
					        quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissClock(' + num + ');');
 | 
				
			||||||
 | 
					        django.jQuery(document).bind('keyup', function(event) {
 | 
				
			||||||
 | 
					            if (event.which == 27) {
 | 
				
			||||||
 | 
					                // ESC key closes popup
 | 
				
			||||||
 | 
					                DateTimeShortcuts.dismissClock(num);
 | 
				
			||||||
 | 
					                event.preventDefault();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    openClock: function(num) {
 | 
				
			||||||
 | 
					        var clock_box = document.getElementById(DateTimeShortcuts.clockDivName+num)
 | 
				
			||||||
 | 
					        var clock_link = document.getElementById(DateTimeShortcuts.clockLinkName+num)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Recalculate the clockbox position
 | 
				
			||||||
 | 
					        // is it left-to-right or right-to-left layout ?
 | 
				
			||||||
 | 
					        if (getStyle(document.body,'direction')!='rtl') {
 | 
				
			||||||
 | 
					            clock_box.style.left = findPosX(clock_link) + 17 + 'px';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            // since style's width is in em, it'd be tough to calculate
 | 
				
			||||||
 | 
					            // px value of it. let's use an estimated px for now
 | 
				
			||||||
 | 
					            // TODO: IE returns wrong value for findPosX when in rtl mode
 | 
				
			||||||
 | 
					            //       (it returns as it was left aligned), needs to be fixed.
 | 
				
			||||||
 | 
					            clock_box.style.left = findPosX(clock_link) - 110 + 'px';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Show the clock box
 | 
				
			||||||
 | 
					        clock_box.style.display = 'block';
 | 
				
			||||||
 | 
					        addEvent(document, 'click', DateTimeShortcuts.dismissClockFunc[num]);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    dismissClock: function(num) {
 | 
				
			||||||
 | 
					       document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none';
 | 
				
			||||||
 | 
					       removeEvent(document, 'click', DateTimeShortcuts.dismissClockFunc[num]);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    handleClockQuicklink: function(num, val) {
 | 
				
			||||||
 | 
					       var d;
 | 
				
			||||||
 | 
					       if (val == -1) {
 | 
				
			||||||
 | 
					           d = DateTimeShortcuts.now();
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					       else {
 | 
				
			||||||
 | 
					           d = new Date(1970, 1, 1, val, 0, 0, 0)
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					       DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]);
 | 
				
			||||||
 | 
					       DateTimeShortcuts.clockInputs[num].focus();
 | 
				
			||||||
 | 
					       DateTimeShortcuts.dismissClock(num);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // Add calendar widget to a given field.
 | 
				
			||||||
 | 
					    addCalendar: function(inp) {
 | 
				
			||||||
 | 
					        var num = DateTimeShortcuts.calendars.length;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        DateTimeShortcuts.calendarInputs[num] = inp;
 | 
				
			||||||
 | 
					        DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Shortcut links (calendar icon and "Today" link)
 | 
				
			||||||
 | 
					        var shortcuts_span = document.createElement('span');
 | 
				
			||||||
 | 
					        shortcuts_span.className = DateTimeShortcuts.shortCutsClass;
 | 
				
			||||||
 | 
					        inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);
 | 
				
			||||||
 | 
					        var today_link = document.createElement('a');
 | 
				
			||||||
 | 
					        today_link.setAttribute('href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);');
 | 
				
			||||||
 | 
					        today_link.appendChild(document.createTextNode(gettext('Today')));
 | 
				
			||||||
 | 
					        var cal_link = document.createElement('a');
 | 
				
			||||||
 | 
					        cal_link.setAttribute('href', 'javascript:DateTimeShortcuts.openCalendar(' + num + ');');
 | 
				
			||||||
 | 
					        cal_link.id = DateTimeShortcuts.calendarLinkName + num;
 | 
				
			||||||
 | 
					        quickElement('img', cal_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/icon_calendar.gif', 'alt', gettext('Calendar'));
 | 
				
			||||||
 | 
					        shortcuts_span.appendChild(document.createTextNode('\240'));
 | 
				
			||||||
 | 
					        shortcuts_span.appendChild(today_link);
 | 
				
			||||||
 | 
					        shortcuts_span.appendChild(document.createTextNode('\240|\240'));
 | 
				
			||||||
 | 
					        shortcuts_span.appendChild(cal_link);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Create calendarbox div.
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
 | 
					        // Markup looks like:
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
 | 
					        // <div id="calendarbox3" class="calendarbox module">
 | 
				
			||||||
 | 
					        //     <h2>
 | 
				
			||||||
 | 
					        //           <a href="#" class="link-previous">‹</a>
 | 
				
			||||||
 | 
					        //           <a href="#" class="link-next">›</a> February 2003
 | 
				
			||||||
 | 
					        //     </h2>
 | 
				
			||||||
 | 
					        //     <div class="calendar" id="calendarin3">
 | 
				
			||||||
 | 
					        //         <!-- (cal) -->
 | 
				
			||||||
 | 
					        //     </div>
 | 
				
			||||||
 | 
					        //     <div class="calendar-shortcuts">
 | 
				
			||||||
 | 
					        //          <a href="#">Yesterday</a> | <a href="#">Today</a> | <a href="#">Tomorrow</a>
 | 
				
			||||||
 | 
					        //     </div>
 | 
				
			||||||
 | 
					        //     <p class="calendar-cancel"><a href="#">Cancel</a></p>
 | 
				
			||||||
 | 
					        // </div>
 | 
				
			||||||
 | 
					        var cal_box = document.createElement('div');
 | 
				
			||||||
 | 
					        cal_box.style.display = 'none';
 | 
				
			||||||
 | 
					        cal_box.style.position = 'absolute';
 | 
				
			||||||
 | 
					        cal_box.className = 'calendarbox module';
 | 
				
			||||||
 | 
					        cal_box.setAttribute('id', DateTimeShortcuts.calendarDivName1 + num);
 | 
				
			||||||
 | 
					        document.body.appendChild(cal_box);
 | 
				
			||||||
 | 
					        addEvent(cal_box, 'click', cancelEventPropagation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // next-prev links
 | 
				
			||||||
 | 
					        var cal_nav = quickElement('div', cal_box);
 | 
				
			||||||
 | 
					        var cal_nav_prev = quickElement('a', cal_nav, '<', 'href', 'javascript:DateTimeShortcuts.drawPrev('+num+');');
 | 
				
			||||||
 | 
					        cal_nav_prev.className = 'calendarnav-previous';
 | 
				
			||||||
 | 
					        var cal_nav_next = quickElement('a', cal_nav, '>', 'href', 'javascript:DateTimeShortcuts.drawNext('+num+');');
 | 
				
			||||||
 | 
					        cal_nav_next.className = 'calendarnav-next';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // main box
 | 
				
			||||||
 | 
					        var cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num);
 | 
				
			||||||
 | 
					        cal_main.className = 'calendar';
 | 
				
			||||||
 | 
					        DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num));
 | 
				
			||||||
 | 
					        DateTimeShortcuts.calendars[num].drawCurrent();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // calendar shortcuts
 | 
				
			||||||
 | 
					        var shortcuts = quickElement('div', cal_box);
 | 
				
			||||||
 | 
					        shortcuts.className = 'calendar-shortcuts';
 | 
				
			||||||
 | 
					        quickElement('a', shortcuts, gettext('Yesterday'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', -1);');
 | 
				
			||||||
 | 
					        shortcuts.appendChild(document.createTextNode('\240|\240'));
 | 
				
			||||||
 | 
					        quickElement('a', shortcuts, gettext('Today'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);');
 | 
				
			||||||
 | 
					        shortcuts.appendChild(document.createTextNode('\240|\240'));
 | 
				
			||||||
 | 
					        quickElement('a', shortcuts, gettext('Tomorrow'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', +1);');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // cancel bar
 | 
				
			||||||
 | 
					        var cancel_p = quickElement('p', cal_box);
 | 
				
			||||||
 | 
					        cancel_p.className = 'calendar-cancel';
 | 
				
			||||||
 | 
					        quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissCalendar(' + num + ');');
 | 
				
			||||||
 | 
					        django.jQuery(document).bind('keyup', function(event) {
 | 
				
			||||||
 | 
					            if (event.which == 27) {
 | 
				
			||||||
 | 
					                // ESC key closes popup
 | 
				
			||||||
 | 
					                DateTimeShortcuts.dismissCalendar(num);
 | 
				
			||||||
 | 
					                event.preventDefault();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    openCalendar: function(num) {
 | 
				
			||||||
 | 
					        var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1+num)
 | 
				
			||||||
 | 
					        var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName+num)
 | 
				
			||||||
 | 
					        var inp = DateTimeShortcuts.calendarInputs[num];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Determine if the current value in the input has a valid date.
 | 
				
			||||||
 | 
					        // If so, draw the calendar with that date's year and month.
 | 
				
			||||||
 | 
					        if (inp.value) {
 | 
				
			||||||
 | 
					            var date_parts = inp.value.split('-');
 | 
				
			||||||
 | 
					            var year = date_parts[0];
 | 
				
			||||||
 | 
					            var month = parseFloat(date_parts[1]);
 | 
				
			||||||
 | 
					            var selected = new Date(inp.value);
 | 
				
			||||||
 | 
					            if (year.match(/\d\d\d\d/) && month >= 1 && month <= 12) {
 | 
				
			||||||
 | 
					                DateTimeShortcuts.calendars[num].drawDate(month, year, selected);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Recalculate the clockbox position
 | 
				
			||||||
 | 
					        // is it left-to-right or right-to-left layout ?
 | 
				
			||||||
 | 
					        if (getStyle(document.body,'direction')!='rtl') {
 | 
				
			||||||
 | 
					            cal_box.style.left = findPosX(cal_link) + 17 + 'px';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            // since style's width is in em, it'd be tough to calculate
 | 
				
			||||||
 | 
					            // px value of it. let's use an estimated px for now
 | 
				
			||||||
 | 
					            // TODO: IE returns wrong value for findPosX when in rtl mode
 | 
				
			||||||
 | 
					            //       (it returns as it was left aligned), needs to be fixed.
 | 
				
			||||||
 | 
					            cal_box.style.left = findPosX(cal_link) - 180 + 'px';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        cal_box.style.display = 'block';
 | 
				
			||||||
 | 
					        addEvent(document, 'click', DateTimeShortcuts.dismissCalendarFunc[num]);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    dismissCalendar: function(num) {
 | 
				
			||||||
 | 
					        document.getElementById(DateTimeShortcuts.calendarDivName1+num).style.display = 'none';
 | 
				
			||||||
 | 
					        removeEvent(document, 'click', DateTimeShortcuts.dismissCalendarFunc[num]);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    drawPrev: function(num) {
 | 
				
			||||||
 | 
					        DateTimeShortcuts.calendars[num].drawPreviousMonth();
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    drawNext: function(num) {
 | 
				
			||||||
 | 
					        DateTimeShortcuts.calendars[num].drawNextMonth();
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    handleCalendarCallback: function(num) {
 | 
				
			||||||
 | 
					        var format = get_format('DATE_INPUT_FORMATS')[0];
 | 
				
			||||||
 | 
					        // the format needs to be escaped a little
 | 
				
			||||||
 | 
					        format = format.replace('\\', '\\\\');
 | 
				
			||||||
 | 
					        format = format.replace('\r', '\\r');
 | 
				
			||||||
 | 
					        format = format.replace('\n', '\\n');
 | 
				
			||||||
 | 
					        format = format.replace('\t', '\\t');
 | 
				
			||||||
 | 
					        format = format.replace("'", "\\'");
 | 
				
			||||||
 | 
					        return ["function(y, m, d) { DateTimeShortcuts.calendarInputs[",
 | 
				
			||||||
 | 
					               num,
 | 
				
			||||||
 | 
					               "].value = new Date(y, m-1, d).strftime('",
 | 
				
			||||||
 | 
					               format,
 | 
				
			||||||
 | 
					               "');DateTimeShortcuts.calendarInputs[",
 | 
				
			||||||
 | 
					               num,
 | 
				
			||||||
 | 
					               "].focus();document.getElementById(DateTimeShortcuts.calendarDivName1+",
 | 
				
			||||||
 | 
					               num,
 | 
				
			||||||
 | 
					               ").style.display='none';}"].join('');
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    handleCalendarQuickLink: function(num, offset) {
 | 
				
			||||||
 | 
					       var d = DateTimeShortcuts.now();
 | 
				
			||||||
 | 
					       d.setDate(d.getDate() + offset)
 | 
				
			||||||
 | 
					       DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]);
 | 
				
			||||||
 | 
					       DateTimeShortcuts.calendarInputs[num].focus();
 | 
				
			||||||
 | 
					       DateTimeShortcuts.dismissCalendar(num);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					addEvent(window, 'load', DateTimeShortcuts.init);
 | 
				
			||||||
							
								
								
									
										97
									
								
								static/admin/js/admin/RelatedObjectLookups.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,97 @@
 | 
				
			||||||
 | 
					// Handles related-objects functionality: lookup link for raw_id_fields
 | 
				
			||||||
 | 
					// and Add Another links.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function html_unescape(text) {
 | 
				
			||||||
 | 
					    // Unescape a string that was escaped using django.utils.html.escape.
 | 
				
			||||||
 | 
					    text = text.replace(/</g, '<');
 | 
				
			||||||
 | 
					    text = text.replace(/>/g, '>');
 | 
				
			||||||
 | 
					    text = text.replace(/"/g, '"');
 | 
				
			||||||
 | 
					    text = text.replace(/'/g, "'");
 | 
				
			||||||
 | 
					    text = text.replace(/&/g, '&');
 | 
				
			||||||
 | 
					    return text;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// IE doesn't accept periods or dashes in the window name, but the element IDs
 | 
				
			||||||
 | 
					// we use to generate popup window names may contain them, therefore we map them
 | 
				
			||||||
 | 
					// to allowed characters in a reversible way so that we can locate the correct
 | 
				
			||||||
 | 
					// element when the popup window is dismissed.
 | 
				
			||||||
 | 
					function id_to_windowname(text) {
 | 
				
			||||||
 | 
					    text = text.replace(/\./g, '__dot__');
 | 
				
			||||||
 | 
					    text = text.replace(/\-/g, '__dash__');
 | 
				
			||||||
 | 
					    return text;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function windowname_to_id(text) {
 | 
				
			||||||
 | 
					    text = text.replace(/__dot__/g, '.');
 | 
				
			||||||
 | 
					    text = text.replace(/__dash__/g, '-');
 | 
				
			||||||
 | 
					    return text;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function showRelatedObjectLookupPopup(triggeringLink) {
 | 
				
			||||||
 | 
					    var name = triggeringLink.id.replace(/^lookup_/, '');
 | 
				
			||||||
 | 
					    name = id_to_windowname(name);
 | 
				
			||||||
 | 
					    var href;
 | 
				
			||||||
 | 
					    if (triggeringLink.href.search(/\?/) >= 0) {
 | 
				
			||||||
 | 
					        href = triggeringLink.href + '&_popup=1';
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        href = triggeringLink.href + '?_popup=1';
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
 | 
				
			||||||
 | 
					    win.focus();
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function dismissRelatedLookupPopup(win, chosenId) {
 | 
				
			||||||
 | 
					    var name = windowname_to_id(win.name);
 | 
				
			||||||
 | 
					    var elem = document.getElementById(name);
 | 
				
			||||||
 | 
					    if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {
 | 
				
			||||||
 | 
					        elem.value += ',' + chosenId;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        document.getElementById(name).value = chosenId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    win.close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function showAddAnotherPopup(triggeringLink) {
 | 
				
			||||||
 | 
					    var name = triggeringLink.id.replace(/^add_/, '');
 | 
				
			||||||
 | 
					    name = id_to_windowname(name);
 | 
				
			||||||
 | 
					    var href = triggeringLink.href;
 | 
				
			||||||
 | 
					    if (href.indexOf('?') == -1) {
 | 
				
			||||||
 | 
					        href += '?_popup=1';
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        href  += '&_popup=1';
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
 | 
				
			||||||
 | 
					    win.focus();
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function dismissAddAnotherPopup(win, newId, newRepr) {
 | 
				
			||||||
 | 
					    // newId and newRepr are expected to have previously been escaped by
 | 
				
			||||||
 | 
					    // django.utils.html.escape.
 | 
				
			||||||
 | 
					    newId = html_unescape(newId);
 | 
				
			||||||
 | 
					    newRepr = html_unescape(newRepr);
 | 
				
			||||||
 | 
					    var name = windowname_to_id(win.name);
 | 
				
			||||||
 | 
					    var elem = document.getElementById(name);
 | 
				
			||||||
 | 
					    var o;
 | 
				
			||||||
 | 
					    if (elem) {
 | 
				
			||||||
 | 
					        var elemName = elem.nodeName.toUpperCase();
 | 
				
			||||||
 | 
					        if (elemName == 'SELECT') {
 | 
				
			||||||
 | 
					            o = new Option(newRepr, newId);
 | 
				
			||||||
 | 
					            elem.options[elem.options.length] = o;
 | 
				
			||||||
 | 
					            o.selected = true;
 | 
				
			||||||
 | 
					        } else if (elemName == 'INPUT') {
 | 
				
			||||||
 | 
					            if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {
 | 
				
			||||||
 | 
					                elem.value += ',' + newId;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                elem.value = newId;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        var toId = name + "_to";
 | 
				
			||||||
 | 
					        o = new Option(newRepr, newId);
 | 
				
			||||||
 | 
					        SelectBox.add_to_cache(toId, o);
 | 
				
			||||||
 | 
					        SelectBox.redisplay(toId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    win.close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										169
									
								
								static/admin/js/calendar.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,169 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					calendar.js - Calendar functions by Adrian Holovaty
 | 
				
			||||||
 | 
					depends on core.js for utility functions like removeChildren or quickElement
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// CalendarNamespace -- Provides a collection of HTML calendar-related helper functions
 | 
				
			||||||
 | 
					var CalendarNamespace = {
 | 
				
			||||||
 | 
					    monthsOfYear: gettext('January February March April May June July August September October November December').split(' '),
 | 
				
			||||||
 | 
					    daysOfWeek: gettext('S M T W T F S').split(' '),
 | 
				
			||||||
 | 
					    firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')),
 | 
				
			||||||
 | 
					    isLeapYear: function(year) {
 | 
				
			||||||
 | 
					        return (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0));
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    getDaysInMonth: function(month,year) {
 | 
				
			||||||
 | 
					        var days;
 | 
				
			||||||
 | 
					        if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) {
 | 
				
			||||||
 | 
					            days = 31;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else if (month==4 || month==6 || month==9 || month==11) {
 | 
				
			||||||
 | 
					            days = 30;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else if (month==2 && CalendarNamespace.isLeapYear(year)) {
 | 
				
			||||||
 | 
					            days = 29;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            days = 28;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return days;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    draw: function(month, year, div_id, callback, selected) { // month = 1-12, year = 1-9999
 | 
				
			||||||
 | 
					        var today = new Date();
 | 
				
			||||||
 | 
					        var todayDay = today.getDate();
 | 
				
			||||||
 | 
					        var todayMonth = today.getMonth()+1;
 | 
				
			||||||
 | 
					        var todayYear = today.getFullYear();
 | 
				
			||||||
 | 
					        var todayClass = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Use UTC functions here because the date field does not contain time
 | 
				
			||||||
 | 
					        // and using the UTC function variants prevent the local time offset
 | 
				
			||||||
 | 
					        // from altering the date, specifically the day field.  For example:
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
 | 
					        // ```
 | 
				
			||||||
 | 
					        // var x = new Date('2013-10-02');
 | 
				
			||||||
 | 
					        // var day = x.getDate();
 | 
				
			||||||
 | 
					        // ```
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
 | 
					        // The day variable above will be 1 instead of 2 in, say, US Pacific time
 | 
				
			||||||
 | 
					        // zone.
 | 
				
			||||||
 | 
					        var isSelectedMonth = false;
 | 
				
			||||||
 | 
					        if (typeof selected != 'undefined') {
 | 
				
			||||||
 | 
					            isSelectedMonth = (selected.getUTCFullYear() == year && (selected.getUTCMonth()+1) == month);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        month = parseInt(month);
 | 
				
			||||||
 | 
					        year = parseInt(year);
 | 
				
			||||||
 | 
					        var calDiv = document.getElementById(div_id);
 | 
				
			||||||
 | 
					        removeChildren(calDiv);
 | 
				
			||||||
 | 
					        var calTable = document.createElement('table');
 | 
				
			||||||
 | 
					        quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month-1] + ' ' + year);
 | 
				
			||||||
 | 
					        var tableBody = quickElement('tbody', calTable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Draw days-of-week header
 | 
				
			||||||
 | 
					        var tableRow = quickElement('tr', tableBody);
 | 
				
			||||||
 | 
					        for (var i = 0; i < 7; i++) {
 | 
				
			||||||
 | 
					            quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i + CalendarNamespace.firstDayOfWeek) % 7]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var startingPos = new Date(year, month-1, 1 - CalendarNamespace.firstDayOfWeek).getDay();
 | 
				
			||||||
 | 
					        var days = CalendarNamespace.getDaysInMonth(month, year);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Draw blanks before first of month
 | 
				
			||||||
 | 
					        tableRow = quickElement('tr', tableBody);
 | 
				
			||||||
 | 
					        for (var i = 0; i < startingPos; i++) {
 | 
				
			||||||
 | 
					            var _cell = quickElement('td', tableRow, ' ');
 | 
				
			||||||
 | 
					            _cell.className = "nonday";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Draw days of month
 | 
				
			||||||
 | 
					        var currentDay = 1;
 | 
				
			||||||
 | 
					        for (var i = startingPos; currentDay <= days; i++) {
 | 
				
			||||||
 | 
					            if (i%7 == 0 && currentDay != 1) {
 | 
				
			||||||
 | 
					                tableRow = quickElement('tr', tableBody);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if ((currentDay==todayDay) && (month==todayMonth) && (year==todayYear)) {
 | 
				
			||||||
 | 
					                todayClass='today';
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                todayClass='';
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // use UTC function; see above for explanation.
 | 
				
			||||||
 | 
					            if (isSelectedMonth && currentDay == selected.getUTCDate()) {
 | 
				
			||||||
 | 
					                if (todayClass != '') todayClass += " ";
 | 
				
			||||||
 | 
					                todayClass += "selected";
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var cell = quickElement('td', tableRow, '', 'class', todayClass);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            quickElement('a', cell, currentDay, 'href', 'javascript:void(' + callback + '('+year+','+month+','+currentDay+'));');
 | 
				
			||||||
 | 
					            currentDay++;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Draw blanks after end of month (optional, but makes for valid code)
 | 
				
			||||||
 | 
					        while (tableRow.childNodes.length < 7) {
 | 
				
			||||||
 | 
					            var _cell = quickElement('td', tableRow, ' ');
 | 
				
			||||||
 | 
					            _cell.className = "nonday";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        calDiv.appendChild(calTable);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Calendar -- A calendar instance
 | 
				
			||||||
 | 
					function Calendar(div_id, callback, selected) {
 | 
				
			||||||
 | 
					    // div_id (string) is the ID of the element in which the calendar will
 | 
				
			||||||
 | 
					    //     be displayed
 | 
				
			||||||
 | 
					    // callback (string) is the name of a JavaScript function that will be
 | 
				
			||||||
 | 
					    //     called with the parameters (year, month, day) when a day in the
 | 
				
			||||||
 | 
					    //     calendar is clicked
 | 
				
			||||||
 | 
					    this.div_id = div_id;
 | 
				
			||||||
 | 
					    this.callback = callback;
 | 
				
			||||||
 | 
					    this.today = new Date();
 | 
				
			||||||
 | 
					    this.currentMonth = this.today.getMonth() + 1;
 | 
				
			||||||
 | 
					    this.currentYear = this.today.getFullYear();
 | 
				
			||||||
 | 
					    if (typeof selected != 'undefined') {
 | 
				
			||||||
 | 
					        this.selected = selected;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					Calendar.prototype = {
 | 
				
			||||||
 | 
					    drawCurrent: function() {
 | 
				
			||||||
 | 
					        CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback, this.selected);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    drawDate: function(month, year, selected) {
 | 
				
			||||||
 | 
					        this.currentMonth = month;
 | 
				
			||||||
 | 
					        this.currentYear = year;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if(selected) {
 | 
				
			||||||
 | 
					            this.selected = selected;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        this.drawCurrent();
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    drawPreviousMonth: function() {
 | 
				
			||||||
 | 
					        if (this.currentMonth == 1) {
 | 
				
			||||||
 | 
					            this.currentMonth = 12;
 | 
				
			||||||
 | 
					            this.currentYear--;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            this.currentMonth--;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        this.drawCurrent();
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    drawNextMonth: function() {
 | 
				
			||||||
 | 
					        if (this.currentMonth == 12) {
 | 
				
			||||||
 | 
					            this.currentMonth = 1;
 | 
				
			||||||
 | 
					            this.currentYear++;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            this.currentMonth++;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        this.drawCurrent();
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    drawPreviousYear: function() {
 | 
				
			||||||
 | 
					        this.currentYear--;
 | 
				
			||||||
 | 
					        this.drawCurrent();
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    drawNextYear: function() {
 | 
				
			||||||
 | 
					        this.currentYear++;
 | 
				
			||||||
 | 
					        this.drawCurrent();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										24
									
								
								static/admin/js/collapse.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,24 @@
 | 
				
			||||||
 | 
					(function($) {
 | 
				
			||||||
 | 
						$(document).ready(function() {
 | 
				
			||||||
 | 
							// Add anchor tag for Show/Hide link
 | 
				
			||||||
 | 
							$("fieldset.collapse").each(function(i, elem) {
 | 
				
			||||||
 | 
								// Don't hide if fields in this fieldset have errors
 | 
				
			||||||
 | 
								if ($(elem).find("div.errors").length == 0) {
 | 
				
			||||||
 | 
									$(elem).addClass("collapsed").find("h2").first().append(' (<a id="fieldsetcollapser' +
 | 
				
			||||||
 | 
										i +'" class="collapse-toggle" href="#">' + gettext("Show") +
 | 
				
			||||||
 | 
										'</a>)');
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
							// Add toggle to anchor tag
 | 
				
			||||||
 | 
							$("fieldset.collapse a.collapse-toggle").click(function(ev) {
 | 
				
			||||||
 | 
								if ($(this).closest("fieldset").hasClass("collapsed")) {
 | 
				
			||||||
 | 
									// Show
 | 
				
			||||||
 | 
									$(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset", [$(this).attr("id")]);
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									// Hide
 | 
				
			||||||
 | 
									$(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", [$(this).attr("id")]);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					})(django.jQuery);
 | 
				
			||||||
							
								
								
									
										2
									
								
								static/admin/js/collapse.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					(function(a){a(document).ready(function(){a("fieldset.collapse").each(function(c,b){a(b).find("div.errors").length==0&&a(b).addClass("collapsed").find("h2").first().append(' (<a id="fieldsetcollapser'+c+'" class="collapse-toggle" href="#">'+gettext("Show")+"</a>)")});a("fieldset.collapse a.collapse-toggle").click(function(){a(this).closest("fieldset").hasClass("collapsed")?a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset",[a(this).attr("id")]):a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset",
 | 
				
			||||||
 | 
					[a(this).attr("id")]);return false})})})(django.jQuery);
 | 
				
			||||||
							
								
								
									
										222
									
								
								static/admin/js/core.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,222 @@
 | 
				
			||||||
 | 
					// Core javascript helper functions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// basic browser identification & version
 | 
				
			||||||
 | 
					var isOpera = (navigator.userAgent.indexOf("Opera")>=0) && parseFloat(navigator.appVersion);
 | 
				
			||||||
 | 
					var isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Cross-browser event handlers.
 | 
				
			||||||
 | 
					function addEvent(obj, evType, fn) {
 | 
				
			||||||
 | 
					    if (obj.addEventListener) {
 | 
				
			||||||
 | 
					        obj.addEventListener(evType, fn, false);
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    } else if (obj.attachEvent) {
 | 
				
			||||||
 | 
					        var r = obj.attachEvent("on" + evType, fn);
 | 
				
			||||||
 | 
					        return r;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function removeEvent(obj, evType, fn) {
 | 
				
			||||||
 | 
					    if (obj.removeEventListener) {
 | 
				
			||||||
 | 
					        obj.removeEventListener(evType, fn, false);
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    } else if (obj.detachEvent) {
 | 
				
			||||||
 | 
					        obj.detachEvent("on" + evType, fn);
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function cancelEventPropagation(e) {
 | 
				
			||||||
 | 
					    if (!e) e = window.event;
 | 
				
			||||||
 | 
					    e.cancelBubble = true;
 | 
				
			||||||
 | 
					    if (e.stopPropagation) e.stopPropagation();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]);
 | 
				
			||||||
 | 
					function quickElement() {
 | 
				
			||||||
 | 
					    var obj = document.createElement(arguments[0]);
 | 
				
			||||||
 | 
					    if (arguments[2]) {
 | 
				
			||||||
 | 
					        var textNode = document.createTextNode(arguments[2]);
 | 
				
			||||||
 | 
					        obj.appendChild(textNode);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    var len = arguments.length;
 | 
				
			||||||
 | 
					    for (var i = 3; i < len; i += 2) {
 | 
				
			||||||
 | 
					        obj.setAttribute(arguments[i], arguments[i+1]);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    arguments[1].appendChild(obj);
 | 
				
			||||||
 | 
					    return obj;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// "a" is reference to an object
 | 
				
			||||||
 | 
					function removeChildren(a) {
 | 
				
			||||||
 | 
					    while (a.hasChildNodes()) a.removeChild(a.lastChild);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// Cross-browser xmlhttp object
 | 
				
			||||||
 | 
					// from http://jibbering.com/2002/4/httprequest.html
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					var xmlhttp;
 | 
				
			||||||
 | 
					/*@cc_on @*/
 | 
				
			||||||
 | 
					/*@if (@_jscript_version >= 5)
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 | 
				
			||||||
 | 
					        } catch (E) {
 | 
				
			||||||
 | 
					            xmlhttp = false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					@else
 | 
				
			||||||
 | 
					    xmlhttp = false;
 | 
				
			||||||
 | 
					@end @*/
 | 
				
			||||||
 | 
					if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
 | 
				
			||||||
 | 
					  xmlhttp = new XMLHttpRequest();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// Find-position functions by PPK
 | 
				
			||||||
 | 
					// See http://www.quirksmode.org/js/findpos.html
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					function findPosX(obj) {
 | 
				
			||||||
 | 
					    var curleft = 0;
 | 
				
			||||||
 | 
					    if (obj.offsetParent) {
 | 
				
			||||||
 | 
					        while (obj.offsetParent) {
 | 
				
			||||||
 | 
					            curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft);
 | 
				
			||||||
 | 
					            obj = obj.offsetParent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // IE offsetParent does not include the top-level
 | 
				
			||||||
 | 
					        if (isIE && obj.parentElement){
 | 
				
			||||||
 | 
					            curleft += obj.offsetLeft - obj.scrollLeft;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else if (obj.x) {
 | 
				
			||||||
 | 
					        curleft += obj.x;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return curleft;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function findPosY(obj) {
 | 
				
			||||||
 | 
					    var curtop = 0;
 | 
				
			||||||
 | 
					    if (obj.offsetParent) {
 | 
				
			||||||
 | 
					        while (obj.offsetParent) {
 | 
				
			||||||
 | 
					            curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop);
 | 
				
			||||||
 | 
					            obj = obj.offsetParent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // IE offsetParent does not include the top-level
 | 
				
			||||||
 | 
					        if (isIE && obj.parentElement){
 | 
				
			||||||
 | 
					            curtop += obj.offsetTop - obj.scrollTop;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else if (obj.y) {
 | 
				
			||||||
 | 
					        curtop += obj.y;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return curtop;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//-----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// Date object extensions
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Date.prototype.getTwelveHours = function() {
 | 
				
			||||||
 | 
					    hours = this.getHours();
 | 
				
			||||||
 | 
					    if (hours == 0) {
 | 
				
			||||||
 | 
					        return 12;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					        return hours <= 12 ? hours : hours-12
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Date.prototype.getTwoDigitMonth = function() {
 | 
				
			||||||
 | 
					    return (this.getMonth() < 9) ? '0' + (this.getMonth()+1) : (this.getMonth()+1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Date.prototype.getTwoDigitDate = function() {
 | 
				
			||||||
 | 
					    return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Date.prototype.getTwoDigitTwelveHour = function() {
 | 
				
			||||||
 | 
					    return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Date.prototype.getTwoDigitHour = function() {
 | 
				
			||||||
 | 
					    return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Date.prototype.getTwoDigitMinute = function() {
 | 
				
			||||||
 | 
					    return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Date.prototype.getTwoDigitSecond = function() {
 | 
				
			||||||
 | 
					    return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Date.prototype.getHourMinute = function() {
 | 
				
			||||||
 | 
					    return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Date.prototype.getHourMinuteSecond = function() {
 | 
				
			||||||
 | 
					    return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Date.prototype.strftime = function(format) {
 | 
				
			||||||
 | 
					    var fields = {
 | 
				
			||||||
 | 
					        c: this.toString(),
 | 
				
			||||||
 | 
					        d: this.getTwoDigitDate(),
 | 
				
			||||||
 | 
					        H: this.getTwoDigitHour(),
 | 
				
			||||||
 | 
					        I: this.getTwoDigitTwelveHour(),
 | 
				
			||||||
 | 
					        m: this.getTwoDigitMonth(),
 | 
				
			||||||
 | 
					        M: this.getTwoDigitMinute(),
 | 
				
			||||||
 | 
					        p: (this.getHours() >= 12) ? 'PM' : 'AM',
 | 
				
			||||||
 | 
					        S: this.getTwoDigitSecond(),
 | 
				
			||||||
 | 
					        w: '0' + this.getDay(),
 | 
				
			||||||
 | 
					        x: this.toLocaleDateString(),
 | 
				
			||||||
 | 
					        X: this.toLocaleTimeString(),
 | 
				
			||||||
 | 
					        y: ('' + this.getFullYear()).substr(2, 4),
 | 
				
			||||||
 | 
					        Y: '' + this.getFullYear(),
 | 
				
			||||||
 | 
					        '%' : '%'
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    var result = '', i = 0;
 | 
				
			||||||
 | 
					    while (i < format.length) {
 | 
				
			||||||
 | 
					        if (format.charAt(i) === '%') {
 | 
				
			||||||
 | 
					            result = result + fields[format.charAt(i + 1)];
 | 
				
			||||||
 | 
					            ++i;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            result = result + format.charAt(i);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ++i;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return result;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// String object extensions
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					String.prototype.pad_left = function(pad_length, pad_string) {
 | 
				
			||||||
 | 
					    var new_string = this;
 | 
				
			||||||
 | 
					    for (var i = 0; new_string.length < pad_length; i++) {
 | 
				
			||||||
 | 
					        new_string = pad_string + new_string;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return new_string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// Get the computed style for and element
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					function getStyle(oElm, strCssRule){
 | 
				
			||||||
 | 
					    var strValue = "";
 | 
				
			||||||
 | 
					    if(document.defaultView && document.defaultView.getComputedStyle){
 | 
				
			||||||
 | 
					        strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else if(oElm.currentStyle){
 | 
				
			||||||
 | 
					        strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
 | 
				
			||||||
 | 
					            return p1.toUpperCase();
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        strValue = oElm.currentStyle[strCssRule];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return strValue;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										272
									
								
								static/admin/js/inlines.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,272 @@
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Django admin inlines
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Based on jQuery Formset 1.1
 | 
				
			||||||
 | 
					 * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com)
 | 
				
			||||||
 | 
					 * @requires jQuery 1.2.6 or later
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright (c) 2009, Stanislaus Madueke
 | 
				
			||||||
 | 
					 * All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Spiced up with Code from Zain Memon's GSoC project 2009
 | 
				
			||||||
 | 
					 * and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed under the New BSD License
 | 
				
			||||||
 | 
					 * See: http://www.opensource.org/licenses/bsd-license.php
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					(function($) {
 | 
				
			||||||
 | 
					  $.fn.formset = function(opts) {
 | 
				
			||||||
 | 
					    var options = $.extend({}, $.fn.formset.defaults, opts);
 | 
				
			||||||
 | 
					    var $this = $(this);
 | 
				
			||||||
 | 
					    var $parent = $this.parent();
 | 
				
			||||||
 | 
					    var updateElementIndex = function(el, prefix, ndx) {
 | 
				
			||||||
 | 
					      var id_regex = new RegExp("(" + prefix + "-(\\d+|__prefix__))");
 | 
				
			||||||
 | 
					      var replacement = prefix + "-" + ndx;
 | 
				
			||||||
 | 
					      if ($(el).prop("for")) {
 | 
				
			||||||
 | 
					        $(el).prop("for", $(el).prop("for").replace(id_regex, replacement));
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if (el.id) {
 | 
				
			||||||
 | 
					        el.id = el.id.replace(id_regex, replacement);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if (el.name) {
 | 
				
			||||||
 | 
					        el.name = el.name.replace(id_regex, replacement);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    var totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS").prop("autocomplete", "off");
 | 
				
			||||||
 | 
					    var nextIndex = parseInt(totalForms.val(), 10);
 | 
				
			||||||
 | 
					    var maxForms = $("#id_" + options.prefix + "-MAX_NUM_FORMS").prop("autocomplete", "off");
 | 
				
			||||||
 | 
					    // only show the add button if we are allowed to add more items,
 | 
				
			||||||
 | 
					        // note that max_num = None translates to a blank string.
 | 
				
			||||||
 | 
					    var showAddButton = maxForms.val() === '' || (maxForms.val()-totalForms.val()) > 0;
 | 
				
			||||||
 | 
					    $this.each(function(i) {
 | 
				
			||||||
 | 
					      $(this).not("." + options.emptyCssClass).addClass(options.formCssClass);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    if ($this.length && showAddButton) {
 | 
				
			||||||
 | 
					      var addButton;
 | 
				
			||||||
 | 
					      if ($this.prop("tagName") == "TR") {
 | 
				
			||||||
 | 
					        // If forms are laid out as table rows, insert the
 | 
				
			||||||
 | 
					        // "add" button in a new table row:
 | 
				
			||||||
 | 
					        var numCols = this.eq(-1).children().length;
 | 
				
			||||||
 | 
					        $parent.append('<tr class="' + options.addCssClass + '"><td colspan="' + numCols + '"><a href="javascript:void(0)">' + options.addText + "</a></tr>");
 | 
				
			||||||
 | 
					        addButton = $parent.find("tr:last a");
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        // Otherwise, insert it immediately after the last form:
 | 
				
			||||||
 | 
					        $this.filter(":last").after('<div class="' + options.addCssClass + '"><a href="javascript:void(0)">' + options.addText + "</a></div>");
 | 
				
			||||||
 | 
					        addButton = $this.filter(":last").next().find("a");
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      addButton.click(function(e) {
 | 
				
			||||||
 | 
					        e.preventDefault();
 | 
				
			||||||
 | 
					        var totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS");
 | 
				
			||||||
 | 
					        var template = $("#" + options.prefix + "-empty");
 | 
				
			||||||
 | 
					        var row = template.clone(true);
 | 
				
			||||||
 | 
					        row.removeClass(options.emptyCssClass)
 | 
				
			||||||
 | 
					          .addClass(options.formCssClass)
 | 
				
			||||||
 | 
					          .attr("id", options.prefix + "-" + nextIndex);
 | 
				
			||||||
 | 
					        if (row.is("tr")) {
 | 
				
			||||||
 | 
					          // If the forms are laid out in table rows, insert
 | 
				
			||||||
 | 
					          // the remove button into the last table cell:
 | 
				
			||||||
 | 
					          row.children(":last").append('<div><a class="' + options.deleteCssClass +'" href="javascript:void(0)">' + options.deleteText + "</a></div>");
 | 
				
			||||||
 | 
					        } else if (row.is("ul") || row.is("ol")) {
 | 
				
			||||||
 | 
					          // If they're laid out as an ordered/unordered list,
 | 
				
			||||||
 | 
					          // insert an <li> after the last list item:
 | 
				
			||||||
 | 
					          row.append('<li><a class="' + options.deleteCssClass +'" href="javascript:void(0)">' + options.deleteText + "</a></li>");
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          // Otherwise, just insert the remove button as the
 | 
				
			||||||
 | 
					          // last child element of the form's container:
 | 
				
			||||||
 | 
					          row.children(":first").append('<span><a class="' + options.deleteCssClass + '" href="javascript:void(0)">' + options.deleteText + "</a></span>");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        row.find("*").each(function() {
 | 
				
			||||||
 | 
					          updateElementIndex(this, options.prefix, totalForms.val());
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        // Insert the new form when it has been fully edited
 | 
				
			||||||
 | 
					        row.insertBefore($(template));
 | 
				
			||||||
 | 
					        // Update number of total forms
 | 
				
			||||||
 | 
					        $(totalForms).val(parseInt(totalForms.val(), 10) + 1);
 | 
				
			||||||
 | 
					        nextIndex += 1;
 | 
				
			||||||
 | 
					        // Hide add button in case we've hit the max, except we want to add infinitely
 | 
				
			||||||
 | 
					        if ((maxForms.val() !== '') && (maxForms.val()-totalForms.val()) <= 0) {
 | 
				
			||||||
 | 
					          addButton.parent().hide();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // The delete button of each row triggers a bunch of other things
 | 
				
			||||||
 | 
					        row.find("a." + options.deleteCssClass).click(function(e) {
 | 
				
			||||||
 | 
					          e.preventDefault();
 | 
				
			||||||
 | 
					          // Remove the parent form containing this button:
 | 
				
			||||||
 | 
					          var row = $(this).parents("." + options.formCssClass);
 | 
				
			||||||
 | 
					          row.remove();
 | 
				
			||||||
 | 
					          nextIndex -= 1;
 | 
				
			||||||
 | 
					          // If a post-delete callback was provided, call it with the deleted form:
 | 
				
			||||||
 | 
					          if (options.removed) {
 | 
				
			||||||
 | 
					            options.removed(row);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          // Update the TOTAL_FORMS form count.
 | 
				
			||||||
 | 
					          var forms = $("." + options.formCssClass);
 | 
				
			||||||
 | 
					          $("#id_" + options.prefix + "-TOTAL_FORMS").val(forms.length);
 | 
				
			||||||
 | 
					          // Show add button again once we drop below max
 | 
				
			||||||
 | 
					          if ((maxForms.val() === '') || (maxForms.val()-forms.length) > 0) {
 | 
				
			||||||
 | 
					            addButton.parent().show();
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          // Also, update names and ids for all remaining form controls
 | 
				
			||||||
 | 
					          // so they remain in sequence:
 | 
				
			||||||
 | 
					          for (var i=0, formCount=forms.length; i<formCount; i++)
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            updateElementIndex($(forms).get(i), options.prefix, i);
 | 
				
			||||||
 | 
					            $(forms.get(i)).find("*").each(function() {
 | 
				
			||||||
 | 
					              updateElementIndex(this, options.prefix, i);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        // If a post-add callback was supplied, call it with the added form:
 | 
				
			||||||
 | 
					        if (options.added) {
 | 
				
			||||||
 | 
					          options.added(row);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return this;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Setup plugin defaults */
 | 
				
			||||||
 | 
					  $.fn.formset.defaults = {
 | 
				
			||||||
 | 
					    prefix: "form",          // The form prefix for your django formset
 | 
				
			||||||
 | 
					    addText: "add another",      // Text for the add link
 | 
				
			||||||
 | 
					    deleteText: "remove",      // Text for the delete link
 | 
				
			||||||
 | 
					    addCssClass: "add-row",      // CSS class applied to the add link
 | 
				
			||||||
 | 
					    deleteCssClass: "delete-row",  // CSS class applied to the delete link
 | 
				
			||||||
 | 
					    emptyCssClass: "empty-row",    // CSS class applied to the empty row
 | 
				
			||||||
 | 
					    formCssClass: "dynamic-form",  // CSS class applied to each form in a formset
 | 
				
			||||||
 | 
					    added: null,          // Function called each time a new form is added
 | 
				
			||||||
 | 
					    removed: null          // Function called each time a form is deleted
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Tabular inlines ---------------------------------------------------------
 | 
				
			||||||
 | 
					  $.fn.tabularFormset = function(options) {
 | 
				
			||||||
 | 
					    var $rows = $(this);
 | 
				
			||||||
 | 
					    var alternatingRows = function(row) {
 | 
				
			||||||
 | 
					      $($rows.selector).not(".add-row").removeClass("row1 row2")
 | 
				
			||||||
 | 
					        .filter(":even").addClass("row1").end()
 | 
				
			||||||
 | 
					        .filter(":odd").addClass("row2");
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var reinitDateTimeShortCuts = function() {
 | 
				
			||||||
 | 
					      // Reinitialize the calendar and clock widgets by force
 | 
				
			||||||
 | 
					      if (typeof DateTimeShortcuts != "undefined") {
 | 
				
			||||||
 | 
					        $(".datetimeshortcuts").remove();
 | 
				
			||||||
 | 
					        DateTimeShortcuts.init();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var updateSelectFilter = function() {
 | 
				
			||||||
 | 
					      // If any SelectFilter widgets are a part of the new form,
 | 
				
			||||||
 | 
					      // instantiate a new SelectFilter instance for it.
 | 
				
			||||||
 | 
					      if (typeof SelectFilter != 'undefined'){
 | 
				
			||||||
 | 
					        $('.selectfilter').each(function(index, value){
 | 
				
			||||||
 | 
					          var namearr = value.name.split('-');
 | 
				
			||||||
 | 
					          SelectFilter.init(value.id, namearr[namearr.length-1], false, options.adminStaticPrefix );
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        $('.selectfilterstacked').each(function(index, value){
 | 
				
			||||||
 | 
					          var namearr = value.name.split('-');
 | 
				
			||||||
 | 
					          SelectFilter.init(value.id, namearr[namearr.length-1], true, options.adminStaticPrefix );
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var initPrepopulatedFields = function(row) {
 | 
				
			||||||
 | 
					      row.find('.prepopulated_field').each(function() {
 | 
				
			||||||
 | 
					        var field = $(this),
 | 
				
			||||||
 | 
					            input = field.find('input, select, textarea'),
 | 
				
			||||||
 | 
					            dependency_list = input.data('dependency_list') || [],
 | 
				
			||||||
 | 
					            dependencies = [];
 | 
				
			||||||
 | 
					        $.each(dependency_list, function(i, field_name) {
 | 
				
			||||||
 | 
					          dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id'));
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        if (dependencies.length) {
 | 
				
			||||||
 | 
					          input.prepopulate(dependencies, input.attr('maxlength'));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $rows.formset({
 | 
				
			||||||
 | 
					      prefix: options.prefix,
 | 
				
			||||||
 | 
					      addText: options.addText,
 | 
				
			||||||
 | 
					      formCssClass: "dynamic-" + options.prefix,
 | 
				
			||||||
 | 
					      deleteCssClass: "inline-deletelink",
 | 
				
			||||||
 | 
					      deleteText: options.deleteText,
 | 
				
			||||||
 | 
					      emptyCssClass: "empty-form",
 | 
				
			||||||
 | 
					      removed: alternatingRows,
 | 
				
			||||||
 | 
					      added: function(row) {
 | 
				
			||||||
 | 
					        initPrepopulatedFields(row);
 | 
				
			||||||
 | 
					        reinitDateTimeShortCuts();
 | 
				
			||||||
 | 
					        updateSelectFilter();
 | 
				
			||||||
 | 
					        alternatingRows(row);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $rows;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Stacked inlines ---------------------------------------------------------
 | 
				
			||||||
 | 
					  $.fn.stackedFormset = function(options) {
 | 
				
			||||||
 | 
					    var $rows = $(this);
 | 
				
			||||||
 | 
					    var updateInlineLabel = function(row) {
 | 
				
			||||||
 | 
					      $($rows.selector).find(".inline_label").each(function(i) {
 | 
				
			||||||
 | 
					        var count = i + 1;
 | 
				
			||||||
 | 
					        $(this).html($(this).html().replace(/(#\d+)/g, "#" + count));
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var reinitDateTimeShortCuts = function() {
 | 
				
			||||||
 | 
					      // Reinitialize the calendar and clock widgets by force, yuck.
 | 
				
			||||||
 | 
					      if (typeof DateTimeShortcuts != "undefined") {
 | 
				
			||||||
 | 
					        $(".datetimeshortcuts").remove();
 | 
				
			||||||
 | 
					        DateTimeShortcuts.init();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var updateSelectFilter = function() {
 | 
				
			||||||
 | 
					      // If any SelectFilter widgets were added, instantiate a new instance.
 | 
				
			||||||
 | 
					      if (typeof SelectFilter != "undefined"){
 | 
				
			||||||
 | 
					        $(".selectfilter").each(function(index, value){
 | 
				
			||||||
 | 
					          var namearr = value.name.split('-');
 | 
				
			||||||
 | 
					          SelectFilter.init(value.id, namearr[namearr.length-1], false, options.adminStaticPrefix);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        $(".selectfilterstacked").each(function(index, value){
 | 
				
			||||||
 | 
					          var namearr = value.name.split('-');
 | 
				
			||||||
 | 
					          SelectFilter.init(value.id, namearr[namearr.length-1], true, options.adminStaticPrefix);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var initPrepopulatedFields = function(row) {
 | 
				
			||||||
 | 
					      row.find('.prepopulated_field').each(function() {
 | 
				
			||||||
 | 
					        var field = $(this),
 | 
				
			||||||
 | 
					            input = field.find('input, select, textarea'),
 | 
				
			||||||
 | 
					            dependency_list = input.data('dependency_list') || [],
 | 
				
			||||||
 | 
					            dependencies = [];
 | 
				
			||||||
 | 
					        $.each(dependency_list, function(i, field_name) {
 | 
				
			||||||
 | 
					          dependencies.push('#' + row.find('.form-row .field-' + field_name).find('input, select, textarea').attr('id'));
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        if (dependencies.length) {
 | 
				
			||||||
 | 
					          input.prepopulate(dependencies, input.attr('maxlength'));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $rows.formset({
 | 
				
			||||||
 | 
					      prefix: options.prefix,
 | 
				
			||||||
 | 
					      addText: options.addText,
 | 
				
			||||||
 | 
					      formCssClass: "dynamic-" + options.prefix,
 | 
				
			||||||
 | 
					      deleteCssClass: "inline-deletelink",
 | 
				
			||||||
 | 
					      deleteText: options.deleteText,
 | 
				
			||||||
 | 
					      emptyCssClass: "empty-form",
 | 
				
			||||||
 | 
					      removed: updateInlineLabel,
 | 
				
			||||||
 | 
					      added: (function(row) {
 | 
				
			||||||
 | 
					        initPrepopulatedFields(row);
 | 
				
			||||||
 | 
					        reinitDateTimeShortCuts();
 | 
				
			||||||
 | 
					        updateSelectFilter();
 | 
				
			||||||
 | 
					        updateInlineLabel(row);
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $rows;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					})(django.jQuery);
 | 
				
			||||||
							
								
								
									
										9
									
								
								static/admin/js/inlines.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					(function(a){a.fn.formset=function(g){var b=a.extend({},a.fn.formset.defaults,g),i=a(this);g=i.parent();var m=function(e,k,h){var j=RegExp("("+k+"-(\\d+|__prefix__))");k=k+"-"+h;a(e).prop("for")&&a(e).prop("for",a(e).prop("for").replace(j,k));if(e.id)e.id=e.id.replace(j,k);if(e.name)e.name=e.name.replace(j,k)},l=a("#id_"+b.prefix+"-TOTAL_FORMS").prop("autocomplete","off"),d=parseInt(l.val(),10),c=a("#id_"+b.prefix+"-MAX_NUM_FORMS").prop("autocomplete","off");l=c.val()===""||c.val()-l.val()>0;i.each(function(){a(this).not("."+
 | 
				
			||||||
 | 
					b.emptyCssClass).addClass(b.formCssClass)});if(i.length&&l){var f;if(i.prop("tagName")=="TR"){i=this.eq(-1).children().length;g.append('<tr class="'+b.addCssClass+'"><td colspan="'+i+'"><a href="javascript:void(0)">'+b.addText+"</a></tr>");f=g.find("tr:last a")}else{i.filter(":last").after('<div class="'+b.addCssClass+'"><a href="javascript:void(0)">'+b.addText+"</a></div>");f=i.filter(":last").next().find("a")}f.click(function(e){e.preventDefault();var k=a("#id_"+b.prefix+"-TOTAL_FORMS");e=a("#"+
 | 
				
			||||||
 | 
					b.prefix+"-empty");var h=e.clone(true);h.removeClass(b.emptyCssClass).addClass(b.formCssClass).attr("id",b.prefix+"-"+d);if(h.is("tr"))h.children(":last").append('<div><a class="'+b.deleteCssClass+'" href="javascript:void(0)">'+b.deleteText+"</a></div>");else h.is("ul")||h.is("ol")?h.append('<li><a class="'+b.deleteCssClass+'" href="javascript:void(0)">'+b.deleteText+"</a></li>"):h.children(":first").append('<span><a class="'+b.deleteCssClass+'" href="javascript:void(0)">'+b.deleteText+"</a></span>");
 | 
				
			||||||
 | 
					h.find("*").each(function(){m(this,b.prefix,k.val())});h.insertBefore(a(e));a(k).val(parseInt(k.val(),10)+1);d+=1;c.val()!==""&&c.val()-k.val()<=0&&f.parent().hide();h.find("a."+b.deleteCssClass).click(function(j){j.preventDefault();j=a(this).parents("."+b.formCssClass);j.remove();d-=1;b.removed&&b.removed(j);j=a("."+b.formCssClass);a("#id_"+b.prefix+"-TOTAL_FORMS").val(j.length);if(c.val()===""||c.val()-j.length>0)f.parent().show();for(var n=0,o=j.length;n<o;n++){m(a(j).get(n),b.prefix,n);a(j.get(n)).find("*").each(function(){m(this,
 | 
				
			||||||
 | 
					b.prefix,n)})}});b.added&&b.added(h)})}return this};a.fn.formset.defaults={prefix:"form",addText:"add another",deleteText:"remove",addCssClass:"add-row",deleteCssClass:"delete-row",emptyCssClass:"empty-row",formCssClass:"dynamic-form",added:null,removed:null};a.fn.tabularFormset=function(g){var b=a(this),i=function(){a(b.selector).not(".add-row").removeClass("row1 row2").filter(":even").addClass("row1").end().filter(":odd").addClass("row2")},m=function(){if(typeof SelectFilter!="undefined"){a(".selectfilter").each(function(d,
 | 
				
			||||||
 | 
					c){var f=c.name.split("-");SelectFilter.init(c.id,f[f.length-1],false,g.adminStaticPrefix)});a(".selectfilterstacked").each(function(d,c){var f=c.name.split("-");SelectFilter.init(c.id,f[f.length-1],true,g.adminStaticPrefix)})}},l=function(d){d.find(".prepopulated_field").each(function(){var c=a(this).find("input, select, textarea"),f=c.data("dependency_list")||[],e=[];a.each(f,function(k,h){e.push("#"+d.find(".field-"+h).find("input, select, textarea").attr("id"))});e.length&&c.prepopulate(e,c.attr("maxlength"))})};
 | 
				
			||||||
 | 
					b.formset({prefix:g.prefix,addText:g.addText,formCssClass:"dynamic-"+g.prefix,deleteCssClass:"inline-deletelink",deleteText:g.deleteText,emptyCssClass:"empty-form",removed:i,added:function(d){l(d);if(typeof DateTimeShortcuts!="undefined"){a(".datetimeshortcuts").remove();DateTimeShortcuts.init()}m();i(d)}});return b};a.fn.stackedFormset=function(g){var b=a(this),i=function(){a(b.selector).find(".inline_label").each(function(d){d=d+1;a(this).html(a(this).html().replace(/(#\d+)/g,"#"+d))})},m=function(){if(typeof SelectFilter!=
 | 
				
			||||||
 | 
					"undefined"){a(".selectfilter").each(function(d,c){var f=c.name.split("-");SelectFilter.init(c.id,f[f.length-1],false,g.adminStaticPrefix)});a(".selectfilterstacked").each(function(d,c){var f=c.name.split("-");SelectFilter.init(c.id,f[f.length-1],true,g.adminStaticPrefix)})}},l=function(d){d.find(".prepopulated_field").each(function(){var c=a(this).find("input, select, textarea"),f=c.data("dependency_list")||[],e=[];a.each(f,function(k,h){e.push("#"+d.find(".form-row .field-"+h).find("input, select, textarea").attr("id"))});
 | 
				
			||||||
 | 
					e.length&&c.prepopulate(e,c.attr("maxlength"))})};b.formset({prefix:g.prefix,addText:g.addText,formCssClass:"dynamic-"+g.prefix,deleteCssClass:"inline-deletelink",deleteText:g.deleteText,emptyCssClass:"empty-form",removed:i,added:function(d){l(d);if(typeof DateTimeShortcuts!="undefined"){a(".datetimeshortcuts").remove();DateTimeShortcuts.init()}m();i(d)}});return b}})(django.jQuery);
 | 
				
			||||||
							
								
								
									
										7
									
								
								static/admin/js/jquery.init.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					/* Puts the included jQuery into our own namespace using noConflict and passing
 | 
				
			||||||
 | 
					 * it 'true'. This ensures that the included jQuery doesn't pollute the global
 | 
				
			||||||
 | 
					 * namespace (i.e. this preserves pre-existing values for both window.$ and
 | 
				
			||||||
 | 
					 * window.jQuery).
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					var django = django || {};
 | 
				
			||||||
 | 
					django.jQuery = jQuery.noConflict(true);
 | 
				
			||||||
							
								
								
									
										9597
									
								
								static/admin/js/jquery.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										5
									
								
								static/admin/js/jquery.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										39
									
								
								static/admin/js/prepopulate.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,39 @@
 | 
				
			||||||
 | 
					(function($) {
 | 
				
			||||||
 | 
					    $.fn.prepopulate = function(dependencies, maxLength) {
 | 
				
			||||||
 | 
					        /*
 | 
				
			||||||
 | 
					            Depends on urlify.js
 | 
				
			||||||
 | 
					            Populates a selected field with the values of the dependent fields,
 | 
				
			||||||
 | 
					            URLifies and shortens the string.
 | 
				
			||||||
 | 
					            dependencies - array of dependent fields ids
 | 
				
			||||||
 | 
					            maxLength - maximum length of the URLify'd string
 | 
				
			||||||
 | 
					        */
 | 
				
			||||||
 | 
					        return this.each(function() {
 | 
				
			||||||
 | 
					            var prepopulatedField = $(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var populate = function () {
 | 
				
			||||||
 | 
					                // Bail if the field's value has been changed by the user
 | 
				
			||||||
 | 
					                if (prepopulatedField.data('_changed')) {
 | 
				
			||||||
 | 
					                    return;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var values = [];
 | 
				
			||||||
 | 
					                $.each(dependencies, function(i, field) {
 | 
				
			||||||
 | 
					                    field = $(field);
 | 
				
			||||||
 | 
					                    if (field.val().length > 0) {
 | 
				
			||||||
 | 
					                        values.push(field.val());
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					                prepopulatedField.val(URLify(values.join(' '), maxLength));
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            prepopulatedField.data('_changed', false);
 | 
				
			||||||
 | 
					            prepopulatedField.change(function() {
 | 
				
			||||||
 | 
					                prepopulatedField.data('_changed', true);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!prepopulatedField.val()) {
 | 
				
			||||||
 | 
					                $(dependencies.join(',')).keyup(populate).change(populate).focus(populate);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					})(django.jQuery);
 | 
				
			||||||
							
								
								
									
										1
									
								
								static/admin/js/prepopulate.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					(function(b){b.fn.prepopulate=function(e,g){return this.each(function(){var a=b(this),d=function(){if(!a.data("_changed")){var f=[];b.each(e,function(h,c){c=b(c);c.val().length>0&&f.push(c.val())});a.val(URLify(f.join(" "),g))}};a.data("_changed",false);a.change(function(){a.data("_changed",true)});a.val()||b(e.join(",")).keyup(d).change(d).focus(d)})}})(django.jQuery);
 | 
				
			||||||
							
								
								
									
										94
									
								
								static/admin/js/timeparse.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,94 @@
 | 
				
			||||||
 | 
					var timeParsePatterns = [
 | 
				
			||||||
 | 
					    // 9
 | 
				
			||||||
 | 
					    {   re: /^\d{1,2}$/i,
 | 
				
			||||||
 | 
					        handler: function(bits) {
 | 
				
			||||||
 | 
					            if (bits[0].length == 1) {
 | 
				
			||||||
 | 
					                return '0' + bits[0] + ':00';
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                return bits[0] + ':00';
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // 13:00
 | 
				
			||||||
 | 
					    {   re: /^\d{2}[:.]\d{2}$/i,
 | 
				
			||||||
 | 
					        handler: function(bits) {
 | 
				
			||||||
 | 
					            return bits[0].replace('.', ':');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // 9:00
 | 
				
			||||||
 | 
					    {   re: /^\d[:.]\d{2}$/i,
 | 
				
			||||||
 | 
					        handler: function(bits) {
 | 
				
			||||||
 | 
					            return '0' + bits[0].replace('.', ':');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // 3 am / 3 a.m. / 3am
 | 
				
			||||||
 | 
					    {   re: /^(\d+)\s*([ap])(?:.?m.?)?$/i,
 | 
				
			||||||
 | 
					        handler: function(bits) {
 | 
				
			||||||
 | 
					            var hour = parseInt(bits[1]);
 | 
				
			||||||
 | 
					            if (hour == 12) {
 | 
				
			||||||
 | 
					                hour = 0;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (bits[2].toLowerCase() == 'p') {
 | 
				
			||||||
 | 
					                if (hour == 12) {
 | 
				
			||||||
 | 
					                    hour = 0;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return (hour + 12) + ':00';
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                if (hour < 10) {
 | 
				
			||||||
 | 
					                    return '0' + hour + ':00';
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    return hour + ':00';
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // 3.30 am / 3:15 a.m. / 3.00am
 | 
				
			||||||
 | 
					    {   re: /^(\d+)[.:](\d{2})\s*([ap]).?m.?$/i,
 | 
				
			||||||
 | 
					        handler: function(bits) {
 | 
				
			||||||
 | 
					            var hour = parseInt(bits[1]);
 | 
				
			||||||
 | 
					            var mins = parseInt(bits[2]);
 | 
				
			||||||
 | 
					            if (mins < 10) {
 | 
				
			||||||
 | 
					                mins = '0' + mins;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (hour == 12) {
 | 
				
			||||||
 | 
					                hour = 0;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (bits[3].toLowerCase() == 'p') {
 | 
				
			||||||
 | 
					                if (hour == 12) {
 | 
				
			||||||
 | 
					                    hour = 0;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return (hour + 12) + ':' + mins;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                if (hour < 10) {
 | 
				
			||||||
 | 
					                    return '0' + hour + ':' + mins;
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    return hour + ':' + mins;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // noon
 | 
				
			||||||
 | 
					    {   re: /^no/i,
 | 
				
			||||||
 | 
					        handler: function(bits) {
 | 
				
			||||||
 | 
					            return '12:00';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // midnight
 | 
				
			||||||
 | 
					    {   re: /^mid/i,
 | 
				
			||||||
 | 
					        handler: function(bits) {
 | 
				
			||||||
 | 
					            return '00:00';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function parseTimeString(s) {
 | 
				
			||||||
 | 
					    for (var i = 0; i < timeParsePatterns.length; i++) {
 | 
				
			||||||
 | 
					        var re = timeParsePatterns[i].re;
 | 
				
			||||||
 | 
					        var handler = timeParsePatterns[i].handler;
 | 
				
			||||||
 | 
					        var bits = re.exec(s);
 | 
				
			||||||
 | 
					        if (bits) {
 | 
				
			||||||
 | 
					            return handler(bits);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return s;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										147
									
								
								static/admin/js/urlify.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,147 @@
 | 
				
			||||||
 | 
					var LATIN_MAP = {
 | 
				
			||||||
 | 
					    'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç':
 | 
				
			||||||
 | 
					    'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I',
 | 
				
			||||||
 | 
					    'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö':
 | 
				
			||||||
 | 
					    'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ű': 'U',
 | 
				
			||||||
 | 
					    'Ý': 'Y', 'Þ': 'TH', 'Ÿ': 'Y', 'ß': 'ss', 'à':'a', 'á':'a', 'â': 'a', 'ã':
 | 
				
			||||||
 | 
					    'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e',
 | 
				
			||||||
 | 
					    'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò':
 | 
				
			||||||
 | 
					    'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u',
 | 
				
			||||||
 | 
					    'ú': 'u', 'û': 'u', 'ü': 'u', 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y'
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var LATIN_SYMBOLS_MAP = {
 | 
				
			||||||
 | 
					    '©':'(c)'
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var GREEK_MAP = {
 | 
				
			||||||
 | 
					    'α':'a', 'β':'b', 'γ':'g', 'δ':'d', 'ε':'e', 'ζ':'z', 'η':'h', 'θ':'8',
 | 
				
			||||||
 | 
					    'ι':'i', 'κ':'k', 'λ':'l', 'μ':'m', 'ν':'n', 'ξ':'3', 'ο':'o', 'π':'p',
 | 
				
			||||||
 | 
					    'ρ':'r', 'σ':'s', 'τ':'t', 'υ':'y', 'φ':'f', 'χ':'x', 'ψ':'ps', 'ω':'w',
 | 
				
			||||||
 | 
					    'ά':'a', 'έ':'e', 'ί':'i', 'ό':'o', 'ύ':'y', 'ή':'h', 'ώ':'w', 'ς':'s',
 | 
				
			||||||
 | 
					    'ϊ':'i', 'ΰ':'y', 'ϋ':'y', 'ΐ':'i',
 | 
				
			||||||
 | 
					    'Α':'A', 'Β':'B', 'Γ':'G', 'Δ':'D', 'Ε':'E', 'Ζ':'Z', 'Η':'H', 'Θ':'8',
 | 
				
			||||||
 | 
					    'Ι':'I', 'Κ':'K', 'Λ':'L', 'Μ':'M', 'Ν':'N', 'Ξ':'3', 'Ο':'O', 'Π':'P',
 | 
				
			||||||
 | 
					    'Ρ':'R', 'Σ':'S', 'Τ':'T', 'Υ':'Y', 'Φ':'F', 'Χ':'X', 'Ψ':'PS', 'Ω':'W',
 | 
				
			||||||
 | 
					    'Ά':'A', 'Έ':'E', 'Ί':'I', 'Ό':'O', 'Ύ':'Y', 'Ή':'H', 'Ώ':'W', 'Ϊ':'I',
 | 
				
			||||||
 | 
					    'Ϋ':'Y'
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var TURKISH_MAP = {
 | 
				
			||||||
 | 
					    'ş':'s', 'Ş':'S', 'ı':'i', 'İ':'I', 'ç':'c', 'Ç':'C', 'ü':'u', 'Ü':'U',
 | 
				
			||||||
 | 
					    'ö':'o', 'Ö':'O', 'ğ':'g', 'Ğ':'G'
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var RUSSIAN_MAP = {
 | 
				
			||||||
 | 
					    'а':'a', 'б':'b', 'в':'v', 'г':'g', 'д':'d', 'е':'e', 'ё':'yo', 'ж':'zh',
 | 
				
			||||||
 | 
					    'з':'z', 'и':'i', 'й':'j', 'к':'k', 'л':'l', 'м':'m', 'н':'n', 'о':'o',
 | 
				
			||||||
 | 
					    'п':'p', 'р':'r', 'с':'s', 'т':'t', 'у':'u', 'ф':'f', 'х':'h', 'ц':'c',
 | 
				
			||||||
 | 
					    'ч':'ch', 'ш':'sh', 'щ':'sh', 'ъ':'', 'ы':'y', 'ь':'', 'э':'e', 'ю':'yu',
 | 
				
			||||||
 | 
					    'я':'ya',
 | 
				
			||||||
 | 
					    'А':'A', 'Б':'B', 'В':'V', 'Г':'G', 'Д':'D', 'Е':'E', 'Ё':'Yo', 'Ж':'Zh',
 | 
				
			||||||
 | 
					    'З':'Z', 'И':'I', 'Й':'J', 'К':'K', 'Л':'L', 'М':'M', 'Н':'N', 'О':'O',
 | 
				
			||||||
 | 
					    'П':'P', 'Р':'R', 'С':'S', 'Т':'T', 'У':'U', 'Ф':'F', 'Х':'H', 'Ц':'C',
 | 
				
			||||||
 | 
					    'Ч':'Ch', 'Ш':'Sh', 'Щ':'Sh', 'Ъ':'', 'Ы':'Y', 'Ь':'', 'Э':'E', 'Ю':'Yu',
 | 
				
			||||||
 | 
					    'Я':'Ya'
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var UKRAINIAN_MAP = {
 | 
				
			||||||
 | 
					    'Є':'Ye', 'І':'I', 'Ї':'Yi', 'Ґ':'G', 'є':'ye', 'і':'i', 'ї':'yi', 'ґ':'g'
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var CZECH_MAP = {
 | 
				
			||||||
 | 
					    'č':'c', 'ď':'d', 'ě':'e', 'ň': 'n', 'ř':'r', 'š':'s', 'ť':'t', 'ů':'u',
 | 
				
			||||||
 | 
					    'ž':'z', 'Č':'C', 'Ď':'D', 'Ě':'E', 'Ň': 'N', 'Ř':'R', 'Š':'S', 'Ť':'T',
 | 
				
			||||||
 | 
					    'Ů':'U', 'Ž':'Z'
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var POLISH_MAP = {
 | 
				
			||||||
 | 
					    'ą':'a', 'ć':'c', 'ę':'e', 'ł':'l', 'ń':'n', 'ó':'o', 'ś':'s', 'ź':'z',
 | 
				
			||||||
 | 
					    'ż':'z', 'Ą':'A', 'Ć':'C', 'Ę':'E', 'Ł':'L', 'Ń':'N', 'Ó':'O', 'Ś':'S',
 | 
				
			||||||
 | 
					    'Ź':'Z', 'Ż':'Z'
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var LATVIAN_MAP = {
 | 
				
			||||||
 | 
					    'ā':'a', 'č':'c', 'ē':'e', 'ģ':'g', 'ī':'i', 'ķ':'k', 'ļ':'l', 'ņ':'n',
 | 
				
			||||||
 | 
					    'š':'s', 'ū':'u', 'ž':'z', 'Ā':'A', 'Č':'C', 'Ē':'E', 'Ģ':'G', 'Ī':'I',
 | 
				
			||||||
 | 
					    'Ķ':'K', 'Ļ':'L', 'Ņ':'N', 'Š':'S', 'Ū':'U', 'Ž':'Z'
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var ARABIC_MAP = {
 | 
				
			||||||
 | 
					    'أ':'a', 'ب':'b', 'ت':'t', 'ث': 'th', 'ج':'g', 'ح':'h', 'خ':'kh', 'د':'d',
 | 
				
			||||||
 | 
					    'ذ':'th', 'ر':'r', 'ز':'z', 'س':'s', 'ش':'sh', 'ص':'s', 'ض':'d', 'ط':'t',
 | 
				
			||||||
 | 
					    'ظ':'th', 'ع':'aa', 'غ':'gh', 'ف':'f', 'ق':'k', 'ك':'k', 'ل':'l', 'م':'m',
 | 
				
			||||||
 | 
					    'ن':'n', 'ه':'h', 'و':'o', 'ي':'y'
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var LITHUANIAN_MAP = {
 | 
				
			||||||
 | 
					    'ą':'a', 'č':'c', 'ę':'e', 'ė':'e', 'į':'i', 'š':'s', 'ų':'u', 'ū':'u',
 | 
				
			||||||
 | 
					    'ž':'z',
 | 
				
			||||||
 | 
					    'Ą':'A', 'Č':'C', 'Ę':'E', 'Ė':'E', 'Į':'I', 'Š':'S', 'Ų':'U', 'Ū':'U',
 | 
				
			||||||
 | 
					    'Ž':'Z'
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var SERBIAN_MAP = {
 | 
				
			||||||
 | 
					    'ђ':'dj', 'ј':'j', 'љ':'lj', 'њ':'nj', 'ћ':'c', 'џ':'dz', 'đ':'dj',
 | 
				
			||||||
 | 
					    'Ђ':'Dj', 'Ј':'j', 'Љ':'Lj', 'Њ':'Nj', 'Ћ':'C', 'Џ':'Dz', 'Đ':'Dj'
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var AZERBAIJANI_MAP = {
 | 
				
			||||||
 | 
					    'ç':'c', 'ə':'e', 'ğ':'g', 'ı':'i', 'ö':'o', 'ş':'s', 'ü':'u',
 | 
				
			||||||
 | 
					    'Ç':'C', 'Ə':'E', 'Ğ':'G', 'İ':'I', 'Ö':'O', 'Ş':'S', 'Ü':'U'
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var ALL_DOWNCODE_MAPS = [
 | 
				
			||||||
 | 
					    LATIN_MAP,
 | 
				
			||||||
 | 
					    LATIN_SYMBOLS_MAP,
 | 
				
			||||||
 | 
					    GREEK_MAP,
 | 
				
			||||||
 | 
					    TURKISH_MAP,
 | 
				
			||||||
 | 
					    RUSSIAN_MAP,
 | 
				
			||||||
 | 
					    UKRAINIAN_MAP,
 | 
				
			||||||
 | 
					    CZECH_MAP,
 | 
				
			||||||
 | 
					    POLISH_MAP,
 | 
				
			||||||
 | 
					    LATVIAN_MAP,
 | 
				
			||||||
 | 
					    ARABIC_MAP,
 | 
				
			||||||
 | 
					    LITHUANIAN_MAP,
 | 
				
			||||||
 | 
					    SERBIAN_MAP,
 | 
				
			||||||
 | 
					    AZERBAIJANI_MAP
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var Downcoder = {
 | 
				
			||||||
 | 
					    'Initialize': function() {
 | 
				
			||||||
 | 
					        if (Downcoder.map) {  // already made
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        Downcoder.map = {};
 | 
				
			||||||
 | 
					        Downcoder.chars = [];
 | 
				
			||||||
 | 
					        for (var i=0; i<ALL_DOWNCODE_MAPS.length; i++) {
 | 
				
			||||||
 | 
					            var lookup = ALL_DOWNCODE_MAPS[i];
 | 
				
			||||||
 | 
					            for (var c in lookup) {
 | 
				
			||||||
 | 
					                if (lookup.hasOwnProperty(c)) {
 | 
				
			||||||
 | 
					                    Downcoder.map[c] = lookup[c];
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        for (var k in Downcoder.map) {
 | 
				
			||||||
 | 
					            if (Downcoder.map.hasOwnProperty(k)) {
 | 
				
			||||||
 | 
					                Downcoder.chars.push(k);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        Downcoder.regex = new RegExp(Downcoder.chars.join('|'), 'g');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function downcode(slug) {
 | 
				
			||||||
 | 
					    Downcoder.Initialize();
 | 
				
			||||||
 | 
					    return slug.replace(Downcoder.regex, function(m) {
 | 
				
			||||||
 | 
					        return Downcoder.map[m];
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function URLify(s, num_chars) {
 | 
				
			||||||
 | 
					    // changes, e.g., "Petty theft" to "petty_theft"
 | 
				
			||||||
 | 
					    // remove all these words from the string before urlifying
 | 
				
			||||||
 | 
					    s = downcode(s);
 | 
				
			||||||
 | 
					    var removelist = [
 | 
				
			||||||
 | 
					        "a", "an", "as", "at", "before", "but", "by", "for", "from", "is",
 | 
				
			||||||
 | 
					        "in", "into", "like", "of", "off", "on", "onto", "per", "since",
 | 
				
			||||||
 | 
					        "than", "the", "this", "that", "to", "up", "via", "with"
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					    var r = new RegExp('\\b(' + removelist.join('|') + ')\\b', 'gi');
 | 
				
			||||||
 | 
					    s = s.replace(r, '');
 | 
				
			||||||
 | 
					    // if downcode doesn't hit, the char will be stripped here
 | 
				
			||||||
 | 
					    s = s.replace(/[^-\w\s]/g, '');  // remove unneeded chars
 | 
				
			||||||
 | 
					    s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces
 | 
				
			||||||
 | 
					    s = s.replace(/[-\s]+/g, '-');   // convert spaces to hyphens
 | 
				
			||||||
 | 
					    s = s.toLowerCase();             // convert to lowercase
 | 
				
			||||||
 | 
					    return s.substring(0, num_chars);// trim to first num_chars chars
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										7
									
								
								static/admin_enhancer/css/related-widget-wrapper.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					.related-widget-wrapper-link {
 | 
				
			||||||
 | 
						opacity: 0.3;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.related-widget-wrapper-link:link {
 | 
				
			||||||
 | 
						opacity: 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										55
									
								
								static/admin_enhancer/js/related-widget-wrapper.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,55 @@
 | 
				
			||||||
 | 
					django.jQuery(document).ready(function($){
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    window.dismissChangeRelatedPopup = function(win, objId, newRepr) {
 | 
				
			||||||
 | 
					        objId = html_unescape(objId);
 | 
				
			||||||
 | 
					        newRepr = html_unescape(newRepr);
 | 
				
			||||||
 | 
					        var id = windowname_to_id(win.name).replace(/^edit_/, ''),
 | 
				
			||||||
 | 
					            selects = $(interpolate('#%s, #%s_from, #%s_to', [id, id, id]));
 | 
				
			||||||
 | 
					        selects.find('option').each(function(){
 | 
				
			||||||
 | 
					            if (this.value == objId) this.innerHTML = newRepr;
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        win.close();
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if (!dismissAddAnotherPopup.original) {
 | 
				
			||||||
 | 
					        var originalDismissAddAnotherPopup = dismissAddAnotherPopup;
 | 
				
			||||||
 | 
					        dismissAddAnotherPopup = function(win, newId, newRepr) {
 | 
				
			||||||
 | 
					            originalDismissAddAnotherPopup(win, newId, newRepr);
 | 
				
			||||||
 | 
					            newId = html_unescape(newId);
 | 
				
			||||||
 | 
					            newRepr = html_unescape(newRepr);
 | 
				
			||||||
 | 
					            $('#' + windowname_to_id(win.name)).trigger('change');
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        dismissAddAnotherPopup.original = originalDismissAddAnotherPopup;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    window.dismissDeleteRelatedPopup = function(win, objId) {
 | 
				
			||||||
 | 
					        objId = html_unescape(objId);
 | 
				
			||||||
 | 
					        var id = windowname_to_id(win.name).replace(/^delete_/, ''),
 | 
				
			||||||
 | 
					            selects = $(interpolate('#%s, #%s_from, #%s_to', [id, id, id]));
 | 
				
			||||||
 | 
					        selects.find('option').each(function(){
 | 
				
			||||||
 | 
					            if (this.value == objId) $(this).remove();
 | 
				
			||||||
 | 
					        }).trigger('change');
 | 
				
			||||||
 | 
					        win.close();
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
						var relatedWidgetCSSSelector = '.related-widget-wrapper-change-link, .related-widget-wrapper-delete-link',
 | 
				
			||||||
 | 
					  		hrefTemplateAttr = 'data-href-template';
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    $('#container').delegate('.related-widget-wrapper', 'change', function(event){
 | 
				
			||||||
 | 
					        var siblings = $(this).nextAll(relatedWidgetCSSSelector),
 | 
				
			||||||
 | 
					            value = event.target.value;
 | 
				
			||||||
 | 
					        if (!siblings.length) return;
 | 
				
			||||||
 | 
					        if (value) {
 | 
				
			||||||
 | 
						       siblings.each(function(){
 | 
				
			||||||
 | 
							      var elm = $(this);
 | 
				
			||||||
 | 
							      elm.attr('href', elm.attr(hrefTemplateAttr).replace('__pk__', value));
 | 
				
			||||||
 | 
						       });
 | 
				
			||||||
 | 
					        } else siblings.removeAttr('href');
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						$('#container').delegate('.related-widget-wrapper-link', 'click', function(event){
 | 
				
			||||||
 | 
					    	if (this.href) {
 | 
				
			||||||
 | 
					    		return showAddAnotherPopup(this);
 | 
				
			||||||
 | 
					    	} else return false;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
							
								
								
									
										96
									
								
								static/cms/PIE.htc
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,96 @@
 | 
				
			||||||
 | 
					<!--
 | 
				
			||||||
 | 
					PIE: CSS3 rendering for IE
 | 
				
			||||||
 | 
					Version 1.0beta5
 | 
				
			||||||
 | 
					http://css3pie.com
 | 
				
			||||||
 | 
					Dual-licensed for use under the Apache License Version 2.0 or the General Public License (GPL) Version 2.
 | 
				
			||||||
 | 
					-->
 | 
				
			||||||
 | 
					<PUBLIC:COMPONENT lightWeight="true">
 | 
				
			||||||
 | 
					<!-- saved from url=(0014)about:internet -->
 | 
				
			||||||
 | 
					<PUBLIC:ATTACH EVENT="oncontentready" FOR="element" ONEVENT="init()" />
 | 
				
			||||||
 | 
					<PUBLIC:ATTACH EVENT="ondocumentready" FOR="element" ONEVENT="init()" />
 | 
				
			||||||
 | 
					<PUBLIC:ATTACH EVENT="ondetach" FOR="element" ONEVENT="cleanup()" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script type="text/javascript">
 | 
				
			||||||
 | 
					var doc = element.document;var f=window.PIE;
 | 
				
			||||||
 | 
					if(!f){f=window.PIE={Q:"-pie-",nb:"Pie",La:"pie_",Ac:{TD:1,TH:1},cc:{TABLE:1,THEAD:1,TBODY:1,TFOOT:1,TR:1,INPUT:1,TEXTAREA:1,SELECT:1,OPTION:1,IMG:1,HR:1},fc:{A:1,INPUT:1,TEXTAREA:1,SELECT:1,BUTTON:1},Gd:{submit:1,button:1,reset:1},aa:function(){}};try{doc.execCommand("BackgroundImageCache",false,true)}catch(aa){}for(var X=4,Y=doc.createElement("div"),ca=Y.getElementsByTagName("i"),Z;Y.innerHTML="<!--[if gt IE "+ ++X+"]><i></i><![endif]--\>",ca[0];);f.V=X;if(X===6)f.Q=f.Q.replace(/^-/,"");f.Ba=doc.documentMode||
 | 
				
			||||||
 | 
					f.V;Y.innerHTML='<v:shape adj="1"/>';Z=Y.firstChild;Z.style.behavior="url(#default#VML)";f.zc=typeof Z.adj==="object";(function(){var a,b=0,c={};f.p={Za:function(d){if(!a){a=doc.createDocumentFragment();a.namespaces.add("css3vml","urn:schemas-microsoft-com:vml")}return a.createElement("css3vml:"+d)},Aa:function(d){return d&&d._pieId||(d._pieId="_"+ ++b)},Eb:function(d){var e,g,i,j,h=arguments;e=1;for(g=h.length;e<g;e++){j=h[e];for(i in j)if(j.hasOwnProperty(i))d[i]=j[i]}return d},Rb:function(d,e,
 | 
				
			||||||
 | 
					g){var i=c[d],j,h;if(i)Object.prototype.toString.call(i)==="[object Array]"?i.push([e,g]):e.call(g,i);else{h=c[d]=[[e,g]];j=new Image;j.onload=function(){i=c[d]={i:j.width,f:j.height};for(var k=0,n=h.length;k<n;k++)h[k][0].call(h[k][1],i);j.onload=null};j.src=d}}}})();f.Na={gc:function(a,b,c,d){function e(){k=i>=90&&i<270?b:0;n=i<180?c:0;l=b-k;q=c-n}function g(){for(;i<0;)i+=360;i%=360}var i=d.ra;d=d.zb;var j,h,k,n,l,q,s,m;if(d){d=d.coords(a,b,c);j=d.x;h=d.y}if(i){i=i.jd();g();e();if(!d){j=k;h=n}d=
 | 
				
			||||||
 | 
					f.Na.tc(j,h,i,l,q);a=d[0];d=d[1]}else if(d){a=b-j;d=c-h}else{j=h=a=0;d=c}s=a-j;m=d-h;if(i===void 0){i=!s?m<0?90:270:!m?s<0?180:0:-Math.atan2(m,s)/Math.PI*180;g();e()}return{ra:i,xc:j,yc:h,td:a,ud:d,Vd:k,Wd:n,rd:l,sd:q,kd:s,ld:m,rc:f.Na.dc(j,h,a,d)}},tc:function(a,b,c,d,e){if(c===0||c===180)return[d,b];else if(c===90||c===270)return[a,e];else{c=Math.tan(-c*Math.PI/180);a=c*a-b;b=-1/c;d=b*d-e;e=b-c;return[(d-a)/e,(c*d-b*a)/e]}},dc:function(a,b,c,d){a=c-a;b=d-b;return Math.abs(a===0?b:b===0?a:Math.sqrt(a*
 | 
				
			||||||
 | 
					a+b*b))}};f.ea=function(){this.Gb=[];this.oc={}};f.ea.prototype={ba:function(a){var b=f.p.Aa(a),c=this.oc,d=this.Gb;if(!(b in c)){c[b]=d.length;d.push(a)}},Ha:function(a){a=f.p.Aa(a);var b=this.oc;if(a&&a in b){delete this.Gb[b[a]];delete b[a]}},wa:function(){for(var a=this.Gb,b=a.length;b--;)a[b]&&a[b]()}};f.Oa=new f.ea;f.Oa.Qd=function(){var a=this;if(!a.Rd){setInterval(function(){a.wa()},250);a.Rd=1}};(function(){function a(){f.K.wa();window.detachEvent("onunload",a);window.PIE=null}f.K=new f.ea;
 | 
				
			||||||
 | 
					window.attachEvent("onunload",a);f.K.sa=function(b,c,d){b.attachEvent(c,d);this.ba(function(){b.detachEvent(c,d)})}})();f.Qa=new f.ea;f.K.sa(window,"onresize",function(){f.Qa.wa()});(function(){function a(){f.mb.wa()}f.mb=new f.ea;f.K.sa(window,"onscroll",a);f.Qa.ba(a)})();(function(){function a(){c=f.kb.md()}function b(){if(c){for(var d=0,e=c.length;d<e;d++)f.attach(c[d]);c=0}}var c;f.K.sa(window,"onbeforeprint",a);f.K.sa(window,"onafterprint",b)})();f.lb=new f.ea;f.K.sa(doc,"onmouseup",function(){f.lb.wa()});
 | 
				
			||||||
 | 
					f.ge=function(){function a(h){this.Y=h}var b=doc.createElement("length-calc"),c=doc.documentElement,d=b.style,e={},g=["mm","cm","in","pt","pc"],i=g.length,j={};d.position="absolute";d.top=d.left="-9999px";for(c.appendChild(b);i--;){b.style.width="100"+g[i];e[g[i]]=b.offsetWidth/100}c.removeChild(b);b.style.width="1em";a.prototype={Kb:/(px|em|ex|mm|cm|in|pt|pc|%)$/,ic:function(){var h=this.Id;if(h===void 0)h=this.Id=parseFloat(this.Y);return h},yb:function(){var h=this.$d;if(!h)h=this.$d=(h=this.Y.match(this.Kb))&&
 | 
				
			||||||
 | 
					h[0]||"px";return h},a:function(h,k){var n=this.ic(),l=this.yb();switch(l){case "px":return n;case "%":return n*(typeof k==="function"?k():k)/100;case "em":return n*this.xb(h);case "ex":return n*this.xb(h)/2;default:return n*e[l]}},xb:function(h){var k=h.currentStyle.fontSize,n,l;if(k.indexOf("px")>0)return parseFloat(k);else if(h.tagName in f.cc){l=this;n=h.parentNode;return f.n(k).a(n,function(){return l.xb(n)})}else{h.appendChild(b);k=b.offsetWidth;b.parentNode===h&&h.removeChild(b);return k}}};
 | 
				
			||||||
 | 
					f.n=function(h){return j[h]||(j[h]=new a(h))};return a}();f.Ja=function(){function a(e){this.X=e}var b=f.n("50%"),c={top:1,center:1,bottom:1},d={left:1,center:1,right:1};a.prototype={zd:function(){if(!this.ac){var e=this.X,g=e.length,i=f.v,j=i.pa,h=f.n("0");j=j.ma;h=["left",h,"top",h];if(g===1){e.push(new i.ob(j,"center"));g++}if(g===2){j&(e[0].k|e[1].k)&&e[0].d in c&&e[1].d in d&&e.push(e.shift());if(e[0].k&j)if(e[0].d==="center")h[1]=b;else h[0]=e[0].d;else if(e[0].W())h[1]=f.n(e[0].d);if(e[1].k&
 | 
				
			||||||
 | 
					j)if(e[1].d==="center")h[3]=b;else h[2]=e[1].d;else if(e[1].W())h[3]=f.n(e[1].d)}this.ac=h}return this.ac},coords:function(e,g,i){var j=this.zd(),h=j[1].a(e,g);e=j[3].a(e,i);return{x:j[0]==="right"?g-h:h,y:j[2]==="bottom"?i-e:e}}};return a}();f.Ka=function(){function a(b,c){this.i=b;this.f=c}a.prototype={a:function(b,c,d,e,g){var i=this.i,j=this.f,h=c/d;e=e/g;if(i==="contain"){i=e>h?c:d*e;j=e>h?c/e:d}else if(i==="cover"){i=e<h?c:d*e;j=e<h?c/e:d}else if(i==="auto"){j=j==="auto"?g:j.a(b,d);i=j*e}else{i=
 | 
				
			||||||
 | 
					i.a(b,c);j=j==="auto"?i/e:j.a(b,d)}return{i:i,f:j}}};a.Kc=new a("auto","auto");return a}();f.Ec=function(){function a(b){this.Y=b}a.prototype={Kb:/[a-z]+$/i,yb:function(){return this.ad||(this.ad=this.Y.match(this.Kb)[0].toLowerCase())},jd:function(){var b=this.Vc,c;if(b===undefined){b=this.yb();c=parseFloat(this.Y,10);b=this.Vc=b==="deg"?c:b==="rad"?c/Math.PI*180:b==="grad"?c/400*360:b==="turn"?c*360:0}return b}};return a}();f.Jc=function(){function a(c){this.Y=c}var b={};a.Pd=/\s*rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d+|\d*\.\d+)\s*\)\s*/;
 | 
				
			||||||
 | 
					a.Fb={aliceblue:"F0F8FF",antiquewhite:"FAEBD7",aqua:"0FF",aquamarine:"7FFFD4",azure:"F0FFFF",beige:"F5F5DC",bisque:"FFE4C4",black:"000",blanchedalmond:"FFEBCD",blue:"00F",blueviolet:"8A2BE2",brown:"A52A2A",burlywood:"DEB887",cadetblue:"5F9EA0",chartreuse:"7FFF00",chocolate:"D2691E",coral:"FF7F50",cornflowerblue:"6495ED",cornsilk:"FFF8DC",crimson:"DC143C",cyan:"0FF",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:"F0F",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",lightgreen:"90EE90",lightgrey:"D3D3D3",lightpink:"FFB6C1",lightsalmon:"FFA07A",lightseagreen:"20B2AA",lightskyblue:"87CEFA",lightslategray:"789",lightsteelblue:"B0C4DE",lightyellow:"FFFFE0",lime:"0F0",limegreen:"32CD32",linen:"FAF0E6",magenta:"F0F",
 | 
				
			||||||
 | 
					maroon:"800000",mediumauqamarine:"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:"688E23",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:"F00",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:"FFF",whitesmoke:"F5F5F5",yellow:"FF0",yellowgreen:"9ACD32"};a.prototype={parse:function(){if(!this.Ua){var c=this.Y,d;if(d=c.match(a.Pd)){this.Ua="rgb("+d[1]+","+d[2]+","+d[3]+")";this.Yb=parseFloat(d[4])}else{if((d=c.toLowerCase())in a.Fb)c="#"+a.Fb[d];this.Ua=c;this.Yb=c==="transparent"?0:1}}},T:function(c){this.parse();return this.Ua==="currentColor"?c.currentStyle.color:this.Ua},fa:function(){this.parse();return this.Yb}};f.ha=function(c){return b[c]||(b[c]=
 | 
				
			||||||
 | 
					new a(c))};return a}();f.v=function(){function a(c){this.$a=c;this.ch=0;this.X=[];this.Ga=0}var b=a.pa={Ia:1,Wb:2,B:4,Lc:8,Xb:16,ma:32,J:64,na:128,oa:256,Ra:512,Tc:1024,URL:2048};a.ob=function(c,d){this.k=c;this.d=d};a.ob.prototype={Ca:function(){return this.k&b.J||this.k&b.na&&this.d==="0"},W:function(){return this.Ca()||this.k&b.Ra}};a.prototype={ce:/\s/,Jd:/^[\+\-]?(\d*\.)?\d+/,url:/^url\(\s*("([^"]*)"|'([^']*)'|([!#$%&*-~]*))\s*\)/i,nc:/^\-?[_a-z][\w-]*/i,Xd:/^("([^"]*)"|'([^']*)')/,Bd:/^#([\da-f]{6}|[\da-f]{3})/i,
 | 
				
			||||||
 | 
					ae:{px:b.J,em:b.J,ex:b.J,mm:b.J,cm:b.J,"in":b.J,pt:b.J,pc:b.J,deg:b.Ia,rad:b.Ia,grad:b.Ia},fd:{rgb:1,rgba:1,hsl:1,hsla:1},next:function(c){function d(q,s){q=new a.ob(q,s);if(!c){k.X.push(q);k.Ga++}return q}function e(){k.Ga++;return null}var g,i,j,h,k=this;if(this.Ga<this.X.length)return this.X[this.Ga++];for(;this.ce.test(this.$a.charAt(this.ch));)this.ch++;if(this.ch>=this.$a.length)return e();i=this.ch;g=this.$a.substring(this.ch);j=g.charAt(0);switch(j){case "#":if(h=g.match(this.Bd)){this.ch+=
 | 
				
			||||||
 | 
					h[0].length;return d(b.B,h[0])}break;case '"':case "'":if(h=g.match(this.Xd)){this.ch+=h[0].length;return d(b.Tc,h[2]||h[3]||"")}break;case "/":case ",":this.ch++;return d(b.oa,j);case "u":if(h=g.match(this.url)){this.ch+=h[0].length;return d(b.URL,h[2]||h[3]||h[4]||"")}}if(h=g.match(this.Jd)){j=h[0];this.ch+=j.length;if(g.charAt(j.length)==="%"){this.ch++;return d(b.Ra,j+"%")}if(h=g.substring(j.length).match(this.nc)){j+=h[0];this.ch+=h[0].length;return d(this.ae[h[0].toLowerCase()]||b.Lc,j)}return d(b.na,
 | 
				
			||||||
 | 
					j)}if(h=g.match(this.nc)){j=h[0];this.ch+=j.length;if(j.toLowerCase()in f.Jc.Fb||j==="currentColor"||j==="transparent")return d(b.B,j);if(g.charAt(j.length)==="("){this.ch++;if(j.toLowerCase()in this.fd){g=function(q){return q&&q.k&b.na};h=function(q){return q&&q.k&(b.na|b.Ra)};var n=function(q,s){return q&&q.d===s},l=function(){return k.next(1)};if((j.charAt(0)==="r"?h(l()):g(l()))&&n(l(),",")&&h(l())&&n(l(),",")&&h(l())&&(j==="rgb"||j==="hsa"||n(l(),",")&&g(l()))&&n(l(),")"))return d(b.B,this.$a.substring(i,
 | 
				
			||||||
 | 
					this.ch));return e()}return d(b.Xb,j)}return d(b.ma,j)}this.ch++;return d(b.Wb,j)},D:function(){return this.X[this.Ga-- -2]},all:function(){for(;this.next(););return this.X},la:function(c,d){for(var e=[],g,i;g=this.next();){if(c(g)){i=true;this.D();break}e.push(g)}return d&&!i?null:e}};return a}();var da=function(a){this.e=a};da.prototype={Z:0,Nd:function(){var a=this.qb,b;return!a||(b=this.o())&&(a.x!==b.x||a.y!==b.y)},Sd:function(){var a=this.qb,b;return!a||(b=this.o())&&(a.i!==b.i||a.f!==b.f)},
 | 
				
			||||||
 | 
					hc:function(){var a=this.e,b=a.getBoundingClientRect(),c=f.Ba===9;return{x:b.left,y:b.top,i:c?a.offsetWidth:b.right-b.left,f:c?a.offsetHeight:b.bottom-b.top}},o:function(){return this.Z?this.Va||(this.Va=this.hc()):this.hc()},Ad:function(){return!!this.qb},cb:function(){++this.Z},hb:function(){if(!--this.Z){if(this.Va)this.qb=this.Va;this.Va=null}}};(function(){function a(b){var c=f.p.Aa(b);return function(){if(this.Z){var d=this.$b||(this.$b={});return c in d?d[c]:(d[c]=b.call(this))}else return b.call(this)}}
 | 
				
			||||||
 | 
					f.C={Z:0,ja:function(b){function c(d){this.e=d;this.Zb=this.ia()}f.p.Eb(c.prototype,f.C,b);c.$c={};return c},j:function(){var b=this.ia(),c=this.constructor.$c;return b?b in c?c[b]:(c[b]=this.ka(b)):null},ia:a(function(){var b=this.e,c=this.constructor,d=b.style;b=b.currentStyle;var e=this.va,g=this.Fa,i=c.Yc||(c.Yc=f.Q+e);c=c.Zc||(c.Zc=f.nb+g.charAt(0).toUpperCase()+g.substring(1));return d[c]||b.getAttribute(i)||d[g]||b.getAttribute(e)}),h:a(function(){return!!this.j()}),G:a(function(){var b=this.ia(),
 | 
				
			||||||
 | 
					c=b!==this.Zb;this.Zb=b;return c}),ua:a,cb:function(){++this.Z},hb:function(){--this.Z||delete this.$b}}})();f.Sb=f.C.ja({va:f.Q+"background",Fa:f.nb+"Background",cd:{scroll:1,fixed:1,local:1},fb:{"repeat-x":1,"repeat-y":1,repeat:1,"no-repeat":1},sc:{"padding-box":1,"border-box":1,"content-box":1},Od:{top:1,right:1,bottom:1,left:1,center:1},Td:{contain:1,cover:1},eb:{Ma:"backgroundClip",B:"backgroundColor",da:"backgroundImage",Pa:"backgroundOrigin",R:"backgroundPosition",S:"backgroundRepeat",Sa:"backgroundSize"},
 | 
				
			||||||
 | 
					ka:function(a){function b(v){return v&&v.W()||v.k&k&&v.d in m}function c(v){return v&&(v.W()&&f.n(v.d)||v.d==="auto"&&"auto")}var d=this.e.currentStyle,e,g,i,j=f.v.pa,h=j.oa,k=j.ma,n=j.B,l,q,s=0,m=this.Od,r,p,t={L:[]};if(this.wb()){e=new f.v(a);for(i={};g=e.next();){l=g.k;q=g.d;if(!i.N&&l&j.Xb&&q==="linear-gradient"){r={ca:[],N:q};for(p={};g=e.next();){l=g.k;q=g.d;if(l&j.Wb&&q===")"){p.color&&r.ca.push(p);r.ca.length>1&&f.p.Eb(i,r);break}if(l&n){if(r.ra||r.zb){g=e.D();if(g.k!==h)break;e.next()}p=
 | 
				
			||||||
 | 
					{color:f.ha(q)};g=e.next();if(g.W())p.db=f.n(g.d);else e.D()}else if(l&j.Ia&&!r.ra&&!p.color&&!r.ca.length)r.ra=new f.Ec(g.d);else if(b(g)&&!r.zb&&!p.color&&!r.ca.length){e.D();r.zb=new f.Ja(e.la(function(v){return!b(v)},false))}else if(l&h&&q===","){if(p.color){r.ca.push(p);p={}}}else break}}else if(!i.N&&l&j.URL){i.Ab=q;i.N="image"}else if(b(g)&&!i.$){e.D();i.$=new f.Ja(e.la(function(v){return!b(v)},false))}else if(l&k)if(q in this.fb&&!i.bb)i.bb=q;else if(q in this.sc&&!i.Wa){i.Wa=q;if((g=e.next())&&
 | 
				
			||||||
 | 
					g.k&k&&g.d in this.sc)i.ub=g.d;else{i.ub=q;e.D()}}else if(q in this.cd&&!i.bc)i.bc=q;else return null;else if(l&n&&!t.color)t.color=f.ha(q);else if(l&h&&q==="/"&&!i.Xa&&i.$){g=e.next();if(g.k&k&&g.d in this.Td)i.Xa=new f.Ka(g.d);else if(g=c(g)){l=c(e.next());if(!l){l=g;e.D()}i.Xa=new f.Ka(g,l)}else return null}else if(l&h&&q===","&&i.N){i.Hb=a.substring(s,e.ch-1);s=e.ch;t.L.push(i);i={}}else return null}if(i.N){i.Hb=a.substring(s);t.L.push(i)}}else this.Bc(f.Ba<9?function(){var v=this.eb,o=d[v.R+
 | 
				
			||||||
 | 
					"X"],u=d[v.R+"Y"],x=d[v.da],y=d[v.B];if(y!=="transparent")t.color=f.ha(y);if(x!=="none")t.L=[{N:"image",Ab:(new f.v(x)).next().d,bb:d[v.S],$:new f.Ja((new f.v(o+" "+u)).all())}]}:function(){var v=this.eb,o=/\s*,\s*/,u=d[v.da].split(o),x=d[v.B],y,z,D,G,E,B;if(x!=="transparent")t.color=f.ha(x);if((G=u.length)&&u[0]!=="none"){x=d[v.S].split(o);y=d[v.R].split(o);z=d[v.Pa].split(o);D=d[v.Ma].split(o);v=d[v.Sa].split(o);t.L=[];for(o=0;o<G;o++)if((E=u[o])&&E!=="none"){B=v[o].split(" ");t.L.push({Hb:E+" "+
 | 
				
			||||||
 | 
					x[o]+" "+y[o]+" / "+v[o]+" "+z[o]+" "+D[o],N:"image",Ab:(new f.v(E)).next().d,bb:x[o],$:new f.Ja((new f.v(y[o])).all()),Wa:z[o],ub:D[o],Xa:new f.Ka(B[0],B[1])})}}});return t.color||t.L[0]?t:null},Bc:function(a){var b=f.Ba>8,c=this.eb,d=this.e.runtimeStyle,e=d[c.da],g=d[c.B],i=d[c.S],j,h,k,n;if(e)d[c.da]="";if(g)d[c.B]="";if(i)d[c.S]="";if(b){j=d[c.Ma];h=d[c.Pa];n=d[c.R];k=d[c.Sa];if(j)d[c.Ma]="";if(h)d[c.Pa]="";if(n)d[c.R]="";if(k)d[c.Sa]=""}a=a.call(this);if(e)d[c.da]=e;if(g)d[c.B]=g;if(i)d[c.S]=
 | 
				
			||||||
 | 
					i;if(b){if(j)d[c.Ma]=j;if(h)d[c.Pa]=h;if(n)d[c.R]=n;if(k)d[c.Sa]=k}return a},ia:f.C.ua(function(){return this.wb()||this.Bc(function(){var a=this.e.currentStyle,b=this.eb;return a[b.B]+" "+a[b.da]+" "+a[b.S]+" "+a[b.R+"X"]+" "+a[b.R+"Y"]})}),wb:f.C.ua(function(){var a=this.e;return a.style[this.Fa]||a.currentStyle.getAttribute(this.va)}),qc:function(){var a=0;if(f.V<7){a=this.e;a=""+(a.style[f.nb+"PngFix"]||a.currentStyle.getAttribute(f.Q+"png-fix"))==="true"}return a},h:f.C.ua(function(){return(this.wb()||
 | 
				
			||||||
 | 
					this.qc())&&!!this.j()})});f.Vb=f.C.ja({wc:["Top","Right","Bottom","Left"],Hd:{thin:"1px",medium:"3px",thick:"5px"},ka:function(){var a={},b={},c={},d=false,e=true,g=true,i=true;this.Cc(function(){for(var j=this.e.currentStyle,h=0,k,n,l,q,s,m,r;h<4;h++){l=this.wc[h];r=l.charAt(0).toLowerCase();k=b[r]=j["border"+l+"Style"];n=j["border"+l+"Color"];l=j["border"+l+"Width"];if(h>0){if(k!==q)g=false;if(n!==s)e=false;if(l!==m)i=false}q=k;s=n;m=l;c[r]=f.ha(n);l=a[r]=f.n(b[r]==="none"?"0":this.Hd[l]||l);if(l.a(this.e)>
 | 
				
			||||||
 | 
					0)d=true}});return d?{I:a,Yd:b,gd:c,de:i,hd:e,Zd:g}:null},ia:f.C.ua(function(){var a=this.e,b=a.currentStyle,c;a.tagName in f.Ac&&a.offsetParent.currentStyle.borderCollapse==="collapse"||this.Cc(function(){c=b.borderWidth+"|"+b.borderStyle+"|"+b.borderColor});return c}),Cc:function(a){var b=this.e.runtimeStyle,c=b.borderWidth,d=b.borderColor;if(c)b.borderWidth="";if(d)b.borderColor="";a=a.call(this);if(c)b.borderWidth=c;if(d)b.borderColor=d;return a}});(function(){f.jb=f.C.ja({va:"border-radius",
 | 
				
			||||||
 | 
					Fa:"borderRadius",ka:function(b){var c=null,d,e,g,i,j=false;if(b){e=new f.v(b);var h=function(){for(var k=[],n;(g=e.next())&&g.W();){i=f.n(g.d);n=i.ic();if(n<0)return null;if(n>0)j=true;k.push(i)}return k.length>0&&k.length<5?{tl:k[0],tr:k[1]||k[0],br:k[2]||k[0],bl:k[3]||k[1]||k[0]}:null};if(b=h()){if(g){if(g.k&f.v.pa.oa&&g.d==="/")d=h()}else d=b;if(j&&b&&d)c={x:b,y:d}}}return c}});var a=f.n("0");a={tl:a,tr:a,br:a,bl:a};f.jb.Dc={x:a,y:a}})();f.Ub=f.C.ja({va:"border-image",Fa:"borderImage",fb:{stretch:1,
 | 
				
			||||||
 | 
					round:1,repeat:1,space:1},ka:function(a){var b=null,c,d,e,g,i,j,h=0,k=f.v.pa,n=k.ma,l=k.na,q=k.Ra;if(a){c=new f.v(a);b={};for(var s=function(p){return p&&p.k&k.oa&&p.d==="/"},m=function(p){return p&&p.k&n&&p.d==="fill"},r=function(){g=c.la(function(p){return!(p.k&(l|q))});if(m(c.next())&&!b.fill)b.fill=true;else c.D();if(s(c.next())){h++;i=c.la(function(p){return!p.W()&&!(p.k&n&&p.d==="auto")});if(s(c.next())){h++;j=c.la(function(p){return!p.Ca()})}}else c.D()};a=c.next();){d=a.k;e=a.d;if(d&(l|q)&&
 | 
				
			||||||
 | 
					!g){c.D();r()}else if(m(a)&&!b.fill){b.fill=true;r()}else if(d&n&&this.fb[e]&&!b.repeat){b.repeat={f:e};if(a=c.next())if(a.k&n&&this.fb[a.d])b.repeat.Ob=a.d;else c.D()}else if(d&k.URL&&!b.src)b.src=e;else return null}if(!b.src||!g||g.length<1||g.length>4||i&&i.length>4||h===1&&i.length<1||j&&j.length>4||h===2&&j.length<1)return null;if(!b.repeat)b.repeat={f:"stretch"};if(!b.repeat.Ob)b.repeat.Ob=b.repeat.f;a=function(p,t){return{t:t(p[0]),r:t(p[1]||p[0]),b:t(p[2]||p[0]),l:t(p[3]||p[1]||p[0])}};b.slice=
 | 
				
			||||||
 | 
					a(g,function(p){return f.n(p.k&l?p.d+"px":p.d)});if(i&&i[0])b.I=a(i,function(p){return p.W()?f.n(p.d):p.d});if(j&&j[0])b.Da=a(j,function(p){return p.Ca()?f.n(p.d):p.d})}return b}});f.Ic=f.C.ja({va:"box-shadow",Fa:"boxShadow",ka:function(a){var b,c=f.n,d=f.v.pa,e;if(a){e=new f.v(a);b={Da:[],Bb:[]};for(a=function(){for(var g,i,j,h,k,n;g=e.next();){j=g.d;i=g.k;if(i&d.oa&&j===",")break;else if(g.Ca()&&!k){e.D();k=e.la(function(l){return!l.Ca()})}else if(i&d.B&&!h)h=j;else if(i&d.ma&&j==="inset"&&!n)n=
 | 
				
			||||||
 | 
					true;else return false}g=k&&k.length;if(g>1&&g<5){(n?b.Bb:b.Da).push({ee:c(k[0].d),fe:c(k[1].d),blur:c(k[2]?k[2].d:"0"),Ud:c(k[3]?k[3].d:"0"),color:f.ha(h||"currentColor")});return true}return false};a(););}return b&&(b.Bb.length||b.Da.length)?b:null}});f.Uc=f.C.ja({ia:f.C.ua(function(){var a=this.e.currentStyle;return a.visibility+"|"+a.display}),ka:function(){var a=this.e,b=a.runtimeStyle;a=a.currentStyle;var c=b.visibility,d;b.visibility="";d=a.visibility;b.visibility=c;return{be:d!=="hidden",
 | 
				
			||||||
 | 
					nd:a.display!=="none"}},h:function(){return false}});f.u={P:function(a){function b(c,d,e,g){this.e=c;this.s=d;this.g=e;this.parent=g}f.p.Eb(b.prototype,f.u,a);return b},Cb:false,O:function(){return false},Ea:f.aa,Lb:function(){this.m();this.h()&&this.U()},ib:function(){this.Cb=true},Mb:function(){this.h()?this.U():this.m()},sb:function(a,b){this.vc(a);for(var c=this.qa||(this.qa=[]),d=a+1,e=c.length,g;d<e;d++)if(g=c[d])break;c[a]=b;this.H().insertBefore(b,g||null)},ya:function(a){var b=this.qa;return b&&
 | 
				
			||||||
 | 
					b[a]||null},vc:function(a){var b=this.ya(a),c=this.Ta;if(b&&c){c.removeChild(b);this.qa[a]=null}},za:function(a,b,c,d){var e=this.rb||(this.rb={}),g=e[a];if(!g){g=e[a]=f.p.Za("shape");if(b)g.appendChild(g[b]=f.p.Za(b));if(d){c=this.ya(d);if(!c){this.sb(d,doc.createElement("group"+d));c=this.ya(d)}}c.appendChild(g);a=g.style;a.position="absolute";a.left=a.top=0;a.behavior="url(#default#VML)"}return g},vb:function(a){var b=this.rb,c=b&&b[a];if(c){c.parentNode.removeChild(c);delete b[a]}return!!c},kc:function(a){var b=
 | 
				
			||||||
 | 
					this.e,c=this.s.o(),d=c.i,e=c.f,g,i,j,h,k,n;c=a.x.tl.a(b,d);g=a.y.tl.a(b,e);i=a.x.tr.a(b,d);j=a.y.tr.a(b,e);h=a.x.br.a(b,d);k=a.y.br.a(b,e);n=a.x.bl.a(b,d);a=a.y.bl.a(b,e);d=Math.min(d/(c+i),e/(j+k),d/(n+h),e/(g+a));if(d<1){c*=d;g*=d;i*=d;j*=d;h*=d;k*=d;n*=d;a*=d}return{x:{tl:c,tr:i,br:h,bl:n},y:{tl:g,tr:j,br:k,bl:a}}},xa:function(a,b,c){b=b||1;var d,e,g=this.s.o();e=g.i*b;g=g.f*b;var i=this.g.F,j=Math.floor,h=Math.ceil,k=a?a.Jb*b:0,n=a?a.Ib*b:0,l=a?a.tb*b:0;a=a?a.Db*b:0;var q,s,m,r,p;if(c||i.h()){d=
 | 
				
			||||||
 | 
					this.kc(c||i.j());c=d.x.tl*b;i=d.y.tl*b;q=d.x.tr*b;s=d.y.tr*b;m=d.x.br*b;r=d.y.br*b;p=d.x.bl*b;b=d.y.bl*b;e="m"+j(a)+","+j(i)+"qy"+j(c)+","+j(k)+"l"+h(e-q)+","+j(k)+"qx"+h(e-n)+","+j(s)+"l"+h(e-n)+","+h(g-r)+"qy"+h(e-m)+","+h(g-l)+"l"+j(p)+","+h(g-l)+"qx"+j(a)+","+h(g-b)+" x e"}else e="m"+j(a)+","+j(k)+"l"+h(e-n)+","+j(k)+"l"+h(e-n)+","+h(g-l)+"l"+j(a)+","+h(g-l)+"xe";return e},H:function(){var a=this.parent.ya(this.M),b;if(!a){a=doc.createElement(this.Ya);b=a.style;b.position="absolute";b.top=b.left=
 | 
				
			||||||
 | 
					0;this.parent.sb(this.M,a)}return a},mc:function(){var a=this.e,b=a.currentStyle,c=a.runtimeStyle,d=a.tagName,e=f.V===6,g;if(e&&(d in f.cc||d==="FIELDSET")||d==="BUTTON"||d==="INPUT"&&a.type in f.Gd){c.borderWidth="";d=this.g.z.wc;for(g=d.length;g--;){e=d[g];c["padding"+e]="";c["padding"+e]=f.n(b["padding"+e]).a(a)+f.n(b["border"+e+"Width"]).a(a)+(f.V!==8&&g%2?1:0)}c.borderWidth=0}else if(e){if(a.childNodes.length!==1||a.firstChild.tagName!=="ie6-mask"){b=doc.createElement("ie6-mask");d=b.style;d.visibility=
 | 
				
			||||||
 | 
					"visible";for(d.zoom=1;d=a.firstChild;)b.appendChild(d);a.appendChild(b);c.visibility="hidden"}}else c.borderColor="transparent"},he:function(){},m:function(){this.parent.vc(this.M);delete this.rb;delete this.qa}};f.Rc=f.u.P({h:function(){var a=this.ed;for(var b in a)if(a.hasOwnProperty(b)&&a[b].h())return true;return false},O:function(){return this.g.Pb.G()},ib:function(){if(this.h()){var a=this.jc(),b=a,c;a=a.currentStyle;var d=a.position,e=this.H().style,g=0,i=0;i=this.s.o();if(d==="fixed"&&f.V>
 | 
				
			||||||
 | 
					6){g=i.x;i=i.y;b=d}else{do b=b.offsetParent;while(b&&b.currentStyle.position==="static");if(b){c=b.getBoundingClientRect();b=b.currentStyle;g=i.x-c.left-(parseFloat(b.borderLeftWidth)||0);i=i.y-c.top-(parseFloat(b.borderTopWidth)||0)}else{b=doc.documentElement;g=i.x+b.scrollLeft-b.clientLeft;i=i.y+b.scrollTop-b.clientTop}b="absolute"}e.position=b;e.left=g;e.top=i;e.zIndex=d==="static"?-1:a.zIndex;this.Cb=true}},Mb:f.aa,Nb:function(){var a=this.g.Pb.j();this.H().style.display=a.be&&a.nd?"":"none"},
 | 
				
			||||||
 | 
					Lb:function(){this.h()?this.Nb():this.m()},jc:function(){var a=this.e;return a.tagName in f.Ac?a.offsetParent:a},H:function(){var a=this.Ta,b;if(!a){b=this.jc();a=this.Ta=doc.createElement("css3-container");a.style.direction="ltr";this.Nb();b.parentNode.insertBefore(a,b)}return a},ab:f.aa,m:function(){var a=this.Ta,b;if(a&&(b=a.parentNode))b.removeChild(a);delete this.Ta;delete this.qa}});f.Fc=f.u.P({M:2,Ya:"background",O:function(){var a=this.g;return a.w.G()||a.F.G()},h:function(){var a=this.g;
 | 
				
			||||||
 | 
					return a.q.h()||a.F.h()||a.w.h()||a.ga.h()&&a.ga.j().Bb},U:function(){var a=this.s.o();if(a.i&&a.f){this.od();this.pd()}},od:function(){var a=this.g.w.j(),b=this.s.o(),c=this.e,d=a&&a.color,e,g;if(d&&d.fa()>0){this.lc();a=this.za("bgColor","fill",this.H(),1);e=b.i;b=b.f;a.stroked=false;a.coordsize=e*2+","+b*2;a.coordorigin="1,1";a.path=this.xa(null,2);g=a.style;g.width=e;g.height=b;a.fill.color=d.T(c);c=d.fa();if(c<1)a.fill.opacity=c}else this.vb("bgColor")},pd:function(){var a=this.g.w.j(),b=this.s.o();
 | 
				
			||||||
 | 
					a=a&&a.L;var c,d,e,g,i;if(a){this.lc();d=b.i;e=b.f;for(i=a.length;i--;){b=a[i];c=this.za("bgImage"+i,"fill",this.H(),2);c.stroked=false;c.fill.type="tile";c.fillcolor="none";c.coordsize=d*2+","+e*2;c.coordorigin="1,1";c.path=this.xa(0,2);g=c.style;g.width=d;g.height=e;if(b.N==="linear-gradient")this.bd(c,b);else{c.fill.src=b.Ab;this.Md(c,i)}}}for(i=a?a.length:0;this.vb("bgImage"+i++););},Md:function(a,b){var c=this;f.p.Rb(a.fill.src,function(d){var e=c.e,g=c.s.o(),i=g.i;g=g.f;if(i&&g){var j=a.fill,
 | 
				
			||||||
 | 
					h=c.g,k=h.z.j(),n=k&&k.I;k=n?n.t.a(e):0;var l=n?n.r.a(e):0,q=n?n.b.a(e):0;n=n?n.l.a(e):0;h=h.w.j().L[b];e=h.$?h.$.coords(e,i-d.i-n-l,g-d.f-k-q):{x:0,y:0};h=h.bb;q=l=0;var s=i+1,m=g+1,r=f.V===8?0:1;n=Math.round(e.x)+n+0.5;k=Math.round(e.y)+k+0.5;j.position=n/i+","+k/g;if(h&&h!=="repeat"){if(h==="repeat-x"||h==="no-repeat"){l=k+1;m=k+d.f+r}if(h==="repeat-y"||h==="no-repeat"){q=n+1;s=n+d.i+r}a.style.clip="rect("+l+"px,"+s+"px,"+m+"px,"+q+"px)"}}})},bd:function(a,b){var c=this.e,d=this.s.o(),e=d.i,g=
 | 
				
			||||||
 | 
					d.f;a=a.fill;d=b.ca;var i=d.length,j=Math.PI,h=f.Na,k=h.tc,n=h.dc;b=h.gc(c,e,g,b);h=b.ra;var l=b.xc,q=b.yc,s=b.Vd,m=b.Wd,r=b.rd,p=b.sd,t=b.kd,v=b.ld;b=b.rc;e=h%90?Math.atan2(t*e/g,v)/j*180:h+90;e+=180;e%=360;r=k(s,m,h,r,p);g=n(s,m,r[0],r[1]);j=[];r=k(l,q,h,s,m);n=n(l,q,r[0],r[1])/g*100;k=[];for(h=0;h<i;h++)k.push(d[h].db?d[h].db.a(c,b):h===0?0:h===i-1?b:null);for(h=1;h<i;h++){if(k[h]===null){l=k[h-1];b=h;do q=k[++b];while(q===null);k[h]=l+(q-l)/(b-h+1)}k[h]=Math.max(k[h],k[h-1])}for(h=0;h<i;h++)j.push(n+
 | 
				
			||||||
 | 
					k[h]/g*100+"% "+d[h].color.T(c));a.angle=e;a.type="gradient";a.method="sigma";a.color=d[0].color.T(c);a.color2=d[i-1].color.T(c);if(a.colors)a.colors.value=j.join(",");else a.colors=j.join(",")},lc:function(){var a=this.e.runtimeStyle;a.backgroundImage="url(about:blank)";a.backgroundColor="transparent"},m:function(){f.u.m.call(this);var a=this.e.runtimeStyle;a.backgroundImage=a.backgroundColor=""}});f.Gc=f.u.P({M:4,Ya:"border",O:function(){var a=this.g;return a.z.G()||a.F.G()},h:function(){var a=
 | 
				
			||||||
 | 
					this.g;return(a.F.h()||a.w.h())&&!a.q.h()&&a.z.h()},U:function(){var a=this.e,b=this.g.z.j(),c=this.s.o(),d=c.i;c=c.f;var e,g,i,j,h;if(b){this.mc();b=this.wd(2);j=0;for(h=b.length;j<h;j++){i=b[j];e=this.za("borderPiece"+j,i.stroke?"stroke":"fill",this.H());e.coordsize=d*2+","+c*2;e.coordorigin="1,1";e.path=i.path;g=e.style;g.width=d;g.height=c;e.filled=!!i.fill;e.stroked=!!i.stroke;if(i.stroke){e=e.stroke;e.weight=i.Qb+"px";e.color=i.color.T(a);e.dashstyle=i.stroke==="dashed"?"2 2":i.stroke==="dotted"?
 | 
				
			||||||
 | 
					"1 1":"solid";e.linestyle=i.stroke==="double"&&i.Qb>2?"ThinThin":"Single"}else e.fill.color=i.fill.T(a)}for(;this.vb("borderPiece"+j++););}},wd:function(a){var b=this.e,c,d,e,g=this.g.z,i=[],j,h,k,n,l=Math.round,q,s,m;if(g.h()){c=g.j();g=c.I;s=c.Yd;m=c.gd;if(c.de&&c.Zd&&c.hd){if(m.t.fa()>0){c=g.t.a(b);k=c/2;i.push({path:this.xa({Jb:k,Ib:k,tb:k,Db:k},a),stroke:s.t,color:m.t,Qb:c})}}else{a=a||1;c=this.s.o();d=c.i;e=c.f;c=l(g.t.a(b));k=l(g.r.a(b));n=l(g.b.a(b));b=l(g.l.a(b));var r={t:c,r:k,b:n,l:b};
 | 
				
			||||||
 | 
					b=this.g.F;if(b.h())q=this.kc(b.j());j=Math.floor;h=Math.ceil;var p=function(o,u){return q?q[o][u]:0},t=function(o,u,x,y,z,D){var G=p("x",o),E=p("y",o),B=o.charAt(1)==="r";o=o.charAt(0)==="b";return G>0&&E>0?(D?"al":"ae")+(B?h(d-G):j(G))*a+","+(o?h(e-E):j(E))*a+","+(j(G)-u)*a+","+(j(E)-x)*a+","+y*65535+","+2949075*(z?1:-1):(D?"m":"l")+(B?d-u:u)*a+","+(o?e-x:x)*a},v=function(o,u,x,y){var z=o==="t"?j(p("x","tl"))*a+","+h(u)*a:o==="r"?h(d-u)*a+","+j(p("y","tr"))*a:o==="b"?h(d-p("x","br"))*a+","+j(e-
 | 
				
			||||||
 | 
					u)*a:j(u)*a+","+h(e-p("y","bl"))*a;o=o==="t"?h(d-p("x","tr"))*a+","+h(u)*a:o==="r"?h(d-u)*a+","+h(e-p("y","br"))*a:o==="b"?j(p("x","bl"))*a+","+j(e-u)*a:j(u)*a+","+j(p("y","tl"))*a;return x?(y?"m"+o:"")+"l"+z:(y?"m"+z:"")+"l"+o};b=function(o,u,x,y,z,D){var G=o==="l"||o==="r",E=r[o],B,A;if(E>0&&s[o]!=="none"&&m[o].fa()>0){B=r[G?o:u];u=r[G?u:o];A=r[G?o:x];x=r[G?x:o];if(s[o]==="dashed"||s[o]==="dotted"){i.push({path:t(y,B,u,D+45,0,1)+t(y,0,0,D,1,0),fill:m[o]});i.push({path:v(o,E/2,0,1),stroke:s[o],Qb:E,
 | 
				
			||||||
 | 
					color:m[o]});i.push({path:t(z,A,x,D,0,1)+t(z,0,0,D-45,1,0),fill:m[o]})}else i.push({path:t(y,B,u,D+45,0,1)+v(o,E,0,0)+t(z,A,x,D,0,0)+(s[o]==="double"&&E>2?t(z,A-j(A/3),x-j(x/3),D-45,1,0)+v(o,h(E/3*2),1,0)+t(y,B-j(B/3),u-j(u/3),D,1,0)+"x "+t(y,j(B/3),j(u/3),D+45,0,1)+v(o,j(E/3),1,0)+t(z,j(A/3),j(x/3),D,0,0):"")+t(z,0,0,D-45,1,0)+v(o,0,1,0)+t(y,0,0,D,1,0),fill:m[o]})}};b("t","l","r","tl","tr",90);b("r","t","b","tr","br",0);b("b","r","l","br","bl",-90);b("l","b","t","bl","tl",-180)}}return i},m:function(){if(this.ec||
 | 
				
			||||||
 | 
					!this.g.q.h())this.e.runtimeStyle.borderColor="";f.u.m.call(this)}});f.Tb=f.u.P({M:5,Ld:["t","tr","r","br","b","bl","l","tl","c"],O:function(){return this.g.q.G()},h:function(){return this.g.q.h()},U:function(){this.H();var a=this.g.q.j(),b=this.g.z.j(),c=this.s.o(),d=this.e,e=this.uc;f.p.Rb(a.src,function(g){function i(v,o,u,x,y){v=e[v].style;var z=Math.max;v.width=z(o,0);v.height=z(u,0);v.left=x;v.top=y}function j(v,o,u){for(var x=0,y=v.length;x<y;x++)e[v[x]].imagedata[o]=u}var h=c.i,k=c.f,n=f.n("0"),
 | 
				
			||||||
 | 
					l=a.I||(b?b.I:{t:n,r:n,b:n,l:n});n=l.t.a(d);var q=l.r.a(d),s=l.b.a(d);l=l.l.a(d);var m=a.slice,r=m.t.a(d),p=m.r.a(d),t=m.b.a(d);m=m.l.a(d);i("tl",l,n,0,0);i("t",h-l-q,n,l,0);i("tr",q,n,h-q,0);i("r",q,k-n-s,h-q,n);i("br",q,s,h-q,k-s);i("b",h-l-q,s,l,k-s);i("bl",l,s,0,k-s);i("l",l,k-n-s,0,n);i("c",h-l-q,k-n-s,l,n);j(["tl","t","tr"],"cropBottom",(g.f-r)/g.f);j(["tl","l","bl"],"cropRight",(g.i-m)/g.i);j(["bl","b","br"],"cropTop",(g.f-t)/g.f);j(["tr","r","br"],"cropLeft",(g.i-p)/g.i);j(["l","r","c"],"cropTop",
 | 
				
			||||||
 | 
					r/g.f);j(["l","r","c"],"cropBottom",t/g.f);j(["t","b","c"],"cropLeft",m/g.i);j(["t","b","c"],"cropRight",p/g.i);e.c.style.display=a.fill?"":"none"},this)},H:function(){var a=this.parent.ya(this.M),b,c,d,e=this.Ld,g=e.length;if(!a){a=doc.createElement("border-image");b=a.style;b.position="absolute";this.uc={};for(d=0;d<g;d++){c=this.uc[e[d]]=f.p.Za("rect");c.appendChild(f.p.Za("imagedata"));b=c.style;b.behavior="url(#default#VML)";b.position="absolute";b.top=b.left=0;c.imagedata.src=this.g.q.j().src;
 | 
				
			||||||
 | 
					c.stroked=false;c.filled=false;a.appendChild(c)}this.parent.sb(this.M,a)}return a},Ea:function(){if(this.h()){var a=this.e,b=a.runtimeStyle,c=this.g.q.j().I;b.borderStyle="solid";if(c){b.borderTopWidth=c.t.a(a)+"px";b.borderRightWidth=c.r.a(a)+"px";b.borderBottomWidth=c.b.a(a)+"px";b.borderLeftWidth=c.l.a(a)+"px"}this.mc()}},m:function(){var a=this.e.runtimeStyle;a.borderStyle="";if(this.ec||!this.g.z.h())a.borderColor=a.borderWidth="";f.u.m.call(this)}});f.Hc=f.u.P({M:1,Ya:"outset-box-shadow",O:function(){var a=
 | 
				
			||||||
 | 
					this.g;return a.ga.G()||a.F.G()},h:function(){var a=this.g.ga;return a.h()&&a.j().Da[0]},U:function(){function a(B,A,L,N,H,I,F){B=b.za("shadow"+B+A,"fill",d,i-B);A=B.fill;B.coordsize=n*2+","+l*2;B.coordorigin="1,1";B.stroked=false;B.filled=true;A.color=H.T(c);if(I){A.type="gradienttitle";A.color2=A.color;A.opacity=0}B.path=F;p=B.style;p.left=L;p.top=N;p.width=n;p.height=l;return B}var b=this,c=this.e,d=this.H(),e=this.g,g=e.ga.j().Da;e=e.F.j();var i=g.length,j=i,h,k=this.s.o(),n=k.i,l=k.f;k=f.V===
 | 
				
			||||||
 | 
					8?1:0;for(var q=["tl","tr","br","bl"],s,m,r,p,t,v,o,u,x,y,z,D,G,E;j--;){m=g[j];t=m.ee.a(c);v=m.fe.a(c);h=m.Ud.a(c);o=m.blur.a(c);m=m.color;u=-h-o;if(!e&&o)e=f.jb.Dc;u=this.xa({Jb:u,Ib:u,tb:u,Db:u},2,e);if(o){x=(h+o)*2+n;y=(h+o)*2+l;z=o*2/x;D=o*2/y;if(o-h>n/2||o-h>l/2)for(h=4;h--;){s=q[h];G=s.charAt(0)==="b";E=s.charAt(1)==="r";s=a(j,s,t,v,m,o,u);r=s.fill;r.focusposition=(E?1-z:z)+","+(G?1-D:D);r.focussize="0,0";s.style.clip="rect("+((G?y/2:0)+k)+"px,"+(E?x:x/2)+"px,"+(G?y:y/2)+"px,"+((E?x/2:0)+k)+
 | 
				
			||||||
 | 
					"px)"}else{s=a(j,"",t,v,m,o,u);r=s.fill;r.focusposition=z+","+D;r.focussize=1-z*2+","+(1-D*2)}}else{s=a(j,"",t,v,m,o,u);t=m.fa();if(t<1)s.fill.opacity=t}}}});f.Pc=f.u.P({M:6,Ya:"imgEl",O:function(){var a=this.g;return this.e.src!==this.Xc||a.F.G()},h:function(){var a=this.g;return a.F.h()||a.w.qc()},U:function(){this.Xc=i;this.Cd();var a=this.za("img","fill",this.H()),b=a.fill,c=this.s.o(),d=c.i;c=c.f;var e=this.g.z.j(),g=e&&e.I;e=this.e;var i=e.src,j=Math.round,h=e.currentStyle,k=f.n;if(!g||f.V<
 | 
				
			||||||
 | 
					7){g=f.n("0");g={t:g,r:g,b:g,l:g}}a.stroked=false;b.type="frame";b.src=i;b.position=(d?0.5/d:0)+","+(c?0.5/c:0);a.coordsize=d*2+","+c*2;a.coordorigin="1,1";a.path=this.xa({Jb:j(g.t.a(e)+k(h.paddingTop).a(e)),Ib:j(g.r.a(e)+k(h.paddingRight).a(e)),tb:j(g.b.a(e)+k(h.paddingBottom).a(e)),Db:j(g.l.a(e)+k(h.paddingLeft).a(e))},2);a=a.style;a.width=d;a.height=c},Cd:function(){this.e.runtimeStyle.filter="alpha(opacity=0)"},m:function(){f.u.m.call(this);this.e.runtimeStyle.filter=""}});f.Oc=f.u.P({ib:f.aa,
 | 
				
			||||||
 | 
					Mb:f.aa,Nb:f.aa,Lb:f.aa,Kd:/^,+|,+$/g,Fd:/,+/g,gb:function(a,b){(this.pb||(this.pb=[]))[a]=b||void 0},ab:function(){var a=this.pb,b;if(a&&(b=a.join(",").replace(this.Kd,"").replace(this.Fd,","))!==this.Wc)this.Wc=this.e.runtimeStyle.background=b},m:function(){this.e.runtimeStyle.background="";delete this.pb}});f.Mc=f.u.P({ta:1,O:function(){return this.g.w.G()},h:function(){var a=this.g;return a.w.h()||a.q.h()},U:function(){var a=this.g.w.j(),b,c,d=0,e,g;if(a){b=[];if(c=a.L)for(;e=c[d++];)if(e.N===
 | 
				
			||||||
 | 
					"linear-gradient"){g=this.vd(e.Wa);g=(e.Xa||f.Ka.Kc).a(this.e,g.i,g.f,g.i,g.f);b.push("url(data:image/svg+xml,"+escape(this.xd(e,g.i,g.f))+") "+this.dd(e.$)+" / "+g.i+"px "+g.f+"px "+(e.bc||"")+" "+(e.Wa||"")+" "+(e.ub||""))}else b.push(e.Hb);a.color&&b.push(a.color.Y);this.parent.gb(this.ta,b.join(","))}},dd:function(a){return a?a.X.map(function(b){return b.d}).join(" "):"0 0"},vd:function(a){var b=this.e,c=this.s.o(),d=c.i;c=c.f;var e;if(a!=="border-box")if((e=this.g.z.j())&&(e=e.I)){d-=e.l.a(b)+
 | 
				
			||||||
 | 
					e.l.a(b);c-=e.t.a(b)+e.b.a(b)}if(a==="content-box"){a=f.n;e=b.currentStyle;d-=a(e.paddingLeft).a(b)+a(e.paddingRight).a(b);c-=a(e.paddingTop).a(b)+a(e.paddingBottom).a(b)}return{i:d,f:c}},xd:function(a,b,c){var d=this.e,e=a.ca,g=e.length,i=f.Na.gc(d,b,c,a);a=i.xc;var j=i.yc,h=i.td,k=i.ud;i=i.rc;var n,l,q,s,m;n=[];for(l=0;l<g;l++)n.push(e[l].db?e[l].db.a(d,i):l===0?0:l===g-1?i:null);for(l=1;l<g;l++)if(n[l]===null){s=n[l-1];q=l;do m=n[++q];while(m===null);n[l]=s+(m-s)/(q-l+1)}b=['<svg width="'+b+'" height="'+
 | 
				
			||||||
 | 
					c+'" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="g" gradientUnits="userSpaceOnUse" x1="'+a/b*100+'%" y1="'+j/c*100+'%" x2="'+h/b*100+'%" y2="'+k/c*100+'%">'];for(l=0;l<g;l++)b.push('<stop offset="'+n[l]/i+'" stop-color="'+e[l].color.T(d)+'" stop-opacity="'+e[l].color.fa()+'"/>');b.push('</linearGradient></defs><rect width="100%" height="100%" fill="url(#g)"/></svg>');return b.join("")},m:function(){this.parent.gb(this.ta)}});f.Nc=f.u.P({S:"repeat",Sc:"stretch",Qc:"round",ta:0,O:function(){return this.g.q.G()},
 | 
				
			||||||
 | 
					h:function(){return this.g.q.h()},U:function(){var a=this,b=a.g.q.j(),c=a.g.z.j(),d=a.s.o(),e=b.repeat,g=e.f,i=e.Ob,j=a.e,h=0;f.p.Rb(b.src,function(k){function n(R,S,U,V,W,T,w,C,K,O){J.push('<pattern patternUnits="userSpaceOnUse" id="pattern'+Q+'" x="'+(g===p?R+U/2-K/2:R)+'" y="'+(i===p?S+V/2-O/2:S)+'" width="'+K+'" height="'+O+'"><svg width="'+K+'" height="'+O+'" viewBox="'+W+" "+T+" "+w+" "+C+'" preserveAspectRatio="none"><image xlink:href="'+r+'" x="0" y="0" width="'+s+'" height="'+m+'" /></svg></pattern>');
 | 
				
			||||||
 | 
					P.push('<rect x="'+R+'" y="'+S+'" width="'+U+'" height="'+V+'" fill="url(#pattern'+Q+')" />');Q++}var l=d.i,q=d.f,s=k.i,m=k.f,r=a.Dd(b.src,s,m),p=a.S,t=a.Sc;k=a.Qc;var v=Math.ceil,o=f.n("0"),u=b.I||(c?c.I:{t:o,r:o,b:o,l:o});o=u.t.a(j);var x=u.r.a(j),y=u.b.a(j);u=u.l.a(j);var z=b.slice,D=z.t.a(j),G=z.r.a(j),E=z.b.a(j);z=z.l.a(j);var B=l-u-x,A=q-o-y,L=s-z-G,N=m-D-E,H=g===t?B:L*o/D,I=i===t?A:N*x/G,F=g===t?B:L*y/E;t=i===t?A:N*u/z;var J=[],P=[],Q=0;if(g===k){H-=(H-(B%H||H))/v(B/H);F-=(F-(B%F||F))/v(B/
 | 
				
			||||||
 | 
					F)}if(i===k){I-=(I-(A%I||I))/v(A/I);t-=(t-(A%t||t))/v(A/t)}k=['<svg width="'+l+'" height="'+q+'" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">'];n(0,0,u,o,0,0,z,D,u,o);n(u,0,B,o,z,0,L,D,H,o);n(l-x,0,x,o,s-G,0,G,D,x,o);n(0,o,u,A,0,D,z,N,u,t);if(b.fill)n(u,o,B,A,z,D,L,N,H||F||L,t||I||N);n(l-x,o,x,A,s-G,D,G,N,x,I);n(0,q-y,u,y,0,m-E,z,E,u,y);n(u,q-y,B,y,z,m-E,L,E,F,y);n(l-x,q-y,x,y,s-G,m-E,G,E,x,y);k.push("<defs>"+J.join("\n")+"</defs>"+P.join("\n")+"</svg>");a.parent.gb(a.ta,
 | 
				
			||||||
 | 
					"url(data:image/svg+xml,"+escape(k.join(""))+") no-repeat border-box border-box");h&&a.parent.ab()},a);h=1},Dd:function(){var a={};return function(b,c,d){var e=a[b],g;if(!e){e=new Image;g=doc.createElement("canvas");e.src=b;g.width=c;g.height=d;g.getContext("2d").drawImage(e,0,0);e=a[b]=g.toDataURL()}return e}}(),Ea:f.Tb.prototype.Ea,m:function(){var a=this.e.runtimeStyle;this.parent.gb(this.ta);a.borderColor=a.borderStyle=a.borderWidth=""}});f.kb=function(){function a(m,r){m.className+=" "+r}function b(m){var r=
 | 
				
			||||||
 | 
					s.slice.call(arguments,1),p=r.length;setTimeout(function(){for(;p--;)a(m,r[p])},0)}function c(m){var r=s.slice.call(arguments,1),p=r.length;setTimeout(function(){for(;p--;){var t=r[p];t=q[t]||(q[t]=new RegExp("\\b"+t+"\\b","g"));m.className=m.className.replace(t,"")}},0)}function d(m){function r(){if(!R){var w,C,K=f.Ba,O=m.currentStyle,M=O.getAttribute(g)==="true";T=O.getAttribute(i);T=K>7?T!=="false":T==="true";if(!Q){Q=1;m.runtimeStyle.zoom=1;O=m;for(var ba=1;O=O.previousSibling;)if(O.nodeType===
 | 
				
			||||||
 | 
					1){ba=0;break}ba&&a(m,n)}F.cb();if(M&&(C=F.o())&&(w=doc.documentElement||doc.body)&&(C.y>w.clientHeight||C.x>w.clientWidth||C.y+C.f<0||C.x+C.i<0)){if(!V){V=1;f.mb.ba(r)}}else{R=1;V=Q=0;f.mb.Ha(r);if(K===9){J={w:new f.Sb(m),q:new f.Ub(m),z:new f.Vb(m)};P=[J.w,J.q];I=new f.Oc(m,F,J);w=[new f.Mc(m,F,J,I),new f.Nc(m,F,J,I)]}else{J={w:new f.Sb(m),z:new f.Vb(m),q:new f.Ub(m),F:new f.jb(m),ga:new f.Ic(m),Pb:new f.Uc(m)};P=[J.w,J.z,J.q,J.F,J.ga,J.Pb];I=new f.Rc(m,F,J);w=[new f.Hc(m,F,J,I),new f.Fc(m,F,J,
 | 
				
			||||||
 | 
					I),new f.Gc(m,F,J,I),new f.Tb(m,F,J,I)];m.tagName==="IMG"&&w.push(new f.Pc(m,F,J,I));I.ed=w}H=[I].concat(w);if(w=m.currentStyle.getAttribute(f.Q+"watch-ancestors")){w=parseInt(w,10);C=0;for(M=m.parentNode;M&&(w==="NaN"||C++<w);){A(M,"onpropertychange",G);A(M,"onmouseenter",o);A(M,"onmouseleave",u);A(M,"onmousedown",x);if(M.tagName in f.fc){A(M,"onfocus",z);A(M,"onblur",D)}M=M.parentNode}}if(T){f.Oa.ba(t);f.Oa.Qd()}t(1)}if(!S){S=1;K<9&&A(m,"onmove",p);A(m,"onresize",p);A(m,"onpropertychange",v);A(m,
 | 
				
			||||||
 | 
					"onmouseenter",o);A(m,"onmouseleave",u);A(m,"onmousedown",x);if(m.tagName in f.fc){A(m,"onfocus",z);A(m,"onblur",D)}f.Qa.ba(p);f.K.ba(L)}F.hb()}}function p(){F&&F.Ad()&&t()}function t(w){if(!W)if(R){var C,K=H.length;E();for(C=0;C<K;C++)H[C].Ea();if(w||F.Nd())for(C=0;C<K;C++)H[C].ib();if(w||F.Sd())for(C=0;C<K;C++)H[C].Mb();I.ab();B()}else Q||r()}function v(){var w,C=H.length,K;w=event;if(!W&&!(w&&w.propertyName in l))if(R){E();for(w=0;w<C;w++)H[w].Ea();for(w=0;w<C;w++){K=H[w];K.Cb||K.ib();K.O()&&K.Lb()}I.ab();
 | 
				
			||||||
 | 
					B()}else Q||r()}function o(){b(m,j)}function u(){c(m,j,h)}function x(){b(m,h);f.lb.ba(y)}function y(){c(m,h);f.lb.Ha(y)}function z(){b(m,k)}function D(){c(m,k)}function G(){var w=event.propertyName;if(w==="className"||w==="id")v()}function E(){F.cb();for(var w=P.length;w--;)P[w].cb()}function B(){for(var w=P.length;w--;)P[w].hb();F.hb()}function A(w,C,K){w.attachEvent(C,K);U.push([w,C,K])}function L(){if(S){for(var w=U.length,C;w--;){C=U[w];C[0].detachEvent(C[1],C[2])}f.K.Ha(L);S=0;U=[]}}function N(){if(!W){var w,
 | 
				
			||||||
 | 
					C;L();W=1;if(H){w=0;for(C=H.length;w<C;w++){H[w].ec=1;H[w].m()}}T&&f.Oa.Ha(t);f.Qa.Ha(t);H=F=J=P=m=null}}var H,I,F=new da(m),J,P,Q,R,S,U=[],V,W,T;this.Ed=r;this.update=t;this.m=N;this.qd=m}var e={},g=f.Q+"lazy-init",i=f.Q+"poll",j=f.La+"hover",h=f.La+"active",k=f.La+"focus",n=f.La+"first-child",l={background:1,bgColor:1,display:1},q={},s=[];d.yd=function(m){var r=f.p.Aa(m);return e[r]||(e[r]=new d(m))};d.m=function(m){m=f.p.Aa(m);var r=e[m];if(r){r.m();delete e[m]}};d.md=function(){var m=[],r;if(e){for(var p in e)if(e.hasOwnProperty(p)){r=
 | 
				
			||||||
 | 
					e[p];m.push(r.qd);r.m()}e={}}return m};return d}();f.supportsVML=f.zc;f.attach=function(a){f.Ba<10&&f.zc&&f.kb.yd(a).Ed()};f.detach=function(a){f.kb.m(a)}};
 | 
				
			||||||
 | 
					var $=element;function init(){var a=window.PIE;a&&doc.media!=="print"&&a.attach($)}function cleanup(){var a=window.PIE;if(a){a.detach($);$=0}}$.readyState==="complete"&&init();
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					</PUBLIC:COMPONENT>
 | 
				
			||||||
							
								
								
									
										27
									
								
								static/cms/config.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,27 @@
 | 
				
			||||||
 | 
					# Require any additional compass plugins here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Set this to the root of your project when deployed:
 | 
				
			||||||
 | 
					http_path = "" # use if other than /
 | 
				
			||||||
 | 
					sass_dir = "sass"
 | 
				
			||||||
 | 
					css_dir = "css"
 | 
				
			||||||
 | 
					images_dir = "images"
 | 
				
			||||||
 | 
					javascripts_dir = "js"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# be: :production or :development
 | 
				
			||||||
 | 
					environment = :production
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# You can select your preferred output style here (can be overridden via the command line):
 | 
				
			||||||
 | 
					# output_style = :expanded or :nested or :compact or :compressed
 | 
				
			||||||
 | 
					output_style = (environment == :production) ? :compressed : :nested
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# To enable relative paths to assets via compass helper functions. Uncomment:
 | 
				
			||||||
 | 
					# relative_assets = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# To disable debugging comments that display the original location of your selectors. Uncomment:
 | 
				
			||||||
 | 
					line_comments = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If you prefer the indented syntax, you might want to regenerate this
 | 
				
			||||||
 | 
					# project again passing --syntax sass, or you can uncomment this:
 | 
				
			||||||
 | 
					# preferred_syntax = :sass
 | 
				
			||||||
 | 
					# and then run:
 | 
				
			||||||
 | 
					# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass
 | 
				
			||||||
							
								
								
									
										19
									
								
								static/cms/css/cms.base.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										3
									
								
								static/cms/css/cms.pagetree.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										3
									
								
								static/cms/css/cms.toolbar.modal.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					/*!
 | 
				
			||||||
 | 
					 * @copyright:	https://github.com/divio/django-cms
 | 
				
			||||||
 | 
					 */#content>h2:first-child{display:none}#content{margin:10px 10px 0}#content .module{padding:10px}#container{padding-top:0}#footer{display:none}#cke_id_body{border:1px solid #e6e6e6 !important}#cke_id_body .cke_top,#cke_id_body .cke_bottom{background:#fafafa !important;border-color:#e6e6e6 !important;-moz-box-shadow:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}.errornote{margin:0 !important}
 | 
				
			||||||
							
								
								
									
										3
									
								
								static/cms/css/cms.toolbar.sideframe.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					/*!
 | 
				
			||||||
 | 
					 * @copyright:	https://github.com/divio/django-cms
 | 
				
			||||||
 | 
					 */#header{display:none}#container{padding-top:30px}.cms_debug #container{padding-top:35px}#container .breadcrumbs{display:block;background:#666 !important}#content{padding-top:10px}#content h1:first-child{margin-top:0}.change-form #content{margin-top:0}.submit-row{padding:10px 10px 5px !important}.submit-row input.default,.object-tools .addlink{font-weight:200 !important;padding:5px 12px !important;margin-bottom:5px !important;border:1px solid #0e72ec !important;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzBlOTdlYyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzBlNzJlYyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==') !important;background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0e97ec),color-stop(100%, #0e72ec)) !important;background-image:-moz-linear-gradient(top, #0e97ec,#0e72ec) !important;background-image:-webkit-linear-gradient(top, #0e97ec,#0e72ec) !important;background-image:linear-gradient(to bottom, #0e97ec,#0e72ec) !important;-moz-box-shadow:inset #6accf6 0px 1px 0px;-webkit-box-shadow:inset #6accf6 0px 1px 0px;box-shadow:inset #6accf6 0px 1px 0px}.submit-row input.default:hover,.submit-row input.default:active,.submit-row input.default:focus,.object-tools .addlink:hover,.object-tools .addlink:active,.object-tools .addlink:focus{background:#0e72ec !important;-moz-box-shadow:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}.submit-row input.default:active,.submit-row input.default:focus,.object-tools .addlink:active,.object-tools .addlink:focus{background:#0b5bbc !important}.object-tools .recoverlink,.submit-row input{font-weight:200 !important;padding:5px 12px !important;margin-bottom:5px !important;border:1px solid #e6e6e6 !important;-moz-box-shadow:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								static/cms/images/sitemap-li-bg.jpg
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 7.6 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/flv.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 384 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/gif.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 621 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/html.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 285 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/java.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 650 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/jpg.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 621 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/mp3.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 388 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/ods.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 749 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/odt.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 702 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/pdf.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 208 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/php.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 296 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/png.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 621 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/swf.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 279 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/tgz.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 548 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/ttf.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 648 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/txt.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 276 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/txt.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 654 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/wav.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 407 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/zip.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 548 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/plugins/file.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 758 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/plugins/get_flash_player.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.7 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/plugins/image.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 969 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/plugins/link.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.7 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/plugins/snippet.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1,017 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/loader.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 5.1 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/loader@2x.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 11 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/logo-white.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.9 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/logo-white@2x.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 7.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/pagetree/sprite.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 6.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/pagetree/tree-li-drag.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 200 B  | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/toolbar/pattern.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 938 B  |