diff --git a/README.md b/README.md index 8fbd1e3..5903905 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,156 @@ -iw -== +Wiki. Kind of. +============== + +Handles more like a client application, replication, authenticaton and acl systems. Target group is organization internal usage, writing notes and such. + +Features: +* GSSAPI/Kerberos authentication +* LDAP backend for user & group information +* Three level ACL system for content, with inheritation support +* Simple macros (TOC, include children pages) +* ExtJS based user interface +* Non-destructive versioning data model +* Replication to other instances + +[Mandatory screenshot][1] + +Installation +============ + +Prerequisities +* PostgreSQL +* Working Kerberos setup +* LDAP server +* Golang +* Memcached recommended + +Starting up +----------- + +This should pull the required packages + +``` +go get github.com/mikkolehtisalo/iw +``` + +Change app.secret from app.conf + +``` +app.secret=OWd2Zg7A5wWomHFWkMNIwGNvS7qCAbGY8NKrSADg50bAaSU4hXemJTslFVV3Ah3Q +``` + +Database +-------- + +Create the user, database, and import the schema + +``` +createuser wiki +createdb -U wiki --owner=wiki wiki +psql wiki wiki +\i db/schema.sql +``` + +Then review app.conf + +``` +# DB +db.name=wiki +db.user=wiki +db.password=password +``` + +LDAP +---- + +Create bind account, and add photo;binary for users' avatar images. + +Review app.conf, and fill up the LDAP server information, filters and the attributes +``` +# ldap +ldap.server=freeipa.localdomain +ldap.port=389 +ldap.user_base=cn=users,cn=accounts,dc=localdomain +ldap.user_filter=(&(uid=*)(objectClass=inetUser)) +ldap.user_uid_attr=uid +ldap.user_cn_attr=cn +ldap.user_photo_attr=photo;binary +ldap.user_group_attr=memberOf +ldap.group_filter=(&(cn=*)(objectClass=groupOfNames)) +ldap.group_cn_attr=cn +ldap.group_dn_attr=dn +ldap.user=uid=admin,cn=users,cn=accounts,dc=localdomain +ldap.passwd=password +ldap.group_base=cn=groups,cn=accounts,dc=localdomain +ldap.group_regexp=cn=([^,]+) +``` + +Kerberos +-------- + +Make sure /etc/krb5.conf is sane, for example + +``` +[logging] + default = FILE:/var/log/krb5libs.log + kdc = FILE:/var/log/krb5kdc.log + admin_server = FILE:/var/log/kadmind.log + +[libdefaults] + default_realm = LOCALDOMAIN + dns_lookup_realm = false + dns_lookup_kdc = true + rdns = false + ticket_lifetime = 24h + forwardable = yes + allow_weak_crypto = false + +[realms] + LOCALDOMAIN = { + kdc = freeipa.localdomain:88 + master_kdc = freeipa.localdomain:88 + admin_server = freeipa.localdomain:749 + default_domain = localdomain + pkinit_anchors = FILE:/etc/ipa/ca.crt +} + +[domain_realm] + .localdomain = LOCALDOMAIN + localdomain = LOCALDOMAIN + +[dbmodules] + LOCALDOMAIN = { + db_library = ipadb.so + } + +``` + +Create the keytab + +``` +# Create the principal on kdc +kadmin +addprinc -randkey HTTP/dev.localdomain@LOCALDOMAIN + +# Add it to the server's /etc/krb5.keytab +kadmin +ktadd HTTP/dev.localdomain@LOCALDOMAIN +``` + +Replication +----------- + +Replication directory contains client and server. They are very KISS, but working. Build them. + +Accompany with server/client.json file for settings. Create the mentioned CA certificate, and certificates for all servers. Configure valid peers, and other settings. Start the servers and clients. + +All logging goes to syslog. + +The good and the bad +==================== + +Most parts are pretty solid. Would need test(s/ing) to get rid of some corner case bugs, and proper documentation. + +It's not a ready product, but wouldn't take much to polish it. + +[1]:http://screenshot.org/ diff --git a/app/controllers/activity.go b/app/controllers/activity.go new file mode 100644 index 0000000..a7a963a --- /dev/null +++ b/app/controllers/activity.go @@ -0,0 +1,23 @@ +package controllers + +import ( + "github.com/revel/revel" + "iw/app/models" + "github.com/mikkolehtisalo/revel/acl" +) + +type Activities struct { + *revel.Controller +} + +// READ +func (a Activities) Read() revel.Result { + user := a.Session["username"] + revel.TRACE.Printf("Activities Read() user: %+v", user) + + activities := models.GetActivities() + filtered := acl.Filter(a.Args, []string{"read", "admin","write"}, activities, false) + + revel.TRACE.Printf("Activities Read() returning: %+v", filtered) + return a.RenderJson(filtered) +} diff --git a/app/controllers/app.go b/app/controllers/app.go new file mode 100644 index 0000000..e76d76b --- /dev/null +++ b/app/controllers/app.go @@ -0,0 +1,11 @@ +package controllers + +import "github.com/revel/revel" + +type App struct { + *revel.Controller +} + +func (c App) Index() revel.Result { + return c.Render() +} diff --git a/app/controllers/attachment.go b/app/controllers/attachment.go new file mode 100644 index 0000000..4531762 --- /dev/null +++ b/app/controllers/attachment.go @@ -0,0 +1,148 @@ +package controllers + +import ( + "github.com/revel/revel" + . "github.com/mikkolehtisalo/revel/common" + "iw/app/models" + "encoding/json" + "github.com/mikkolehtisalo/revel/acl" + "encoding/base64" + //"fmt" + "time" + "bytes" +) + +type Attachments struct { + *revel.Controller +} + +// CREATE +func (a Attachments) Create(wiki string, attachment string) revel.Result { + revel.TRACE.Printf("Attachments Create() wiki: %+v, attachment: %+v", wiki, attachment) + + // Make sure the ids at least look like one + if (!IsUUID(wiki)) || (!IsUUID(attachment)) { + revel.ERROR.Printf("Garbage attachment %+v/%+v received from %+v", wiki, attachment, a.Session["username"]) + return a.RenderText("{\"success\":false}") + } + + // Make sure the attachment doesn't pre-exist + exists_test := models.GetAttachment(wiki, attachment) + if exists_test.Wiki_id == wiki && exists_test.Attachment_id == attachment { + revel.ERROR.Printf("Attempt to rewrite pre-existing attachment %+v/%+v by user %+v", wiki, attachment, a.Session["username"]) + return a.RenderText("{\"success\":false}") + } + + // Make sure the wiki exists! + wiki_exists := models.GetWiki(wiki) + if wiki_exists.Wiki_id != wiki { + revel.ERROR.Printf("Attempt to add attachment to non-existent wiki: %+v/%+v", wiki, attachment) + return a.RenderText("{\"success\":false}") + } + + // Decode attachment from json input + var new_att models.Attachment + decoder := json.NewDecoder(a.Request.Body) + err := decoder.Decode(&new_att) + if err != nil { + revel.ERROR.Printf("Unable to parse attachment %+v/%+v: %+v", wiki, attachment, err) + return a.RenderText("{\"success\":false}") + } + + // ID fields must match! + if (new_att.Wiki_id != wiki) || (new_att.Attachment_id != attachment) { + revel.ERROR.Printf("Attachment id mismatch %+v/%+v != %+v/%+v from user %+v", wiki, attachment, new_att.Wiki_id, new_att.Attachment_id, a.Session["username"]) + return a.RenderText("{\"success\":false}") + } + + // Validate fields + new_att.Validate(a.Validation) + if a.Validation.HasErrors() { + revel.ERROR.Printf("Validation errors: %+v", a.Validation.ErrorMap()) + return a.RenderText("{\"success\":false}") + } + + // Make sure the user has rights to create attachment + filtered := acl.Filter(a.Args, []string{"admin","write"}, []models.Attachment{new_att}, true) + if len(filtered) != 1 { + revel.ERROR.Printf("Attempt to create attachment %+v/%+v without access rights: %+v, user: %+v", wiki, attachment, new_att.Filename, a.Session["username"]) + return a.RenderText("{\"success\":false}") + } + + new_att.Create_user = a.Session["username"] + new_att.Status = "ACTIVE" + new_att.Save(true) + + return a.RenderText("{\"success\":true}") +} + +// READ +func (a Attachments) Read(wiki string) revel.Result { + revel.TRACE.Printf("Attachments Read(): %+v", wiki) + + // Make sure the id looks like one + if (!IsUUID(wiki)) { + revel.ERROR.Printf("Garbage wiki %+v received from %+v", wiki, a.Session["username"]) + return a.RenderText("{\"success\":false}") + } + + attachments := models.GetAttachments(wiki) + // Filter by acls... + filtered := acl.Filter(a.Args, []string{"read", "write", "admin"}, attachments, true) + + revel.TRACE.Printf("Attachments Read() returning %+v", filtered) + return a.RenderJson(filtered) +} + +// Serve direct links! +func (a Attachments) Serve(wiki string, attachment string) revel.Result { + revel.TRACE.Printf("Attachments Serve(): %+v, attachment: %+v", wiki, attachment) + + // Make sure the ids at least look like one + if (!IsUUID(wiki)) || (!IsUUID(attachment)) { + revel.ERROR.Printf("Garbage attachment %+v/%+v received from %+v", wiki, attachment, a.Session["username"]) + return a.RenderText("{\"success\":false}") + } + + att := models.GetAttachment(wiki, attachment) + + // Make sure the user has rights to read the attachment + filtered := acl.Filter(a.Args, []string{"read", "admin","write"}, []models.Attachment{att}, true) + if len(filtered) != 1 { + revel.ERROR.Printf("Attempt to read attachment %+v/%+v without access rights: %+v, user: %+v", wiki, attachment, att.Filename, a.Session["username"]) + return a.RenderText("{\"success\":false}") + } + + data, err := base64.StdEncoding.DecodeString(att.Attachment) + if err != nil { + revel.ERROR.Printf("Serve(): Unable to base64 decode attachment! %+v", err) + } + + return a.RenderBinary(bytes.NewReader(data), att.Filename, "inline", time.Now()) +} + +// DELETE +func (a Attachments) Delete(wiki string, attachment string) revel.Result { + revel.TRACE.Printf("Attachments Delete(): %+v, attachment: %+v", wiki, attachment) + + // Make sure the ids at least look like one + if (!IsUUID(wiki)) || (!IsUUID(attachment)) { + revel.ERROR.Printf("Garbage attachment %+v/%+v received from %+v", wiki, attachment, a.Session["username"]) + return a.RenderText("{\"success\":false}") + } + + att := models.GetAttachment(wiki, attachment) + + // Make sure the user has rights to delete the attachment + filtered := acl.Filter(a.Args, []string{"admin","write"}, []models.Attachment{att}, true) + if len(filtered) != 1 { + revel.ERROR.Printf("Attempt to delete attachment %+v/%+v without access rights: %+v, user: %+v", wiki, attachment, att.Filename, a.Session["username"]) + return a.RenderText("{\"success\":false}") + } + + att.Create_user = a.Session["username"] + att.Status = "DELETED" + att.Save(true) + + return a.RenderText("{\"success\":true}") +} \ No newline at end of file diff --git a/app/controllers/contentfield.go b/app/controllers/contentfield.go new file mode 100644 index 0000000..d149da4 --- /dev/null +++ b/app/controllers/contentfield.go @@ -0,0 +1,91 @@ +package controllers + +import ( + "github.com/revel/revel" + . "github.com/mikkolehtisalo/revel/common" + "iw/app/models" + "github.com/mikkolehtisalo/revel/acl" + "encoding/json" +) + +type ContentFields struct { + *revel.Controller +} + +// READ +func (c ContentFields) Read(wiki string, page string) revel.Result { + revel.TRACE.Printf("ContentFields Read() wiki: %+v, page: %+v", wiki, page) + + // Make sure the ids at least look like one + if (!IsUUID(wiki)) || (!IsUUID(page)) { + revel.ERROR.Printf("Garbage contentfield %+v/%+v received from %+v", wiki, page, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Get the contentfield + cf := models.GetContent(wiki, page, c.Args) + // Check the ACL + filtered := acl.Filter(c.Args, []string{"read", "write", "admin"}, []models.ContentField{cf}, true) + + if len(filtered) < 1 { + revel.ERROR.Printf("Unable to read content field! wiki: %+v, page: %+v, user: %+v", wiki, page, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + return c.RenderJson(filtered[0]) +} + +// UPDATE +func (c ContentFields) Update(wiki string, page string) revel.Result { + + revel.TRACE.Printf("ContentFields Update() wiki: %+v, page: %+v", wiki, page) + + // Make sure the ids at least look like one + if (!IsUUID(wiki)) || (!IsUUID(page)) { + revel.ERROR.Printf("Garbage contentfield %+v/%+v received from %+v", wiki, page, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Make sure the contentfield pre-exists + old_cf := models.GetContent(wiki, page, c.Args) + if old_cf.Wiki_id != wiki && old_cf.Contentfield_id != page { + revel.ERROR.Printf("Attempt to update non-existing contentfield %+v/%+v by user %+v", wiki, page, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Decode contentfield from json input + var new_cf models.ContentField + decoder := json.NewDecoder(c.Request.Body) + err := decoder.Decode(&new_cf) + if err != nil { + revel.ERROR.Printf("Unable to parse contentfield %+v/%+v: %+v", wiki, page, err) + return c.RenderText("{\"success\":false}") + } + + // ID fields must match! + if (new_cf.Wiki_id != wiki) || (new_cf.Contentfield_id != page) { + revel.ERROR.Printf("Contentfield id mismatch %+v/%+v != %+v/%+v from user %+v", wiki, page, new_cf.Wiki_id, new_cf.Contentfield_id, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Validate fields + new_cf.Validate(c.Validation) + if c.Validation.HasErrors() { + revel.ERROR.Printf("Validation errors: %+v", c.Validation.ErrorMap()) + return c.RenderText("{\"success\":false}") + } + + // Make sure the user has rights to the page + filtered := acl.Filter(c.Args, []string{"admin","write"}, []models.ContentField{new_cf}, true) + if len(filtered) != 1 { + revel.ERROR.Printf("Attempt to update contentfield %+v/%+v without access rights! user: %+v", wiki, page, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + new_cf.Create_user = c.Session["username"] + new_cf.Status = "ACTIVE" + new_cf.Save(true) + + return c.RenderText("{\"success\":true}") +} + diff --git a/app/controllers/favoritewiki.go b/app/controllers/favoritewiki.go new file mode 100644 index 0000000..1203b9b --- /dev/null +++ b/app/controllers/favoritewiki.go @@ -0,0 +1,69 @@ +package controllers + +import ( + "github.com/revel/revel" + "iw/app/models" + "github.com/mikkolehtisalo/revel/common" +) + +type FavoriteWikis struct { + *revel.Controller +} + +// CREATE +func (c FavoriteWikis) Create(wiki string) revel.Result { + revel.TRACE.Printf("FavoriteWikis Create(): %+v", wiki) + + // Make sure the id at least looks like one + if !common.IsUUID(wiki) { + revel.ERROR.Printf("Garbage favorite %+v create received from %+v", wiki, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Already exists? + if models.IsFavoriteWiki(wiki, c.Session["username"]) { + revel.ERROR.Printf("Wiki %+v already favorite!", wiki) + return c.RenderText("{\"success\":false}") + } + + fav := models.FavoriteWiki{} + fav.Username = c.Session["username"] + fav.Wiki_id = wiki + fav.Status = "ACTIVE" + fav.Save() + + return c.RenderText("{\"success\":true}") +} + +// READ +func (c FavoriteWikis) Read() revel.Result { + revel.TRACE.Printf("FavoriteWikis List()") + return c.RenderJson(models.ListFavoriteWikis(c.Session["username"])) +} + + +// DELETE +func (c FavoriteWikis) Delete(wiki string) revel.Result { + revel.TRACE.Printf("FavoriteWikis Delete(): %+v", wiki) + + // Make sure the id at least looks like one + if !common.IsUUID(wiki) { + revel.ERROR.Printf("Garbage favorite %+v delete received from %+v", wiki, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Already exists? + if !models.IsFavoriteWiki(wiki, c.Session["username"]) { + revel.ERROR.Printf("Wiki %+v not favorite!", wiki) + return c.RenderText("{\"success\":false}") + } + + fav := models.FavoriteWiki{} + fav.Username = c.Session["username"] + fav.Wiki_id = wiki + fav.Status = "DELETED" + fav.Save() + + return c.RenderText("{\"success\":true}") +} + diff --git a/app/controllers/lock.go b/app/controllers/lock.go new file mode 100644 index 0000000..675144c --- /dev/null +++ b/app/controllers/lock.go @@ -0,0 +1,87 @@ +package controllers + +import ( + "github.com/revel/revel" + "iw/app/models" + //"encoding/json" + //"strings" + //"regexp" + . "github.com/mikkolehtisalo/revel/common" + "github.com/mikkolehtisalo/revel/ldapuserdetails" + //"github.com/mikkolehtisalo/revel/acl" +) + +type Locks struct { + *revel.Controller +} + +// CREATE +func (l Locks) Create(wiki string, target string) revel.Result { + revel.TRACE.Printf("Locks Create() wiki: %+v, target: %+v", wiki, target) + + // Make sure the ids at least look like one + if (!IsUUID(wiki)) || (!IsUUID(target)) { + revel.ERROR.Printf("Garbage lock %+v/%+v received from %+v", wiki, target, l.Session["username"]) + return l.RenderText("{\"success\":false}") + } + + // Make sure the lock doesn't pre-exist + exists_test := models.GetLock(wiki, target) + if exists_test.Wiki_id == wiki && exists_test.Target_id == target { + revel.ERROR.Printf("Attempt to rewrite pre-existing lock %+v/%+v by user %+v", wiki, target, l.Session["username"]) + return l.RenderText("{\"success\":false}") + } + + // Make sure the wiki exists! + wiki_exists := models.GetWiki(wiki) + if wiki_exists.Wiki_id != wiki { + revel.ERROR.Printf("Attempt to add lock to non-existent wiki: %+v/%+v", wiki, target) + return l.RenderText("{\"success\":false}") + } + + // We could check for rights for page, but as obeying lock is non-forcing convenience function, meh + + lock := models.Lock{} + lock.Target_id = target + lock.Wiki_id = wiki + lock.Username = l.Session["username"] + dets := l.Args["user_details"].(ldapuserdetails.User_details) + lock.Realname = dets.Visiblename + lock.Save() + + return l.RenderText("{\"success\":true}") +} + +// READ +func (l Locks) Read(wiki string, target string) revel.Result { + revel.TRACE.Printf("Locks Read() wiki: %+v, target: %+v", wiki, target) + + // Make sure the ids at least look like one + if (!IsUUID(wiki)) || (!IsUUID(target)) { + revel.ERROR.Printf("Garbage lock %+v/%+v received from %+v", wiki, target, l.Session["username"]) + return l.RenderText("{\"success\":false}") + } + + // Get the lock + lock := models.GetLock(wiki, target) + + return l.RenderJson(lock) +} + +// DELETE +func (l Locks) Delete(wiki string, target string) revel.Result { + revel.TRACE.Printf("Locks Delete() wiki: %+v, target: %+v", wiki, target) + + // Make sure the ids at least look like one + if (!IsUUID(wiki)) || (!IsUUID(target)) { + revel.ERROR.Printf("Garbage lock %+v/%+v received from %+v", wiki, target, l.Session["username"]) + return l.RenderText("{\"success\":false}") + } + + // Get the lock + lock := models.GetLock(wiki, target) + lock.Delete() + + return l.RenderText("{\"success\":true}") + +} \ No newline at end of file diff --git a/app/controllers/page.go b/app/controllers/page.go new file mode 100644 index 0000000..01a6052 --- /dev/null +++ b/app/controllers/page.go @@ -0,0 +1,194 @@ +package controllers + +import ( + "github.com/revel/revel" + "iw/app/models" + "encoding/json" + "strings" + "regexp" + . "github.com/mikkolehtisalo/revel/common" + "github.com/mikkolehtisalo/revel/acl" +) + +type Pages struct { + *revel.Controller +} + +// CREATE +func (c Pages) Create(wiki string, page string) revel.Result { + revel.TRACE.Printf("Pages Create() wiki: %+v, page: %+v", wiki, page) + + // Make sure the ids at least look like one + if (!IsUUID(wiki)) || (!IsUUID(page)) { + revel.ERROR.Printf("Garbage page %+v/%+v received from %+v", wiki, page, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Make sure the page doesn't pre-exist + exists_test := models.GetPage(wiki, page) + if exists_test.Wiki_id == wiki && exists_test.Page_id == page { + revel.ERROR.Printf("Attempt to rewrite pre-existing page %+v/%+v by user %+v", wiki, page, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Make sure the wiki exists! + wiki_exists := models.GetWiki(wiki) + if wiki_exists.Wiki_id != wiki { + revel.ERROR.Printf("Attempt to add page to non-existent wiki: %+v/%+v", wiki, page) + return c.RenderText("{\"success\":false}") + } + + // Decode page from json input + var new_page models.Page + decoder := json.NewDecoder(c.Request.Body) + err := decoder.Decode(&new_page) + if err != nil { + revel.ERROR.Printf("Unable to parse page %+v/%+v: %+v", wiki, page, err) + return c.RenderText("{\"success\":false}") + } + + // ID fields must match! + if (new_page.Wiki_id != wiki) || (new_page.Page_id != page) { + revel.ERROR.Printf("Page id mismatch %+v/%+v != %+v/%+v from user %+v", wiki, page, new_page.Wiki_id, new_page.Page_id, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Validate fields + new_page.Validate(c.Validation) + if c.Validation.HasErrors() { + revel.ERROR.Printf("Validation errors: %+v", c.Validation.ErrorMap()) + return c.RenderText("{\"success\":false}") + } + + // Make sure the user has rights to create page here + filtered := acl.Filter(c.Args, []string{"admin","write"}, []models.Page{new_page}, true) + if len(filtered) != 1 { + revel.ERROR.Printf("Attempt to create page %+v/%+v without access rights: %+v, user: %+v", wiki, page, new_page.Title, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + new_page.Create_user = c.Session["username"] + new_page.Status = "ACTIVE" + new_page.Save(true) + + // Create corresponding contentfield! + cf := models.ContentField{} + cf.Contentfield_id = new_page.Page_id + cf.Wiki_id = new_page.Wiki_id + cf.Content = "

Add new content here!

" + cf.Status = "ACTIVE" + cf.Create_user = c.Session["username"] + cf.Save(false) + + return c.RenderText("{\"success\":true}") +} + +// READ +func (c Pages) Read() revel.Result { + node := c.Params.Values.Get("node") + revel.TRACE.Printf("Pages Read() node: %+v", node) + + // Check that the input parameter is at least roughly valid + re := regexp.MustCompile("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})*") + if !re.MatchString(node) { + revel.TRACE.Printf("Pages List() invalid node: %+v", node) + return c.RenderText("{\"success\":false}") + } + + // This won't blow up thanks to previous + wiki := strings.Split(node, "/")[0] + page := strings.Split(node, "/")[1] + + // Get the list of pages + pages := models.ListPages(wiki, page) + // Filter using the ACL system + filtered := acl.Filter(c.Args, []string{"read","write","admin"}, pages, true) + revel.TRACE.Printf("Returning: %+v", filtered) + + return c.RenderJson(filtered) +} + +// UPDATE +// Not DRY, but this logic might still change: revise later... +func (c Pages) Update(wiki string, page string) revel.Result { + revel.TRACE.Printf("Pages Update() wiki: %+v, page: %+v", wiki, page) + + // Make sure the ids at least look like one + if (!IsUUID(wiki)) || (!IsUUID(page)) { + revel.ERROR.Printf("Garbage page %+v/%+v received from %+v", wiki, page, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Make sure the page pre-exists + // Also the wiki probably exists if the page exists + old_page := models.GetPage(wiki, page) + if old_page.Wiki_id != wiki && old_page.Page_id != page { + revel.ERROR.Printf("Attempt to update non-existing page %+v/%+v by user %+v", wiki, page, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Decode page from json input + var new_page models.Page + decoder := json.NewDecoder(c.Request.Body) + err := decoder.Decode(&new_page) + if err != nil { + revel.ERROR.Printf("Unable to parse page %+v/%+v: %+v", wiki, page, err) + return c.RenderText("{\"success\":false}") + } + + // ID fields must match! + if (new_page.Wiki_id != wiki) || (new_page.Page_id != page) { + revel.ERROR.Printf("Page id mismatch %+v/%+v != %+v/%+v from user %+v", wiki, page, new_page.Wiki_id, new_page.Page_id, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Validate fields + new_page.Validate(c.Validation) + if c.Validation.HasErrors() { + revel.ERROR.Printf("Validation errors: %+v", c.Validation.ErrorMap()) + return c.RenderText("{\"success\":false}") + } + + // Make sure the user has rights to the page + filtered := acl.Filter(c.Args, []string{"admin","write"}, []models.Page{new_page}, true) + if len(filtered) != 1 { + revel.ERROR.Printf("Attempt to create page %+v/%+v without access rights: %+v, user: %+v", wiki, page, new_page.Title, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + new_page.Create_user = c.Session["username"] + new_page.Status = "ACTIVE" + new_page.Save(true) + + return c.RenderText("{\"success\":true}") +} + + +// DELETE +func (c Pages) Delete(wiki string, page string) revel.Result { + revel.TRACE.Printf("Pages Delete() wiki: %+v, page: %+v", wiki, page) + + // If the parameters don't seem valid, bail out + if (!IsUUID(wiki)) || (!IsUUID(page)) { + revel.ERROR.Printf("Pages Delete() invalid IDs! wiki: %+v, page: %+v", wiki, page) + return c.RenderText("{\"success\":false}") + } + + p := models.GetPage(wiki, page) + if p.Wiki_id == "" { + revel.ERROR.Printf("Pages Delete() Attempt to delete non-existing page! user: %+v wiki %+v page %+v", c.Session["username"], wiki, page) + return c.RenderText("{\"success\":false}") + } + + // Write or admin is enough to delete + filtered := acl.Filter(c.Args, []string{"write", "admin"}, []models.Page{p}, true) + if len(filtered) < 1 { + revel.ERROR.Printf("Pages Delete() insufficient rights! user: %+v wiki: %+v, page: %+v", c.Session["username"], wiki, page) + return c.RenderText("{\"success\":false}") + } + + // Also handles children and contentfields + models.DeletePage(wiki, page, c.Session["username"], true) + + return c.RenderText("{\"success\":true}") +} \ No newline at end of file diff --git a/app/controllers/useravatar.go b/app/controllers/useravatar.go new file mode 100644 index 0000000..b0fbbac --- /dev/null +++ b/app/controllers/useravatar.go @@ -0,0 +1,40 @@ +package controllers + +import ( + "github.com/revel/revel" + "bytes" + "github.com/mikkolehtisalo/revel/ldapuserdetails" + "time" + "regexp" + "github.com/revel/revel/cache" + "fmt" +) + +type UserAvatars struct { + *revel.Controller +} + +func (u UserAvatars) Read(user string) revel.Result { + revel.TRACE.Printf("UserAvatars Read() user:%+v", user) + var avatar []byte + + err := cache.Get(fmt.Sprintf("avatar:%s", user), &avatar) + + if err != nil { + // Not in cache, generate + re := regexp.MustCompile("^(\\w*)\\.(jpeg|jpg|png)") + + if !re.MatchString(user) { + revel.TRACE.Printf("UserAvatars Read() invalid user: %+v", user) + return u.RenderText("{\"success\":false}") + } + + username := re.FindStringSubmatch(user)[1] + dets := ldapuserdetails.Get_user_details(username) + avatar = dets.Photo + go cache.Set(fmt.Sprintf("avatar:%s", user), avatar, cache.DEFAULT) + } + + return u.RenderBinary(bytes.NewReader(avatar), user, "inline", time.Now()) + +} diff --git a/app/controllers/usergroupsearch.go b/app/controllers/usergroupsearch.go new file mode 100644 index 0000000..64bcee0 --- /dev/null +++ b/app/controllers/usergroupsearch.go @@ -0,0 +1,15 @@ +package controllers + +import "github.com/revel/revel" +import "iw/app/models" +//import "fmt" + +type UserGroupSearch struct { + *revel.Controller +} + +func (c UserGroupSearch) List() revel.Result { + query := c.Params.Query["query"][0] + return c.RenderJson(models.ListUserGroupSearchItems(query)) +} + diff --git a/app/controllers/wiki.go b/app/controllers/wiki.go new file mode 100644 index 0000000..29a1c28 --- /dev/null +++ b/app/controllers/wiki.go @@ -0,0 +1,147 @@ +package controllers + +import ( + "github.com/revel/revel" + "iw/app/models" + "encoding/json" + . "github.com/mikkolehtisalo/revel/common" + "github.com/mikkolehtisalo/revel/acl" +) + +type Wikis struct { + *revel.Controller +} + +// CREATE +func (c Wikis) Create(wiki string) revel.Result { + revel.TRACE.Printf("Wikis Create(): %+v", wiki) + + // Make sure the id at least looks like one + if !IsUUID(wiki) { + revel.ERROR.Printf("Garbage wiki %+v received from %+v", wiki, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Make sure the wiki doesn't pre-exist + exists_test := models.GetWiki(wiki) + if exists_test.Wiki_id == wiki { + revel.ERROR.Printf("Attempt to rewrite pre-existing wiki %+v by user %+v", wiki, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Decode wiki from input json + var new_wiki models.Wiki + decoder := json.NewDecoder(c.Request.Body) + err := decoder.Decode(&new_wiki) + if err != nil { + revel.ERROR.Printf("Unable to parse wiki %+v: %+v", wiki, err) + return c.RenderText("{\"success\":false}") + } + + // ID fields must match! + if new_wiki.Wiki_id != wiki { + revel.ERROR.Printf("Wiki id mismatch %+v != %+v", new_wiki.Wiki_id, wiki) + return c.RenderText("{\"success\":false}") + } + + // Validate fields + new_wiki.Validate(c.Validation) + if c.Validation.HasErrors() { + revel.ERROR.Printf("Validation errors parsing wiki %+v: %+v", wiki, c.Validation.ErrorMap()) + return c.RenderText("{\"success\":false}") + } + + // Make user the author has admin access right by default + AddUserToACLList(c.Session["username"], &new_wiki.Adminacl) + + // Save the wiki + new_wiki.Create_user = c.Session["username"] + new_wiki.Status = "ACTIVE" + new_wiki.Save(true) + + revel.INFO.Printf("User %+v created wiki %+v: %+v", c.Session["username"], new_wiki.Wiki_id, new_wiki.Title ) + return c.RenderText("{\"success\":true}") +} + +// READ +func (c Wikis) Read() revel.Result { + revel.TRACE.Printf("Wikis Read()") + + wikis := models.ListWikis() + filtered := acl.Filter(c.Args, []string{"read","write","admin"}, wikis, false) + + revel.TRACE.Printf("Wikis Read() returning: %+v", filtered) + return c.RenderJson(filtered) +} + + +// UPDATE +func (c Wikis) Update(wiki string) revel.Result { + revel.TRACE.Printf("Wikis Update(): %s", wiki) + + // Make sure the id at least looks like one + if !IsUUID(wiki) { + revel.ERROR.Printf("Garbage wiki %+v received from %+v", wiki, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Make sure the wiki exists + exists_test := models.GetWiki(wiki) + if exists_test.Wiki_id != wiki { + revel.ERROR.Printf("Attempt to update non-existing wiki %+v by user %+v", wiki, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + // Decode the wiki from input + var new_wiki models.Wiki + decoder := json.NewDecoder(c.Request.Body) + err := decoder.Decode(&new_wiki) + if err != nil { + revel.ERROR.Printf("Unable to parse wiki %+v: %+v", wiki, err) + return c.RenderText("{\"success\":false}") + } + + // ID fields must match! + if new_wiki.Wiki_id != wiki { + revel.ERROR.Printf("Wiki id mismatch %+v != %+v", new_wiki.Wiki_id, wiki) + return c.RenderText("{\"success\":false}") + } + + // Validate fields + new_wiki.Validate(c.Validation) + if c.Validation.HasErrors() { + revel.ERROR.Printf("Validation errors: %+v", c.Validation.ErrorMap()) + return c.RenderText("{\"success\":false}") + } + + // Make sure the user has rights to modify the wiki + filtered := acl.Filter(c.Args, []string{"admin","write"}, []models.Wiki{exists_test}, false) + if len(filtered) != 1 { + revel.ERROR.Printf("Attempt to update wiki without access rights: %+v: %+v, user: %+v", exists_test.Wiki_id, exists_test.Title, c.Session["username"]) + return c.RenderText("{\"success\":false}") + } + + new_wiki.Status = "ACTIVE" + new_wiki.Create_user = c.Session["username"] + new_wiki.Save(true) + + revel.INFO.Printf("User %+v updated wiki %+v: %+v", c.Session["username"], new_wiki.Wiki_id, new_wiki.Title ) + + return c.RenderText("{\"success\":true}") +} + +// DELETE +func (c Wikis) Delete(wiki string) revel.Result { + revel.TRACE.Printf("Wikis Delete(): %s", wiki) + wi := models.GetWiki(wiki) + filtered := acl.Filter(c.Args, []string{"admin"}, []models.Wiki{wi}, false) + + // Delete everything that survived filtering + for _, w := range filtered { + // Will also do other house cleaning + w.(models.Wiki).Delete(c.Session["username"]) + revel.INFO.Printf("User %+v deleted wiki %+v: %+v", c.Session["username"], w.(models.Wiki).Wiki_id, w.(models.Wiki).Title) + } + + return c.RenderText("{\"success\":true}") +} diff --git a/app/init.go b/app/init.go new file mode 100644 index 0000000..f4ddbce --- /dev/null +++ b/app/init.go @@ -0,0 +1,45 @@ +package app + +import "github.com/revel/revel" +import "github.com/mikkolehtisalo/revel/cachesession" +import "github.com/mikkolehtisalo/revel/gssserver" +import "github.com/mikkolehtisalo/revel/ldapuserdetails" +import "github.com/cbonello/revel-csrf" + +func init() { + // Filters is the default set of global filters. + revel.Filters = []revel.Filter{ + revel.PanicFilter, // Recover from panics and display an error page instead. + revel.RouterFilter, // Use the routing table to select the right Action + revel.FilterConfiguringFilter, // A hook for adding or removing per-Action filters. + revel.ParamsFilter, // Parse parameters into Controller.Params. + cachesession.CacheSessionFilter, // Use cache based session implementation. + gssserver.GSSServerFilter, // GSSAPI authentication + ldapuserdetails.UserDetailsLoadFilter, // Load user details from LDAP + revel.FlashFilter, // Restore and write the flash cookie. + csrf.CSRFFilter, // CSRF prevention. + revel.ValidationFilter, // Restore kept validation errors and save new ones from cookie. + revel.I18nFilter, // Resolve the requested language + HeaderFilter, // Add some security based headers + revel.InterceptorFilter, // Run interceptors around the action. + revel.CompressFilter, // Compress the result. + revel.ActionInvoker, // Invoke the action. + } + + // register startup functions with OnAppStart + // ( order dependent ) + // revel.OnAppStart(InitDB()) + // revel.OnAppStart(FillCache()) +} + +// TODO turn this into revel.HeaderFilter +// should probably also have a filter for CSRF +// not sure if it can go in the same filter or not +var HeaderFilter = func(c *revel.Controller, fc []revel.Filter) { + // Add some common security headers + c.Response.Out.Header().Add("X-Frame-Options", "SAMEORIGIN") + c.Response.Out.Header().Add("X-XSS-Protection", "1; mode=block") + c.Response.Out.Header().Add("X-Content-Type-Options", "nosniff") + + fc[0](c, fc[1:]) // Execute the next filter stage. +} diff --git a/app/models/activity.go b/app/models/activity.go new file mode 100644 index 0000000..f01cce0 --- /dev/null +++ b/app/models/activity.go @@ -0,0 +1,245 @@ +package models + +import ( + "time" + "github.com/revel/revel" + "github.com/twinj/uuid" + "github.com/mikkolehtisalo/revel/ldapuserdetails" + "github.com/mikkolehtisalo/revel/acl" + "regexp" + "strings" +) + +type Activity struct { + Activity_id string + Timestamp time.Time + User_id string + User_name string + Activity_type string + Target_type string + Target_title string + Target_id string + MatchedPermissions []string + // For the "flattened" acls... + Readacl string + Writeacl string + Adminacl string +} + +// Oldest: 1 month +func GetActivities() []Activity { + revel.TRACE.Printf("GetActivities()") + activities := []Activity{} + db := get_db() + defer db.Close() + + err := db.Select(&activities, "select * from activities where timestamp > now() - interval '1 month' order by timestamp desc") + + if err != nil { + revel.ERROR.Printf("GetActivities() err: %+v", err) + } + + revel.TRACE.Printf("GetActivities() returning: %+v", activities) + return activities +} + +func GetActivity(activity_id string) Activity { + revel.TRACE.Printf("GetActivity() id: %+v", activity_id) + activities := []Activity{} + activity := Activity{} + db := get_db() + defer db.Close() + + err := db.Select(&activities, "select * from activities where activity_id=uuid_in($1)", activity_id) + + if err != nil { + revel.ERROR.Printf("Unable to get activity %+v: %+v", activity_id, err) + } + + if len(activities) > 0 { + activity = activities[0] + } + + revel.TRACE.Printf("GetActivity() returning: %+v", activity) + + return activity +} + +// Is there a similar activity within one minute range? +func ActivityExists(a Activity) bool { + exists := false + + activities := []Activity{} + db := get_db() + defer db.Close() + + err := db.Select(&activities, "select * from activities where $1 - timestamp < interval '1 minute' and user_id=$2 and activity_type=$3 and target_type=$4 and target_id=$5", + a.Timestamp, a.User_id, a.Activity_type, a.Target_type, a.Target_id) + + if err != nil { + revel.ERROR.Printf("ActivityExists() err: %+v", err) + } + + if len(activities) > 0 { + exists = true + } + + + return exists +} + +// Flatten the inherited ACL structure, for performance reasons +// If the ACLs of the parent items are edited, the ACLs of activity will not change.. +func update_acl(a *Activity) { + filterable := acl.Get_filterable([]Activity{*a}) + acls := acl.GetACLEntry("activity:" + a.Activity_id, filterable[0], true) + + // Remove the duplicates from previous (it will generate them) and flatten the result + var read, write, admin []string + for _, item := range acls.ACLs { + if item.Permission == "read" && item.Principal != "" { + read = append(read, item.Principal) + } + if item.Permission == "write" && item.Principal != "" { + write = append(write, item.Principal) + } + if item.Permission == "admin" && item.Principal != "" { + admin = append(admin, item.Principal) + } + } + + a.Readacl = strings.Join(read, ",") + a.Writeacl = strings.Join(write, ",") + a.Adminacl = strings.Join(admin, ",") +} + +// Flattens the ACL before saving +func (a *Activity) Save() { + revel.TRACE.Printf("Activity Save(): %+v", a) + + db := get_db() + defer db.Close() + + update_acl(a) + + _, err := db.Exec("insert into activities(activity_id, timestamp, user_id, user_name, activity_type, target_type, target_title, target_id, readacl, writeacl, adminacl) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)", + a.Activity_id, a.Timestamp, a.User_id, a.User_name, a.Activity_type, a.Target_type, a.Target_title, a.Target_id, a.Readacl, a.Writeacl, a.Adminacl) + + if err != nil { + revel.ERROR.Printf("Activity Save(): error %+v", err) + } + +} + +func SaveActivity(target interface{}) { + revel.TRACE.Printf("target: %+v", target) + a := Activity{} + a.Activity_id = uuid.NewV4().String() + + switch target.(type) { + case *Wiki: + w := target.(*Wiki) + a.Timestamp = w.Modified + a.User_id = w.Create_user + dets := ldapuserdetails.Get_user_details(w.Create_user) + a.User_name = dets.Visiblename + a.Activity_type = w.Status + a.Target_type = "WIKI" + a.Target_title = w.Title + a.Target_id = w.Wiki_id + if !ActivityExists(a) { + a.Save() + } + case *Page: + p := target.(*Page) + a.Timestamp = p.Modified + a.User_id = p.Create_user + dets := ldapuserdetails.Get_user_details(p.Create_user) + a.User_name = dets.Visiblename + a.Activity_type = p.Status + a.Target_type = "PAGE" + a.Target_title = p.Title + + // We have to save the parent node for treeStore, or "" if it's on first level.... + parent := "" + if p.Depth > 0 { + split := strings.Split(p.Path, "/") + parent = split[len(split)-2] + } + a.Target_id = p.Wiki_id + "/" +parent + "/" + p.Page_id + + if !ActivityExists(a) { + a.Save() + } + case *Attachment: + x := target.(*Attachment) + a.Timestamp = x.Modified + a.User_id = x.Create_user + dets := ldapuserdetails.Get_user_details(x.Create_user) + a.User_name = dets.Visiblename + a.Activity_type = x.Status + a.Target_type = "ATTACHMENT" + a.Target_title = x.Filename + a.Target_id = x.Wiki_id + "/" + x.Attachment_id + if !ActivityExists(a) { + a.Save() + } + } +} + +// ACL stuff + +// Never inherit the parent! +func (a Activity) BuildACLInheritation() bool { + return true +} + +// Activity + activity_id +func (a Activity) BuildACLReference() string { + return "activity:" + a.Activity_id +} + +// No parent.. +func (a Activity) BuildACLParent() string { + return strings.ToLower(a.Target_type) + ":" + a.Target_id +} + +// Set the matched permissions to a variable +func (a Activity) SetMatched(permissions []string) interface{} { + a.MatchedPermissions = permissions + return a +} + +func (a Activity) BuildACLEntry(reference string) acl.ACLEntry { + revel.TRACE.Printf("BuildACLEntry() %+v", reference) + var entry acl.ACLEntry + + if reference != ("activity:"+a.Activity_id) { + + if strings.Index(reference, "page") == 0 { + // We are not working on this copy, get from database + re := regexp.MustCompile("page:([^/]*)/([^/]*)/(.*)") + m := re.FindStringSubmatch(reference) + wref := m[1] + pref := m[3] + pa := GetPage(wref, pref) + entry = entry_helper(pa.Readacl, pa.Writeacl, pa.Adminacl, reference, pa) + } + + if strings.Index(reference, "wiki") == 0 { + // This must be wiki! + re := regexp.MustCompile("wiki:(.*)") + ref := re.FindStringSubmatch(reference)[1] + wi := GetWiki(ref) + entry = entry_helper(wi.Readacl, wi.Writeacl, wi.Adminacl, reference, wi) + } + + } else { + // It's exactly the originating item! + entry = entry_helper(a.Readacl, a.Writeacl, a.Adminacl, reference, a) + } + + revel.TRACE.Printf("BuildACLEntry() returning %+v", entry) + + return entry +} diff --git a/app/models/attachment.go b/app/models/attachment.go new file mode 100644 index 0000000..8c6091e --- /dev/null +++ b/app/models/attachment.go @@ -0,0 +1,180 @@ +package models + +import ( + "time" + "github.com/revel/revel" + "github.com/mikkolehtisalo/revel/acl" + "regexp" + "strings" +) + +type Attachment struct { + Attachment_id string + Wiki_id string + // pg driver works probably better with BASE64 encoding instead of handling bytea hex string + //Attachment []byte `json:",omitempty"` + Attachment string + Mime string + Filename string + Create_user string + Modified time.Time + MatchedPermissions []string + Readacl string + Writeacl string + Adminacl string + Status string +} + +func (a *Attachment) Validate(v *revel.Validation) { + // Required fields + v.Required(a.Attachment_id) + v.Required(a.Wiki_id) + v.Required(a.Attachment) + v.Required(a.Filename) + v.Required(a.Modified) + + // Match against regexp patterns + v.Match(a.Wiki_id, regexp.MustCompile("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}")).Message("Wiki_id not UUID?") + v.Match(a.Attachment_id, regexp.MustCompile("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}")).Message("Wiki_id not UUID?") + + // Validate the Attachment field + re := regexp.MustCompile("^data:([^;]*);base64,(.*)$") + v.Match(a.Attachment, re).Message("Invalid attachment data!") + + // Fix the content & mime filed + if re.MatchString(a.Attachment) { + parts := re.FindStringSubmatch(a.Attachment) + a.Mime = parts[1] + a.Attachment = parts[2] + + } +} + +// Sets the modified timestamp +func (a *Attachment) Save(save_activity bool) { + revel.TRACE.Printf("Attachment Save(): %+v", a) + + db := get_db() + defer db.Close() + a.Modified = time.Now() + + _, err := db.Exec("insert into attachments(wiki_id, attachment_id, attachment, mime, filename, create_user, modified, status) values ($1, $2, $3, $4, $5, $6, $7, $8)", + a.Wiki_id, a.Attachment_id, a.Attachment, a.Mime, a.Filename, a.Create_user, a.Modified, a.Status) + + if err != nil { + revel.ERROR.Printf("Attachment Save(): error %+v", err) + } + + if save_activity { + SaveActivity(a) + } +} + +func GetAttachment(wiki string, attachment string) Attachment { + revel.TRACE.Printf("GetAttachment() wiki:%+v, attachment:%+v", wiki, attachment) + attachments := []Attachment{} + att := Attachment{} + db := get_db() + defer db.Close() + + err := db.Select(&attachments, "select * from attachments a1 where a1.wiki_id=uuid_in($1) and a1.status='ACTIVE' and a1.attachment_id=uuid_in($2) and not exists (select * from attachments a2 where a1.wiki_id=a2.wiki_id and a1.attachment_id=a2.attachment_id and a2.modified>a1.modified)", wiki, attachment) + + if err != nil { + revel.ERROR.Printf("GetAttachment(): error %+v", err) + } + + if len(attachments)>0 { + att = attachments[0] + } + + revel.TRACE.Printf("GetAttachment() returning %+v", att) + return att +} + +func GetAttachments(wiki string) []Attachment { + revel.TRACE.Printf("GetAttachments() wiki: %+v", wiki) + attachments := []Attachment{} + db := get_db() + defer db.Close() + + err := db.Select(&attachments, "select * from attachments a1 where a1.wiki_id=uuid_in($1) and a1.status='ACTIVE' and not exists (select * from attachments a2 where a1.wiki_id=a2.wiki_id and a1.attachment_id=a2.attachment_id and a2.modified>a1.modified)", wiki) + + if err != nil { + revel.ERROR.Printf("GetAttachments(): error %+v", err) + } + + revel.TRACE.Printf("GetAttachments() returning: %+v", attachments) + return attachments +} + +func DeleteAttachments(wiki string, user string) { + revel.TRACE.Printf("DeleteAttachments() wiki: %+v, user: %+v", wiki, user) + attachments := []Attachment{} + db := get_db() + defer db.Close() + + err := db.Select(&attachments, "select * from attachments a1 where a1.wiki_id=uuid_in($1) and a1.status='ACTIVE' and not exists (select * from attachments a2 where a1.wiki_id=a2.wiki_id and a1.attachment_id=a2.attachment_id and a2.modified>a1.modified)", wiki) + + if err != nil { + revel.ERROR.Printf("DeleteAttachments(): error %+v", err) + } + + for _, item := range attachments { + item.Create_user = user + item.Status = "DELETED" + item.Save(false) + } +} + + +// ACL stuff + +// Build ACL entry for reference +func (a Attachment) BuildACLEntry(reference string) acl.ACLEntry { + revel.TRACE.Printf("BuildACLEntry() %+v", reference) + var entry acl.ACLEntry + + if reference != ("attachment:"+a.Wiki_id+"/"+a.Attachment_id) { + if strings.Index(reference, "attachment") == 0 { + // We are not working on this copy, get from database + re := regexp.MustCompile("attachment:([^/]*)/(.*)") + m := re.FindStringSubmatch(reference) + wref := m[1] + aref := m[2] + aa := GetAttachment(wref, aref) + entry = entry_helper(aa.Readacl, aa.Writeacl, aa.Adminacl, reference, aa) + } else { + // This must be wiki! + re := regexp.MustCompile("wiki:(.*)") + ref := re.FindStringSubmatch(reference)[1] + wi := GetWiki(ref) + entry = entry_helper(wi.Readacl, wi.Writeacl, wi.Adminacl, reference, wi) + } + } else { + // It's exactly the originating item! + entry = entry_helper(a.Readacl, a.Writeacl, a.Adminacl, reference, a) + } + + return entry +} + +// Set the matched permissions to a variable +func (a Attachment) SetMatched(permissions []string) interface{} { + a.MatchedPermissions = permissions + return a +} + +// Building parent information +func (a Attachment) BuildACLParent() string { + return "wiki:"+a.Wiki_id +} + +// Wiki+attachment ids... +func (a Attachment) BuildACLReference() string { + return "attachment:"+a.Wiki_id+"/"+a.Attachment_id +} + +// Set on data +func (a Attachment) BuildACLInheritation() bool { + return true +} diff --git a/app/models/common.go b/app/models/common.go new file mode 100644 index 0000000..8e39762 --- /dev/null +++ b/app/models/common.go @@ -0,0 +1,69 @@ +package models + +import ( + "github.com/revel/revel" + "fmt" + "github.com/jmoiron/sqlx" + _ "github.com/lib/pq" + "github.com/mikkolehtisalo/revel/acl" + "strings" +) + +var ( + db_user string + db_password string + db_name string +) + +// Initialize settings from app.conf +func init() { + revel.OnAppStart(func() { + var ok bool + if db_user, ok = revel.Config.String("db.user"); !ok { + panic(fmt.Errorf("Unable to read db.user")) + } + if db_password, ok = revel.Config.String("db.password"); !ok { + panic(fmt.Errorf("Unable to read db.password")) + } + if db_name , ok = revel.Config.String("db.name"); !ok { + panic(fmt.Errorf("Unable to read db.name")) + } + }) +} + +func checkError(err error, s string) { + // Syslogger + //logger, _ := syslog.New(syslog.LOG_ERR, "SyncServer") + //defer logger.Close() + + if err != nil { + //logger.Err(fmt.Sprintf("%s: %s", s, err)) + panic(fmt.Sprintf("%s: %s", s, err)) + } +} + +// Open new database connection +func get_db() *sqlx.DB { + connstring := fmt.Sprintf("user=%s password='%s' dbname=%s sslmode=disable", db_user, db_password, db_name) + db, err := sqlx.Open("postgres", connstring) + checkError(err, "sqlx.Open") + return db +} + +// Common helper for building acl entries specific to this application +func entry_helper(read string, write string, admin string, reference string, tgt acl.Filterable) acl.ACLEntry { + entry := acl.ACLEntry{} + + read_acl := acl.BuildPermissionACLs("read", strings.Split(read, ",")) + write_acl := acl.BuildPermissionACLs("write", strings.Split(write, ",")) + admin_acl := acl.BuildPermissionACLs("admin", strings.Split(admin, ",")) + acls := append(read_acl, write_acl...) + acls = append(acls, admin_acl...) + entry.ACLs = acls + + entry.ObjReference = reference + entry.Inheritation = tgt.BuildACLInheritation() + entry.Parent = tgt.BuildACLParent() + + return entry +} diff --git a/app/models/contentfield.go b/app/models/contentfield.go new file mode 100644 index 0000000..1beea10 --- /dev/null +++ b/app/models/contentfield.go @@ -0,0 +1,279 @@ +package models + +import ( + "github.com/revel/revel" + "github.com/mikkolehtisalo/revel/deXSS" + "time" + "regexp" + "github.com/mikkolehtisalo/revel/acl" + "strings" + "fmt" +) + +var ( + allowed map[string]string +) + +func init() { + allowed = make(map[string]string) + // This is actually what most basic editing functions of CKEditor require + allowed["p"] = "class,id" + allowed["div"] = "class,id" + allowed["h1"] = "class,id" + allowed["h2"] = "class,id" + allowed["h3"] = "class,id" + allowed["ul"] = "class,id" + allowed["li"] = "class,id" + allowed["a"] = "class,id,href,rel" + allowed["img"] = "class,id,src,alt,hspace,vspace,width,height" + allowed["span"] = "class,id,style" +} + +type ContentField struct { + Contentfield_id string + Wiki_id string + Content string + Contentwithmacros string + Modified time.Time + Status string + Create_user string + MatchedPermissions []string + // Not really used, but required for handling the acls + Readacl string + Writeacl string + Adminacl string +} + +func (c *ContentField) Validate(v *revel.Validation) { + // Required fields + v.Required(c.Contentfield_id) + v.Required(c.Wiki_id) + + // Match against regexp patterns + v.Match(c.Contentfield_id, regexp.MustCompile("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}")).Message("Contentfield_id not UUID?") + v.Match(c.Wiki_id, regexp.MustCompile("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}")).Message("Wiki_id not UUID?") + + // Clean the HTML + c.Content = deXSS.FilterHTML(c.Content, allowed, true) +} + +func toc_page(p Page, mode string, co map[string]interface {}) string { + toc := "" + + level := p.Depth + 1 + children := Get_children(p) + filtered := acl.Filter(co, []string{"read", "write", "admin"}, children, true) + var link string + + for _, child := range filtered { + x := child.(Page) + if mode == "anchor" { + link = "" + x.Title + "" + } else { + parent := "" + if x.Depth > 0 { + split := strings.Split(x.Path, "/") + parent = split[len(split)-2] + } + link = "" + x.Title + "" + } + + toc = toc + "
  • " + link + "
  • " + + if len(Get_children(x)) > 0 { + toc = toc + toc_page(x, mode, co) + } + } + + return toc +} + +// Mode: either "anchor" or "link" +func (c *ContentField) build_toc(mode string, co map[string]interface {}) string { + toc := "

    Table of contents

    " + return toc +} + +func include_page(p Page, co map[string]interface {}) string { + include := "" + + level := p.Depth + children := Get_children(p) + filtered := acl.Filter(co, []string{"read", "write", "admin"}, children, true) + + for _, child := range filtered { + p := child.(Page) + content := GetContent(p.Wiki_id, p.Page_id, co) + item := "" + p.Title +"\n" + content.Content + "\n" + include = include + item + if len(Get_children(p)) > 0 { + include = include + include_page(p, co) + } + } + + return include +} + +// Sets up the recursion and fires away +func (c *ContentField) build_include(co map[string]interface {}) string { + include := "" + page := GetPage(c.Wiki_id, c.Contentfield_id) + include = include + include_page(page, co) + return include +} + +func (c *ContentField) run_macros(co map[string]interface {}) { + revel.TRACE.Printf("ContentField run_macros()") + c.Contentwithmacros = c.Content + + toc_anchor_regexp := regexp.MustCompile("(?m)^

    ::toc_anchor(.*)$") + toc_link_regexp := regexp.MustCompile("(?m)^

    ::toc_link(.*)$") + children_regexp := regexp.MustCompile("(?m)^

    ::children(.*)$") + + if toc_anchor_regexp.MatchString(c.Content) { + revel.TRACE.Printf("TOC anchor macro found!") + toc := c.build_toc("anchor", co) + c.Contentwithmacros = toc_anchor_regexp.ReplaceAllString(c.Contentwithmacros, toc) + } + + if toc_link_regexp.MatchString(c.Content) { + revel.TRACE.Printf("TOC link macro found!") + toc := c.build_toc("link", co) + c.Contentwithmacros = toc_link_regexp.ReplaceAllString(c.Contentwithmacros, toc) + } + + if children_regexp.MatchString(c.Content) { + revel.TRACE.Printf("Include children macro found!") + include := c.build_include(co) + c.Contentwithmacros = children_regexp.ReplaceAllString(c.Contentwithmacros, include) + } +} + +// Updates modified time +func (c *ContentField) Save(save_activity bool) { + revel.TRACE.Printf("ContentField Save(): %+v", c) + db := get_db() + defer db.Close() + + c.Modified = time.Now() + + _, err := db.Exec("insert into contentfields(contentfield_id, wiki_id, content, modified, status, create_user) values ($1, $2, $3, $4, $5, $6)", + c.Contentfield_id, c.Wiki_id, c.Content, c.Modified, c.Status, c.Create_user ) + + if err != nil { + revel.ERROR.Printf("ContentField Save(): failed with %+v", err) + } + + if save_activity { + // Save the activity just if this was page anyways + p := GetPageAllStatuses(c.Wiki_id, c.Contentfield_id) + SaveActivity(&p) + } +} + +func DeleteContentFields(wiki_id string, user string) { + revel.TRACE.Printf("DeleteContentFields(): wiki: %+v, user: %+v", wiki_id, user) + + contents := []ContentField{} + db := get_db() + defer db.Close() + + err := db.Select(&contents, "select * from contentfields c1 where wiki_id=uuid_in($1) and status='ACTIVE' and not exists (select * from contentfields c2 where c1.contentfield_id=c2.contentfield_id and c1.wiki_id=c2.wiki_id and c2.modified>c1.modified)", + wiki_id) + + if err != nil { + revel.ERROR.Printf("Unable to get contents %+v: %+v", wiki_id, err) + } + + for _, item := range contents { + item.Status = "DELETED" + item.Create_user = user + item.Save(false) + } +} + +func GetContent(wiki_id string, content_id string, c map[string]interface {}) ContentField { + revel.TRACE.Printf("GetContent() wiki: %+v, content: %+v", wiki_id, content_id) + contents := []ContentField{} + content := ContentField{} + db := get_db() + defer db.Close() + + err := db.Select(&contents, "select * from contentfields c1 where contentfield_id=uuid_in($1) and wiki_id=uuid_in($2) and status='ACTIVE' and not exists (select * from contentfields c2 where c1.contentfield_id=c2.contentfield_id and c1.wiki_id=c2.wiki_id and c2.modified>c1.modified)", + content_id, wiki_id) + + if err != nil { + revel.ERROR.Printf("Unable to get content %+v/%+v: %+v", wiki_id, content_id, err) + } + + if len(contents)>0 { + content = contents[0] + } + + content.run_macros(c) + + revel.TRACE.Printf("GetContent() returning: %+v", content) + return content +} + + +// ACL stuff + +// Build ACL entry for reference +func (c ContentField) BuildACLEntry(reference string) acl.ACLEntry { + revel.TRACE.Printf("BuildACLEntry() %+v", reference) + var entry acl.ACLEntry + + if reference != ("cf:"+c.Wiki_id+"/"+c.Contentfield_id) { + + if strings.Index(reference, "page") == 0 { + // We are not working on this copy, get from database + re := regexp.MustCompile("page:([^/]*)/(.*)") + m := re.FindStringSubmatch(reference) + wref := m[1] + pref := m[2] + pa := GetPage(wref, pref) + entry = entry_helper(pa.Readacl, pa.Writeacl, pa.Adminacl, reference, pa) + } + + if strings.Index(reference, "wiki") == 0 { + // This must be wiki! + re := regexp.MustCompile("wiki:(.*)") + ref := re.FindStringSubmatch(reference)[1] + wi := GetWiki(ref) + entry = entry_helper(wi.Readacl, wi.Writeacl, wi.Adminacl, reference, wi) + } + + } else { + // It's exactly the originating item! + entry = entry_helper(c.Readacl, c.Writeacl, c.Adminacl, reference, c) + } + + revel.TRACE.Printf("BuildACLEntry() returning %+v", entry) + + return entry +} + +// Set the matched permissions to a variable +func (c ContentField) SetMatched(permissions []string) interface{} { + c.MatchedPermissions = permissions + return c +} + +// Building parent information +func (c ContentField) BuildACLParent() string { + return "page:" + c.Wiki_id + "/" + c.Contentfield_id +} + +// Wiki+contentfield ids... +func (c ContentField) BuildACLReference() string { + return "cf:"+c.Wiki_id+"/"+c.Contentfield_id +} + +// Always inherit the parent! +func (c ContentField) BuildACLInheritation() bool { + return true +} diff --git a/app/models/favoritewiki.go b/app/models/favoritewiki.go new file mode 100644 index 0000000..6938d40 --- /dev/null +++ b/app/models/favoritewiki.go @@ -0,0 +1,73 @@ +package models + +import ( + "time" + "github.com/revel/revel" +) + +type FavoriteWiki struct { + Username string + Wiki_id string + Modified time.Time + Status string +} + +// Sets modified time +func (f FavoriteWiki) Save() { + revel.TRACE.Printf("FavoriteWiki Save(): %+v", f) + db := get_db() + defer db.Close() + + _, err := db.Exec("insert into favoritewikis(username, wiki_id, modified, status) values ($1, $2, $3, $4)", f.Username, f.Wiki_id, time.Now(), f.Status) + + if err != nil { + revel.ERROR.Printf("FavoriteWiki Save(): error %+v", err) + } +} + +// List all favorites of the user +func ListFavoriteWikis(user string) []FavoriteWiki { + revel.TRACE.Printf("ListFavoriteWikis(): %+v", user) + favorites := []FavoriteWiki{} + db := get_db() + defer db.Close() + + err := db.Select(&favorites, "select * from favoritewikis w1 where username=$1 and status='ACTIVE' and not exists (select * from favoritewikis w2 where w1.wiki_id=w2.wiki_id and w1.username=w2.username and w2.modified>w1.modified)", user) + if err != nil { + revel.ERROR.Printf("ListFavoriteWikis(): error %+v", err) + } + + revel.TRACE.Printf("ListFavoriteWikis() returning: %+v", favorites) + return favorites +} + +func DeleteFavorites(wiki string) { + revel.TRACE.Printf("DeleteFavorites(): %+v", wiki) + favorites := []FavoriteWiki{} + db := get_db() + defer db.Close() + + err := db.Select(&favorites, "select * from favoritewikis w1 where wiki_id=uuid_in($1) and status='ACTIVE' and not exists (select * from favoritewikis w2 where w1.wiki_id=w2.wiki_id and w1.username=w2.username and w2.modified>w1.modified)", wiki) + if err != nil { + revel.ERROR.Printf("DeleteFavorites(): error %+v", err) + } + + // Delete! + for _, item := range favorites { + item.Status = "DELETED" + item.Save() + } +} + +// Is the wiki of user already favorited? +// No point in optimizing probably, won't get called very often +func IsFavoriteWiki(wiki string, user string) bool { + fav := false + favs := ListFavoriteWikis(user) + for _, item := range favs { + if item.Wiki_id==wiki { + fav = true + } + } + return fav +} diff --git a/app/models/lock.go b/app/models/lock.go new file mode 100644 index 0000000..f17ec43 --- /dev/null +++ b/app/models/lock.go @@ -0,0 +1,57 @@ +package models + +import ( + "time" + "github.com/revel/revel" +) + +type Lock struct { + Target_id string + Wiki_id string + Username string + Realname string + Modified time.Time +} + +// Sets modified time +func (l Lock) Save() { + revel.TRACE.Printf("Lock Save(): %+v", l) + db := get_db() + defer db.Close() + + _, err := db.Exec("insert into locks(wiki_id, target_id, username, realname, modified) values ($1, $2, $3, $4, $5)", + l.Wiki_id, l.Target_id, l.Username, l.Realname, time.Now()) + + if err != nil { + revel.ERROR.Printf("Lock Save(): failed with %+v", err) + } +} + +// Deletes by target and wiki id +func (l Lock) Delete() { + revel.TRACE.Printf("Lock Delete(): %+v", l) + db := get_db() + defer db.Close() + + _, err := db.Exec("delete from locks where wiki_id=uuid_in($1) and target_id=uuid_in($2)", + l.Wiki_id, l.Target_id) + + if err != nil { + revel.ERROR.Printf("Lock Delete(): failed with %+v", err) + } +} + +func GetLock(wiki string, target string) Lock { + revel.TRACE.Printf("GetLock(): target: %+v wiki: %+v", target, wiki) + locks := []Lock{} + lock := Lock{} + db := get_db() + defer db.Close() + + db.Select(&locks, "select * from locks where wiki_id=uuid_in($1) and target_id=uuid_in($2)", + wiki, target) + if len(locks)>0 { + lock = locks[0] + } + return lock +} diff --git a/app/models/page.go b/app/models/page.go new file mode 100644 index 0000000..9389768 --- /dev/null +++ b/app/models/page.go @@ -0,0 +1,266 @@ +package models + +import ( + "time" + "github.com/revel/revel" + "github.com/mikkolehtisalo/revel/acl" + "regexp" + "html" + "strings" + "fmt" + //. "github.com/mikkolehtisalo/revel/common" +) + +type Page struct { + Page_id string + Wiki_id string + Path string + Title string + Create_user string + Readacl string + Writeacl string + Adminacl string + Stopinheritation bool + Index int + Depth int + Status string + Modified time.Time + MatchedPermissions []string + Loaded bool `json:"loaded"` +} + +// Sets modified time +// Updates depth automatically +func (p *Page) Save(save_activity bool) { + revel.TRACE.Printf("Page Save(): %+v", p) + db := get_db() + defer db.Close() + + // Update depth + update_depth(p) + p.Modified = time.Now() + + _, err := db.Exec("insert into pages(page_id, wiki_id, path, title, create_user, readacl, writeacl, adminacl, stopinheritation, index, depth, modified, status) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)", + p.Page_id, p.Wiki_id, p.Path, p.Title, p.Create_user, p.Readacl, p.Writeacl, p.Adminacl, p.Stopinheritation, p.Index, p.Depth, p.Modified, p.Status ) + + if err != nil { + revel.ERROR.Printf("Page Save(): failed with %+v", err) + } + + if save_activity { + SaveActivity(p) + } +} + +// Wiki id, one page id, path +// The pages in path must either exist in database or match given single id (in case target is not already in database) +func valid_path(w string, me string, p string) bool { + valid := true + split_path := strings.Split(p, "/") + + for _, part := range split_path { + x := GetPage(w, part) + if part != me && x.Page_id != part { + valid = false + } + } + + return valid +} + +func (p *Page) Validate(v *revel.Validation) { + // Required fields + v.Required(p.Page_id) + v.Required(p.Wiki_id) + v.Required(p.Path) + v.Required(p.Title) + + // Match against regexp patterns + v.Match(p.Wiki_id, regexp.MustCompile("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}")).Message("Wiki_id not UUID?") + v.Match(p.Page_id, regexp.MustCompile("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}")).Message("Page_id not UUID?") + + // Escape HTML from the fields that might be rendered to users + p.Title = html.EscapeString(p.Title) + + // Validate Path + v.Required(valid_path(p.Wiki_id, p.Page_id, p.Path)).Message(fmt.Sprintf("Path is probably invalid: %+v", p.Path)) +} + +func has_children(page Page) bool { + result := false + pages := Get_children(page) + if len(pages) > 0 { + result = true + } + + return result +} + +// Only the next level +func Get_children(page Page) []Page { + revel.TRACE.Printf("Page Get_children(): %+v", page) + pages := []Page{} + db := get_db() + defer db.Close() + + path := page.Path + "/%" + db.Select(&pages, "select * from pages p1 where p1.status='ACTIVE' and not exists (select * from pages p2 where p1.wiki_id=p2.wiki_id and p1.page_id=p2.page_id and p2.modified>p1.modified) and p1.path like $1 and p1.depth=$2 order by index", path, page.Depth + 1) + + return pages +} + +// Used only from Wiki.Delete() +func DeletePages(wiki string, user string) { + revel.TRACE.Printf("Page DeletePages(): wiki %+v, user %+v", wiki, user) + pages := []Page{} + db := get_db() + defer db.Close() + + db.Select(&pages, "select * from pages p1 where p1.status='ACTIVE' and p1.wiki_id=uuid_in($1) and not exists (select * from pages p2 where p1.wiki_id=p2.wiki_id and p1.page_id=p2.page_id and p2.modified>p1.modified)", + wiki) + + for _, page := range pages { + DeletePage(wiki, page.Page_id, user, false) + } +} + +func ListPages(wiki_id string, node string) []Page { + revel.TRACE.Printf("ListPages() wiki_id: %+v, node: %+v", wiki_id, node) + pages := []Page{} + db := get_db() + defer db.Close() + + if len(node) > 0 { + // Get the parent, and find what's under it - if anything + p := GetPage(wiki_id, node) + path := p.Path + "/%" + depth := p.Depth + 1 + db.Select(&pages, "select * from pages p1 where p1.status='ACTIVE' and not exists (select * from pages p2 where p1.wiki_id=p2.wiki_id and p1.page_id=p2.page_id and p2.modified>p1.modified) and p1.path like $1 and p1.depth=$2", path, depth) + } else { + db.Select(&pages, "select * from pages p1 where p1.status='ACTIVE' and p1.wiki_id=uuid_in($1) and p1.depth=0 and not exists (select * from pages p2 where p1.wiki_id=p2.wiki_id and p1.page_id=p2.page_id and p2.modified>p1.modified)", wiki_id) + } + + // Update children status + for x, _ := range pages { + pages[x].Loaded = !has_children(pages[x]) + revel.TRACE.Printf("Page %+v children: %+v", pages[x], has_children(pages[x])) + } + + revel.TRACE.Printf("ListPages returning %+v", pages) + return pages +} + +func DeletePage(wiki_id string, page_id string, user string, save_activity bool) { + revel.TRACE.Printf("DeletePage() wiki: %+v, page: %+v, user: %+v", wiki_id, page_id, user) + + page := GetPage(wiki_id, page_id) + pages := Get_children(page) + // For looping + pages = append(pages, page) + + for _, p := range pages { + if p.Wiki_id != "" { + p.Status = "DELETED" + p.Create_user = user + p.Save(save_activity) + + // Delete ContentField too + cf := GetContent(p.Wiki_id, p.Page_id, nil) + cf.Status = "DELETED" + cf.Create_user = user + cf.Save(save_activity) + } + } +} + +func GetPage(wiki_id string, page_id string) Page { + revel.TRACE.Printf("Page GetPage(): page: %+v wiki: %+v", page_id, wiki_id) + pages := []Page{} + page := Page{} + db := get_db() + defer db.Close() + + db.Select(&pages, "select * from pages p1 where p1.wiki_id=uuid_in($1) and p1.page_id=uuid_in($2) and p1.status='ACTIVE' and not exists (select * from pages p2 where p1.wiki_id=p2.wiki_id and p1.page_id=p2.page_id and p2.modified>p1.modified)", + wiki_id, page_id) + if len(pages)>0 { + page = pages[0] + } + return page +} + +func GetPageAllStatuses(wiki_id string, page_id string) Page { + revel.TRACE.Printf("Page GetPageAllStatuses(): page: %+v wiki: %+v", page_id, wiki_id) + pages := []Page{} + page := Page{} + db := get_db() + defer db.Close() + + db.Select(&pages, "select * from pages p1 where p1.wiki_id=uuid_in($1) and p1.page_id=uuid_in($2) and not exists (select * from pages p2 where p1.wiki_id=p2.wiki_id and p1.page_id=p2.page_id and p2.modified>p1.modified)", + wiki_id, page_id) + if len(pages)>0 { + page = pages[0] + } + return page +} + +func update_depth(page *Page) { + split := strings.Split(page.Path, "/") + page.Depth = len(split) - 1 +} + +// ACL stuff + +// Build ACL entry for reference +func (p Page) BuildACLEntry(reference string) acl.ACLEntry { + revel.TRACE.Printf("BuildACLEntry() %+v", reference) + var entry acl.ACLEntry + + if reference != ("page:"+p.Wiki_id+"/"+p.Page_id) { + if strings.Index(reference, "page") == 0 { + // We are not working on this copy, get from database + re := regexp.MustCompile("page:([^/]*)/(.*)") + m := re.FindStringSubmatch(reference) + wref := m[1] + pref := m[2] + pa := GetPage(wref, pref) + entry = entry_helper(pa.Readacl, pa.Writeacl, pa.Adminacl, reference, pa) + } else { + // This must be wiki! + re := regexp.MustCompile("wiki:(.*)") + ref := re.FindStringSubmatch(reference)[1] + wi := GetWiki(ref) + entry = entry_helper(wi.Readacl, wi.Writeacl, wi.Adminacl, reference, wi) + } + } else { + // It's exactly the originating item! + entry = entry_helper(p.Readacl, p.Writeacl, p.Adminacl, reference, p) + } + + return entry +} + +// Set the matched permissions to a variable +func (p Page) SetMatched(permissions []string) interface{} { + p.MatchedPermissions = permissions + return p +} + +// Building parent information +func (p Page) BuildACLParent() string { + if p.Depth==0 { + return "wiki:"+p.Wiki_id + } else { + pslice := strings.Split(p.Path, "/") + return "page:"+p.Wiki_id + "/" + pslice[len(pslice)-2] + } +} + +// Wiki+page ids... +func (p Page) BuildACLReference() string { + return "page:"+p.Wiki_id+"/"+p.Page_id +} + +// Set on data +func (p Page) BuildACLInheritation() bool { + return !p.Stopinheritation +} diff --git a/app/models/usergroupsearchitem.go b/app/models/usergroupsearchitem.go new file mode 100644 index 0000000..9934d13 --- /dev/null +++ b/app/models/usergroupsearchitem.go @@ -0,0 +1,79 @@ +package models + +import ( + "github.com/mikkolehtisalo/revel/ldapuserdetails" + "fmt" + "strings" + "github.com/revel/revel" + //"time" + // _ "github.com/lib/pq" + //"github.com/jmoiron/sqlx" +) + +var ( + ldap_user_filter string = "&(objectClass=*)" + ldap_user_uid_attr string = "*" + ldap_user_cn_attr string = "*" + ldap_user_base string = "dc=*,dc=*" + ldap_group_filter string = "&(objectClass=*)" + ldap_group_cn_attr string = "*" + ldap_group_dn_attr string = "*" + ldap_group_base string = "dc=*,dc=*" +) + +func get_c_str(name string) string { + if tmp, ok := revel.Config.String(name); !ok { + panic(fmt.Errorf("%s invalid", name)) + } else { + return tmp + } +} + +func init() { + revel.OnAppStart(func() { + ldap_user_filter = get_c_str("ldap.user_filter") + ldap_user_base = get_c_str("ldap.user_base") + ldap_user_uid_attr = get_c_str("ldap.user_uid_attr") + ldap_user_cn_attr = get_c_str("ldap.user_cn_attr") + ldap_group_filter = get_c_str("ldap.group_filter") + ldap_group_base = get_c_str("ldap.group_base") + ldap_group_cn_attr = get_c_str("ldap.group_cn_attr") + ldap_group_dn_attr = get_c_str("ldap.group_dn_attr") + }) +} + + +type UserGroupSearchItem struct { + Id string + Name string + Type string +} + +func ListUserGroupSearchItems(query string) []UserGroupSearchItem { + items := []UserGroupSearchItem{} + l := ldapuserdetails.Get_connection() + defer l.Close() + + sru := ldapuserdetails.QueryLdap(ldap_user_base, strings.Replace(ldap_user_filter, "*", + fmt.Sprintf("*%s*",query), -1), []string{ldap_user_uid_attr, ldap_user_cn_attr}) + srg := ldapuserdetails.QueryLdap(ldap_group_base, strings.Replace(ldap_group_filter, "*", + fmt.Sprintf("*%s*",query), -1), []string{ldap_group_cn_attr, ldap_group_dn_attr}) + + for _, user := range sru.Entries { + item := UserGroupSearchItem { + Id: fmt.Sprintf("u:%s",user.GetAttributeValue(ldap_user_uid_attr)), + Name: fmt.Sprintf("%s (u:%s)", user.GetAttributeValue(ldap_user_cn_attr), user.GetAttributeValue(ldap_user_uid_attr)), + Type: "user"} + items = append(items, item) + } + for _, group := range srg.Entries { + item := UserGroupSearchItem { + Id: fmt.Sprintf("g:%s", group.GetAttributeValue(ldap_group_cn_attr)), + Name: fmt.Sprintf("%s (g:%s)", group.GetAttributeValue(ldap_group_cn_attr), group.GetAttributeValue(ldap_group_cn_attr)), + Type: "group"} + items = append(items, item) + } + + return items +} + diff --git a/app/models/wiki.go b/app/models/wiki.go new file mode 100644 index 0000000..d208016 --- /dev/null +++ b/app/models/wiki.go @@ -0,0 +1,160 @@ +package models + +import ( + "time" + "github.com/mikkolehtisalo/revel/acl" + "strings" + "github.com/revel/revel" + "regexp" + "html" +) + +type Wiki struct { + Wiki_id string + Title string + Description string + Create_user string + Readacl string + Writeacl string + Adminacl string + Status string + Modified time.Time + MatchedPermissions []string + Favorite bool +} + +// Sets the modified timestamp +func (w *Wiki) Save(save_activity bool) { + revel.TRACE.Printf("Wiki Save(): %+v", w) + + db := get_db() + defer db.Close() + w.Modified = time.Now() + + _, err := db.Exec("insert into wikis(wiki_id, title, description, create_user, readacl, writeacl, adminacl, status, modified) values ($1, $2, $3, $4, $5, $6, $7, $8, $9)", + w.Wiki_id, w.Title, w.Description, w.Create_user, w.Readacl, w.Writeacl, w.Adminacl, w.Status, w.Modified) + + if err != nil { + revel.ERROR.Printf("Wiki Save(): error %+v", err) + } + + if save_activity { + SaveActivity(w) + } +} + +func (w *Wiki) Validate(v *revel.Validation) { + // Required fields + v.Required(w.Wiki_id) + v.Required(w.Title) + + // Match against regexp patterns + v.Match(w.Wiki_id, regexp.MustCompile("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}")).Message("Not UUID?") + + // Escape HTML from the fields that might be rendered to users + w.Description = html.EscapeString(w.Description) + w.Title = html.EscapeString(w.Title) + w.Readacl = html.EscapeString(w.Readacl) + w.Writeacl = html.EscapeString(w.Writeacl) + w.Adminacl = html.EscapeString(w.Adminacl) +} + +//All ACTIVE Wikis +func ListWikis() []Wiki { + revel.TRACE.Printf("ListWikis()") + + wikis := []Wiki{} + db := get_db() + defer db.Close() + + err := db.Select(&wikis, "select * from wikis w1 where not exists (select * from wikis w2 where w2.modified>w1.modified and w1.wiki_id=w2.wiki_id) and status='ACTIVE'") + if err != nil { + revel.ERROR.Printf("ListWikis() err: %+v", err) + } + + revel.TRACE.Printf("ListWikis() returning %+v", wikis) + return wikis +} + +//Newest ACTIVE version of wiki +func GetWiki(id string) Wiki { + revel.TRACE.Printf("GetWiki() %+v", id) + wikis := []Wiki{} + wiki := Wiki{} + db := get_db() + defer db.Close() + + err := db.Select(&wikis, "select * from wikis w1 where w1.wiki_id=uuid_in($1) and w1.status='ACTIVE' and not exists (select * from wikis w2 where w1.wiki_id=w2.wiki_id and w2.modified>w1.modified)", id) + if err != nil { + revel.ERROR.Printf("GetWiki(): error %+v", err) + } + + if len(wikis)>0 { + wiki = wikis[0] + } + + revel.TRACE.Printf("GetWiki() returning %+v", wiki) + return wiki +} + +// Goodbye, wiki! +func (w Wiki) Delete(user string) { + revel.TRACE.Printf("Wiki Delete() user: %+v", user) + w.Status = "DELETED" + w.Create_user = user + w.Save(true) + DeletePages(w.Wiki_id, user) + DeleteContentFields(w.Wiki_id, user) + DeleteAttachments(w.Wiki_id, user) + DeleteFavorites(w.Wiki_id) +} + +// ACL stuff +// --------- + +// Build ACL entry for reference +func (w Wiki) BuildACLEntry(reference string) acl.ACLEntry { + entry := acl.ACLEntry{} + + tgt := w + if reference != ("wiki:"+w.Wiki_id) { + // We are not working on this copy, get from database + re := regexp.MustCompile("wiki:(.*)") + ref := re.FindStringSubmatch(reference)[1] + tgt = GetWiki(ref) + } + + // Build the ACL from tgt + read_acl := acl.BuildPermissionACLs("read", strings.Split(tgt.Readacl, ",")) + write_acl := acl.BuildPermissionACLs("write", strings.Split(tgt.Writeacl, ",")) + admin_acl := acl.BuildPermissionACLs("admin", strings.Split(tgt.Adminacl, ",")) + acls := append(read_acl, write_acl...) + acls = append(acls, admin_acl...) + entry.ObjReference = reference + entry.ACLs = acls + entry.Inheritation = tgt.BuildACLInheritation() + entry.Parent = tgt.BuildACLParent() + + return entry +} + +// Set the matched permissions to a variable +func (w Wiki) SetMatched(permissions []string) interface{} { + w.MatchedPermissions = permissions + return w +} + +// Just append type to the id +func (w Wiki) BuildACLReference() string { + return "wiki:"+w.Wiki_id +} + +// No wiki inherits ACL +func (w Wiki) BuildACLInheritation() bool { + return false +} + +// No wiki has parent +func (w Wiki) BuildACLParent() string { + return "" +} \ No newline at end of file diff --git a/app/routes/routes.go b/app/routes/routes.go new file mode 100644 index 0000000..c332c45 --- /dev/null +++ b/app/routes/routes.go @@ -0,0 +1,341 @@ +// GENERATED CODE - DO NOT EDIT +package routes + +import "github.com/revel/revel" + + +type tWikis struct {} +var Wikis tWikis + + +func (_ tWikis) Create( + wiki string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + return revel.MainRouter.Reverse("Wikis.Create", args).Url +} + +func (_ tWikis) Read( + ) string { + args := make(map[string]string) + + return revel.MainRouter.Reverse("Wikis.Read", args).Url +} + +func (_ tWikis) Update( + wiki string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + return revel.MainRouter.Reverse("Wikis.Update", args).Url +} + +func (_ tWikis) Delete( + wiki string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + return revel.MainRouter.Reverse("Wikis.Delete", args).Url +} + + +type tFavoriteWikis struct {} +var FavoriteWikis tFavoriteWikis + + +func (_ tFavoriteWikis) Create( + wiki string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + return revel.MainRouter.Reverse("FavoriteWikis.Create", args).Url +} + +func (_ tFavoriteWikis) Read( + ) string { + args := make(map[string]string) + + return revel.MainRouter.Reverse("FavoriteWikis.Read", args).Url +} + +func (_ tFavoriteWikis) Delete( + wiki string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + return revel.MainRouter.Reverse("FavoriteWikis.Delete", args).Url +} + + +type tUserAvatars struct {} +var UserAvatars tUserAvatars + + +func (_ tUserAvatars) Read( + user string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "user", user) + return revel.MainRouter.Reverse("UserAvatars.Read", args).Url +} + + +type tUserGroupSearch struct {} +var UserGroupSearch tUserGroupSearch + + +func (_ tUserGroupSearch) List( + ) string { + args := make(map[string]string) + + return revel.MainRouter.Reverse("UserGroupSearch.List", args).Url +} + + +type tLocks struct {} +var Locks tLocks + + +func (_ tLocks) Create( + wiki string, + target string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + revel.Unbind(args, "target", target) + return revel.MainRouter.Reverse("Locks.Create", args).Url +} + +func (_ tLocks) Read( + wiki string, + target string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + revel.Unbind(args, "target", target) + return revel.MainRouter.Reverse("Locks.Read", args).Url +} + +func (_ tLocks) Delete( + wiki string, + target string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + revel.Unbind(args, "target", target) + return revel.MainRouter.Reverse("Locks.Delete", args).Url +} + + +type tPages struct {} +var Pages tPages + + +func (_ tPages) Create( + wiki string, + page string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + revel.Unbind(args, "page", page) + return revel.MainRouter.Reverse("Pages.Create", args).Url +} + +func (_ tPages) Read( + ) string { + args := make(map[string]string) + + return revel.MainRouter.Reverse("Pages.Read", args).Url +} + +func (_ tPages) Update( + wiki string, + page string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + revel.Unbind(args, "page", page) + return revel.MainRouter.Reverse("Pages.Update", args).Url +} + +func (_ tPages) Delete( + wiki string, + page string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + revel.Unbind(args, "page", page) + return revel.MainRouter.Reverse("Pages.Delete", args).Url +} + + +type tAttachments struct {} +var Attachments tAttachments + + +func (_ tAttachments) Create( + wiki string, + attachment string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + revel.Unbind(args, "attachment", attachment) + return revel.MainRouter.Reverse("Attachments.Create", args).Url +} + +func (_ tAttachments) Read( + wiki string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + return revel.MainRouter.Reverse("Attachments.Read", args).Url +} + +func (_ tAttachments) Serve( + wiki string, + attachment string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + revel.Unbind(args, "attachment", attachment) + return revel.MainRouter.Reverse("Attachments.Serve", args).Url +} + +func (_ tAttachments) Delete( + wiki string, + attachment string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + revel.Unbind(args, "attachment", attachment) + return revel.MainRouter.Reverse("Attachments.Delete", args).Url +} + + +type tApp struct {} +var App tApp + + +func (_ tApp) Index( + ) string { + args := make(map[string]string) + + return revel.MainRouter.Reverse("App.Index", args).Url +} + + +type tContentFields struct {} +var ContentFields tContentFields + + +func (_ tContentFields) Read( + wiki string, + page string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + revel.Unbind(args, "page", page) + return revel.MainRouter.Reverse("ContentFields.Read", args).Url +} + +func (_ tContentFields) Update( + wiki string, + page string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "wiki", wiki) + revel.Unbind(args, "page", page) + return revel.MainRouter.Reverse("ContentFields.Update", args).Url +} + + +type tActivities struct {} +var Activities tActivities + + +func (_ tActivities) Read( + ) string { + args := make(map[string]string) + + return revel.MainRouter.Reverse("Activities.Read", args).Url +} + + +type tTestRunner struct {} +var TestRunner tTestRunner + + +func (_ tTestRunner) Index( + ) string { + args := make(map[string]string) + + return revel.MainRouter.Reverse("TestRunner.Index", args).Url +} + +func (_ tTestRunner) Run( + suite string, + test string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "suite", suite) + revel.Unbind(args, "test", test) + return revel.MainRouter.Reverse("TestRunner.Run", args).Url +} + +func (_ tTestRunner) List( + ) string { + args := make(map[string]string) + + return revel.MainRouter.Reverse("TestRunner.List", args).Url +} + + +type tStatic struct {} +var Static tStatic + + +func (_ tStatic) Serve( + prefix string, + filepath string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "prefix", prefix) + revel.Unbind(args, "filepath", filepath) + return revel.MainRouter.Reverse("Static.Serve", args).Url +} + +func (_ tStatic) ServeModule( + moduleName string, + prefix string, + filepath string, + ) string { + args := make(map[string]string) + + revel.Unbind(args, "moduleName", moduleName) + revel.Unbind(args, "prefix", prefix) + revel.Unbind(args, "filepath", filepath) + return revel.MainRouter.Reverse("Static.ServeModule", args).Url +} + + diff --git a/app/tmp/main.go b/app/tmp/main.go new file mode 100644 index 0000000..0f35f37 --- /dev/null +++ b/app/tmp/main.go @@ -0,0 +1,375 @@ +// GENERATED CODE - DO NOT EDIT +package main + +import ( + "flag" + "reflect" + "github.com/revel/revel" + _ "github.com/mikkolehtisalo/iw/app" + controllers "github.com/mikkolehtisalo/iw/app/controllers" + _ "github.com/mikkolehtisalo/iw/app/models" + tests "github.com/mikkolehtisalo/iw/tests" + controllers1 "github.com/revel/revel/modules/static/app/controllers" + _ "github.com/revel/revel/modules/testrunner/app" + controllers0 "github.com/revel/revel/modules/testrunner/app/controllers" +) + +var ( + runMode *string = flag.String("runMode", "", "Run mode.") + port *int = flag.Int("port", 0, "By default, read from app.conf") + importPath *string = flag.String("importPath", "", "Go Import Path for the app.") + srcPath *string = flag.String("srcPath", "", "Path to the source root.") + + // So compiler won't complain if the generated code doesn't reference reflect package... + _ = reflect.Invalid +) + +func main() { + flag.Parse() + revel.Init(*runMode, *importPath, *srcPath) + revel.INFO.Println("Running revel server") + + revel.RegisterController((*controllers.Wikis)(nil), + []*revel.MethodType{ + &revel.MethodType{ + Name: "Create", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Read", + Args: []*revel.MethodArg{ + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Update", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Delete", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + + }) + + revel.RegisterController((*controllers.FavoriteWikis)(nil), + []*revel.MethodType{ + &revel.MethodType{ + Name: "Create", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Read", + Args: []*revel.MethodArg{ + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Delete", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + + }) + + revel.RegisterController((*controllers.UserAvatars)(nil), + []*revel.MethodType{ + &revel.MethodType{ + Name: "Read", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "user", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + + }) + + revel.RegisterController((*controllers.UserGroupSearch)(nil), + []*revel.MethodType{ + &revel.MethodType{ + Name: "List", + Args: []*revel.MethodArg{ + }, + RenderArgNames: map[int][]string{ + }, + }, + + }) + + revel.RegisterController((*controllers.Locks)(nil), + []*revel.MethodType{ + &revel.MethodType{ + Name: "Create", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "target", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Read", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "target", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Delete", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "target", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + + }) + + revel.RegisterController((*controllers.Pages)(nil), + []*revel.MethodType{ + &revel.MethodType{ + Name: "Create", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "page", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Read", + Args: []*revel.MethodArg{ + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Update", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "page", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Delete", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "page", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + + }) + + revel.RegisterController((*controllers.Attachments)(nil), + []*revel.MethodType{ + &revel.MethodType{ + Name: "Create", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "attachment", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Read", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Serve", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "attachment", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Delete", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "attachment", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + + }) + + revel.RegisterController((*controllers.App)(nil), + []*revel.MethodType{ + &revel.MethodType{ + Name: "Index", + Args: []*revel.MethodArg{ + }, + RenderArgNames: map[int][]string{ + 10: []string{ + }, + }, + }, + + }) + + revel.RegisterController((*controllers.ContentFields)(nil), + []*revel.MethodType{ + &revel.MethodType{ + Name: "Read", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "page", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "Update", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "wiki", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "page", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + + }) + + revel.RegisterController((*controllers.Activities)(nil), + []*revel.MethodType{ + &revel.MethodType{ + Name: "Read", + Args: []*revel.MethodArg{ + }, + RenderArgNames: map[int][]string{ + }, + }, + + }) + + revel.RegisterController((*controllers0.TestRunner)(nil), + []*revel.MethodType{ + &revel.MethodType{ + Name: "Index", + Args: []*revel.MethodArg{ + }, + RenderArgNames: map[int][]string{ + 46: []string{ + "testSuites", + }, + }, + }, + &revel.MethodType{ + Name: "Run", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "suite", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "test", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + 69: []string{ + "error", + }, + }, + }, + &revel.MethodType{ + Name: "List", + Args: []*revel.MethodArg{ + }, + RenderArgNames: map[int][]string{ + }, + }, + + }) + + revel.RegisterController((*controllers1.Static)(nil), + []*revel.MethodType{ + &revel.MethodType{ + Name: "Serve", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "prefix", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "filepath", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + &revel.MethodType{ + Name: "ServeModule", + Args: []*revel.MethodArg{ + &revel.MethodArg{Name: "moduleName", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "prefix", Type: reflect.TypeOf((*string)(nil)) }, + &revel.MethodArg{Name: "filepath", Type: reflect.TypeOf((*string)(nil)) }, + }, + RenderArgNames: map[int][]string{ + }, + }, + + }) + + revel.DefaultValidationKeys = map[string]map[int]string{ + "github.com/mikkolehtisalo/iw/app/models.(*Attachment).Validate": { + 30: "a.Attachment_id", + 31: "a.Wiki_id", + 32: "a.Attachment", + 33: "a.Filename", + 34: "a.Modified", + 37: "a.Wiki_id", + 38: "a.Attachment_id", + 42: "a.Attachment", + }, + "github.com/mikkolehtisalo/iw/app/models.(*ContentField).Validate": { + 49: "c.Contentfield_id", + 50: "c.Wiki_id", + 53: "c.Contentfield_id", + 54: "c.Wiki_id", + }, + "github.com/mikkolehtisalo/iw/app/models.(*Page).Validate": { + 73: "p.Page_id", + 74: "p.Wiki_id", + 75: "p.Path", + 76: "p.Title", + 79: "p.Wiki_id", + 80: "p.Page_id", + }, + "github.com/mikkolehtisalo/iw/app/models.(*Wiki).Validate": { + 48: "w.Wiki_id", + 49: "w.Title", + 52: "w.Wiki_id", + }, + } + revel.TestSuites = []interface{}{ + (*tests.AppTest)(nil), + } + + revel.Run(*port) +} diff --git a/app/views/App/Index.html b/app/views/App/Index.html new file mode 100644 index 0000000..b444654 --- /dev/null +++ b/app/views/App/Index.html @@ -0,0 +1,14 @@ + + + Wikis + + + + + + + + + diff --git a/app/views/debug.html b/app/views/debug.html new file mode 100644 index 0000000..f3975b7 --- /dev/null +++ b/app/views/debug.html @@ -0,0 +1,64 @@ + +

    + + + diff --git a/app/views/errors/404.html b/app/views/errors/404.html new file mode 100644 index 0000000..ebdfe10 --- /dev/null +++ b/app/views/errors/404.html @@ -0,0 +1,20 @@ + + + + Not found + + +{{if eq .RunMode "dev"}} +{{template "errors/404-dev.html" .}} +{{else}} + {{with .Error}} +

    + {{.Title}} +

    +

    + {{.Description}} +

    + {{end}} +{{end}} + + diff --git a/app/views/errors/500.html b/app/views/errors/500.html new file mode 100644 index 0000000..0cef4de --- /dev/null +++ b/app/views/errors/500.html @@ -0,0 +1,16 @@ + + + + Application error + + + {{if eq .RunMode "dev"}} + {{template "errors/500-dev.html" .}} + {{else}} +

    Oops, an error occured

    +

    + This exception has been logged. +

    + {{end}} + + diff --git a/app/views/flash.html b/app/views/flash.html new file mode 100644 index 0000000..9c9ade9 --- /dev/null +++ b/app/views/flash.html @@ -0,0 +1,18 @@ +{{if .flash.success}} +
    + {{.flash.success}} +
    +{{end}} + +{{if or .errors .flash.error}} +
    + {{if .flash.error}} + {{.flash.error}} + {{end}} + +
    +{{end}} diff --git a/app/views/footer.html b/app/views/footer.html new file mode 100644 index 0000000..8db95e5 --- /dev/null +++ b/app/views/footer.html @@ -0,0 +1,5 @@ + {{if eq .RunMode "dev"}} + {{template "debug.html" .}} + {{end}} + + diff --git a/app/views/header.html b/app/views/header.html new file mode 100644 index 0000000..01637f4 --- /dev/null +++ b/app/views/header.html @@ -0,0 +1,17 @@ + + + + + {{.title}} + + + + + {{range .moreStyles}} + + {{end}} + {{range .moreScripts}} + + {{end}} + + diff --git a/certificates/ca.crt b/certificates/ca.crt new file mode 100644 index 0000000..c857899 --- /dev/null +++ b/certificates/ca.crt @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDjzCCAnegAwIBAgIBATANBgkqhkiG9w0BAQsFADA2MRQwEgYDVQQKEwtMT0NB +TERPTUFJTjEeMBwGA1UEAxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTEzMDgx +OTIwMzIxNloXDTMzMDgxOTIwMzIxNlowNjEUMBIGA1UEChMLTE9DQUxET01BSU4x +HjAcBgNVBAMTFUNlcnRpZmljYXRlIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAJezjGfDZW6jjb6FNW67za4w6UO1eanl8kWGGY5WW0x+ +XCn/jZ+6qnOUsXuhtPikGjP3dUZGlo9vifJkPJ+Vz/ly2I5e2Qg8iVQMcmpJK02h +FjfUF6lLH+rA8zbKer46Xh5HYJMX7ZaO/j6u6mK/mcUFZcwe3uSJXdM35c+UkwqI +aw3L+UfX4fkZd4vNsLpKquetW3UjcdvpgdlN/iFZJ/S6LQaXfa8C3in3tO5qjBp9 +Zrvqx5EJNzt9YQ01JUyT1ggPDkLVC5eW4+j5hGxPAS7XBaptRZ/Jh6+wWFVJbdwU +ZQqRiRPYjZFBIjN6VleCB/eXPyuwrDAZ0XTe61qc5acCAwEAAaOBpzCBpDAfBgNV +HSMEGDAWgBQm0OcmrJV9Ai4zjhF7z0O5lyQiYzAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBxjAdBgNVHQ4EFgQUJtDnJqyVfQIuM44Re89DuZckImMwQQYI +KwYBBQUHAQEENTAzMDEGCCsGAQUFBzABhiVodHRwOi8vZnJlZWlwYS5sb2NhbGRv +bWFpbjo4MC9jYS9vY3NwMA0GCSqGSIb3DQEBCwUAA4IBAQCRQTbAOdonC4p+2b9d +hzh2GAKBVx7w6ifFUMFNOWNZb7ocikJTTS6hSPJm87UqyKiBD8C6bQW4lCVMCD9z +VrNVF3wHq2qWWAkfSv/UViXCI25GyWqvNDDgHLRxR5jnMJiYzZbpuSV6xjfpk9Hx +zuuVtRxjS3e/RfbjmwRKQ3Tnq5bcXd+MhD+H7plgsoQz6DjQQMNwypurOo0o7GTO ++N9AIasommtJ6DZkuXn2oNhIdWoMNo6ku6gXkhg86LaY4Hg/XWiUDoOG6djHtG47 +UKvsG4p0fBwlFjRBhNEF19D5eRQWKWjqBdOJm2kFRasjGLCxu6px7SCICKqdMYgp +ChPp +-----END CERTIFICATE----- diff --git a/certificates/my.crt b/certificates/my.crt new file mode 100644 index 0000000..6d7fcb9 --- /dev/null +++ b/certificates/my.crt @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIIDlzCCAn+gAwIBAgIBDDANBgkqhkiG9w0BAQsFADA2MRQwEgYDVQQKEwtMT0NB +TERPTUFJTjEeMBwGA1UEAxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTEzMDkx +NTE3MDc0NloXDTE1MDkxNjE3MDc0NlowMDEUMBIGA1UEChMLTE9DQUxET01BSU4x +GDAWBgNVBAMTD2Rldi5sb2NhbGRvbWFpbjCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANda0OEUpTFF5O/uXixPfHxDjh4C1GCiMJuYad4R+62ukqgVMUG3 +cEfbTbFyAlqWZhnH1xaI3tbJq3jRrWpWPxtMQXr3QTuHgczIk76h14wvo4/1hqVu +iqmMW+wiqIGJljeeCwmMSYUaItgeyTn7IrdS76N8RvdMMXproA48RN5Z8jZ4Ophf +wJnU5XMuN80BYh0bt8gOVePIJU4OD/LejgmSR0wW3QlrtjJWStR0apz10M//+YEG +MLa3NizIaZ6q/Wh4aFVhmU6C+Sw81E5ZXRvwlAmtwEjC+UJO8d/onjc22fwPgyJ2 +Mke0GnafqE+WJjILt07ywoJezbzxOp+0B5UCAwEAAaOBtTCBsjAfBgNVHSMEGDAW +gBQm0OcmrJV9Ai4zjhF7z0O5lyQiYzBBBggrBgEFBQcBAQQ1MDMwMQYIKwYBBQUH +MAGGJWh0dHA6Ly9mcmVlaXBhLmxvY2FsZG9tYWluOjgwL2NhL29jc3AwDgYDVR0P +AQH/BAQDAgTwMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4E +FgQUMnIHV1I1+aO0Fr2KxMTlmULW0ZAwDQYJKoZIhvcNAQELBQADggEBAEXVkeMU +osp7VpUnlktYpqh0Lmznh3r2Y3DgKSjQsJ6T4YhsJr1xgPAe8pqsrYY06OHho4AR +T4tlYalYrVEFa1u/Fe3CQgDpQSWSnnCVS0i8Oyak3kJ7ZT8cQd1lmvwlgVVlHSx/ +HZByvgQPCEG2UVmIgAbp8fNj0j3w5f2bx0uWAHB0to+IOlz3mHXeB84Q3eJYg3+R +9pzjQ/Jmg4YIMAZl4y7TiLNXv2VrnQqk83L5It8kpkRSB35bjoeZ+i4aGVZ8vI17 +vkZ2pYryQvAHRjzdWNch9RjlzSwTQTpn8CInMwkBIOw/35PiFuvGKtuWb2xII+S2 +gzp1k0d+tDAiwno= +-----END CERTIFICATE----- + diff --git a/certificates/my.p12 b/certificates/my.p12 new file mode 100644 index 0000000..912708f Binary files /dev/null and b/certificates/my.p12 differ diff --git a/certificates/my.pem b/certificates/my.pem new file mode 100644 index 0000000..9868f41 --- /dev/null +++ b/certificates/my.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDXWtDhFKUxReTv +7l4sT3x8Q44eAtRgojCbmGneEfutrpKoFTFBt3BH202xcgJalmYZx9cWiN7Wyat4 +0a1qVj8bTEF690E7h4HMyJO+odeML6OP9YalboqpjFvsIqiBiZY3ngsJjEmFGiLY +Hsk5+yK3Uu+jfEb3TDF6a6AOPETeWfI2eDqYX8CZ1OVzLjfNAWIdG7fIDlXjyCVO +Dg/y3o4JkkdMFt0Ja7YyVkrUdGqc9dDP//mBBjC2tzYsyGmeqv1oeGhVYZlOgvks +PNROWV0b8JQJrcBIwvlCTvHf6J43Ntn8D4MidjJHtBp2n6hPliYyC7dO8sKCXs28 +8TqftAeVAgMBAAECggEALefL8s7Fz9UIUiTLqkJfVNXJq5gK0XaBSgmZN585uPIn +jPDHiSyjII4c56BX5Bt/NCunK8SNS9e9V4nKn4o29YixxJaELz5Zat+ursos+lMF +WKCLzSPdJvsmdRWGOeasQLrNu4FOArNpjgwx9MwVwGJLdtv8/KYfPetHOQGb5JF/ +mHxCAeMb9b9yo+bT9Fp8PSvZrTiFddzpJyVNjKQXZ7dzowbx7J6jQXWGHybakzvv +XeMr6VXKFdg0yvCELoJLarLyYDf21c/wpZUSISGYQgBtu4eqN5A0hOFkSIxla1YB +s9l8TL2QVlebQxVtYe1KPXF39WDiFC/L4Rnbo1fZwQKBgQD2uqKJcN6Hga+ZPTLF +FPzOahz68WWXEM4jVhN9lnzqNG4RR5diIEs0a9VK/XWiy1pQFMUfOczgwi1cc7lL +TWx97MqnWHzpmo3vmWySkQiP0MoxMr71+GNesDcabOswcmuXkyw2Tu0FiZ0LFb1J +lKp1ZiPqXEX0LGORWbww5bOKKQKBgQDfcmG49UYcA+OdJVpWZ0UbT3O+1ap9+7l8 +MfzCCyKQhYWjchIZZKCHDR01jmkSCIlQPyjvO5MdiBX8/u0yWJofzvo4/sGXz6/e +2S/FmjXD9IiTgvEtWzbPlVHpFDNgzK8qoGQMdv9HIdoxFXItC22l+KkRGfLH3alu +lN9o/pVXjQKBgQCvwaGZIJMUmlhZY9PvupSgAc0lIaLJqwn8+AsoUnQnbjPeEU6Q +cwq/i/VD1yveTNfH5hPJu6Xrkcc4baNYNg4L4gs2jH1m91cWkAdcnP4pXIU76LdJ +hqhawlJue5pKR6fHMOq0wSJs6Gu7gr/1U3bd7GW3RAX8+0XuO6sodeigiQKBgEux +mssmQ6bP5nZgpfapKy7yPlqCVSwybwZUhLRTQ1VD9h6FUP5LKVo2phNzd8KFI8cM +bliEjPSvGgvHbCDnBOcLnZZbLse3snNCjb1Z3SbRmsalz/+2a53sjn/vuOvsytYc +2WejlBzLqfeAtVnvCij0UImbibQNMg1k3z3ZKEwtAoGASqrb26+DMhoyJwjZw+/f +Lr+/J4ZgJgfSR6FJnGqf/rgt6RTrTDTHlVf5fZAvYY1jotPPwKp9KTagA2WO/mk0 +sqkKo89Svxzb9CYQw7k5S/o0sQ/WEnxIO8FdZhKON88eASFj1fGyv+be3w238pUK +qhBrbZlaPU3xWpC97ElvoNE= +-----END PRIVATE KEY----- diff --git a/conf/app.conf b/conf/app.conf new file mode 100644 index 0000000..9f2009b --- /dev/null +++ b/conf/app.conf @@ -0,0 +1,76 @@ +app.name=iw +app.secret=OWd2Zg7A5wWomHFWkMNIwGNvS7qCAbGY8NKrSADg50bAaSU4hXemJTslFVV3Ah3Q +http.addr= +http.port=9000 +http.ssl=false +http.sslcert= +http.sslkey= +cookie.httponly=false +cookie.prefix=REVEL +cookie.secure=false +format.date=01/02/2006 +format.datetime=01/02/2006 15:04 +results.chunked=false + +log.trace.prefix = "TRACE " +log.info.prefix = "INFO " +log.warn.prefix = "WARN " +log.error.prefix = "ERROR " + +# The default language of this application. +i18n.default_language=en + +module.static=github.com/revel/revel/modules/static + +# cachesession +# Allow the session be used only if the requests come from the same IP address +session.iplock=false + +# csrf +csrf.ajax = true + +# DB +db.name=wiki +db.user=wiki +db.password=password + +# ldap +ldap.server=freeipa.localdomain +ldap.port=389 +ldap.user_base=cn=users,cn=accounts,dc=localdomain +ldap.user_filter=(&(uid=*)(objectClass=inetUser)) +ldap.user_uid_attr=uid +ldap.user_cn_attr=cn +ldap.user_photo_attr=photo;binary +ldap.user_group_attr=memberOf +ldap.group_filter=(&(cn=*)(objectClass=groupOfNames)) +ldap.group_cn_attr=cn +ldap.group_dn_attr=dn +ldap.user=uid=admin,cn=users,cn=accounts,dc=localdomain +ldap.passwd=perkele123 +ldap.group_base=cn=groups,cn=accounts,dc=localdomain +ldap.group_regexp=cn=([^,]+) + +[dev] +mode.dev=true +results.pretty=true +watch=true + +module.testrunner = github.com/revel/revel/modules/testrunner + +log.trace.output = off +log.info.output = stderr +log.warn.output = stderr +log.error.output = stderr + +[prod] +mode.dev=false +results.pretty=false +watch=false + +module.testrunner = + +log.trace.output = off +log.info.output = off +log.warn.output = %(app.name)s.log +log.error.output = %(app.name)s.log diff --git a/conf/routes b/conf/routes new file mode 100644 index 0000000..3b52c16 --- /dev/null +++ b/conf/routes @@ -0,0 +1,64 @@ +# Routes +# This file defines all application routes (Higher priority routes first) +# ~~~~ + +module:testrunner + +GET / App.Index + +# Ignore favicon requests +GET /favicon.ico 404 + +# Map static resources from the /app/static folder to the /static path +GET /static/*filepath Static.Serve("static") + +# Wikis +POST /api/wikis/:wiki Wikis.Create +GET /api/wikis Wikis.Read +PUT /api/wikis/:wiki Wikis.Update +DELETE /api/wikis/:wiki Wikis.Delete + +# Favorite Wikis +PUT /api/favoritewikis/:wiki FavoriteWikis.Create +GET /api/favoritewikis FavoriteWikis.Read +DELETE /api/favoritewikis/:wiki FavoriteWikis.Delete + +# Pages +POST /api/pages/:wiki/:page Pages.Create +# ExtJS tree component passes the requested node as parameter "node" +GET /api/pages/* Pages.Read +PUT /api/pages/:wiki/:page Pages.Update +DELETE /api/pages/:wiki/:page Pages.Delete + +# Content fields +# CREATE is never done from client side +GET /api/contentfields/:wiki/:page ContentFields.Read +PUT /api/contentfields/:wiki/:page ContentFields.Update +# DELETE is never done from client side + +# Attachments +POST /api/attachments/:wiki/:attachment Attachments.Create +# Serve an attachment (for direct links to files, images etc) +GET /att/:wiki/:attachment Attachments.Serve +GET /api/attachments/:wiki Attachments.Read +# PUT is never done from client side +DELETE /api/attachments/:wiki/:attachment Attachments.Delete + +# Locks +POST /api/locks/:wiki/:target Locks.Create +GET /api/locks/:wiki/:target Locks.Read +# PUT is never done +DELETE /api/locks/:wiki/:target Locks.Delete + +# Activities +# Only GET available +GET /api/activities Activities.Read + +# User avatars +GET /user/:user UserAvatars.Read + +# UserGroupSearch +GET /api/usergroupsearch UserGroupSearch.List + +# Catch all +* /:controller/:action :controller.:action diff --git a/db/schema.sql b/db/schema.sql new file mode 100644 index 0000000..911f5a5 --- /dev/null +++ b/db/schema.sql @@ -0,0 +1,395 @@ +-- +-- PostgreSQL database dump +-- + +SET statement_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = off; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET escape_string_warning = off; + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: activities; Type: TABLE; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE TABLE activities ( + activity_id uuid NOT NULL, + "timestamp" timestamp with time zone, + user_id character varying(32), + user_name character varying(32), + activity_type character varying(32), + target_type character varying(16), + target_title character varying(128), + target_id character varying(128), + readacl character varying(1024), + writeacl character varying(1024), + adminacl character varying(1024) +); + + +ALTER TABLE public.activities OWNER TO wiki; + +-- +-- Name: attachments; Type: TABLE; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE TABLE attachments ( + attachment_id uuid NOT NULL, + wiki_id uuid NOT NULL, + attachment bytea, + mime character varying, + filename character varying, + modified timestamp with time zone NOT NULL, + status character varying, + create_user character varying(32) +); + + +ALTER TABLE public.attachments OWNER TO wiki; + +-- +-- Name: contentfields; Type: TABLE; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE TABLE contentfields ( + contentfield_id uuid NOT NULL, + wiki_id uuid NOT NULL, + content text, + modified timestamp with time zone NOT NULL, + status character varying, + create_user character varying(32) +); + + +ALTER TABLE public.contentfields OWNER TO wiki; + +-- +-- Name: favoritewikis; Type: TABLE; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE TABLE favoritewikis ( + username character varying NOT NULL, + wiki_id uuid NOT NULL, + modified timestamp with time zone NOT NULL, + status character varying +); + + +ALTER TABLE public.favoritewikis OWNER TO wiki; + +-- +-- Name: locks; Type: TABLE; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE TABLE locks ( + target_id uuid NOT NULL, + wiki_id uuid NOT NULL, + username character varying(32), + realname character varying(32), + modified timestamp with time zone +); + + +ALTER TABLE public.locks OWNER TO wiki; + +-- +-- Name: pages; Type: TABLE; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE TABLE pages ( + page_id uuid NOT NULL, + wiki_id uuid NOT NULL, + path character varying(256), + title character varying(256), + create_user character varying(32), + readacl character varying(32), + writeacl character varying(32), + adminacl character varying(32), + stopinheritation boolean, + index integer, + depth integer, + modified timestamp with time zone NOT NULL, + status character varying +); + + +ALTER TABLE public.pages OWNER TO wiki; + +-- +-- Name: wikis; Type: TABLE; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE TABLE wikis ( + wiki_id uuid NOT NULL, + title character varying(128), + description text, + create_user character varying(32), + readacl character varying(1024), + writeacl character varying(1024), + adminacl character varying(1024), + modified timestamp with time zone NOT NULL, + status character varying +); + + +ALTER TABLE public.wikis OWNER TO wiki; + +-- +-- Name: activities_pkey; Type: CONSTRAINT; Schema: public; Owner: wiki; Tablespace: +-- + +ALTER TABLE ONLY activities + ADD CONSTRAINT activities_pkey PRIMARY KEY (activity_id); + + +-- +-- Name: attachments_pkey; Type: CONSTRAINT; Schema: public; Owner: wiki; Tablespace: +-- + +ALTER TABLE ONLY attachments + ADD CONSTRAINT attachments_pkey PRIMARY KEY (attachment_id, wiki_id, modified); + + +-- +-- Name: contentfields_pkey; Type: CONSTRAINT; Schema: public; Owner: wiki; Tablespace: +-- + +ALTER TABLE ONLY contentfields + ADD CONSTRAINT contentfields_pkey PRIMARY KEY (contentfield_id, wiki_id, modified); + + +-- +-- Name: favoritewikis_pkey; Type: CONSTRAINT; Schema: public; Owner: wiki; Tablespace: +-- + +ALTER TABLE ONLY favoritewikis + ADD CONSTRAINT favoritewikis_pkey PRIMARY KEY (username, wiki_id, modified); + + +-- +-- Name: locks_pkey; Type: CONSTRAINT; Schema: public; Owner: wiki; Tablespace: +-- + +ALTER TABLE ONLY locks + ADD CONSTRAINT locks_pkey PRIMARY KEY (target_id, wiki_id); + + +-- +-- Name: pages_pkey; Type: CONSTRAINT; Schema: public; Owner: wiki; Tablespace: +-- + +ALTER TABLE ONLY pages + ADD CONSTRAINT pages_pkey PRIMARY KEY (page_id, wiki_id, modified); + + +-- +-- Name: wikis_pkey; Type: CONSTRAINT; Schema: public; Owner: wiki; Tablespace: +-- + +ALTER TABLE ONLY wikis + ADD CONSTRAINT wikis_pkey PRIMARY KEY (wiki_id, modified); + + +-- +-- Name: ix_activities_activity_id; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_activities_activity_id ON activities USING btree (activity_id); + + +-- +-- Name: ix_activities_timestamp; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_activities_timestamp ON activities USING btree ("timestamp"); + + +-- +-- Name: ix_activities_user_id; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_activities_user_id ON activities USING btree (user_id); + + +-- +-- Name: ix_activities_user_name; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_activities_user_name ON activities USING btree (user_name); + + +-- +-- Name: ix_attachments_attachment_id; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_attachments_attachment_id ON attachments USING btree (attachment_id); + + +-- +-- Name: ix_attachments_modified; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_attachments_modified ON attachments USING btree (modified); + + +-- +-- Name: ix_attachments_status; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_attachments_status ON attachments USING btree (status); + + +-- +-- Name: ix_attachments_wiki_id; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_attachments_wiki_id ON attachments USING btree (wiki_id); + + +-- +-- Name: ix_contentfields_contentfield_id; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_contentfields_contentfield_id ON contentfields USING btree (contentfield_id); + + +-- +-- Name: ix_contentfields_modified; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_contentfields_modified ON contentfields USING btree (modified); + + +-- +-- Name: ix_contentfields_status; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_contentfields_status ON contentfields USING btree (status); + + +-- +-- Name: ix_contentfields_wiki_id; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_contentfields_wiki_id ON contentfields USING btree (wiki_id); + + +-- +-- Name: ix_favoritewikis_modified; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_favoritewikis_modified ON favoritewikis USING btree (modified); + + +-- +-- Name: ix_favoritewikis_status; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_favoritewikis_status ON favoritewikis USING btree (status); + + +-- +-- Name: ix_favoritewikis_username; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_favoritewikis_username ON favoritewikis USING btree (username); + + +-- +-- Name: ix_favoritewikis_wiki_id; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_favoritewikis_wiki_id ON favoritewikis USING btree (wiki_id); + + +-- +-- Name: ix_locks_page_id; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_locks_page_id ON locks USING btree (target_id); + + +-- +-- Name: ix_locks_wiki_id; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_locks_wiki_id ON locks USING btree (wiki_id); + + +-- +-- Name: ix_pages_modified; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_pages_modified ON pages USING btree (modified); + + +-- +-- Name: ix_pages_page_id; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_pages_page_id ON pages USING btree (page_id); + + +-- +-- Name: ix_pages_path; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_pages_path ON pages USING btree (path); + + +-- +-- Name: ix_pages_status; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_pages_status ON pages USING btree (status); + + +-- +-- Name: ix_pages_wiki_id; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_pages_wiki_id ON pages USING btree (wiki_id); + + +-- +-- Name: ix_wikis_modified; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_wikis_modified ON wikis USING btree (modified); + + +-- +-- Name: ix_wikis_status; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_wikis_status ON wikis USING btree (status); + + +-- +-- Name: ix_wikis_wiki_id; Type: INDEX; Schema: public; Owner: wiki; Tablespace: +-- + +CREATE INDEX ix_wikis_wiki_id ON wikis USING btree (wiki_id); + + +-- +-- Name: public; Type: ACL; Schema: -; Owner: postgres +-- + +REVOKE ALL ON SCHEMA public FROM PUBLIC; +REVOKE ALL ON SCHEMA public FROM postgres; +GRANT ALL ON SCHEMA public TO postgres; +GRANT ALL ON SCHEMA public TO PUBLIC; + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/docs/screenshot.png b/docs/screenshot.png new file mode 100644 index 0000000..8608528 Binary files /dev/null and b/docs/screenshot.png differ diff --git a/messages/sample.en b/messages/sample.en new file mode 100644 index 0000000..fc447f9 --- /dev/null +++ b/messages/sample.en @@ -0,0 +1,7 @@ +# Sample messages file for the English language (en) +# Message file extensions should be ISO 639-1 codes (http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) +# Sections within each message file can optionally override the defaults using ISO 3166-1 alpha-2 codes (http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) +# See also: +# - http://www.rfc-editor.org/rfc/bcp/bcp47.txt +# - http://www.w3.org/International/questions/qa-accept-lang-locales + diff --git a/replication/bin/client.json b/replication/bin/client.json new file mode 100644 index 0000000..f73817e --- /dev/null +++ b/replication/bin/client.json @@ -0,0 +1,12 @@ +{ + "CAKeyFile": "/root/go/src/iw/certificates/ca.crt", + "MyCertificateFile": "/root/go/src/iw/certificates/my.crt", + "MyKeyFile": "/root/go/src/iw/certificates/my.pem", + "ValidPeers": ["dev.localdomain"], + "ServiceAddress": "dev.localdomain:8000", + "DBUser": "wiki", + "DBPassword": "password", + "DBName": "wiki2", + "Interval": 5 +} + diff --git a/replication/bin/server.json b/replication/bin/server.json new file mode 100644 index 0000000..a8030e8 --- /dev/null +++ b/replication/bin/server.json @@ -0,0 +1,10 @@ +{ + "CAKeyFile": "/root/go/src/iw/certificates/ca.crt", + "MyCertificateFile": "/root/go/src/iw/certificates/my.crt", + "MyKeyFile": "/root/go/src/iw/certificates/my.pem", + "ValidPeers": ["dev.localdomain"], + "ServiceAddress": "0.0.0.0:8000", + "DBUser": "wiki", + "DBPassword": "password", + "DBName": "wiki" +} diff --git a/replication/src/client/client b/replication/src/client/client new file mode 100755 index 0000000..64364c1 Binary files /dev/null and b/replication/src/client/client differ diff --git a/replication/src/client/client.go b/replication/src/client/client.go new file mode 100644 index 0000000..ce4ea31 --- /dev/null +++ b/replication/src/client/client.go @@ -0,0 +1,319 @@ +package main + +import ( + "log/syslog" + "time" + "crypto/tls" + "crypto/x509" + "io/ioutil" + "net/http" + "fmt" + _ "github.com/lib/pq" + "github.com/jmoiron/sqlx" + "iw/replication/src/common" + "encoding/json" + "reflect" +) + +func checkError(err error, s string) { + if err != nil { + panic(fmt.Sprintf("%s: %s", s, err)) + } +} + +func countRows (rows *sqlx.Rows) int { + var count = 0 + for rows.Next() { + count ++ + } + return count +} + +func getDB(settings common.ServiceConfiguration) *sqlx.DB { + // Open database connection + connstring := fmt.Sprintf("user=%s password='%s' dbname=%s sslmode=disable", settings.DBUser, settings.DBPassword, settings.DBName) + db, err := sqlx.Open("postgres", connstring) + checkError(err, "sql.Open") + return db +} + +func itemExists (item interface{}, settings common.ServiceConfiguration) bool { + db := getDB(settings) + defer db.Close() + + // Query for data + var rows *sqlx.Rows + // Error + var err error + + // Prepare for reflect + val := reflect.ValueOf(item) + + // Query the correct item type + switch item.(type) { + case common.Wiki: + modified := val.FieldByName("Modified").Interface() + rows, err = db.Queryx("select wiki_id, modified from wikis "+ + "where wiki_id=uuid_in($1) and modified=$2", val.FieldByName("Wiki_id").String(), modified) + case common.Page: + modified := val.FieldByName("Modified").Interface() + rows, err = db.Queryx("select page_id, wiki_id, modified from pages "+ + "where page_id=uuid_in($1) and wiki_id=uuid_in($2) and modified=$3", val.FieldByName("Page_id").String(), val.FieldByName("Wiki_id").String(), modified) + case common.ContentField: + modified := val.FieldByName("Modified").Interface() + rows, err = db.Queryx("select contentfield_id, wiki_id, modified from contentfields "+ + "where contentfield_id=uuid_in($1) and wiki_id=uuid_in($2) and modified=$3", val.FieldByName("Contentfield_id").String(), val.FieldByName("Wiki_id").String(), modified) + case common.Attachment: + modified := val.FieldByName("Modified").Interface() + rows, err = db.Queryx("select attachment_id, wiki_id, modified from attachments "+ + "where attachment_id=uuid_in($1) and wiki_id=uuid_in($2) and modified=$3", val.FieldByName("Attachment_id").String(), val.FieldByName("Wiki_id").String(), modified) + case common.FavoriteWiki: + modified := val.FieldByName("Modified").Interface() + rows, err = db.Queryx("select username, wiki_id, modified from favoritewikis "+ + "where username=$1 and wiki_id=uuid_in($2) and modified=$3", val.FieldByName("Username").String(), val.FieldByName("Wiki_id").String(), modified) + case common.Activity: + rows, err = db.Queryx("select activity_id from activities "+ + "where activity_id=uuid_in($1)", val.FieldByName("Activity_id").String()) + case common.Lock: + rows, err = db.Queryx("select target_id, wiki_id from locks "+ + "where target_id=uuid_in($1) and wiki_id=uuid_in($2)", val.FieldByName("Target_id").String(), val.FieldByName("Wiki_id").String()) + } + + checkError(err, "Queryx") + + count := countRows(rows) + if count == 1 { + return true + } + + return false +} + +func saveItem(item interface{}, settings common.ServiceConfiguration) { + db := getDB(settings) + defer db.Close() + var err error + + switch item.(type) { + case common.Wiki: + _, err = db.NamedExec("INSERT INTO wikis (wiki_id, title, description, create_user, readacl, writeacl, adminacl, status, modified) VALUES "+ + "(:wiki_id, :title, :description, :create_user, :readacl, :writeacl, :adminacl, :status, :modified)", item) + case common.Page: + _, err = db.NamedExec("insert into pages (page_id, wiki_id, path, title, create_user, readacl, writeacl, adminacl, stopinheritation, index, depth, status, modified) values "+ + "(:page_id, :wiki_id, :path, :title, :create_user, :readacl, :writeacl, :adminacl, :stopinheritation, :index, :depth, :status, :modified)", item) + case common.ContentField: + _, err = db.NamedExec("insert into contentfields (contentfield_id, wiki_id, content, modified, status, create_user) values "+ + "(:contentfield_id, :wiki_id, :content, :modified, :status, :create_user)", item) + case common.Attachment: + _, err = db.NamedExec("insert into attachments (attachment_id, wiki_id, attachment, mime, filename, modified, status, create_user) values "+ + "(:attachment_id, :wiki_id, decode(:attachment, 'base64'), :mime, :filename, :modified, :status, :create_user)", item) + case common.FavoriteWiki: + _, err = db.NamedExec("insert into favoritewikis (username, wiki_id, modified, status) values "+ + "(:username, :wiki_id, :modified, :status)", item) + case common.Activity: + _, err = db.NamedExec("insert into activities (activity_id, timestamp, user_id, user_name, activity_type, target_type, target_title, target_id, readacl, writeacl, adminacl) values "+ + "(:activity_id, :timestamp, :user_id, :user_name, :activity_type, :target_type, :target_title, :target_id, :readacl, :writeacl, :adminacl)", item) + case common.Lock: + _, err = db.NamedExec("insert into locks (target_id, wiki_id, username, realname, modified values "+ + "(:target_id, :wiki_id, :username, :realname, :modified", item) + } + checkError(err, "execInsert") +} + +func mapToStruct(input map[string] interface{}, it interface{}) interface{} { + itType := reflect.ValueOf(it).Type() + v := reflect.New(itType).Elem() + + for key, value := range input { + field := v.FieldByName(key) + if !field.IsValid() { + // or handle as error if you don't expect unknown values + continue + } + if !field.CanSet() { + // or return an error on private fields + continue + } + + switch key { + case "Depth", "Index": + fl := reflect.ValueOf(value).Float() + fi := int(fl) + field.Set(reflect.ValueOf(fi)) + case "Modified", "Timestamp": + s := reflect.ValueOf(value).String() + modified, terr := time.Parse(time.RFC3339Nano, s) + checkError(terr, "Unable to parse time") + field.Set(reflect.ValueOf(modified)) + default: + field.Set(reflect.ValueOf(value)) + } + + } + return v.Interface() +} + +func syncItems(tr *http.Transport, settings common.ServiceConfiguration, it interface{}, queryListUrl string, queryUrl string) error { + // Syslogger + logger, _ := syslog.New(syslog.LOG_ERR, "SyncClient") + defer logger.Close() + + // Get list of items + client := &http.Client{Transport: tr} + result, err := client.Get("https://" + settings.ServiceAddress + queryListUrl) + checkError(err, "syncItems Get") + defer result.Body.Close() + + // Read the response body + body, err := ioutil.ReadAll(result.Body) + checkError(err, "syncItems ReadAll") + + // Marshal the response JSON to map + var tmp []map[string] interface{} + err = json.Unmarshal(body, &tmp) + checkError(err, "syncItems Unmarshal") + + // Parse each item from map + for _, item := range tmp { + // Convert to struct + target := mapToStruct(item, it) + val := reflect.ValueOf(target) + // If item doesn't exist already, sync full item + if !itemExists(target, settings) { + logger.Info(fmt.Sprintf("Item %+v : %+v did not exist, syncing...", reflect.ValueOf(target).Type(), target)) + + var resp *http.Response + // Get the whole item + switch target.(type) { + case common.Wiki: + iface := val.FieldByName("Modified").Interface() + modified := iface.(time.Time) + formated := modified.Format(time.RFC3339Nano) + resp, err = client.Get("https://" + settings.ServiceAddress + queryUrl + val.FieldByName("Wiki_id").String() + "/" + formated) + case common.Page: + iface := val.FieldByName("Modified").Interface() + modified := iface.(time.Time) + formated := modified.Format(time.RFC3339Nano) + resp, err = client.Get("https://" + settings.ServiceAddress + queryUrl + val.FieldByName("Page_id").String() + "/" + val.FieldByName("Wiki_id").String() + "/" + formated) + case common.ContentField: + iface := val.FieldByName("Modified").Interface() + modified := iface.(time.Time) + formated := modified.Format(time.RFC3339Nano) + resp, err = client.Get("https://" + settings.ServiceAddress + queryUrl + val.FieldByName("Contentfield_id").String() + "/" + val.FieldByName("Wiki_id").String() + "/" + formated) + case common.Attachment: + iface := val.FieldByName("Modified").Interface() + modified := iface.(time.Time) + formated := modified.Format(time.RFC3339Nano) + resp, err = client.Get("https://" + settings.ServiceAddress + queryUrl + val.FieldByName("Attachment_id").String() + "/" + val.FieldByName("Wiki_id").String() + "/" + formated) + case common.FavoriteWiki: + iface := val.FieldByName("Modified").Interface() + modified := iface.(time.Time) + formated := modified.Format(time.RFC3339Nano) + resp, err = client.Get("https://" + settings.ServiceAddress + queryUrl + val.FieldByName("Username").String() + "/" + val.FieldByName("Wiki_id").String() + "/" + formated) + case common.Activity: + resp, err = client.Get("https://" + settings.ServiceAddress + queryUrl + val.FieldByName("Activity_id").String()) + case common.Lock: + resp, err = client.Get("https://" + settings.ServiceAddress + queryUrl + val.FieldByName("Wiki_id").String() + "/" + val.FieldByName("Target_id").String()) + } + + checkError(err, "syncItems GetFull") + defer resp.Body.Close() + // Read the body of whole item + fullBody, err := ioutil.ReadAll(resp.Body) + checkError(err, "syncWikis ReadFullBody") + + // Marshal to map and convert to item + var temp2 map[string] interface{} + err = json.Unmarshal(fullBody, &temp2) + checkError(err, "fullItem Unmarshal") + fullItem := mapToStruct(temp2, it) + + logger.Debug(fmt.Sprintf("Saving item %+v", target)) + // Save to DB + saveItem(fullItem, settings) + + } + } + + return nil +} + +func syncAll(tr *http.Transport, settings common.ServiceConfiguration) { + + logger, _ := syslog.New(syslog.LOG_ERR, "SyncClient") + defer logger.Close() + + defer func() { + if e := recover(); e != nil { + logger, _ := syslog.New(syslog.LOG_ERR, "SyncClient") + defer logger.Close() + switch x := e.(type) { + case error: + err := x + logger.Err(fmt.Sprintf("Error: %s\n", err)) + default: + err := fmt.Errorf("%v", x) + logger.Err(fmt.Sprintf("Error: %s\n", err)) + } + } + }() + + logger.Info("Syncing wikis...") + syncItems(tr, settings, common.Wiki{}, "/repl/wikis", "/repl/wiki/") + logger.Info("Syncing pages...") + syncItems(tr, settings, common.Page{}, "/repl/pages", "/repl/page/") + logger.Info("Syncing contentfields...") + syncItems(tr, settings, common.ContentField{}, "/repl/contentfields", "/repl/contentfield/") + logger.Info("Syncing attachments...") + syncItems(tr, settings, common.Attachment{}, "/repl/attachments", "/repl/attachment/") + logger.Info("Syncing activities...") + syncItems(tr, settings, common.Activity{}, "/repl/activities", "/repl/activity/") + logger.Info("Syncing favoritewikis...") + syncItems(tr, settings, common.FavoriteWiki{}, "/repl/favoritewikis", "/repl/favoritewiki/") + logger.Info("Syncing page locks...") + syncItems(tr, settings, common.Lock{}, "/repl/locks", "/repl/lock/") +} + +func main() { + // Load the settings + var settings common.ServiceConfiguration + settings.ConfigFrom("client.json") + + // Load my SSL key and certificate + cert, err := tls.LoadX509KeyPair(settings.MyCertificateFile, settings.MyKeyFile) + checkError(err, "LoadX509KeyPair") + + // Load the CA certificate for server certificate validation + capool := x509.NewCertPool() + cacert, err := ioutil.ReadFile(settings.CAKeyFile) + checkError(err, "loadCACert") + capool.AppendCertsFromPEM(cacert) + + // Prepare config and transport + config := tls.Config{Certificates: []tls.Certificate{cert}, RootCAs: capool} + tr := &http.Transport{ + TLSClientConfig: &config, + } + + // Prepare timer + ticker := time.NewTicker(time.Duration(settings.Interval) * time.Second) + quit := make(chan struct{}) + + go func() { + for { + select { + case <- ticker.C: + // Attempt to synchronize all... + syncAll (tr, settings) + + case <- quit: + ticker.Stop() + return + } + } + }() + + + select {} +} + diff --git a/replication/src/client/client.json b/replication/src/client/client.json new file mode 100644 index 0000000..f73817e --- /dev/null +++ b/replication/src/client/client.json @@ -0,0 +1,12 @@ +{ + "CAKeyFile": "/root/go/src/iw/certificates/ca.crt", + "MyCertificateFile": "/root/go/src/iw/certificates/my.crt", + "MyKeyFile": "/root/go/src/iw/certificates/my.pem", + "ValidPeers": ["dev.localdomain"], + "ServiceAddress": "dev.localdomain:8000", + "DBUser": "wiki", + "DBPassword": "password", + "DBName": "wiki2", + "Interval": 5 +} + diff --git a/replication/src/client/uuid/state.unique b/replication/src/client/uuid/state.unique new file mode 100644 index 0000000..0305060 Binary files /dev/null and b/replication/src/client/uuid/state.unique differ diff --git a/replication/src/common/common.go b/replication/src/common/common.go new file mode 100644 index 0000000..73a895b --- /dev/null +++ b/replication/src/common/common.go @@ -0,0 +1,150 @@ +package common + +import ( + "io/ioutil" + "log" + "encoding/json" + "errors" + "net/http" + "time" +) + +// Checks whether string can be found from slice +func stringInSlice(a string, list []string) bool { + for _, b := range list { + if b == a { + return true + } + } + return false +} + +// Defines the configuration file format +type ServiceConfiguration struct { + CAKeyFile string + MyCertificateFile string + MyKeyFile string + ValidPeers []string + ServiceAddress string + DBUser string + DBPassword string + DBName string + Interval int +} + +// Used to load the configuration from file +func (l *ServiceConfiguration) ConfigFrom(path string) (error) { + b, err := ioutil.ReadFile(path) + if err != nil { + log.Fatalf("ReadFile: %s", err) + return err + } + err = json.Unmarshal(b, &l) + if err != nil { + log.Fatalf("Bad json: %s", err) + return err + } + return nil +} + +// Peer CN check +func CheckPeer(r *http.Request, settings ServiceConfiguration) error { + var valid bool = false + + for _,chain := range r.TLS.VerifiedChains { + for _,certificate := range chain { + cn := certificate.Subject.CommonName + if stringInSlice(cn, settings.ValidPeers) { + valid = true + } + } + } + + if !valid { + return errors.New("No valid certificate received from peer!") + } + + return nil +} + +// Types for the replication + +type Attachment struct { + Attachment_id string + Wiki_id string + // pg driver works probably better with BASE64 encoding instead of handling bytea hex string + //Attachment []byte `json:",omitempty"` + Attachment string `json:",omitempty"` + Mime string `json:",omitempty"` + Filename string `json:",omitempty"` + Create_user string `json:",omitempty"` + Modified time.Time + Status string `json:",omitempty"` +} + +type FavoriteWiki struct { + Username string + Wiki_id string + Modified time.Time + Status string `json:",omitempty"` +} + +type ContentField struct { + Contentfield_id string + Wiki_id string + Content string `json:",omitempty"` + Contentwithmacros string `json:",omitempty"` + Modified time.Time + Status string `json:",omitempty"` + Create_user string `json:",omitempty"` +} + +type Wiki struct { + Wiki_id string + Title string `json:",omitempty"` + Description string `json:",omitempty"` + Create_user string `json:",omitempty"` + Readacl string `json:",omitempty"` + Writeacl string `json:",omitempty"` + Adminacl string `json:",omitempty"` + Status string `json:",omitempty"` + Modified time.Time +} + +type Page struct { + Page_id string + Wiki_id string + Path string `json:",omitempty"` + Title string `json:",omitempty"` + Create_user string `json:",omitempty"` + Readacl string `json:",omitempty"` + Writeacl string `json:",omitempty"` + Adminacl string `json:",omitempty"` + Stopinheritation bool `json:",omitempty"` + Index int `json:",omitempty"` + Depth int `json:",omitempty"` + Status string `json:",omitempty"` + Modified time.Time +} + +type Activity struct { + Activity_id string + Timestamp time.Time `json:",omitempty"` + User_id string `json:",omitempty"` + User_name string `json:",omitempty"` + Activity_type string `json:",omitempty"` + Target_type string `json:",omitempty"` + Target_title string `json:",omitempty"` + Target_id string `json:",omitempty"` + Readacl string `json:",omitempty"` + Writeacl string `json:",omitempty"` + Adminacl string `json:",omitempty"` +} + +type Lock struct { + Target_id string + Wiki_id string + Username string `json:",omitempty"` + Realname string `json:",omitempty"` + Modified time.Time `json:",omitempty"` +} diff --git a/replication/src/github.com/jmoiron/sqlx b/replication/src/github.com/jmoiron/sqlx new file mode 160000 index 0000000..c6e1c3e --- /dev/null +++ b/replication/src/github.com/jmoiron/sqlx @@ -0,0 +1 @@ +Subproject commit c6e1c3e4d5c1b1f6a849bb44f1f6c51ee17f8a2e diff --git a/replication/src/github.com/lib/pq b/replication/src/github.com/lib/pq new file mode 160000 index 0000000..0cbf7d2 --- /dev/null +++ b/replication/src/github.com/lib/pq @@ -0,0 +1 @@ +Subproject commit 0cbf7d2d198fb08409ead5bde569c8b652bdfb87 diff --git a/replication/src/server/server b/replication/src/server/server new file mode 100755 index 0000000..4eb2297 Binary files /dev/null and b/replication/src/server/server differ diff --git a/replication/src/server/server.go b/replication/src/server/server.go new file mode 100644 index 0000000..3b8f0c5 --- /dev/null +++ b/replication/src/server/server.go @@ -0,0 +1,234 @@ +package main +import ( + "fmt" + "crypto/tls" + "crypto/rand" + "crypto/x509" + "time" + "io/ioutil" + "net/http" + "net" + "encoding/json" + _ "github.com/lib/pq" + "github.com/jmoiron/sqlx" + "regexp" + "reflect" + "iw/replication/src/common" + "log/syslog" +) + +func checkError(err error, s string) { + // Syslogger + logger, _ := syslog.New(syslog.LOG_ERR, "SyncServer") + defer logger.Close() + + if err != nil { + logger.Err(fmt.Sprintf("%s: %s", s, err)) + panic(fmt.Sprintf("%s: %s", s, err)) + } +} + +func myHandler(w http.ResponseWriter, r *http.Request) { + fmt.Fprintf(w, "ALIVE") +} + +func buildListJSON(rows *sqlx.Rows, tgt interface{}) ([]byte, error) { + tgtType := reflect.ValueOf(tgt).Type() + targets := reflect.MakeSlice(reflect.SliceOf(tgtType), 0, 10) + for rows.Next() { + target := reflect.New(tgtType).Interface() + err := rows.StructScan(target) + checkError(err, "rows.Scan") + targets = reflect.Append(targets, reflect.ValueOf(target).Elem()) + } + checkError(rows.Err(), "rows.Err") + jsontext, err := json.Marshal(targets.Interface()) + return jsontext, err +} + +func buildJSON(rows *sqlx.Rows, tgt interface{}) ([]byte, error) { + tgtType := reflect.ValueOf(tgt).Type() + target := reflect.New(tgtType).Interface() + for rows.Next() { + err := rows.StructScan(target) + checkError(err, "rows.Scan") + } + checkError(rows.Err(), "rows.Err") + jsontext, err := json.Marshal(target) + return jsontext, err +} + +func uniHandler(w http.ResponseWriter, r *http.Request, t interface{}, l bool) { + // Handle panics - for logging mostly + defer func() { + if e := recover(); e != nil { + logger, _ := syslog.New(syslog.LOG_ERR, "SyncServer") + defer logger.Close() + switch x := e.(type) { + case error: + err := x + logger.Err(fmt.Sprintf("Error: %s\n", err)) + default: + err := fmt.Errorf("%v", x) + logger.Err(fmt.Sprintf("Error: %s\n", err)) + } + } + }() + + // Load settings + var settings common.ServiceConfiguration + settings.ConfigFrom("server.json") + + // Check the peer + err := common.CheckPeer(r, settings) + checkError(err, "checkPeer") + + // Open database connection + connstring := fmt.Sprintf("user=%s password='%s' dbname=%s sslmode=disable", settings.DBUser, settings.DBPassword, settings.DBName) + db, err := sqlx.Open("postgres", connstring) + checkError(err, "sql.Open") + defer db.Close() + + // Query for data + var rows *sqlx.Rows + + if l { + // Lists + switch t.(type) { + case common.Wiki: + rows, err = db.Queryx("select wiki_id, modified from wikis") + case common.Page: + rows, err = db.Queryx("select page_id, wiki_id, modified from pages") + case common.ContentField: + rows, err = db.Queryx("select contentfield_id, wiki_id, modified from contentfields") + case common.FavoriteWiki: + rows, err = db.Queryx("select username, wiki_id, modified from favoritewikis") + case common.Attachment: + rows, err = db.Queryx("select attachment_id, wiki_id, modified from attachments") + case common.Activity: + rows, err = db.Queryx("select activity_id from activities") + case common.Lock: + rows, err = db.Queryx("select target_id, wiki_id from locks") + } + } else { + // Single objects + switch t.(type) { + case common.Wiki: + re := regexp.MustCompile("/repl/wiki/([0-9a-f-]+)/([0-9-+:.T ]+)") + vars := re.FindStringSubmatch(r.URL.Path) + modified, terr := time.Parse(time.RFC3339Nano, vars[2]) + checkError(terr, "Unable to parse wiki time") + rows, err = db.Queryx("select wiki_id, title, description, create_user, readacl, writeacl, adminacl, status, modified " + + "from wikis " + + "where wiki_id=uuid_in($1) and modified=$2", vars[1], modified) + case common.Page: + re := regexp.MustCompile("/repl/page/([0-9a-f-]+)/([0-9a-f-]+)/([0-9-+:.T ]+)") + vars := re.FindStringSubmatch(r.URL.Path) + modified, terr := time.Parse(time.RFC3339Nano, vars[3]) + checkError(terr, "Unable to parse page time") + rows, err = db.Queryx("select page_id, wiki_id, path, title, create_user, readacl, writeacl, adminacl, stopinheritation, index, depth, status, modified " + + "from pages " + + "where page_id=uuid_in($1) and wiki_id=uuid_in($2) and modified=$3", vars[1], vars[2], modified) + case common.ContentField: + re := regexp.MustCompile("/repl/contentfield/([0-9a-f-]+)/([0-9a-f-]+)/([0-9-+:.T ]+)") + vars := re.FindStringSubmatch(r.URL.Path) + modified, terr := time.Parse(time.RFC3339Nano, vars[3]) + checkError(terr, "Unable to parse contentfield time") + rows, err = db.Queryx("select contentfield_id, wiki_id, content, modified, status, create_user "+ + "from contentfields "+ + "where contentfield_id=uuid_in($1) and wiki_id=uuid_in($2) and modified=$3", vars[1], vars[2], modified) + case common.FavoriteWiki: + re := regexp.MustCompile("/repl/favoritewiki/([^/]+)/([0-9a-f-]+)/([0-9-+:.T ]+)") + vars := re.FindStringSubmatch(r.URL.Path) + modified, terr := time.Parse(time.RFC3339Nano, vars[3]) + checkError(terr, "Unable to parse favoritewiki time") + rows, err = db.Queryx("select username, wiki_id, modified, status "+ + "from favoritewikis "+ + "where username=$1 and wiki_id=uuid_in($2) and modified=$3", vars[1], vars[2], modified) + case common.Attachment: + re := regexp.MustCompile("/repl/attachment/([0-9a-f-]+)/([0-9a-f-]+)/([0-9-+:.T ]+)") + vars := re.FindStringSubmatch(r.URL.Path) + modified, terr := time.Parse(time.RFC3339Nano, vars[3]) + checkError(terr, "Unable to parse attachment time") + rows, err = db.Queryx("select attachment_id, wiki_id, encode(attachment, 'base64') as attachment, mime, filename, create_user, modified, status "+ + "from attachments "+ + "where attachment_id=uuid_in($1) and wiki_id=uuid_in($2) and modified=$3", vars[1], vars[2], modified) + case common.Activity: + re := regexp.MustCompile("/repl/activity/([0-9a-f-]+)") + vars := re.FindStringSubmatch(r.URL.Path) + rows, err = db.Queryx("select activity_id, timestamp, user_id, user_name, activity_type, target_type, target_title, target_id, readacl, writeacl, adminacl " + + "from activities " + + "where activity_id=uuid_in($1)", vars[1]) + case common.Lock: + re := regexp.MustCompile("/repl/lock/([0-9a-f-]+)/([0-9a-f-]+)") + vars := re.FindStringSubmatch(r.URL.Path) + rows, err = db.Queryx("select target_id, wiki_id, username, realname, modified " + + "from locks " + + "where wiki_id=uuid_in($1) and target_id=($2)", vars[1], vars[2]) + } + } + + checkError(err, "db.Query") + + // Build the JSON + var jsontext []byte + + if l { + jsontext, err = buildListJSON(rows, t) + } else { + jsontext, err = buildJSON(rows, t) + } + + checkError(err, "json.buildJSON") + + // Print the JSON + fmt.Fprintf(w, "%s", jsontext) + +} + +func main() { + var settings common.ServiceConfiguration + settings.ConfigFrom("server.json") + + // Load my SSL key and certificate + cert, err := tls.LoadX509KeyPair(settings.MyCertificateFile, settings.MyKeyFile) + checkError(err, "LoadX509KeyPair") + + // Load the CA certificate for client certificate validation + capool := x509.NewCertPool() + cacert, err := ioutil.ReadFile(settings.CAKeyFile) + checkError(err, "loadCACert") + capool.AppendCertsFromPEM(cacert) + + // Prepare server configuration + config := tls.Config{Certificates: []tls.Certificate{cert}, ClientCAs: capool, ClientAuth: tls.RequireAndVerifyClientCert} + config.NextProtos = []string{"http/1.1"} + config.Rand = rand.Reader + + // Web server and the handler methods on the paths + myTLSWebServer := &http.Server{Addr: settings.ServiceAddress, TLSConfig: &config, Handler: nil} + http.HandleFunc("/", myHandler) + http.HandleFunc("/repl/wikis", func(w http.ResponseWriter, r *http.Request) { uniHandler(w,r,common.Wiki{},true) }) + http.HandleFunc("/repl/wiki/", func(w http.ResponseWriter, r *http.Request) { uniHandler(w,r,common.Wiki{},false) }) + http.HandleFunc("/repl/pages", func(w http.ResponseWriter, r *http.Request) { uniHandler(w,r,common.Page{},true) }) + http.HandleFunc("/repl/page/", func(w http.ResponseWriter, r *http.Request) { uniHandler(w,r,common.Page{},false) }) + http.HandleFunc("/repl/contentfields", func(w http.ResponseWriter, r *http.Request) { uniHandler(w,r,common.ContentField{},true) }) + http.HandleFunc("/repl/contentfield/", func(w http.ResponseWriter, r *http.Request) { uniHandler(w,r,common.ContentField{},false) }) + http.HandleFunc("/repl/favoritewikis", func(w http.ResponseWriter, r *http.Request) { uniHandler(w,r,common.FavoriteWiki{},true) }) + http.HandleFunc("/repl/favoritewiki/", func(w http.ResponseWriter, r *http.Request) { uniHandler(w,r,common.FavoriteWiki{},false) }) + http.HandleFunc("/repl/attachment/", func(w http.ResponseWriter, r *http.Request) { uniHandler(w,r,common.Attachment{},false) }) + http.HandleFunc("/repl/attachments", func(w http.ResponseWriter, r *http.Request) { uniHandler(w,r,common.Attachment{},true) }) + http.HandleFunc("/repl/activity/", func(w http.ResponseWriter, r *http.Request) { uniHandler(w,r,common.Activity{},false) }) + http.HandleFunc("/repl/activities", func(w http.ResponseWriter, r *http.Request) { uniHandler(w,r,common.Activity{},true) }) + http.HandleFunc("/repl/lock/", func(w http.ResponseWriter, r *http.Request) { uniHandler(w,r,common.Lock{},false) }) + http.HandleFunc("/repl/locks", func(w http.ResponseWriter, r *http.Request) { uniHandler(w,r,common.Lock{},true) }) + + // Bind to port + conn, err := net.Listen("tcp", settings.ServiceAddress) + checkError(err, "Listen") + + // Start the web server and serve until the doomsday + tlsListener := tls.NewListener(conn, &config) + err = myTLSWebServer.Serve(tlsListener) + checkError(err, "Serve") +} \ No newline at end of file diff --git a/replication/src/server/server.json b/replication/src/server/server.json new file mode 100644 index 0000000..c765913 --- /dev/null +++ b/replication/src/server/server.json @@ -0,0 +1,11 @@ +{ + "CAKeyFile": "/root/go/src/iw/certificates/ca.crt", + "MyCertificateFile": "/root/go/src/iw/certificates/my.crt", + "MyKeyFile": "/root/go/src/iw/certificates/my.pem", + "ValidPeers": ["dev.localdomain"], + "ServiceAddress": "0.0.0.0:8000", + "DBUser": "wiki", + "DBPassword": "password", + "DBName": "wiki" +} + diff --git a/replication/src/server/uuid/state.unique b/replication/src/server/uuid/state.unique new file mode 100644 index 0000000..0305060 Binary files /dev/null and b/replication/src/server/uuid/state.unique differ diff --git a/static/ckeditor/CHANGES.md b/static/ckeditor/CHANGES.md new file mode 100644 index 0000000..2562bb1 --- /dev/null +++ b/static/ckeditor/CHANGES.md @@ -0,0 +1,138 @@ +CKEditor 4 Changelog +==================== + +## CKEditor 4.1.1 + +* Added new translation: Albanian. +* [#10172](http://dev.ckeditor.com/ticket/10172): Pressing *Delete*/*Backspace* in an empty table cell moves the cursor to the next/previous cell. +* [#10219](http://dev.ckeditor.com/ticket/10219): Error thrown when destroying an editor instance in parallel with a mouseup event. +* [#10265](http://dev.ckeditor.com/ticket/10265): Wrong loop type in the Filebrowser plugin. +* [#10249](http://dev.ckeditor.com/ticket/10249): Wrong undo/redo states at start. +* [#10268](http://dev.ckeditor.com/ticket/10268): "Show Blocks" does not recover after switching to source view. +* [#9995](http://dev.ckeditor.com/ticket/9995): HTML code in `textarea` should not be modified by the `htmlDataProcessor`. +* [#10320](http://dev.ckeditor.com/ticket/10320): Justify plugin should add elements to the ACF based on current Enter mode. +* [#10260](http://dev.ckeditor.com/ticket/10260): Fixed: Advanced Content Filter blocks `tabSpaces`. Unified `data-cke-*` attributes filtering. +* [#10315](http://dev.ckeditor.com/ticket/10315): [Webkit] Undo manager should not record snapshots after a filling character was added/removed. +* [#10291](http://dev.ckeditor.com/ticket/10291): [Webkit] Space after a filling character should be secured. +* [#10330](http://dev.ckeditor.com/ticket/10330): [Webkit] The filling character is not removed on `keydown` in specific cases. +* [#10285](http://dev.ckeditor.com/ticket/10285): Fixed: Styled text pasted from MS Word causes an infinite loop. +* [#10131](http://dev.ckeditor.com/ticket/10131): Fixed: `undoManager#update` does not refresh the command state. +* [#10337](http://dev.ckeditor.com/ticket/10337): Fixed: Unable to remove `` using `removeformat`. + +## CKEditor 4.1 + +* [#10192](http://dev.ckeditor.com/ticket/10192): Closing lists with Enter key does not work with Advanced Content Filter in several cases. +* [#10191](http://dev.ckeditor.com/ticket/10191): Fixed allowed content rules unification, so the `filter.allowedContent` property always contains rules in the same format. +* [#10224](http://dev.ckeditor.com/ticket/10224): Advanced Content Filter does not remove non-empty `` elements anymore. +* Minor issues in plugin integration with Advanced Content Filter: + * [#10166](http://dev.ckeditor.com/ticket/10166): Added transformation from the `align` attribute to `float` style to preserve backward compatibility after the introduction of Advanced Content Filter. + * [#10195](http://dev.ckeditor.com/ticket/10195): Image plugin no longer registers rules for links to Advanced Content Filter. + * [#10213](http://dev.ckeditor.com/ticket/10213): Justify plugin is now correctly registering rules to Advanced Content Filter when `config.justifyClasses` is defined. + +## CKEditor 4.1 RC + +* [#9829](http://dev.ckeditor.com/ticket/9829): Data and features activation based on editor configuration. + + Brand new data filtering system that works in 2 modes: + + * based on loaded features (toolbar items, plugins) - the data will be filtered according to what the editor in its + current configuration can handle, + * based on `config.allowedContent` rules - the data will be filtered and the editor features (toolbar items, commands, + keystrokes) will be enabled if they are allowed. + + See the `datafiltering.html` sample, [guides](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) and [`CKEDITOR.filter` API documentation](http://docs.ckeditor.com/#!/api/CKEDITOR.filter). +* [#9387](http://dev.ckeditor.com/ticket/9387): Reintroduced "Shared Spaces" - the ability to display toolbar and bottom editor space in selected locations and to share them by different editor instances. +* [#9907](http://dev.ckeditor.com/ticket/9907): Added the `contentPreview` event for preview data manipulation. +* [#9713](http://dev.ckeditor.com/ticket/9713): Introduced the `sourcedialog` plugin that brings raw HTML editing for inline editor instances. +* Included in [#9829](http://dev.ckeditor.com/ticket/9829): Introduced new events, `toHtml` and `toDataFormat`, allowing for better integration with data processing. See API documentation: [`toHtml`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-toHtml), [`toDataFormat`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-toDataFormat). +* [#9981](http://dev.ckeditor.com/ticket/9981): Added ability to filter `htmlParser.fragment`, `htmlParser.element` etc. by many `htmlParser.filter`s before writing structure to an HTML string. +* Included in [#10103](http://dev.ckeditor.com/ticket/10103): + * Introduced the `editor.status` property to make it easier to check the current status of the editor. See [API documentation](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-status). + * Default `command` state is now `CKEDITOR.TRISTATE_DISABLE`. It will be activated on `editor.instanceReady` or immediately after being added if the editor is already initialized. +* [#9796](http://dev.ckeditor.com/ticket/9796): Introduced `` as a default tag for strikethrough, which replaces obsolete `` in HTML5. + +## CKEditor 4.0.3 + +* [#10196](http://dev.ckeditor.com/ticket/10196): Fixed context menus not opening with keyboard shortcuts when Autogrow is enabled. +* [#10212](http://dev.ckeditor.com/ticket/10212): [IE7-10] Undo command throws errors after multiple switches between Source and WYSIWYG view. +* [#10219](http://dev.ckeditor.com/ticket/10219): [Inline editor] Error thrown after calling editor.destroy(). + +## CKEditor 4.0.2 + +* [#9779](http://dev.ckeditor.com/ticket/9779): Fixed overriding `CKEDITOR.getUrl` with `CKEDITOR_GETURL`. +* [#9772](http://dev.ckeditor.com/ticket/9772): Custom buttons in dialog window footer have different look and size (Moono, Kama). +* [#9029](http://dev.ckeditor.com/ticket/9029): Custom styles added with `styleSet.add()` are displayed in wrong order. +* [#9887](http://dev.ckeditor.com/ticket/9887): Disable magicline when `editor.readOnly` is set. +* [#9882](http://dev.ckeditor.com/ticket/9882): Fixed empty document title on `getData()` if set via the Document Properties dialog window. +* [#9773](http://dev.ckeditor.com/ticket/9773): Fixed rendering problems with selection fields in the Kama skin. +* [#9851](http://dev.ckeditor.com/ticket/9851): The `selectionChange` event is not fired when mouse selection ended outside editable. +* [#9903](http://dev.ckeditor.com/ticket/9903): [Inline editor] Bad positioning of floating space with page horizontal scroll. +* [#9872](http://dev.ckeditor.com/ticket/9872): `editor.checkDirty()` returns `true` when called onload. Removed the obsolete `editor.mayBeDirty` flag. +* [#9893](http://dev.ckeditor.com/ticket/9893): Fixed broken toolbar when editing mixed direction content in Quirks mode. +* [#9845](http://dev.ckeditor.com/ticket/9845): Fixed TAB navigation in the Link dialog window when the Anchor option is used and no anchors are available. +* [#9883](http://dev.ckeditor.com/ticket/9883): Maximizing was making the entire page editable with divarea-based editors. +* [#9940](http://dev.ckeditor.com/ticket/9940): [Firefox] Navigating back to a page with the editor was making the entire page editable. +* [#9966](http://dev.ckeditor.com/ticket/9966): Fixed: Unable to type square brackets with French keyboard layout. Changed magicline keystrokes. +* [#9507](http://dev.ckeditor.com/ticket/9507): [Firefox] Selection is moved before editable position when the editor is focused for the first time. +* [#9947](http://dev.ckeditor.com/ticket/9947): [Webkit] Editor overflows parent container in some edge cases. +* [#10105](http://dev.ckeditor.com/ticket/10105): Fixed: Broken sourcearea view when an RTL language is set. +* [#10123](http://dev.ckeditor.com/ticket/10123): [Webkit] Fixed: Several dialog windows have broken layout since the latest Webkit release. +* [#10152](http://dev.ckeditor.com/ticket/10152): Fixed: Invalid ARIA property used on menu items. + +## CKEditor 4.0.1.1 + +* Security update: Added protection against XSS attack and possible path disclosure in PHP sample. + +## CKEditor 4.0.1 + +Fixed issues: + +* [#9655](http://dev.ckeditor.com/ticket/9655): Support for IE Quirks Mode in new Moono skin. +* Accessibility issues (mainly on inline editor): [#9364](http://dev.ckeditor.com/ticket/9364), [#9368](http://dev.ckeditor.com/ticket/9368), [#9369](http://dev.ckeditor.com/ticket/9369), [#9370](http://dev.ckeditor.com/ticket/9370), [#9541](http://dev.ckeditor.com/ticket/9541), [#9543](http://dev.ckeditor.com/ticket/9543), [#9841](http://dev.ckeditor.com/ticket/9841), [#9844](http://dev.ckeditor.com/ticket/9844). +* Magic-line: + * [#9481](http://dev.ckeditor.com/ticket/9481): Added accessibility support for Magic-line. + * [#9509](http://dev.ckeditor.com/ticket/9509): Added Magic-line support for forms. + * [#9573](http://dev.ckeditor.com/ticket/9573): Magic-line doesn't disappear on `mouseout` in the specific case. +* [#9754](http://dev.ckeditor.com/ticket/9754): [Webkit] Cut & paste simple unformatted text generates inline wrapper in Webkits. +* [#9456](http://dev.ckeditor.com/ticket/9456): [Chrome] Properly paste bullet list style from MS-Word. +* [#9699](http://dev.ckeditor.com/ticket/9699), [#9758](http://dev.ckeditor.com/ticket/9758): Improved selection locking when selecting by dragging. +* Context menu: + * [#9712](http://dev.ckeditor.com/ticket/9712): Context menu open destroys editor focus. + * [#9366](http://dev.ckeditor.com/ticket/9366): Context menu should be displayed over floating toolbar. + * [#9706](http://dev.ckeditor.com/ticket/9706): Context menu generates JS error in inline mode when editor attached to header element. +* [#9800](http://dev.ckeditor.com/ticket/9800): Hide float panel when resizing window. +* [#9721](http://dev.ckeditor.com/ticket/9721): Padding in content of div based editor puts editing area under bottom UI space. +* [#9528](http://dev.ckeditor.com/ticket/9528): Host page's `box-sizing` style shouldn't influence editor UI elements. +* [#9503](http://dev.ckeditor.com/ticket/9503): Forms plugin adds context menu listeners only on supported input types. Added support for `tel, email, search` and `url` input types. +* [#9769](http://dev.ckeditor.com/ticket/9769): Improved floating toolbar positioning in narrow window. +* [#9875](http://dev.ckeditor.com/ticket/9875): Table dialog doesn't populate width correctly. +* [#8675](http://dev.ckeditor.com/ticket/8675): Deleting cells in nested table removes outer table cell. +* [#9815](http://dev.ckeditor.com/ticket/9815): Can't edit dialog fields on editor initialized in jQuery UI modal dialog. +* [#8888](http://dev.ckeditor.com/ticket/8888): CKEditor dialogs do not show completely in small window. +* [#9360](http://dev.ckeditor.com/ticket/9360): [Inline editor] Blocks shown for a div stay permanently even after user exists editing the div. +* [#9531](http://dev.ckeditor.com/ticket/9531): [Firefox & Inline editor] Toolbar is lost when closing format combo by clicking on its button. +* [#9553](http://dev.ckeditor.com/ticket/9553): Table width incorrectly set when `border-width` style is specified. +* [#9594](http://dev.ckeditor.com/ticket/9594): Cannot tab past CKEditor when it is in read only mode. +* [#9658](http://dev.ckeditor.com/ticket/9658): [IE9] Justify not working on selected image. +* [#9686](http://dev.ckeditor.com/ticket/9686): Added missing contents styles for `
    `.
    +* [#9709](http://dev.ckeditor.com/ticket/9709): PasteFromWord should not depend on configuration from other styles.
    +* [#9726](http://dev.ckeditor.com/ticket/9726): Removed color dialog dependency from table tools.
    +* [#9765](http://dev.ckeditor.com/ticket/9765): Toolbar Collapse command documented incorrectly on Accessibility Instructions dialog.
    +* [#9771](http://dev.ckeditor.com/ticket/9771): [Webkit & Opera] Fixed scrolling issues when pasting.
    +* [#9787](http://dev.ckeditor.com/ticket/9787): [IE9] onChange isn't fired for checkboxes in dialogs.
    +* [#9842](http://dev.ckeditor.com/ticket/9842): [Firefox 17] When we open toolbar menu for the first time & press down arrow key, focus goes to next toolbar button instead of menu options.
    +* [#9847](http://dev.ckeditor.com/ticket/9847): Elements path shouldn't be initialized on inline editor.
    +* [#9853](http://dev.ckeditor.com/ticket/9853): `Editor#addRemoveFormatFilter` is exposed before it really works.
    +* [#8893](http://dev.ckeditor.com/ticket/8893): Value of `pasteFromWordCleanupFile` config is now taken from instance configuration.
    +* [#9693](http://dev.ckeditor.com/ticket/9693): Removed "live preview" checkbox from UI color picker.
    +
    +
    +## CKEditor 4.0
    +
    +The first stable release of the new CKEditor 4 code line.
    +
    +The CKEditor JavaScript API has been kept compatible with CKEditor 4, whenever
    +possible. The list of relevant changes can be found in the [API Changes page of
    +the CKEditor 4 documentation][1].
    +
    +[1]: http://docs.ckeditor.com/#!/guide/dev_api_changes "API Changes"
    diff --git a/static/ckeditor/LICENSE.md b/static/ckeditor/LICENSE.md
    new file mode 100644
    index 0000000..d447c67
    --- /dev/null
    +++ b/static/ckeditor/LICENSE.md
    @@ -0,0 +1,1264 @@
    +Software License Agreement
    +==========================
    +
    +CKEditor - The text editor for Internet - http://ckeditor.com
    +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
    +
    +Licensed under the terms of any of the following licenses at your
    +choice:
    +
    + - GNU General Public License Version 2 or later (the "GPL")
    +   http://www.gnu.org/licenses/gpl.html
    +   (See Appendix A)
    +
    + - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
    +   http://www.gnu.org/licenses/lgpl.html
    +   (See Appendix B)
    +
    + - Mozilla Public License Version 1.1 or later (the "MPL")
    +   http://www.mozilla.org/MPL/MPL-1.1.html
    +   (See Appendix C)
    +
    +You are not required to, but if you want to explicitly declare the
    +license you have chosen to be bound to when using, reproducing,
    +modifying and distributing this software, just include a text file
    +titled "legal.txt" in your version of this software, indicating your
    +license choice. In any case, your choice will not restrict any
    +recipient of your version of this software to use, reproduce, modify
    +and distribute this software under any of the above licenses.
    +
    +Sources of Intellectual Property Included in CKEditor
    +-----------------------------------------------------
    +
    +Where not otherwise indicated, all CKEditor content is authored by
    +CKSource engineers and consists of CKSource-owned intellectual
    +property. In some specific instances, CKEditor will incorporate work
    +done by developers outside of CKSource with their express permission.
    +
    +Trademarks
    +----------
    +
    +CKEditor is a trademark of CKSource - Frederico Knabben. All other brand
    +and product names are trademarks, registered trademarks or service
    +marks of their respective holders.
    +
    +---
    +
    +Appendix A: The GPL License
    +---------------------------
    +
    +GNU GENERAL PUBLIC LICENSE
    +Version 2, June 1991
    +
    + Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
    + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
    + Everyone is permitted to copy and distribute verbatim copies
    + of this license document, but changing it is not allowed.
    +
    +Preamble
    +
    +  The licenses for most software are designed to take away your
    +freedom to share and change it.  By contrast, the GNU General Public
    +License is intended to guarantee your freedom to share and change free
    +software-to make sure the software is free for all its users.  This
    +General Public License applies to most of the Free Software
    +Foundation's software and to any other program whose authors commit to
    +using it.  (Some other Free Software Foundation software is covered by
    +the GNU Lesser General Public License instead.)  You can apply it to
    +your programs, too.
    +
    +  When we speak of free software, we are referring to freedom, not
    +price.  Our General Public Licenses are designed to make sure that you
    +have the freedom to distribute copies of free software (and charge for
    +this service if you wish), that you receive source code or can get it
    +if you want it, that you can change the software or use pieces of it
    +in new free programs; and that you know you can do these things.
    +
    +  To protect your rights, we need to make restrictions that forbid
    +anyone to deny you these rights or to ask you to surrender the rights.
    +These restrictions translate to certain responsibilities for you if you
    +distribute copies of the software, or if you modify it.
    +
    +  For example, if you distribute copies of such a program, whether
    +gratis or for a fee, you must give the recipients all the rights that
    +you have.  You must make sure that they, too, receive or can get the
    +source code.  And you must show them these terms so they know their
    +rights.
    +
    +  We protect your rights with two steps: (1) copyright the software, and
    +(2) offer you this license which gives you legal permission to copy,
    +distribute and/or modify the software.
    +
    +  Also, for each author's protection and ours, we want to make certain
    +that everyone understands that there is no warranty for this free
    +software.  If the software is modified by someone else and passed on, we
    +want its recipients to know that what they have is not the original, so
    +that any problems introduced by others will not reflect on the original
    +authors' reputations.
    +
    +  Finally, any free program is threatened constantly by software
    +patents.  We wish to avoid the danger that redistributors of a free
    +program will individually obtain patent licenses, in effect making the
    +program proprietary.  To prevent this, we have made it clear that any
    +patent must be licensed for everyone's free use or not licensed at all.
    +
    +  The precise terms and conditions for copying, distribution and
    +modification follow.
    +
    +GNU GENERAL PUBLIC LICENSE
    +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    +
    +  0. This License applies to any program or other work which contains
    +a notice placed by the copyright holder saying it may be distributed
    +under the terms of this General Public License.  The "Program", below,
    +refers to any such program or work, and a "work based on the Program"
    +means either the Program or any derivative work under copyright law:
    +that is to say, a work containing the Program or a portion of it,
    +either verbatim or with modifications and/or translated into another
    +language.  (Hereinafter, translation is included without limitation in
    +the term "modification".)  Each licensee is addressed as "you".
    +
    +Activities other than copying, distribution and modification are not
    +covered by this License; they are outside its scope.  The act of
    +running the Program is not restricted, and the output from the Program
    +is covered only if its contents constitute a work based on the
    +Program (independent of having been made by running the Program).
    +Whether that is true depends on what the Program does.
    +
    +  1. You may copy and distribute verbatim copies of the Program's
    +source code as you receive it, in any medium, provided that you
    +conspicuously and appropriately publish on each copy an appropriate
    +copyright notice and disclaimer of warranty; keep intact all the
    +notices that refer to this License and to the absence of any warranty;
    +and give any other recipients of the Program a copy of this License
    +along with the Program.
    +
    +You may charge a fee for the physical act of transferring a copy, and
    +you may at your option offer warranty protection in exchange for a fee.
    +
    +  2. You may modify your copy or copies of the Program or any portion
    +of it, thus forming a work based on the Program, and copy and
    +distribute such modifications or work under the terms of Section 1
    +above, provided that you also meet all of these conditions:
    +
    +    a) You must cause the modified files to carry prominent notices
    +    stating that you changed the files and the date of any change.
    +
    +    b) You must cause any work that you distribute or publish, that in
    +    whole or in part contains or is derived from the Program or any
    +    part thereof, to be licensed as a whole at no charge to all third
    +    parties under the terms of this License.
    +
    +    c) If the modified program normally reads commands interactively
    +    when run, you must cause it, when started running for such
    +    interactive use in the most ordinary way, to print or display an
    +    announcement including an appropriate copyright notice and a
    +    notice that there is no warranty (or else, saying that you provide
    +    a warranty) and that users may redistribute the program under
    +    these conditions, and telling the user how to view a copy of this
    +    License.  (Exception: if the Program itself is interactive but
    +    does not normally print such an announcement, your work based on
    +    the Program is not required to print an announcement.)
    +
    +These requirements apply to the modified work as a whole.  If
    +identifiable sections of that work are not derived from the Program,
    +and can be reasonably considered independent and separate works in
    +themselves, then this License, and its terms, do not apply to those
    +sections when you distribute them as separate works.  But when you
    +distribute the same sections as part of a whole which is a work based
    +on the Program, the distribution of the whole must be on the terms of
    +this License, whose permissions for other licensees extend to the
    +entire whole, and thus to each and every part regardless of who wrote it.
    +
    +Thus, it is not the intent of this section to claim rights or contest
    +your rights to work written entirely by you; rather, the intent is to
    +exercise the right to control the distribution of derivative or
    +collective works based on the Program.
    +
    +In addition, mere aggregation of another work not based on the Program
    +with the Program (or with a work based on the Program) on a volume of
    +a storage or distribution medium does not bring the other work under
    +the scope of this License.
    +
    +  3. You may copy and distribute the Program (or a work based on it,
    +under Section 2) in object code or executable form under the terms of
    +Sections 1 and 2 above provided that you also do one of the following:
    +
    +    a) Accompany it with the complete corresponding machine-readable
    +    source code, which must be distributed under the terms of Sections
    +    1 and 2 above on a medium customarily used for software interchange; or,
    +
    +    b) Accompany it with a written offer, valid for at least three
    +    years, to give any third party, for a charge no more than your
    +    cost of physically performing source distribution, a complete
    +    machine-readable copy of the corresponding source code, to be
    +    distributed under the terms of Sections 1 and 2 above on a medium
    +    customarily used for software interchange; or,
    +
    +    c) Accompany it with the information you received as to the offer
    +    to distribute corresponding source code.  (This alternative is
    +    allowed only for noncommercial distribution and only if you
    +    received the program in object code or executable form with such
    +    an offer, in accord with Subsection b above.)
    +
    +The source code for a work means the preferred form of the work for
    +making modifications to it.  For an executable work, complete source
    +code means all the source code for all modules it contains, plus any
    +associated interface definition files, plus the scripts used to
    +control compilation and installation of the executable.  However, as a
    +special exception, the source code distributed need not include
    +anything that is normally distributed (in either source or binary
    +form) with the major components (compiler, kernel, and so on) of the
    +operating system on which the executable runs, unless that component
    +itself accompanies the executable.
    +
    +If distribution of executable or object code is made by offering
    +access to copy from a designated place, then offering equivalent
    +access to copy the source code from the same place counts as
    +distribution of the source code, even though third parties are not
    +compelled to copy the source along with the object code.
    +
    +  4. You may not copy, modify, sublicense, or distribute the Program
    +except as expressly provided under this License.  Any attempt
    +otherwise to copy, modify, sublicense or distribute the Program is
    +void, and will automatically terminate your rights under this License.
    +However, parties who have received copies, or rights, from you under
    +this License will not have their licenses terminated so long as such
    +parties remain in full compliance.
    +
    +  5. You are not required to accept this License, since you have not
    +signed it.  However, nothing else grants you permission to modify or
    +distribute the Program or its derivative works.  These actions are
    +prohibited by law if you do not accept this License.  Therefore, by
    +modifying or distributing the Program (or any work based on the
    +Program), you indicate your acceptance of this License to do so, and
    +all its terms and conditions for copying, distributing or modifying
    +the Program or works based on it.
    +
    +  6. Each time you redistribute the Program (or any work based on the
    +Program), the recipient automatically receives a license from the
    +original licensor to copy, distribute or modify the Program subject to
    +these terms and conditions.  You may not impose any further
    +restrictions on the recipients' exercise of the rights granted herein.
    +You are not responsible for enforcing compliance by third parties to
    +this License.
    +
    +  7. If, as a consequence of a court judgment or allegation of patent
    +infringement or for any other reason (not limited to patent issues),
    +conditions are imposed on you (whether by court order, agreement or
    +otherwise) that contradict the conditions of this License, they do not
    +excuse you from the conditions of this License.  If you cannot
    +distribute so as to satisfy simultaneously your obligations under this
    +License and any other pertinent obligations, then as a consequence you
    +may not distribute the Program at all.  For example, if a patent
    +license would not permit royalty-free redistribution of the Program by
    +all those who receive copies directly or indirectly through you, then
    +the only way you could satisfy both it and this License would be to
    +refrain entirely from distribution of the Program.
    +
    +If any portion of this section is held invalid or unenforceable under
    +any particular circumstance, the balance of the section is intended to
    +apply and the section as a whole is intended to apply in other
    +circumstances.
    +
    +It is not the purpose of this section to induce you to infringe any
    +patents or other property right claims or to contest validity of any
    +such claims; this section has the sole purpose of protecting the
    +integrity of the free software distribution system, which is
    +implemented by public license practices.  Many people have made
    +generous contributions to the wide range of software distributed
    +through that system in reliance on consistent application of that
    +system; it is up to the author/donor to decide if he or she is willing
    +to distribute software through any other system and a licensee cannot
    +impose that choice.
    +
    +This section is intended to make thoroughly clear what is believed to
    +be a consequence of the rest of this License.
    +
    +  8. If the distribution and/or use of the Program is restricted in
    +certain countries either by patents or by copyrighted interfaces, the
    +original copyright holder who places the Program under this License
    +may add an explicit geographical distribution limitation excluding
    +those countries, so that distribution is permitted only in or among
    +countries not thus excluded.  In such case, this License incorporates
    +the limitation as if written in the body of this License.
    +
    +  9. The Free Software Foundation may publish revised and/or new versions
    +of the General Public License from time to time.  Such new versions will
    +be similar in spirit to the present version, but may differ in detail to
    +address new problems or concerns.
    +
    +Each version is given a distinguishing version number.  If the Program
    +specifies a version number of this License which applies to it and "any
    +later version", you have the option of following the terms and conditions
    +either of that version or of any later version published by the Free
    +Software Foundation.  If the Program does not specify a version number of
    +this License, you may choose any version ever published by the Free Software
    +Foundation.
    +
    +  10. If you wish to incorporate parts of the Program into other free
    +programs whose distribution conditions are different, write to the author
    +to ask for permission.  For software which is copyrighted by the Free
    +Software Foundation, write to the Free Software Foundation; we sometimes
    +make exceptions for this.  Our decision will be guided by the two goals
    +of preserving the free status of all derivatives of our free software and
    +of promoting the sharing and reuse of software generally.
    +
    +NO WARRANTY
    +
    +  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
    +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
    +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
    +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
    +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
    +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
    +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
    +REPAIR OR CORRECTION.
    +
    +  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
    +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
    +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
    +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
    +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
    +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
    +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
    +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
    +POSSIBILITY OF SUCH DAMAGES.
    +
    +END OF TERMS AND CONDITIONS
    +
    +
    +Appendix B: The LGPL License
    +----------------------------
    +
    +GNU LESSER GENERAL PUBLIC LICENSE
    +Version 2.1, February 1999
    +
    + Copyright (C) 1991, 1999 Free Software Foundation, Inc.
    +     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    + Everyone is permitted to copy and distribute verbatim copies
    + of this license document, but changing it is not allowed.
    +
    +[This is the first released version of the Lesser GPL.  It also counts
    + as the successor of the GNU Library Public License, version 2, hence
    + the version number 2.1.]
    +
    +Preamble
    +
    +  The licenses for most software are designed to take away your
    +freedom to share and change it.  By contrast, the GNU General Public
    +Licenses are intended to guarantee your freedom to share and change
    +free software-to make sure the software is free for all its users.
    +
    +  This license, the Lesser General Public License, applies to some
    +specially designated software packages-typically libraries-of the
    +Free Software Foundation and other authors who decide to use it.  You
    +can use it too, but we suggest you first think carefully about whether
    +this license or the ordinary General Public License is the better
    +strategy to use in any particular case, based on the explanations below.
    +
    +  When we speak of free software, we are referring to freedom of use,
    +not price.  Our General Public Licenses are designed to make sure that
    +you have the freedom to distribute copies of free software (and charge
    +for this service if you wish); that you receive source code or can get
    +it if you want it; that you can change the software and use pieces of
    +it in new free programs; and that you are informed that you can do
    +these things.
    +
    +  To protect your rights, we need to make restrictions that forbid
    +distributors to deny you these rights or to ask you to surrender these
    +rights.  These restrictions translate to certain responsibilities for
    +you if you distribute copies of the library or if you modify it.
    +
    +  For example, if you distribute copies of the library, whether gratis
    +or for a fee, you must give the recipients all the rights that we gave
    +you.  You must make sure that they, too, receive or can get the source
    +code.  If you link other code with the library, you must provide
    +complete object files to the recipients, so that they can relink them
    +with the library after making changes to the library and recompiling
    +it.  And you must show them these terms so they know their rights.
    +
    +  We protect your rights with a two-step method: (1) we copyright the
    +library, and (2) we offer you this license, which gives you legal
    +permission to copy, distribute and/or modify the library.
    +
    +  To protect each distributor, we want to make it very clear that
    +there is no warranty for the free library.  Also, if the library is
    +modified by someone else and passed on, the recipients should know
    +that what they have is not the original version, so that the original
    +author's reputation will not be affected by problems that might be
    +introduced by others.
    +
    +  Finally, software patents pose a constant threat to the existence of
    +any free program.  We wish to make sure that a company cannot
    +effectively restrict the users of a free program by obtaining a
    +restrictive license from a patent holder.  Therefore, we insist that
    +any patent license obtained for a version of the library must be
    +consistent with the full freedom of use specified in this license.
    +
    +  Most GNU software, including some libraries, is covered by the
    +ordinary GNU General Public License.  This license, the GNU Lesser
    +General Public License, applies to certain designated libraries, and
    +is quite different from the ordinary General Public License.  We use
    +this license for certain libraries in order to permit linking those
    +libraries into non-free programs.
    +
    +  When a program is linked with a library, whether statically or using
    +a shared library, the combination of the two is legally speaking a
    +combined work, a derivative of the original library.  The ordinary
    +General Public License therefore permits such linking only if the
    +entire combination fits its criteria of freedom.  The Lesser General
    +Public License permits more lax criteria for linking other code with
    +the library.
    +
    +  We call this license the "Lesser" General Public License because it
    +does Less to protect the user's freedom than the ordinary General
    +Public License.  It also provides other free software developers Less
    +of an advantage over competing non-free programs.  These disadvantages
    +are the reason we use the ordinary General Public License for many
    +libraries.  However, the Lesser license provides advantages in certain
    +special circumstances.
    +
    +  For example, on rare occasions, there may be a special need to
    +encourage the widest possible use of a certain library, so that it becomes
    +a de-facto standard.  To achieve this, non-free programs must be
    +allowed to use the library.  A more frequent case is that a free
    +library does the same job as widely used non-free libraries.  In this
    +case, there is little to gain by limiting the free library to free
    +software only, so we use the Lesser General Public License.
    +
    +  In other cases, permission to use a particular library in non-free
    +programs enables a greater number of people to use a large body of
    +free software.  For example, permission to use the GNU C Library in
    +non-free programs enables many more people to use the whole GNU
    +operating system, as well as its variant, the GNU/Linux operating
    +system.
    +
    +  Although the Lesser General Public License is Less protective of the
    +users' freedom, it does ensure that the user of a program that is
    +linked with the Library has the freedom and the wherewithal to run
    +that program using a modified version of the Library.
    +
    +  The precise terms and conditions for copying, distribution and
    +modification follow.  Pay close attention to the difference between a
    +"work based on the library" and a "work that uses the library".  The
    +former contains code derived from the library, whereas the latter must
    +be combined with the library in order to run.
    +
    +GNU LESSER GENERAL PUBLIC LICENSE
    +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    +
    +  0. This License Agreement applies to any software library or other
    +program which contains a notice placed by the copyright holder or
    +other authorized party saying it may be distributed under the terms of
    +this Lesser General Public License (also called "this License").
    +Each licensee is addressed as "you".
    +
    +  A "library" means a collection of software functions and/or data
    +prepared so as to be conveniently linked with application programs
    +(which use some of those functions and data) to form executables.
    +
    +  The "Library", below, refers to any such software library or work
    +which has been distributed under these terms.  A "work based on the
    +Library" means either the Library or any derivative work under
    +copyright law: that is to say, a work containing the Library or a
    +portion of it, either verbatim or with modifications and/or translated
    +straightforwardly into another language.  (Hereinafter, translation is
    +included without limitation in the term "modification".)
    +
    +  "Source code" for a work means the preferred form of the work for
    +making modifications to it.  For a library, complete source code means
    +all the source code for all modules it contains, plus any associated
    +interface definition files, plus the scripts used to control compilation
    +and installation of the library.
    +
    +  Activities other than copying, distribution and modification are not
    +covered by this License; they are outside its scope.  The act of
    +running a program using the Library is not restricted, and output from
    +such a program is covered only if its contents constitute a work based
    +on the Library (independent of the use of the Library in a tool for
    +writing it).  Whether that is true depends on what the Library does
    +and what the program that uses the Library does.
    +
    +  1. You may copy and distribute verbatim copies of the Library's
    +complete source code as you receive it, in any medium, provided that
    +you conspicuously and appropriately publish on each copy an
    +appropriate copyright notice and disclaimer of warranty; keep intact
    +all the notices that refer to this License and to the absence of any
    +warranty; and distribute a copy of this License along with the
    +Library.
    +
    +  You may charge a fee for the physical act of transferring a copy,
    +and you may at your option offer warranty protection in exchange for a
    +fee.
    +
    +  2. You may modify your copy or copies of the Library or any portion
    +of it, thus forming a work based on the Library, and copy and
    +distribute such modifications or work under the terms of Section 1
    +above, provided that you also meet all of these conditions:
    +
    +    a) The modified work must itself be a software library.
    +
    +    b) You must cause the files modified to carry prominent notices
    +    stating that you changed the files and the date of any change.
    +
    +    c) You must cause the whole of the work to be licensed at no
    +    charge to all third parties under the terms of this License.
    +
    +    d) If a facility in the modified Library refers to a function or a
    +    table of data to be supplied by an application program that uses
    +    the facility, other than as an argument passed when the facility
    +    is invoked, then you must make a good faith effort to ensure that,
    +    in the event an application does not supply such function or
    +    table, the facility still operates, and performs whatever part of
    +    its purpose remains meaningful.
    +
    +    (For example, a function in a library to compute square roots has
    +    a purpose that is entirely well-defined independent of the
    +    application.  Therefore, Subsection 2d requires that any
    +    application-supplied function or table used by this function must
    +    be optional: if the application does not supply it, the square
    +    root function must still compute square roots.)
    +
    +These requirements apply to the modified work as a whole.  If
    +identifiable sections of that work are not derived from the Library,
    +and can be reasonably considered independent and separate works in
    +themselves, then this License, and its terms, do not apply to those
    +sections when you distribute them as separate works.  But when you
    +distribute the same sections as part of a whole which is a work based
    +on the Library, the distribution of the whole must be on the terms of
    +this License, whose permissions for other licensees extend to the
    +entire whole, and thus to each and every part regardless of who wrote
    +it.
    +
    +Thus, it is not the intent of this section to claim rights or contest
    +your rights to work written entirely by you; rather, the intent is to
    +exercise the right to control the distribution of derivative or
    +collective works based on the Library.
    +
    +In addition, mere aggregation of another work not based on the Library
    +with the Library (or with a work based on the Library) on a volume of
    +a storage or distribution medium does not bring the other work under
    +the scope of this License.
    +
    +  3. You may opt to apply the terms of the ordinary GNU General Public
    +License instead of this License to a given copy of the Library.  To do
    +this, you must alter all the notices that refer to this License, so
    +that they refer to the ordinary GNU General Public License, version 2,
    +instead of to this License.  (If a newer version than version 2 of the
    +ordinary GNU General Public License has appeared, then you can specify
    +that version instead if you wish.)  Do not make any other change in
    +these notices.
    +
    +  Once this change is made in a given copy, it is irreversible for
    +that copy, so the ordinary GNU General Public License applies to all
    +subsequent copies and derivative works made from that copy.
    +
    +  This option is useful when you wish to copy part of the code of
    +the Library into a program that is not a library.
    +
    +  4. You may copy and distribute the Library (or a portion or
    +derivative of it, under Section 2) in object code or executable form
    +under the terms of Sections 1 and 2 above provided that you accompany
    +it with the complete corresponding machine-readable source code, which
    +must be distributed under the terms of Sections 1 and 2 above on a
    +medium customarily used for software interchange.
    +
    +  If distribution of object code is made by offering access to copy
    +from a designated place, then offering equivalent access to copy the
    +source code from the same place satisfies the requirement to
    +distribute the source code, even though third parties are not
    +compelled to copy the source along with the object code.
    +
    +  5. A program that contains no derivative of any portion of the
    +Library, but is designed to work with the Library by being compiled or
    +linked with it, is called a "work that uses the Library".  Such a
    +work, in isolation, is not a derivative work of the Library, and
    +therefore falls outside the scope of this License.
    +
    +  However, linking a "work that uses the Library" with the Library
    +creates an executable that is a derivative of the Library (because it
    +contains portions of the Library), rather than a "work that uses the
    +library".  The executable is therefore covered by this License.
    +Section 6 states terms for distribution of such executables.
    +
    +  When a "work that uses the Library" uses material from a header file
    +that is part of the Library, the object code for the work may be a
    +derivative work of the Library even though the source code is not.
    +Whether this is true is especially significant if the work can be
    +linked without the Library, or if the work is itself a library.  The
    +threshold for this to be true is not precisely defined by law.
    +
    +  If such an object file uses only numerical parameters, data
    +structure layouts and accessors, and small macros and small inline
    +functions (ten lines or less in length), then the use of the object
    +file is unrestricted, regardless of whether it is legally a derivative
    +work.  (Executables containing this object code plus portions of the
    +Library will still fall under Section 6.)
    +
    +  Otherwise, if the work is a derivative of the Library, you may
    +distribute the object code for the work under the terms of Section 6.
    +Any executables containing that work also fall under Section 6,
    +whether or not they are linked directly with the Library itself.
    +
    +  6. As an exception to the Sections above, you may also combine or
    +link a "work that uses the Library" with the Library to produce a
    +work containing portions of the Library, and distribute that work
    +under terms of your choice, provided that the terms permit
    +modification of the work for the customer's own use and reverse
    +engineering for debugging such modifications.
    +
    +  You must give prominent notice with each copy of the work that the
    +Library is used in it and that the Library and its use are covered by
    +this License.  You must supply a copy of this License.  If the work
    +during execution displays copyright notices, you must include the
    +copyright notice for the Library among them, as well as a reference
    +directing the user to the copy of this License.  Also, you must do one
    +of these things:
    +
    +    a) Accompany the work with the complete corresponding
    +    machine-readable source code for the Library including whatever
    +    changes were used in the work (which must be distributed under
    +    Sections 1 and 2 above); and, if the work is an executable linked
    +    with the Library, with the complete machine-readable "work that
    +    uses the Library", as object code and/or source code, so that the
    +    user can modify the Library and then relink to produce a modified
    +    executable containing the modified Library.  (It is understood
    +    that the user who changes the contents of definitions files in the
    +    Library will not necessarily be able to recompile the application
    +    to use the modified definitions.)
    +
    +    b) Use a suitable shared library mechanism for linking with the
    +    Library.  A suitable mechanism is one that (1) uses at run time a
    +    copy of the library already present on the user's computer system,
    +    rather than copying library functions into the executable, and (2)
    +    will operate properly with a modified version of the library, if
    +    the user installs one, as long as the modified version is
    +    interface-compatible with the version that the work was made with.
    +
    +    c) Accompany the work with a written offer, valid for at
    +    least three years, to give the same user the materials
    +    specified in Subsection 6a, above, for a charge no more
    +    than the cost of performing this distribution.
    +
    +    d) If distribution of the work is made by offering access to copy
    +    from a designated place, offer equivalent access to copy the above
    +    specified materials from the same place.
    +
    +    e) Verify that the user has already received a copy of these
    +    materials or that you have already sent this user a copy.
    +
    +  For an executable, the required form of the "work that uses the
    +Library" must include any data and utility programs needed for
    +reproducing the executable from it.  However, as a special exception,
    +the materials to be distributed need not include anything that is
    +normally distributed (in either source or binary form) with the major
    +components (compiler, kernel, and so on) of the operating system on
    +which the executable runs, unless that component itself accompanies
    +the executable.
    +
    +  It may happen that this requirement contradicts the license
    +restrictions of other proprietary libraries that do not normally
    +accompany the operating system.  Such a contradiction means you cannot
    +use both them and the Library together in an executable that you
    +distribute.
    +
    +  7. You may place library facilities that are a work based on the
    +Library side-by-side in a single library together with other library
    +facilities not covered by this License, and distribute such a combined
    +library, provided that the separate distribution of the work based on
    +the Library and of the other library facilities is otherwise
    +permitted, and provided that you do these two things:
    +
    +    a) Accompany the combined library with a copy of the same work
    +    based on the Library, uncombined with any other library
    +    facilities.  This must be distributed under the terms of the
    +    Sections above.
    +
    +    b) Give prominent notice with the combined library of the fact
    +    that part of it is a work based on the Library, and explaining
    +    where to find the accompanying uncombined form of the same work.
    +
    +  8. You may not copy, modify, sublicense, link with, or distribute
    +the Library except as expressly provided under this License.  Any
    +attempt otherwise to copy, modify, sublicense, link with, or
    +distribute the Library is void, and will automatically terminate your
    +rights under this License.  However, parties who have received copies,
    +or rights, from you under this License will not have their licenses
    +terminated so long as such parties remain in full compliance.
    +
    +  9. You are not required to accept this License, since you have not
    +signed it.  However, nothing else grants you permission to modify or
    +distribute the Library or its derivative works.  These actions are
    +prohibited by law if you do not accept this License.  Therefore, by
    +modifying or distributing the Library (or any work based on the
    +Library), you indicate your acceptance of this License to do so, and
    +all its terms and conditions for copying, distributing or modifying
    +the Library or works based on it.
    +
    +  10. Each time you redistribute the Library (or any work based on the
    +Library), the recipient automatically receives a license from the
    +original licensor to copy, distribute, link with or modify the Library
    +subject to these terms and conditions.  You may not impose any further
    +restrictions on the recipients' exercise of the rights granted herein.
    +You are not responsible for enforcing compliance by third parties with
    +this License.
    +
    +  11. If, as a consequence of a court judgment or allegation of patent
    +infringement or for any other reason (not limited to patent issues),
    +conditions are imposed on you (whether by court order, agreement or
    +otherwise) that contradict the conditions of this License, they do not
    +excuse you from the conditions of this License.  If you cannot
    +distribute so as to satisfy simultaneously your obligations under this
    +License and any other pertinent obligations, then as a consequence you
    +may not distribute the Library at all.  For example, if a patent
    +license would not permit royalty-free redistribution of the Library by
    +all those who receive copies directly or indirectly through you, then
    +the only way you could satisfy both it and this License would be to
    +refrain entirely from distribution of the Library.
    +
    +If any portion of this section is held invalid or unenforceable under any
    +particular circumstance, the balance of the section is intended to apply,
    +and the section as a whole is intended to apply in other circumstances.
    +
    +It is not the purpose of this section to induce you to infringe any
    +patents or other property right claims or to contest validity of any
    +such claims; this section has the sole purpose of protecting the
    +integrity of the free software distribution system which is
    +implemented by public license practices.  Many people have made
    +generous contributions to the wide range of software distributed
    +through that system in reliance on consistent application of that
    +system; it is up to the author/donor to decide if he or she is willing
    +to distribute software through any other system and a licensee cannot
    +impose that choice.
    +
    +This section is intended to make thoroughly clear what is believed to
    +be a consequence of the rest of this License.
    +
    +  12. If the distribution and/or use of the Library is restricted in
    +certain countries either by patents or by copyrighted interfaces, the
    +original copyright holder who places the Library under this License may add
    +an explicit geographical distribution limitation excluding those countries,
    +so that distribution is permitted only in or among countries not thus
    +excluded.  In such case, this License incorporates the limitation as if
    +written in the body of this License.
    +
    +  13. The Free Software Foundation may publish revised and/or new
    +versions of the Lesser General Public License from time to time.
    +Such new versions will be similar in spirit to the present version,
    +but may differ in detail to address new problems or concerns.
    +
    +Each version is given a distinguishing version number.  If the Library
    +specifies a version number of this License which applies to it and
    +"any later version", you have the option of following the terms and
    +conditions either of that version or of any later version published by
    +the Free Software Foundation.  If the Library does not specify a
    +license version number, you may choose any version ever published by
    +the Free Software Foundation.
    +
    +  14. If you wish to incorporate parts of the Library into other free
    +programs whose distribution conditions are incompatible with these,
    +write to the author to ask for permission.  For software which is
    +copyrighted by the Free Software Foundation, write to the Free
    +Software Foundation; we sometimes make exceptions for this.  Our
    +decision will be guided by the two goals of preserving the free status
    +of all derivatives of our free software and of promoting the sharing
    +and reuse of software generally.
    +
    +NO WARRANTY
    +
    +  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
    +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
    +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
    +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
    +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
    +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    +PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
    +LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
    +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
    +
    +  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
    +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
    +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
    +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
    +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
    +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
    +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
    +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
    +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
    +DAMAGES.
    +
    +END OF TERMS AND CONDITIONS
    +
    +
    +Appendix C: The MPL License
    +---------------------------
    +
    +MOZILLA PUBLIC LICENSE
    +Version 1.1
    +
    +1. Definitions.
    +
    +     1.0.1. "Commercial Use" means distribution or otherwise making the
    +     Covered Code available to a third party.
    +
    +     1.1. "Contributor" means each entity that creates or contributes to
    +     the creation of Modifications.
    +
    +     1.2. "Contributor Version" means the combination of the Original
    +     Code, prior Modifications used by a Contributor, and the Modifications
    +     made by that particular Contributor.
    +
    +     1.3. "Covered Code" means the Original Code or Modifications or the
    +     combination of the Original Code and Modifications, in each case
    +     including portions thereof.
    +
    +     1.4. "Electronic Distribution Mechanism" means a mechanism generally
    +     accepted in the software development community for the electronic
    +     transfer of data.
    +
    +     1.5. "Executable" means Covered Code in any form other than Source
    +     Code.
    +
    +     1.6. "Initial Developer" means the individual or entity identified
    +     as the Initial Developer in the Source Code notice required by Exhibit
    +     A.
    +
    +     1.7. "Larger Work" means a work which combines Covered Code or
    +     portions thereof with code not governed by the terms of this License.
    +
    +     1.8. "License" means this document.
    +
    +     1.8.1. "Licensable" means having the right to grant, to the maximum
    +     extent possible, whether at the time of the initial grant or
    +     subsequently acquired, any and all of the rights conveyed herein.
    +
    +     1.9. "Modifications" means any addition to or deletion from the
    +     substance or structure of either the Original Code or any previous
    +     Modifications. When Covered Code is released as a series of files, a
    +     Modification is:
    +          A. Any addition to or deletion from the contents of a file
    +          containing Original Code or previous Modifications.
    +
    +          B. Any new file that contains any part of the Original Code or
    +          previous Modifications.
    +
    +     1.10. "Original Code" means Source Code of computer software code
    +     which is described in the Source Code notice required by Exhibit A as
    +     Original Code, and which, at the time of its release under this
    +     License is not already Covered Code governed by this License.
    +
    +     1.10.1. "Patent Claims" means any patent claim(s), now owned or
    +     hereafter acquired, including without limitation,  method, process,
    +     and apparatus claims, in any patent Licensable by grantor.
    +
    +     1.11. "Source Code" means the preferred form of the Covered Code for
    +     making modifications to it, including all modules it contains, plus
    +     any associated interface definition files, scripts used to control
    +     compilation and installation of an Executable, or source code
    +     differential comparisons against either the Original Code or another
    +     well known, available Covered Code of the Contributor's choice. The
    +     Source Code can be in a compressed or archival form, provided the
    +     appropriate decompression or de-archiving software is widely available
    +     for no charge.
    +
    +     1.12. "You" (or "Your")  means an individual or a legal entity
    +     exercising rights under, and complying with all of the terms of, this
    +     License or a future version of this License issued under Section 6.1.
    +     For legal entities, "You" includes any entity which controls, is
    +     controlled by, or is under common control with You. For purposes of
    +     this definition, "control" means (a) the power, direct or indirect,
    +     to cause the direction or management of such entity, whether by
    +     contract or otherwise, or (b) ownership of more than fifty percent
    +     (50%) of the outstanding shares or beneficial ownership of such
    +     entity.
    +
    +2. Source Code License.
    +
    +     2.1. The Initial Developer Grant.
    +     The Initial Developer hereby grants You a world-wide, royalty-free,
    +     non-exclusive license, subject to third party intellectual property
    +     claims:
    +          (a)  under intellectual property rights (other than patent or
    +          trademark) Licensable by Initial Developer to use, reproduce,
    +          modify, display, perform, sublicense and distribute the Original
    +          Code (or portions thereof) with or without Modifications, and/or
    +          as part of a Larger Work; and
    +
    +          (b) under Patents Claims infringed by the making, using or
    +          selling of Original Code, to make, have made, use, practice,
    +          sell, and offer for sale, and/or otherwise dispose of the
    +          Original Code (or portions thereof).
    +
    +          (c) the licenses granted in this Section 2.1(a) and (b) are
    +          effective on the date Initial Developer first distributes
    +          Original Code under the terms of this License.
    +
    +          (d) Notwithstanding Section 2.1(b) above, no patent license is
    +          granted: 1) for code that You delete from the Original Code; 2)
    +          separate from the Original Code;  or 3) for infringements caused
    +          by: i) the modification of the Original Code or ii) the
    +          combination of the Original Code with other software or devices.
    +
    +     2.2. Contributor Grant.
    +     Subject to third party intellectual property claims, each Contributor
    +     hereby grants You a world-wide, royalty-free, non-exclusive license
    +
    +          (a)  under intellectual property rights (other than patent or
    +          trademark) Licensable by Contributor, to use, reproduce, modify,
    +          display, perform, sublicense and distribute the Modifications
    +          created by such Contributor (or portions thereof) either on an
    +          unmodified basis, with other Modifications, as Covered Code
    +          and/or as part of a Larger Work; and
    +
    +          (b) under Patent Claims infringed by the making, using, or
    +          selling of  Modifications made by that Contributor either alone
    +          and/or in combination with its Contributor Version (or portions
    +          of such combination), to make, use, sell, offer for sale, have
    +          made, and/or otherwise dispose of: 1) Modifications made by that
    +          Contributor (or portions thereof); and 2) the combination of
    +          Modifications made by that Contributor with its Contributor
    +          Version (or portions of such combination).
    +
    +          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
    +          effective on the date Contributor first makes Commercial Use of
    +          the Covered Code.
    +
    +          (d)    Notwithstanding Section 2.2(b) above, no patent license is
    +          granted: 1) for any code that Contributor has deleted from the
    +          Contributor Version; 2)  separate from the Contributor Version;
    +          3)  for infringements caused by: i) third party modifications of
    +          Contributor Version or ii)  the combination of Modifications made
    +          by that Contributor with other software  (except as part of the
    +          Contributor Version) or other devices; or 4) under Patent Claims
    +          infringed by Covered Code in the absence of Modifications made by
    +          that Contributor.
    +
    +3. Distribution Obligations.
    +
    +     3.1. Application of License.
    +     The Modifications which You create or to which You contribute are
    +     governed by the terms of this License, including without limitation
    +     Section 2.2. The Source Code version of Covered Code may be
    +     distributed only under the terms of this License or a future version
    +     of this License released under Section 6.1, and You must include a
    +     copy of this License with every copy of the Source Code You
    +     distribute. You may not offer or impose any terms on any Source Code
    +     version that alters or restricts the applicable version of this
    +     License or the recipients' rights hereunder. However, You may include
    +     an additional document offering the additional rights described in
    +     Section 3.5.
    +
    +     3.2. Availability of Source Code.
    +     Any Modification which You create or to which You contribute must be
    +     made available in Source Code form under the terms of this License
    +     either on the same media as an Executable version or via an accepted
    +     Electronic Distribution Mechanism to anyone to whom you made an
    +     Executable version available; and if made available via Electronic
    +     Distribution Mechanism, must remain available for at least twelve (12)
    +     months after the date it initially became available, or at least six
    +     (6) months after a subsequent version of that particular Modification
    +     has been made available to such recipients. You are responsible for
    +     ensuring that the Source Code version remains available even if the
    +     Electronic Distribution Mechanism is maintained by a third party.
    +
    +     3.3. Description of Modifications.
    +     You must cause all Covered Code to which You contribute to contain a
    +     file documenting the changes You made to create that Covered Code and
    +     the date of any change. You must include a prominent statement that
    +     the Modification is derived, directly or indirectly, from Original
    +     Code provided by the Initial Developer and including the name of the
    +     Initial Developer in (a) the Source Code, and (b) in any notice in an
    +     Executable version or related documentation in which You describe the
    +     origin or ownership of the Covered Code.
    +
    +     3.4. Intellectual Property Matters
    +          (a) Third Party Claims.
    +          If Contributor has knowledge that a license under a third party's
    +          intellectual property rights is required to exercise the rights
    +          granted by such Contributor under Sections 2.1 or 2.2,
    +          Contributor must include a text file with the Source Code
    +          distribution titled "LEGAL" which describes the claim and the
    +          party making the claim in sufficient detail that a recipient will
    +          know whom to contact. If Contributor obtains such knowledge after
    +          the Modification is made available as described in Section 3.2,
    +          Contributor shall promptly modify the LEGAL file in all copies
    +          Contributor makes available thereafter and shall take other steps
    +          (such as notifying appropriate mailing lists or newsgroups)
    +          reasonably calculated to inform those who received the Covered
    +          Code that new knowledge has been obtained.
    +
    +          (b) Contributor APIs.
    +          If Contributor's Modifications include an application programming
    +          interface and Contributor has knowledge of patent licenses which
    +          are reasonably necessary to implement that API, Contributor must
    +          also include this information in the LEGAL file.
    +
    +               (c)    Representations.
    +          Contributor represents that, except as disclosed pursuant to
    +          Section 3.4(a) above, Contributor believes that Contributor's
    +          Modifications are Contributor's original creation(s) and/or
    +          Contributor has sufficient rights to grant the rights conveyed by
    +          this License.
    +
    +     3.5. Required Notices.
    +     You must duplicate the notice in Exhibit A in each file of the Source
    +     Code.  If it is not possible to put such notice in a particular Source
    +     Code file due to its structure, then You must include such notice in a
    +     location (such as a relevant directory) where a user would be likely
    +     to look for such a notice.  If You created one or more Modification(s)
    +     You may add your name as a Contributor to the notice described in
    +     Exhibit A.  You must also duplicate this License in any documentation
    +     for the Source Code where You describe recipients' rights or ownership
    +     rights relating to Covered Code.  You may choose to offer, and to
    +     charge a fee for, warranty, support, indemnity or liability
    +     obligations to one or more recipients of Covered Code. However, You
    +     may do so only on Your own behalf, and not on behalf of the Initial
    +     Developer or any Contributor. You must make it absolutely clear than
    +     any such warranty, support, indemnity or liability obligation is
    +     offered by You alone, and You hereby agree to indemnify the Initial
    +     Developer and every Contributor for any liability incurred by the
    +     Initial Developer or such Contributor as a result of warranty,
    +     support, indemnity or liability terms You offer.
    +
    +     3.6. Distribution of Executable Versions.
    +     You may distribute Covered Code in Executable form only if the
    +     requirements of Section 3.1-3.5 have been met for that Covered Code,
    +     and if You include a notice stating that the Source Code version of
    +     the Covered Code is available under the terms of this License,
    +     including a description of how and where You have fulfilled the
    +     obligations of Section 3.2. The notice must be conspicuously included
    +     in any notice in an Executable version, related documentation or
    +     collateral in which You describe recipients' rights relating to the
    +     Covered Code. You may distribute the Executable version of Covered
    +     Code or ownership rights under a license of Your choice, which may
    +     contain terms different from this License, provided that You are in
    +     compliance with the terms of this License and that the license for the
    +     Executable version does not attempt to limit or alter the recipient's
    +     rights in the Source Code version from the rights set forth in this
    +     License. If You distribute the Executable version under a different
    +     license You must make it absolutely clear that any terms which differ
    +     from this License are offered by You alone, not by the Initial
    +     Developer or any Contributor. You hereby agree to indemnify the
    +     Initial Developer and every Contributor for any liability incurred by
    +     the Initial Developer or such Contributor as a result of any such
    +     terms You offer.
    +
    +     3.7. Larger Works.
    +     You may create a Larger Work by combining Covered Code with other code
    +     not governed by the terms of this License and distribute the Larger
    +     Work as a single product. In such a case, You must make sure the
    +     requirements of this License are fulfilled for the Covered Code.
    +
    +4. Inability to Comply Due to Statute or Regulation.
    +
    +     If it is impossible for You to comply with any of the terms of this
    +     License with respect to some or all of the Covered Code due to
    +     statute, judicial order, or regulation then You must: (a) comply with
    +     the terms of this License to the maximum extent possible; and (b)
    +     describe the limitations and the code they affect. Such description
    +     must be included in the LEGAL file described in Section 3.4 and must
    +     be included with all distributions of the Source Code. Except to the
    +     extent prohibited by statute or regulation, such description must be
    +     sufficiently detailed for a recipient of ordinary skill to be able to
    +     understand it.
    +
    +5. Application of this License.
    +
    +     This License applies to code to which the Initial Developer has
    +     attached the notice in Exhibit A and to related Covered Code.
    +
    +6. Versions of the License.
    +
    +     6.1. New Versions.
    +     Netscape Communications Corporation ("Netscape") may publish revised
    +     and/or new versions of the License from time to time. Each version
    +     will be given a distinguishing version number.
    +
    +     6.2. Effect of New Versions.
    +     Once Covered Code has been published under a particular version of the
    +     License, You may always continue to use it under the terms of that
    +     version. You may also choose to use such Covered Code under the terms
    +     of any subsequent version of the License published by Netscape. No one
    +     other than Netscape has the right to modify the terms applicable to
    +     Covered Code created under this License.
    +
    +     6.3. Derivative Works.
    +     If You create or use a modified version of this License (which you may
    +     only do in order to apply it to code which is not already Covered Code
    +     governed by this License), You must (a) rename Your license so that
    +     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
    +     "MPL", "NPL" or any confusingly similar phrase do not appear in your
    +     license (except to note that your license differs from this License)
    +     and (b) otherwise make it clear that Your version of the license
    +     contains terms which differ from the Mozilla Public License and
    +     Netscape Public License. (Filling in the name of the Initial
    +     Developer, Original Code or Contributor in the notice described in
    +     Exhibit A shall not of themselves be deemed to be modifications of
    +     this License.)
    +
    +7. DISCLAIMER OF WARRANTY.
    +
    +     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
    +     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
    +     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
    +     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
    +     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
    +     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
    +     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
    +     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
    +     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
    +     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
    +
    +8. TERMINATION.
    +
    +     8.1.  This License and the rights granted hereunder will terminate
    +     automatically if You fail to comply with terms herein and fail to cure
    +     such breach within 30 days of becoming aware of the breach. All
    +     sublicenses to the Covered Code which are properly granted shall
    +     survive any termination of this License. Provisions which, by their
    +     nature, must remain in effect beyond the termination of this License
    +     shall survive.
    +
    +     8.2.  If You initiate litigation by asserting a patent infringement
    +     claim (excluding declatory judgment actions) against Initial Developer
    +     or a Contributor (the Initial Developer or Contributor against whom
    +     You file such action is referred to as "Participant")  alleging that:
    +
    +     (a)  such Participant's Contributor Version directly or indirectly
    +     infringes any patent, then any and all rights granted by such
    +     Participant to You under Sections 2.1 and/or 2.2 of this License
    +     shall, upon 60 days notice from Participant terminate prospectively,
    +     unless if within 60 days after receipt of notice You either: (i)
    +     agree in writing to pay Participant a mutually agreeable reasonable
    +     royalty for Your past and future use of Modifications made by such
    +     Participant, or (ii) withdraw Your litigation claim with respect to
    +     the Contributor Version against such Participant.  If within 60 days
    +     of notice, a reasonable royalty and payment arrangement are not
    +     mutually agreed upon in writing by the parties or the litigation claim
    +     is not withdrawn, the rights granted by Participant to You under
    +     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
    +     the 60 day notice period specified above.
    +
    +     (b)  any software, hardware, or device, other than such Participant's
    +     Contributor Version, directly or indirectly infringes any patent, then
    +     any rights granted to You by such Participant under Sections 2.1(b)
    +     and 2.2(b) are revoked effective as of the date You first made, used,
    +     sold, distributed, or had made, Modifications made by that
    +     Participant.
    +
    +     8.3.  If You assert a patent infringement claim against Participant
    +     alleging that such Participant's Contributor Version directly or
    +     indirectly infringes any patent where such claim is resolved (such as
    +     by license or settlement) prior to the initiation of patent
    +     infringement litigation, then the reasonable value of the licenses
    +     granted by such Participant under Sections 2.1 or 2.2 shall be taken
    +     into account in determining the amount or value of any payment or
    +     license.
    +
    +     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
    +     all end user license agreements (excluding distributors and resellers)
    +     which have been validly granted by You or any distributor hereunder
    +     prior to termination shall survive termination.
    +
    +9. LIMITATION OF LIABILITY.
    +
    +     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
    +     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
    +     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
    +     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
    +     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
    +     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
    +     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
    +     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
    +     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
    +     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
    +     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
    +     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
    +     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
    +     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
    +
    +10. U.S. GOVERNMENT END USERS.
    +
    +     The Covered Code is a "commercial item," as that term is defined in
    +     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
    +     software" and "commercial computer software documentation," as such
    +     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
    +     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
    +     all U.S. Government End Users acquire Covered Code with only those
    +     rights set forth herein.
    +
    +11. MISCELLANEOUS.
    +
    +     This License represents the complete agreement concerning subject
    +     matter hereof. If any provision of this License is held to be
    +     unenforceable, such provision shall be reformed only to the extent
    +     necessary to make it enforceable. This License shall be governed by
    +     California law provisions (except to the extent applicable law, if
    +     any, provides otherwise), excluding its conflict-of-law provisions.
    +     With respect to disputes in which at least one party is a citizen of,
    +     or an entity chartered or registered to do business in the United
    +     States of America, any litigation relating to this License shall be
    +     subject to the jurisdiction of the Federal Courts of the Northern
    +     District of California, with venue lying in Santa Clara County,
    +     California, with the losing party responsible for costs, including
    +     without limitation, court costs and reasonable attorneys' fees and
    +     expenses. The application of the United Nations Convention on
    +     Contracts for the International Sale of Goods is expressly excluded.
    +     Any law or regulation which provides that the language of a contract
    +     shall be construed against the drafter shall not apply to this
    +     License.
    +
    +12. RESPONSIBILITY FOR CLAIMS.
    +
    +     As between Initial Developer and the Contributors, each party is
    +     responsible for claims and damages arising, directly or indirectly,
    +     out of its utilization of rights under this License and You agree to
    +     work with Initial Developer and Contributors to distribute such
    +     responsibility on an equitable basis. Nothing herein is intended or
    +     shall be deemed to constitute any admission of liability.
    +
    +13. MULTIPLE-LICENSED CODE.
    +
    +     Initial Developer may designate portions of the Covered Code as
    +     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
    +     Developer permits you to utilize portions of the Covered Code under
    +     Your choice of the NPL or the alternative licenses, if any, specified
    +     by the Initial Developer in the file described in Exhibit A.
    +
    +EXHIBIT A -Mozilla Public License.
    +
    +     ``The contents of this file are subject to the Mozilla Public License
    +     Version 1.1 (the "License"); you may not use this file except in
    +     compliance with the License. You may obtain a copy of the License at
    +     http://www.mozilla.org/MPL/
    +
    +     Software distributed under the License is distributed on an "AS IS"
    +     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
    +     License for the specific language governing rights and limitations
    +     under the License.
    +
    +     The Original Code is ______________________________________.
    +
    +     The Initial Developer of the Original Code is ________________________.
    +     Portions created by ______________________ are Copyright (C) ______
    +     _______________________. All Rights Reserved.
    +
    +     Contributor(s): ______________________________________.
    +
    +     Alternatively, the contents of this file may be used under the terms
    +     of the _____ license (the  "[___] License"), in which case the
    +     provisions of [______] License are applicable instead of those
    +     above.  If you wish to allow use of your version of this file only
    +     under the terms of the [____] License and not to allow others to use
    +     your version of this file under the MPL, indicate your decision by
    +     deleting  the provisions above and replace  them with the notice and
    +     other provisions required by the [___] License.  If you do not delete
    +     the provisions above, a recipient may use your version of this file
    +     under either the MPL or the [___] License."
    +
    +     [NOTE: The text of this Exhibit A may differ slightly from the text of
    +     the notices in the Source Code files of the Original Code. You should
    +     use the text of this Exhibit A rather than the text found in the
    +     Original Code Source Code for Your Modifications.]
    diff --git a/static/ckeditor/README.md b/static/ckeditor/README.md
    new file mode 100644
    index 0000000..378c267
    --- /dev/null
    +++ b/static/ckeditor/README.md
    @@ -0,0 +1,39 @@
    +CKEditor 4
    +==========
    +
    +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.  
    +http://ckeditor.com - See LICENSE.md for license information.
    +
    +CKEditor is a text editor to be used inside web pages. It's not a replacement
    +for desktop text editors like Word or OpenOffice, but a component to be used as
    +part of web applications and websites.
    +
    +## Documentation
    +
    +The full editor documentation is available online at the following address:
    +http://docs.ckeditor.com
    +
    +## Installation
    +
    +Installing CKEditor is an easy task. Just follow these simple steps:
    +
    + 1. **Download** the latest version from the CKEditor website:
    +    http://ckeditor.com. You should have already completed this step, but be
    +    sure you have the very latest version.
    + 2. **Extract** (decompress) the downloaded file into the root of your website.
    +
    +**Note:** CKEditor is by default installed in the `ckeditor` folder. You can
    +place the files in whichever you want though.
    +
    +## Checking Your Installation
    +
    +The editor comes with a few sample pages that can be used to verify that
    +installation proceeded properly. Take a look at the `samples` directory.
    +
    +To test your installation, just call the following page at your website:
    +
    +	http:////samples/index.html
    +
    +For example:
    +
    +	http://www.example.com/ckeditor/samples/index.html
    diff --git a/static/ckeditor/build-config.js b/static/ckeditor/build-config.js
    new file mode 100644
    index 0000000..02d94c7
    --- /dev/null
    +++ b/static/ckeditor/build-config.js
    @@ -0,0 +1,139 @@
    +
    +/**
    + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
    + * For licensing, see LICENSE.html or http://ckeditor.com/license
    + */
    +
    +/**
    + * This file was added automatically by CKEditor builder.
    + * You may re-use it at any time at http://ckeditor.com/builder to build CKEditor again.
    + * 
    + * NOTE: 
    + *    This file is not used by CKEditor, you may remove it.
    + *    Changing this file will not change your CKEditor configuration.
    + */
    +
    +var CKBUILDER_CONFIG = {
    +	skin: 'moono',
    +	preset: 'standard',
    +	ignore: [
    +		'dev',
    +		'.gitignore',
    +		'.gitattributes',
    +		'README.md',
    +		'.mailmap'
    +	],
    +	plugins : {
    +		'about' : 1,
    +		'a11yhelp' : 1,
    +		'basicstyles' : 1,
    +		'blockquote' : 1,
    +		'clipboard' : 1,
    +		'contextmenu' : 1,
    +		'resize' : 1,
    +		'toolbar' : 1,
    +		'elementspath' : 1,
    +		'enterkey' : 1,
    +		'entities' : 1,
    +		'filebrowser' : 1,
    +		'floatingspace' : 1,
    +		'format' : 1,
    +		'htmlwriter' : 1,
    +		'horizontalrule' : 1,
    +		'wysiwygarea' : 1,
    +		'image' : 1,
    +		'indent' : 1,
    +		'link' : 1,
    +		'list' : 1,
    +		'magicline' : 1,
    +		'maximize' : 1,
    +		'pastetext' : 1,
    +		'pastefromword' : 1,
    +		'removeformat' : 1,
    +		'sourcearea' : 1,
    +		'specialchar' : 1,
    +		'scayt' : 1,
    +		'stylescombo' : 1,
    +		'tab' : 1,
    +		'table' : 1,
    +		'tabletools' : 1,
    +		'undo' : 1,
    +		'wsc' : 1,
    +		'dialog' : 1,
    +		'dialogui' : 1,
    +		'menu' : 1,
    +		'floatpanel' : 1,
    +		'panel' : 1,
    +		'button' : 1,
    +		'popup' : 1,
    +		'richcombo' : 1,
    +		'listblock' : 1,
    +		'fakeobjects' : 1,
    +		'menubutton' : 1
    +	},
    +	languages : {
    +		'af' : 1,
    +		'sq' : 1,
    +		'ar' : 1,
    +		'eu' : 1,
    +		'bn' : 1,
    +		'bs' : 1,
    +		'bg' : 1,
    +		'ca' : 1,
    +		'zh-cn' : 1,
    +		'zh' : 1,
    +		'hr' : 1,
    +		'cs' : 1,
    +		'da' : 1,
    +		'nl' : 1,
    +		'en' : 1,
    +		'en-au' : 1,
    +		'en-ca' : 1,
    +		'en-gb' : 1,
    +		'eo' : 1,
    +		'et' : 1,
    +		'fo' : 1,
    +		'fi' : 1,
    +		'fr' : 1,
    +		'fr-ca' : 1,
    +		'gl' : 1,
    +		'ka' : 1,
    +		'de' : 1,
    +		'el' : 1,
    +		'gu' : 1,
    +		'he' : 1,
    +		'hi' : 1,
    +		'hu' : 1,
    +		'is' : 1,
    +		'it' : 1,
    +		'ja' : 1,
    +		'km' : 1,
    +		'ko' : 1,
    +		'ku' : 1,
    +		'lv' : 1,
    +		'lt' : 1,
    +		'mk' : 1,
    +		'ms' : 1,
    +		'mn' : 1,
    +		'no' : 1,
    +		'nb' : 1,
    +		'fa' : 1,
    +		'pl' : 1,
    +		'pt-br' : 1,
    +		'pt' : 1,
    +		'ro' : 1,
    +		'ru' : 1,
    +		'sr' : 1,
    +		'sr-latn' : 1,
    +		'sk' : 1,
    +		'sl' : 1,
    +		'es' : 1,
    +		'sv' : 1,
    +		'th' : 1,
    +		'tr' : 1,
    +		'ug' : 1,
    +		'uk' : 1,
    +		'vi' : 1,
    +		'cy' : 1,
    +	}
    +};
    \ No newline at end of file
    diff --git a/static/ckeditor/ckeditor.js b/static/ckeditor/ckeditor.js
    new file mode 100644
    index 0000000..7ee976f
    --- /dev/null
    +++ b/static/ckeditor/ckeditor.js
    @@ -0,0 +1,851 @@
    +/*
    +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
    +For licensing, see LICENSE.html or http://ckeditor.com/license
    +*/
    +(function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;window.CKEDITOR||(window.CKEDITOR=function(){var a={timestamp:"D3NA",version:"4.1.1",revision:"5a2a7e3",rnd:Math.floor(900*Math.random())+100,_:{pending:[]},status:"unloaded",basePath:function(){var b=window.CKEDITOR_BASEPATH||"";if(!b)for(var a=document.getElementsByTagName("script"),d=0;d=0;p--)if(n[p].priority<=l){n.splice(p+1,0,i);return{removeListener:m}}n.unshift(i)}return{removeListener:m}},
    +once:function(){var b=arguments[1];arguments[1]=function(a){a.removeListener();return b.apply(this,arguments)};return this.on.apply(this,arguments)},capture:function(){CKEDITOR.event.useCapture=1;var b=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return b},fire:function(){var b=0,a=function(){b=1},d=0,j=function(){d=1};return function(l,i,m){var n=c(this)[l],l=b,r=d;b=d=0;if(n){var p=n.listeners;if(p.length)for(var p=p.slice(0),g,h=0;h=0&&d.listeners.splice(j,1)}},removeAllListeners:function(){var b=c(this),a;for(a in b)delete b[a]},hasListeners:function(b){return(b=c(this)[b])&&b.listeners.length>0}}}());
    +CKEDITOR.editor||(CKEDITOR.editor=function(){CKEDITOR._.pending.push([this,arguments]);CKEDITOR.event.call(this)},CKEDITOR.editor.prototype.fire=function(a,c){a in{instanceReady:1,loaded:1}&&(this[a]=true);return CKEDITOR.event.prototype.fire.call(this,a,c,this)},CKEDITOR.editor.prototype.fireOnce=function(a,c){a in{instanceReady:1,loaded:1}&&(this[a]=true);return CKEDITOR.event.prototype.fireOnce.call(this,a,c,this)},CKEDITOR.event.implementOn(CKEDITOR.editor.prototype));
    +CKEDITOR.env||(CKEDITOR.env=function(){var a=navigator.userAgent.toLowerCase(),c=window.opera,b={ie:eval("/*@cc_on!@*/false"),opera:!!c&&c.version,webkit:a.indexOf(" applewebkit/")>-1,air:a.indexOf(" adobeair/")>-1,mac:a.indexOf("macintosh")>-1,quirks:document.compatMode=="BackCompat",mobile:a.indexOf("mobile")>-1,iOS:/(ipad|iphone|ipod)/.test(a),isCustomDomain:function(){if(!this.ie)return false;var b=document.domain,a=window.location.hostname;return b!=a&&b!="["+a+"]"},secure:location.protocol==
    +"https:"};b.gecko=navigator.product=="Gecko"&&!b.webkit&&!b.opera;if(b.webkit)a.indexOf("chrome")>-1?b.chrome=true:b.safari=true;var f=0;if(b.ie){f=b.quirks||!document.documentMode?parseFloat(a.match(/msie (\d+)/)[1]):document.documentMode;b.ie9Compat=f==9;b.ie8Compat=f==8;b.ie7Compat=f==7;b.ie6Compat=f<7||b.quirks}if(b.gecko){var e=a.match(/rv:([\d\.]+)/);if(e){e=e[1].split(".");f=e[0]*1E4+(e[1]||0)*100+(e[2]||0)*1}}b.opera&&(f=parseFloat(c.version()));b.air&&(f=parseFloat(a.match(/ adobeair\/(\d+)/)[1]));
    +b.webkit&&(f=parseFloat(a.match(/ applewebkit\/(\d+)/)[1]));b.version=f;b.isCompatible=b.iOS&&f>=534||!b.mobile&&(b.ie&&f>6||b.gecko&&f>=10801||b.opera&&f>=9.5||b.air&&f>=1||b.webkit&&f>=522||false);b.cssClass="cke_browser_"+(b.ie?"ie":b.gecko?"gecko":b.opera?"opera":b.webkit?"webkit":"unknown");if(b.quirks)b.cssClass=b.cssClass+" cke_browser_quirks";if(b.ie){b.cssClass=b.cssClass+(" cke_browser_ie"+(b.quirks||b.version<7?"6":b.version));if(b.quirks)b.cssClass=b.cssClass+" cke_browser_iequirks"}if(b.gecko)if(f<
    +10900)b.cssClass=b.cssClass+" cke_browser_gecko18";else if(f<=11E3)b.cssClass=b.cssClass+" cke_browser_gecko19";if(b.air)b.cssClass=b.cssClass+" cke_browser_air";return b}());
    +"unloaded"==CKEDITOR.status&&function(){CKEDITOR.event.implementOn(CKEDITOR);CKEDITOR.loadFullCore=function(){if(CKEDITOR.status!="basic_ready")CKEDITOR.loadFullCore._load=1;else{delete CKEDITOR.loadFullCore;var a=document.createElement("script");a.type="text/javascript";a.src=CKEDITOR.basePath+"ckeditor.js";document.getElementsByTagName("head")[0].appendChild(a)}};CKEDITOR.loadFullCoreTimeout=0;CKEDITOR.add=function(a){(this._.pending||(this._.pending=[])).push(a)};(function(){CKEDITOR.domReady(function(){var a=
    +CKEDITOR.loadFullCore,c=CKEDITOR.loadFullCoreTimeout;if(a){CKEDITOR.status="basic_ready";a&&a._load?a():c&&setTimeout(function(){CKEDITOR.loadFullCore&&CKEDITOR.loadFullCore()},c*1E3)}})})();CKEDITOR.status="basic_loaded"}();CKEDITOR.dom={};
    +(function(){var a=[],c=CKEDITOR.env.gecko?"-moz-":CKEDITOR.env.webkit?"-webkit-":CKEDITOR.env.opera?"-o-":CKEDITOR.env.ie?"-ms-":"";CKEDITOR.on("reset",function(){a=[]});CKEDITOR.tools={arrayCompare:function(b,a){if(!b&&!a)return true;if(!b||!a||b.length!=a.length)return false;for(var e=0;e"+a+""):e.push('');return e.join("")},htmlEncode:function(b){return(""+b).replace(/&/g,"&").replace(/>/g,">").replace(//g,">")},getNextNumber:function(){var b=0;return function(){return++b}}(),getNextId:function(){return"cke_"+this.getNextNumber()},override:function(b,a){var e=a(b);e.prototype=b.prototype;return e},setTimeout:function(b,a,e,d,c){c||(c=window);e||(e=c);return c.setTimeout(function(){d?b.apply(e,[].concat(d)):b.apply(e)},a||0)},trim:function(){var b=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(a){return a.replace(b,"")}}(),ltrim:function(){var b=/^[ \t\n\r]+/g;
    +return function(a){return a.replace(b,"")}}(),rtrim:function(){var b=/[ \t\n\r]+$/g;return function(a){return a.replace(b,"")}}(),indexOf:function(b,a){if(typeof a=="function")for(var e=0,d=b.length;e=0?b[e]:null},bind:function(b,a){return function(){return b.apply(a,arguments)}},createClass:function(b){var a=b.$,
    +e=b.base,d=b.privates||b._,c=b.proto,b=b.statics;!a&&(a=function(){e&&this.base.apply(this,arguments)});if(d)var l=a,a=function(){var b=this._||(this._={}),a;for(a in d){var f=d[a];b[a]=typeof f=="function"?CKEDITOR.tools.bind(f,this):f}l.apply(this,arguments)};if(e){a.prototype=this.prototypedCopy(e.prototype);a.prototype.constructor=a;a.base=e;a.baseProto=e.prototype;a.prototype.base=function(){this.base=e.prototype.base;e.apply(this,arguments);this.base=arguments.callee}}c&&this.extend(a.prototype,
    +c,true);b&&this.extend(a,b,true);return a},addFunction:function(b,f){return a.push(function(){return b.apply(f||this,arguments)})-1},removeFunction:function(b){a[b]=null},callFunction:function(b){var f=a[b];return f&&f.apply(window,Array.prototype.slice.call(arguments,1))},cssLength:function(){var b=/^-?\d+\.?\d*px$/,a;return function(e){a=CKEDITOR.tools.trim(e+"")+"px";return b.test(a)?a:e||""}}(),convertToPx:function(){var b;return function(a){if(!b){b=CKEDITOR.dom.element.createFromHtml('
    ', +CKEDITOR.document);CKEDITOR.document.getBody().append(b)}if(!/%$/.test(a)){b.setStyle("width",a);return b.$.clientWidth}return a}}(),repeat:function(b,a){return Array(a+1).join(b)},tryThese:function(){for(var b,a=0,e=arguments.length;a8)&&c)a=c+":"+a;return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(a))},getHead:function(){var a=this.$.getElementsByTagName("head")[0];return a= +a?new CKEDITOR.dom.element(a):this.getDocumentElement().append(new CKEDITOR.dom.element("head"),true)},getBody:function(){return new CKEDITOR.dom.element(this.$.body)},getDocumentElement:function(){return new CKEDITOR.dom.element(this.$.documentElement)},getWindow:function(){var a=new CKEDITOR.dom.window(this.$.parentWindow||this.$.defaultView);return(this.getWindow=function(){return a})()},write:function(a){this.$.open("text/html","replace");CKEDITOR.env.isCustomDomain()&&(this.$.domain=document.domain); +this.$.write(a);this.$.close()}});CKEDITOR.dom.nodeList=function(a){this.$=a};CKEDITOR.dom.nodeList.prototype={count:function(){return this.$.length},getItem:function(a){if(a<0||a>=this.$.length)return null;return(a=this.$[a])?new CKEDITOR.dom.node(a):null}};CKEDITOR.dom.element=function(a,c){typeof a=="string"&&(a=(c?c.$:document).createElement(a));CKEDITOR.dom.domObject.call(this,a)}; +CKEDITOR.dom.element.get=function(a){return(a=typeof a=="string"?document.getElementById(a)||document.getElementsByName(a)[0]:a)&&(a.$?a:new CKEDITOR.dom.element(a))};CKEDITOR.dom.element.prototype=new CKEDITOR.dom.node;CKEDITOR.dom.element.createFromHtml=function(a,c){var b=new CKEDITOR.dom.element("div",c);b.setHtml(a);return b.getFirst().remove()}; +CKEDITOR.dom.element.setMarker=function(a,c,b,f){var e=c.getCustomData("list_marker_id")||c.setCustomData("list_marker_id",CKEDITOR.tools.getNextNumber()).getCustomData("list_marker_id"),d=c.getCustomData("list_marker_names")||c.setCustomData("list_marker_names",{}).getCustomData("list_marker_names");a[e]=c;d[b]=1;return c.setCustomData(b,f)};CKEDITOR.dom.element.clearAllMarkers=function(a){for(var c in a)CKEDITOR.dom.element.clearMarkers(a,a[c],1)}; +CKEDITOR.dom.element.clearMarkers=function(a,c,b){var f=c.getCustomData("list_marker_names"),e=c.getCustomData("list_marker_id"),d;for(d in f)c.removeCustomData(d);c.removeCustomData("list_marker_names");if(b){c.removeCustomData("list_marker_id");delete a[e]}}; +(function(){function a(b){for(var a=0,e=0,d=c[b].length;e]*>/g, +""):b},getOuterHtml:function(){if(this.$.outerHTML)return this.$.outerHTML.replace(/<\?[^>]*>/,"");var b=this.$.ownerDocument.createElement("div");b.appendChild(this.$.cloneNode(true));return b.innerHTML},getClientRect:function(){var b=CKEDITOR.tools.extend({},this.$.getBoundingClientRect());!b.width&&(b.width=b.right-b.left);!b.height&&(b.height=b.bottom-b.top);return b},setHtml:function(){var b=function(b){return this.$.innerHTML=b};return CKEDITOR.env.ie&&CKEDITOR.env.version<9?function(b){try{return this.$.innerHTML= +b}catch(a){this.$.innerHTML="";var c=new CKEDITOR.dom.element("body",this.getDocument());c.$.innerHTML=b;for(c=c.getChildren();c.count();)this.append(c.getItem(0));return b}}:b}(),setText:function(b){CKEDITOR.dom.element.prototype.setText=this.$.innerText!=void 0?function(b){return this.$.innerText=b}:function(b){return this.$.textContent=b};return this.setText(b)},getAttribute:function(){var b=function(b){return this.$.getAttribute(b,2)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)? +function(b){switch(b){case "class":b="className";break;case "http-equiv":b="httpEquiv";break;case "name":return this.$.name;case "tabindex":b=this.$.getAttribute(b,2);b!==0&&this.$.tabIndex===0&&(b=null);return b;case "checked":b=this.$.attributes.getNamedItem(b);return(b.specified?b.nodeValue:this.$.checked)?"checked":null;case "hspace":case "value":return this.$[b];case "style":return this.$.style.cssText;case "contenteditable":case "contentEditable":return this.$.attributes.getNamedItem("contentEditable").specified? +this.$.getAttribute("contentEditable"):null}return this.$.getAttribute(b,2)}:b}(),getChildren:function(){return new CKEDITOR.dom.nodeList(this.$.childNodes)},getComputedStyle:CKEDITOR.env.ie?function(b){return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(b)]}:function(b){var a=this.getWindow().$.getComputedStyle(this.$,null);return a?a.getPropertyValue(b):""},getDtd:function(){var b=CKEDITOR.dtd[this.getName()];this.getDtd=function(){return b};return b},getElementsByTag:CKEDITOR.dom.document.prototype.getElementsByTag, +getTabIndex:CKEDITOR.env.ie?function(){var b=this.$.tabIndex;b===0&&(!CKEDITOR.dtd.$tabIndex[this.getName()]&&parseInt(this.getAttribute("tabindex"),10)!==0)&&(b=-1);return b}:CKEDITOR.env.webkit?function(){var b=this.$.tabIndex;if(b==void 0){b=parseInt(this.getAttribute("tabindex"),10);isNaN(b)&&(b=-1)}return b}:function(){return this.$.tabIndex},getText:function(){return this.$.textContent||this.$.innerText||""},getWindow:function(){return this.getDocument().getWindow()},getId:function(){return this.$.id|| +null},getNameAtt:function(){return this.$.name||null},getName:function(){var b=this.$.nodeName.toLowerCase();if(CKEDITOR.env.ie&&!(document.documentMode>8)){var a=this.$.scopeName;a!="HTML"&&(b=a.toLowerCase()+":"+b)}return(this.getName=function(){return b})()},getValue:function(){return this.$.value},getFirst:function(b){var a=this.$.firstChild;(a=a&&new CKEDITOR.dom.node(a))&&(b&&!b(a))&&(a=a.getNext(b));return a},getLast:function(b){var a=this.$.lastChild;(a=a&&new CKEDITOR.dom.node(a))&&(b&&!b(a))&& +(a=a.getPrevious(b));return a},getStyle:function(b){return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(b)]},is:function(){var b=this.getName();if(typeof arguments[0]=="object")return!!arguments[0][b];for(var a=0;a0&&(a>2||!c[b[0].nodeName]||a==2&&!c[b[1].nodeName])},hasAttribute:function(){function b(b){b=this.$.attributes.getNamedItem(b); +return!(!b||!b.specified)}return CKEDITOR.env.ie&&CKEDITOR.env.version<8?function(a){return a=="name"?!!this.$.name:b.call(this,a)}:b}(),hide:function(){this.setStyle("display","none")},moveChildren:function(b,a){var c=this.$,b=b.$;if(c!=b){var d;if(a)for(;d=c.lastChild;)b.insertBefore(c.removeChild(d),b.firstChild);else for(;d=c.firstChild;)b.appendChild(c.removeChild(d))}},mergeSiblings:function(){function b(b,a,c){if(a&&a.type==CKEDITOR.NODE_ELEMENT){for(var j=[];a.data("cke-bookmark")||a.isEmptyInlineRemoveable();){j.push(a); +a=c?a.getNext():a.getPrevious();if(!a||a.type!=CKEDITOR.NODE_ELEMENT)return}if(b.isIdentical(a)){for(var l=c?b.getLast():b.getFirst();j.length;)j.shift().move(b,!c);a.moveChildren(b,!c);a.remove();l&&l.type==CKEDITOR.NODE_ELEMENT&&l.mergeSiblings()}}}return function(a){if(a===false||CKEDITOR.dtd.$removeEmpty[this.getName()]||this.is("a")){b(this,this.getNext(),true);b(this,this.getPrevious())}}}(),show:function(){this.setStyles({display:"",visibility:""})},setAttribute:function(){var b=function(b, +a){this.$.setAttribute(b,a);return this};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?function(a,c){a=="class"?this.$.className=c:a=="style"?this.$.style.cssText=c:a=="tabindex"?this.$.tabIndex=c:a=="checked"?this.$.checked=c:a=="contenteditable"?b.call(this,"contentEditable",c):b.apply(this,arguments);return this}:CKEDITOR.env.ie8Compat&&CKEDITOR.env.secure?function(a,c){if(a=="src"&&c.match(/^http:\/\//))try{b.apply(this,arguments)}catch(d){}else b.apply(this,arguments); +return this}:b}(),setAttributes:function(b){for(var a in b)this.setAttribute(a,b[a]);return this},setValue:function(b){this.$.value=b;return this},removeAttribute:function(){var b=function(b){this.$.removeAttribute(b)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?function(b){b=="class"?b="className":b=="tabindex"?b="tabIndex":b=="contenteditable"&&(b="contentEditable");this.$.removeAttribute(b)}:b}(),removeAttributes:function(b){if(CKEDITOR.tools.isArray(b))for(var a=0;a< +b.length;a++)this.removeAttribute(b[a]);else for(a in b)b.hasOwnProperty(a)&&this.removeAttribute(a)},removeStyle:function(b){var a=this.$.style;if(!a.removeProperty&&(b=="border"||b=="margin"||b=="padding")){var c=["top","left","right","bottom"],d;b=="border"&&(d=["color","style","width"]);for(var a=[],j=0;j=100?"":"progid:DXImageTransform.Microsoft.Alpha(opacity="+b+")")}else this.setStyle("opacity",b)},unselectable:function(){this.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select", +"none"));if(CKEDITOR.env.ie||CKEDITOR.env.opera){this.setAttribute("unselectable","on");for(var b,a=this.getElementsByTag("*"),c=0,d=a.count();c0)m(0,a===true?i:a===false?j:i<0?i:j);if(c&&(l<0||d>0))m(l<0?l:d,0)},setState:function(b,a,c){a=a||"cke";switch(b){case CKEDITOR.TRISTATE_ON:this.addClass(a+"_on");this.removeClass(a+"_off");this.removeClass(a+"_disabled");c&&this.setAttribute("aria-pressed",true);c&&this.removeAttribute("aria-disabled"); +break;case CKEDITOR.TRISTATE_DISABLED:this.addClass(a+"_disabled");this.removeClass(a+"_off");this.removeClass(a+"_on");c&&this.setAttribute("aria-disabled",true);c&&this.removeAttribute("aria-pressed");break;default:this.addClass(a+"_off");this.removeClass(a+"_on");this.removeClass(a+"_disabled");c&&this.removeAttribute("aria-pressed");c&&this.removeAttribute("aria-disabled")}},getFrameDocument:function(){var b=this.$;try{b.contentWindow.document}catch(a){b.src=b.src}return b&&new CKEDITOR.dom.document(b.contentWindow.document)}, +copyAttributes:function(b,a){for(var c=this.$.attributes,a=a||{},d=0;d=0&&a0&&c;)c=b(c,a.shift());else c=b(c,a);return c?new CKEDITOR.dom.node(c):null}}(),getChildCount:function(){return this.$.childNodes.length},disableContextMenu:function(){this.on("contextmenu", +function(b){b.data.getTarget().hasClass("cke_enable_context_menu")||b.data.preventDefault()})},getDirection:function(b){return b?this.getComputedStyle("direction")||this.getDirection()||this.getParent()&&this.getParent().getDirection(1)||this.getDocument().$.dir||"ltr":this.getStyle("direction")||this.getAttribute("dir")},data:function(b,a){b="data-"+b;if(a===void 0)return this.getAttribute(b);a===false?this.removeAttribute(b):this.setAttribute(b,a);return null},getEditor:function(){var b=CKEDITOR.instances, +a,c;for(a in b){c=b[a];if(c.element.equals(this)&&c.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO)return c}return null}});var c={width:["border-left-width","border-right-width","padding-left","padding-right"],height:["border-top-width","border-bottom-width","padding-top","padding-bottom"]};CKEDITOR.dom.element.prototype.setSize=function(b,c,e){if(typeof c=="number"){if(e&&(!CKEDITOR.env.ie||!CKEDITOR.env.quirks))c=c-a.call(this,b);this.setStyle(b,c+"px")}};CKEDITOR.dom.element.prototype.getSize=function(b, +c){var e=Math.max(this.$["offset"+CKEDITOR.tools.capitalize(b)],this.$["client"+CKEDITOR.tools.capitalize(b)])||0;c&&(e=e-a.call(this,b));return e}})();CKEDITOR.dom.documentFragment=function(a){a=a||CKEDITOR.document;this.$=a.type==CKEDITOR.NODE_DOCUMENT?a.$.createDocumentFragment():a}; +CKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype,CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,insertAfterNode:function(a){a=a.$;a.parentNode.insertBefore(this.$,a.nextSibling)}},!0,{append:1,appendBogus:1,getFirst:1,getLast:1,getParent:1,getNext:1,getPrevious:1,appendTo:1,moveChildren:1,insertBefore:1,insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1,getChildCount:1,getChild:1,getChildren:1}); +(function(){function a(a,b){var c=this.range;if(this._.end)return null;if(!this._.start){this._.start=1;if(c.collapsed){this.end();return null}c.optimize()}var d,n=c.startContainer;d=c.endContainer;var r=c.startOffset,p=c.endOffset,g,h=this.guard,u=this.type,f=a?"getPreviousSourceNode":"getNextSourceNode";if(!a&&!this._.guardLTR){var k=d.type==CKEDITOR.NODE_ELEMENT?d:d.getParent(),e=d.type==CKEDITOR.NODE_ELEMENT?d.getChild(p):d.getNext();this._.guardLTR=function(a,b){return(!b||!k.equals(a))&&(!e|| +!a.equals(e))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}if(a&&!this._.guardRTL){var F=n.type==CKEDITOR.NODE_ELEMENT?n:n.getParent(),D=n.type==CKEDITOR.NODE_ELEMENT?r?n.getChild(r-1):null:n.getPrevious();this._.guardRTL=function(a,b){return(!b||!F.equals(a))&&(!D||!a.equals(D))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}var B=a?this._.guardRTL:this._.guardLTR;g=h?function(a,b){return B(a,b)===false?false:h(a,b)}:B;if(this.current)d=this.current[f](false,u,g);else{if(a)d.type== +CKEDITOR.NODE_ELEMENT&&(d=p>0?d.getChild(p-1):g(d,true)===false?null:d.getPreviousSourceNode(true,u,g));else{d=n;if(d.type==CKEDITOR.NODE_ELEMENT&&!(d=d.getChild(r)))d=g(n,true)===false?null:n.getNextSourceNode(true,u,g)}d&&g(d)===false&&(d=null)}for(;d&&!this._.end;){this.current=d;if(!this.evaluator||this.evaluator(d)!==false){if(!b)return d}else if(b&&this.evaluator)return false;d=d[f](false,u,g)}this.end();return this.current=null}function c(b){for(var c,d=null;c=a.call(this,b);)d=c;return d} +CKEDITOR.dom.walker=CKEDITOR.tools.createClass({$:function(a){this.range=a;this._={}},proto:{end:function(){this._.end=1},next:function(){return a.call(this)},previous:function(){return a.call(this,1)},checkForward:function(){return a.call(this,0,1)!==false},checkBackward:function(){return a.call(this,1,1)!==false},lastForward:function(){return c.call(this)},lastBackward:function(){return c.call(this,1)},reset:function(){delete this.current;this._={}}}});var b={block:1,"list-item":1,table:1,"table-row-group":1, +"table-header-group":1,"table-footer-group":1,"table-row":1,"table-column-group":1,"table-column":1,"table-cell":1,"table-caption":1};CKEDITOR.dom.element.prototype.isBlockBoundary=function(a){a=a?CKEDITOR.tools.extend({},CKEDITOR.dtd.$block,a||{}):CKEDITOR.dtd.$block;return this.getComputedStyle("float")=="none"&&b[this.getComputedStyle("display")]||a[this.getName()]};CKEDITOR.dom.walker.blockBoundary=function(a){return function(b){return!(b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary(a))}};CKEDITOR.dom.walker.listItemBoundary= +function(){return this.blockBoundary({br:1})};CKEDITOR.dom.walker.bookmark=function(a,b){function c(a){return a&&a.getName&&a.getName()=="span"&&a.data("cke-bookmark")}return function(d){var n,r;n=d&&d.type!=CKEDITOR.NODE_ELEMENT&&(r=d.getParent())&&c(r);n=a?n:n||c(d);return!!(b^n)}};CKEDITOR.dom.walker.whitespaces=function(a){return function(b){var c;b&&b.type==CKEDITOR.NODE_TEXT&&(c=!CKEDITOR.tools.trim(b.getText())||CKEDITOR.env.webkit&&b.getText()=="​");return!!(a^c)}};CKEDITOR.dom.walker.invisible= +function(a){var b=CKEDITOR.dom.walker.whitespaces();return function(c){if(b(c))c=1;else{c.type==CKEDITOR.NODE_TEXT&&(c=c.getParent());c=!c.$.offsetHeight}return!!(a^c)}};CKEDITOR.dom.walker.nodeType=function(a,b){return function(c){return!!(b^c.type==a)}};CKEDITOR.dom.walker.bogus=function(a){function b(a){return!e(a)&&!d(a)}return function(c){var d=!CKEDITOR.env.ie?c.is&&c.is("br"):c.getText&&f.test(c.getText());if(d){d=c.getParent();c=c.getNext(b);d=d.isBlockBoundary()&&(!c||c.type==CKEDITOR.NODE_ELEMENT&& +c.isBlockBoundary())}return!!(a^d)}};var f=/^[\t\r\n ]*(?: |\xa0)$/,e=CKEDITOR.dom.walker.whitespaces(),d=CKEDITOR.dom.walker.bookmark();CKEDITOR.dom.element.prototype.getBogus=function(){var a=this;do a=a.getPreviousSourceNode();while(d(a)||e(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in CKEDITOR.dtd.$inline&&!(a.getName()in CKEDITOR.dtd.$empty));return a&&(!CKEDITOR.env.ie?a.is&&a.is("br"):a.getText&&f.test(a.getText()))?a:false}})(); +CKEDITOR.dom.range=function(a){this.endOffset=this.endContainer=this.startOffset=this.startContainer=null;this.collapsed=true;var c=a instanceof CKEDITOR.dom.document;this.document=c?a:a.getDocument();this.root=c?a.getBody():a}; +(function(){function a(){var a=false,b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(true),g=CKEDITOR.dom.walker.bogus();return function(h){if(c(h)||b(h))return true;if(g(h)&&!a)return a=true;return h.type==CKEDITOR.NODE_TEXT&&(h.hasAscendant("pre")||CKEDITOR.tools.trim(h.getText()).length)||h.type==CKEDITOR.NODE_ELEMENT&&!h.is(d)?false:true}}function c(a){var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(1);return function(g){return c(g)||b(g)?true:!a&&j(g)|| +g.type==CKEDITOR.NODE_ELEMENT&&g.is(CKEDITOR.dtd.$removeEmpty)}}function b(a){return!l(a)&&!i(a)}var f=function(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer.equals(a.endContainer)&&a.startOffset==a.endOffset},e=function(a,b,c,g){a.optimizeBookmark();var h=a.startContainer,d=a.endContainer,f=a.startOffset,k=a.endOffset,e,j;if(d.type==CKEDITOR.NODE_TEXT)d=d.split(k);else if(d.getChildCount()>0)if(k>=d.getChildCount()){d=d.append(a.document.createText(""));j=true}else d=d.getChild(k); +if(h.type==CKEDITOR.NODE_TEXT){h.split(f);h.equals(d)&&(d=h.getNext())}else if(f)if(f>=h.getChildCount()){h=h.append(a.document.createText(""));e=true}else h=h.getChild(f).getPrevious();else{h=h.append(a.document.createText(""),1);e=true}var f=h.getParents(),k=d.getParents(),l,i,q;for(l=0;l0&&!s.equals(d)&&(A=m.append(s.clone()));if(!f[c]||s.$.parentNode!=f[c].$.parentNode)for(s=s.getPrevious();s;){if(s.equals(f[c])||s.equals(h))break;v=s.getPrevious();if(b==2)m.$.insertBefore(s.$.cloneNode(true),m.$.firstChild);else{s.remove();b==1&&m.$.insertBefore(s.$,m.$.firstChild)}s=v}m&&(m=A)}if(b==2){i=a.startContainer;if(i.type==CKEDITOR.NODE_TEXT){i.$.data=i.$.data+i.$.nextSibling.data; +i.$.parentNode.removeChild(i.$.nextSibling)}a=a.endContainer;if(a.type==CKEDITOR.NODE_TEXT&&a.$.nextSibling){a.$.data=a.$.data+a.$.nextSibling.data;a.$.parentNode.removeChild(a.$.nextSibling)}}else{if(i&&q&&(h.$.parentNode!=i.$.parentNode||d.$.parentNode!=q.$.parentNode)){b=q.getIndex();e&&q.$.parentNode==h.$.parentNode&&b--;if(g&&i.type==CKEDITOR.NODE_ELEMENT){g=CKEDITOR.dom.element.createFromHtml(' ',a.document);g.insertAfter(i);i.mergeSiblings(false); +a.moveToBookmark({startNode:g})}else a.setStart(q.getParent(),b)}a.collapse(true)}e&&h.remove();j&&d.$.parentNode&&d.remove()},d={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,"var":1},j=CKEDITOR.dom.walker.bogus(),l=new CKEDITOR.dom.walker.whitespaces,i=new CKEDITOR.dom.walker.bookmark,m=/^[\t\r\n ]*(?: |\xa0)$/;CKEDITOR.dom.range.prototype={clone:function(){var a=new CKEDITOR.dom.range(this.root); +a.startContainer=this.startContainer;a.startOffset=this.startOffset;a.endContainer=this.endContainer;a.endOffset=this.endOffset;a.collapsed=this.collapsed;return a},collapse:function(a){if(a){this.endContainer=this.startContainer;this.endOffset=this.startOffset}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset}this.collapsed=true},cloneContents:function(){var a=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||e(this,2,a);return a},deleteContents:function(a){this.collapsed|| +e(this,0,null,a)},extractContents:function(a){var b=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||e(this,1,b,a);return b},createBookmark:function(a){var b,c,g,h,d=this.collapsed;b=this.document.createElement("span");b.data("cke-bookmark",1);b.setStyle("display","none");b.setHtml(" ");if(a){g="cke_bm_"+CKEDITOR.tools.getNextNumber();b.setAttribute("id",g+(d?"C":"S"))}if(!d){c=b.clone();c.setHtml(" ");a&&c.setAttribute("id",g+"E");h=this.clone();h.collapse();h.insertNode(c)}h= +this.clone();h.collapse(true);h.insertNode(b);if(c){this.setStartAfter(b);this.setEndBefore(c)}else this.moveToPosition(b,CKEDITOR.POSITION_AFTER_END);return{startNode:a?g+(d?"C":"S"):b,endNode:a?g+"E":c,serializable:a,collapsed:d}},createBookmark2:function(a){var b=this.startContainer,c=this.endContainer,g=this.startOffset,h=this.endOffset,d=this.collapsed,f,k;if(!b||!c)return{start:0,end:0};if(a){if(b.type==CKEDITOR.NODE_ELEMENT){if((f=b.getChild(g))&&f.type==CKEDITOR.NODE_TEXT&&g>0&&f.getPrevious().type== +CKEDITOR.NODE_TEXT){b=f;g=0}f&&f.type==CKEDITOR.NODE_ELEMENT&&(g=f.getIndex(1))}for(;b.type==CKEDITOR.NODE_TEXT&&(k=b.getPrevious())&&k.type==CKEDITOR.NODE_TEXT;){b=k;g=g+k.getLength()}if(!d){if(c.type==CKEDITOR.NODE_ELEMENT){if((f=c.getChild(h))&&f.type==CKEDITOR.NODE_TEXT&&h>0&&f.getPrevious().type==CKEDITOR.NODE_TEXT){c=f;h=0}f&&f.type==CKEDITOR.NODE_ELEMENT&&(h=f.getIndex(1))}for(;c.type==CKEDITOR.NODE_TEXT&&(k=c.getPrevious())&&k.type==CKEDITOR.NODE_TEXT;){c=k;h=h+k.getLength()}}}return{start:b.getAddress(a), +end:d?null:c.getAddress(a),startOffset:g,endOffset:h,normalized:a,collapsed:d,is2:true}},moveToBookmark:function(a){if(a.is2){var b=this.document.getByAddress(a.start,a.normalized),c=a.startOffset,g=a.end&&this.document.getByAddress(a.end,a.normalized),a=a.endOffset;this.setStart(b,c);g?this.setEnd(g,a):this.collapse(true)}else{b=(c=a.serializable)?this.document.getById(a.startNode):a.startNode;a=c?this.document.getById(a.endNode):a.endNode;this.setStartBefore(b);b.remove();if(a){this.setEndBefore(a); +a.remove()}else this.collapse(true)}},getBoundaryNodes:function(){var a=this.startContainer,b=this.endContainer,c=this.startOffset,g=this.endOffset,h;if(a.type==CKEDITOR.NODE_ELEMENT){h=a.getChildCount();if(h>c)a=a.getChild(c);else if(h<1)a=a.getPreviousSourceNode();else{for(a=a.$;a.lastChild;)a=a.lastChild;a=new CKEDITOR.dom.node(a);a=a.getNextSourceNode()||a}}if(b.type==CKEDITOR.NODE_ELEMENT){h=b.getChildCount();if(h>g)b=b.getChild(g).getPreviousSourceNode(true);else if(h<1)b=b.getPreviousSourceNode(); +else{for(b=b.$;b.lastChild;)b=b.lastChild;b=new CKEDITOR.dom.node(b)}}a.getPosition(b)&CKEDITOR.POSITION_FOLLOWING&&(a=b);return{startNode:a,endNode:b}},getCommonAncestor:function(a,b){var c=this.startContainer,g=this.endContainer,c=c.equals(g)?a&&c.type==CKEDITOR.NODE_ELEMENT&&this.startOffset==this.endOffset-1?c.getChild(this.startOffset):c:c.getCommonAncestor(g);return b&&!c.is?c.getParent():c},optimize:function(){var a=this.startContainer,b=this.startOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>= +a.getLength()&&this.setStartAfter(a):this.setStartBefore(a));a=this.endContainer;b=this.endOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setEndAfter(a):this.setEndBefore(a))},optimizeBookmark:function(){var a=this.startContainer,b=this.endContainer;a.is&&(a.is("span")&&a.data("cke-bookmark"))&&this.setStartAt(a,CKEDITOR.POSITION_BEFORE_START);b&&(b.is&&b.is("span")&&b.data("cke-bookmark"))&&this.setEndAt(b,CKEDITOR.POSITION_AFTER_END)},trim:function(a,b){var c=this.startContainer, +g=this.startOffset,h=this.collapsed;if((!a||h)&&c&&c.type==CKEDITOR.NODE_TEXT){if(g)if(g>=c.getLength()){g=c.getIndex()+1;c=c.getParent()}else{var d=c.split(g),g=c.getIndex()+1,c=c.getParent();if(this.startContainer.equals(this.endContainer))this.setEnd(d,this.endOffset-this.startOffset);else if(c.equals(this.endContainer))this.endOffset=this.endOffset+1}else{g=c.getIndex();c=c.getParent()}this.setStart(c,g);if(h){this.collapse(true);return}}c=this.endContainer;g=this.endOffset;if(!b&&!h&&c&&c.type== +CKEDITOR.NODE_TEXT){if(g){g>=c.getLength()||c.split(g);g=c.getIndex()+1}else g=c.getIndex();c=c.getParent();this.setEnd(c,g)}},enlarge:function(a,b){switch(a){case CKEDITOR.ENLARGE_INLINE:var c=1;case CKEDITOR.ENLARGE_ELEMENT:if(this.collapsed)break;var g=this.getCommonAncestor(),h=this.root,d,f,k,e,j,l=false,i,q;i=this.startContainer;q=this.startOffset;if(i.type==CKEDITOR.NODE_TEXT){if(q){i=!CKEDITOR.tools.trim(i.substring(0,q)).length&&i;l=!!i}if(i&&!(e=i.getPrevious()))k=i.getParent()}else{q&& +(e=i.getChild(q-1)||i.getLast());e||(k=i)}for(;k||e;){if(k&&!e){!j&&k.equals(g)&&(j=true);if(c?k.isBlockBoundary():!h.contains(k))break;if(!l||k.getComputedStyle("display")!="inline"){l=false;j?d=k:this.setStartBefore(k)}e=k.getPrevious()}for(;e;){i=false;if(e.type==CKEDITOR.NODE_COMMENT)e=e.getPrevious();else{if(e.type==CKEDITOR.NODE_TEXT){q=e.getText();/[^\s\ufeff]/.test(q)&&(e=null);i=/[\s\ufeff]$/.test(q)}else if((e.$.offsetWidth>0||b&&e.is("br"))&&!e.data("cke-bookmark"))if(l&&CKEDITOR.dtd.$removeEmpty[e.getName()]){q= +e.getText();if(/[^\s\ufeff]/.test(q))e=null;else for(var m=e.$.getElementsByTagName("*"),s=0,A;A=m[s++];)if(!CKEDITOR.dtd.$removeEmpty[A.nodeName.toLowerCase()]){e=null;break}e&&(i=!!q.length)}else e=null;i&&(l?j?d=k:k&&this.setStartBefore(k):l=true);if(e){i=e.getPrevious();if(!k&&!i){k=e;e=null;break}e=i}else k=null}}k&&(k=k.getParent())}i=this.endContainer;q=this.endOffset;k=e=null;j=l=false;if(i.type==CKEDITOR.NODE_TEXT){i=!CKEDITOR.tools.trim(i.substring(q)).length&&i;l=!(i&&i.getLength());if(i&& +!(e=i.getNext()))k=i.getParent()}else(e=i.getChild(q))||(k=i);for(;k||e;){if(k&&!e){!j&&k.equals(g)&&(j=true);if(c?k.isBlockBoundary():!h.contains(k))break;if(!l||k.getComputedStyle("display")!="inline"){l=false;j?f=k:k&&this.setEndAfter(k)}e=k.getNext()}for(;e;){i=false;if(e.type==CKEDITOR.NODE_TEXT){q=e.getText();/[^\s\ufeff]/.test(q)&&(e=null);i=/^[\s\ufeff]/.test(q)}else if(e.type==CKEDITOR.NODE_ELEMENT){if((e.$.offsetWidth>0||b&&e.is("br"))&&!e.data("cke-bookmark"))if(l&&CKEDITOR.dtd.$removeEmpty[e.getName()]){q= +e.getText();if(/[^\s\ufeff]/.test(q))e=null;else{m=e.$.getElementsByTagName("*");for(s=0;A=m[s++];)if(!CKEDITOR.dtd.$removeEmpty[A.nodeName.toLowerCase()]){e=null;break}}e&&(i=!!q.length)}else e=null}else i=1;i&&l&&(j?f=k:this.setEndAfter(k));if(e){i=e.getNext();if(!k&&!i){k=e;e=null;break}e=i}else k=null}k&&(k=k.getParent())}if(d&&f){g=d.contains(f)?f:d;this.setStartBefore(g);this.setEndAfter(g)}break;case CKEDITOR.ENLARGE_BLOCK_CONTENTS:case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:k=new CKEDITOR.dom.range(this.root); +h=this.root;k.setStartAt(h,CKEDITOR.POSITION_AFTER_START);k.setEnd(this.startContainer,this.startOffset);k=new CKEDITOR.dom.walker(k);var v,o,x=CKEDITOR.dom.walker.blockBoundary(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?{br:1}:null),I=function(a){var b=x(a);b||(v=a);return b},c=function(a){var b=I(a);!b&&(a.is&&a.is("br"))&&(o=a);return b};k.guard=I;k=k.lastBackward();v=v||h;this.setStartAt(v,!v.is("br")&&(!k&&this.checkStartOfBlock()||k&&v.contains(k))?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_AFTER_END); +if(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS){k=this.clone();k=new CKEDITOR.dom.walker(k);var G=CKEDITOR.dom.walker.whitespaces(),C=CKEDITOR.dom.walker.bookmark();k.evaluator=function(a){return!G(a)&&!C(a)};if((k=k.previous())&&k.type==CKEDITOR.NODE_ELEMENT&&k.is("br"))break}k=this.clone();k.collapse();k.setEndAt(h,CKEDITOR.POSITION_BEFORE_END);k=new CKEDITOR.dom.walker(k);k.guard=a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?c:I;v=null;k=k.lastForward();v=v||h;this.setEndAt(v,!k&&this.checkEndOfBlock()||k&& +v.contains(k)?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_BEFORE_START);o&&this.setEndAfter(o)}},shrink:function(a,b,c){if(!this.collapsed){var a=a||CKEDITOR.SHRINK_TEXT,g=this.clone(),h=this.startContainer,d=this.endContainer,e=this.startOffset,f=this.endOffset,j=1,i=1;if(h&&h.type==CKEDITOR.NODE_TEXT)if(e)if(e>=h.getLength())g.setStartAfter(h);else{g.setStartBefore(h);j=0}else g.setStartBefore(h);if(d&&d.type==CKEDITOR.NODE_TEXT)if(f)if(f>=d.getLength())g.setEndAfter(d);else{g.setEndAfter(d); +i=0}else g.setEndBefore(d);var g=new CKEDITOR.dom.walker(g),l=CKEDITOR.dom.walker.bookmark();g.evaluator=function(b){return b.type==(a==CKEDITOR.SHRINK_ELEMENT?CKEDITOR.NODE_ELEMENT:CKEDITOR.NODE_TEXT)};var m;g.guard=function(b,g){if(l(b))return true;if(a==CKEDITOR.SHRINK_ELEMENT&&b.type==CKEDITOR.NODE_TEXT||g&&b.equals(m)||c===false&&b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary())return false;!g&&b.type==CKEDITOR.NODE_ELEMENT&&(m=b);return true};if(j)(h=g[a==CKEDITOR.SHRINK_ELEMENT?"lastForward": +"next"]())&&this.setStartAt(h,b?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_START);if(i){g.reset();(g=g[a==CKEDITOR.SHRINK_ELEMENT?"lastBackward":"previous"]())&&this.setEndAt(g,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_END)}return!(!j&&!i)}},insertNode:function(a){this.optimizeBookmark();this.trim(false,true);var b=this.startContainer,c=b.getChild(this.startOffset);c?a.insertBefore(c):b.append(a);a.getParent()&&a.getParent().equals(this.endContainer)&&this.endOffset++;this.setStartBefore(a)}, +moveToPosition:function(a,b){this.setStartAt(a,b);this.collapse(true)},moveToRange:function(a){this.setStart(a.startContainer,a.startOffset);this.setEnd(a.endContainer,a.endOffset)},selectNodeContents:function(a){this.setStart(a,0);this.setEnd(a,a.type==CKEDITOR.NODE_TEXT?a.getLength():a.getChildCount())},setStart:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]){b=a.getIndex();a=a.getParent()}this.startContainer=a;this.startOffset=b;if(!this.endContainer){this.endContainer= +a;this.endOffset=b}f(this)},setEnd:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]){b=a.getIndex()+1;a=a.getParent()}this.endContainer=a;this.endOffset=b;if(!this.startContainer){this.startContainer=a;this.startOffset=b}f(this)},setStartAfter:function(a){this.setStart(a.getParent(),a.getIndex()+1)},setStartBefore:function(a){this.setStart(a.getParent(),a.getIndex())},setEndAfter:function(a){this.setEnd(a.getParent(),a.getIndex()+1)},setEndBefore:function(a){this.setEnd(a.getParent(), +a.getIndex())},setStartAt:function(a,b){switch(b){case CKEDITOR.POSITION_AFTER_START:this.setStart(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type==CKEDITOR.NODE_TEXT?this.setStart(a,a.getLength()):this.setStart(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setStartBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setStartAfter(a)}f(this)},setEndAt:function(a,b){switch(b){case CKEDITOR.POSITION_AFTER_START:this.setEnd(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type== +CKEDITOR.NODE_TEXT?this.setEnd(a,a.getLength()):this.setEnd(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setEndBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setEndAfter(a)}f(this)},fixBlock:function(a,b){var c=this.createBookmark(),g=this.document.createElement(b);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(g);g.trim();CKEDITOR.env.ie||g.appendBogus();this.insertNode(g);this.moveToBookmark(c);return g},splitBlock:function(a){var b= +new CKEDITOR.dom.elementPath(this.startContainer,this.root),c=new CKEDITOR.dom.elementPath(this.endContainer,this.root),g=b.block,h=c.block,d=null;if(!b.blockLimit.equals(c.blockLimit))return null;if(a!="br"){if(!g){g=this.fixBlock(true,a);h=(new CKEDITOR.dom.elementPath(this.endContainer,this.root)).block}h||(h=this.fixBlock(false,a))}a=g&&this.checkStartOfBlock();b=h&&this.checkEndOfBlock();this.deleteContents();if(g&&g.equals(h))if(b){d=new CKEDITOR.dom.elementPath(this.startContainer,this.root); +this.moveToPosition(h,CKEDITOR.POSITION_AFTER_END);h=null}else if(a){d=new CKEDITOR.dom.elementPath(this.startContainer,this.root);this.moveToPosition(g,CKEDITOR.POSITION_BEFORE_START);g=null}else{h=this.splitElement(g);!CKEDITOR.env.ie&&!g.is("ul","ol")&&g.appendBogus()}return{previousBlock:g,nextBlock:h,wasStartOfBlock:a,wasEndOfBlock:b,elementPath:d}},splitElement:function(a){if(!this.collapsed)return null;this.setEndAt(a,CKEDITOR.POSITION_BEFORE_END);var b=this.extractContents(),c=a.clone(false); +b.appendTo(c);c.insertAfter(a);this.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);return c},removeEmptyBlocksAtEnd:function(){function a(g){return function(a){return b(a)||(c(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.isEmptyInlineRemoveable())||g.is("table")&&a.is("caption")?false:true}}var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(false);return function(b){for(var c=this.createBookmark(),d=this[b?"endPath":"startPath"](),e=d.block||d.blockLimit,f;e&&!e.equals(d.root)&&!e.getFirst(a(e));){f= +e.getParent();this[b?"setEndAt":"setStartAt"](e,CKEDITOR.POSITION_AFTER_END);e.remove(1);e=f}this.moveToBookmark(c)}}(),startPath:function(){return new CKEDITOR.dom.elementPath(this.startContainer,this.root)},endPath:function(){return new CKEDITOR.dom.elementPath(this.endContainer,this.root)},checkBoundaryOfElement:function(a,b){var d=b==CKEDITOR.START,g=this.clone();g.collapse(d);g[d?"setStartAt":"setEndAt"](a,d?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END);g=new CKEDITOR.dom.walker(g); +g.evaluator=c(d);return g[d?"checkBackward":"checkForward"]()},checkStartOfBlock:function(){var b=this.startContainer,c=this.startOffset;if(CKEDITOR.env.ie&&c&&b.type==CKEDITOR.NODE_TEXT){b=CKEDITOR.tools.ltrim(b.substring(0,c));m.test(b)&&this.trim(0,1)}this.trim();b=new CKEDITOR.dom.elementPath(this.startContainer,this.root);c=this.clone();c.collapse(true);c.setStartAt(b.block||b.blockLimit,CKEDITOR.POSITION_AFTER_START);b=new CKEDITOR.dom.walker(c);b.evaluator=a();return b.checkBackward()},checkEndOfBlock:function(){var b= +this.endContainer,c=this.endOffset;if(CKEDITOR.env.ie&&b.type==CKEDITOR.NODE_TEXT){b=CKEDITOR.tools.rtrim(b.substring(c));m.test(b)&&this.trim(1,0)}this.trim();b=new CKEDITOR.dom.elementPath(this.endContainer,this.root);c=this.clone();c.collapse(false);c.setEndAt(b.block||b.blockLimit,CKEDITOR.POSITION_BEFORE_END);b=new CKEDITOR.dom.walker(c);b.evaluator=a();return b.checkForward()},getPreviousNode:function(a,b,c){var d=this.clone();d.collapse(1);d.setStartAt(c||this.root,CKEDITOR.POSITION_AFTER_START); +c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.previous()},getNextNode:function(a,b,c){var d=this.clone();d.collapse();d.setEndAt(c||this.root,CKEDITOR.POSITION_BEFORE_END);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.next()},checkReadOnly:function(){function a(b,c){for(;b;){if(b.type==CKEDITOR.NODE_ELEMENT){if(b.getAttribute("contentEditable")=="false"&&!b.data("cke-editable"))return 0;if(b.is("html")||b.getAttribute("contentEditable")=="true"&&(b.contains(c)||b.equals(c)))break}b= +b.getParent()}return 1}return function(){var b=this.startContainer,c=this.endContainer;return!(a(b,c)&&a(c,b))}}(),moveToElementEditablePosition:function(a,c){if(a.type==CKEDITOR.NODE_ELEMENT&&!a.isEditable(false)){this.moveToPosition(a,c?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START);return true}for(var d=0;a;){if(a.type==CKEDITOR.NODE_TEXT){c&&this.checkEndOfBlock()&&m.test(a.getText())?this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START):this.moveToPosition(a,c?CKEDITOR.POSITION_AFTER_END: +CKEDITOR.POSITION_BEFORE_START);d=1;break}if(a.type==CKEDITOR.NODE_ELEMENT)if(a.isEditable()){this.moveToPosition(a,c?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_START);d=1}else c&&(a.is("br")&&this.checkEndOfBlock())&&this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START);var g=a,h=d,e=void 0;g.type==CKEDITOR.NODE_ELEMENT&&g.isEditable(false)&&(e=g[c?"getLast":"getFirst"](b));!h&&!e&&(e=g[c?"getPrevious":"getNext"](b));a=e}return!!d},moveToElementEditStart:function(a){return this.moveToElementEditablePosition(a)}, +moveToElementEditEnd:function(a){return this.moveToElementEditablePosition(a,true)},getEnclosedNode:function(){var a=this.clone();a.optimize();if(a.startContainer.type!=CKEDITOR.NODE_ELEMENT||a.endContainer.type!=CKEDITOR.NODE_ELEMENT)return null;var a=new CKEDITOR.dom.walker(a),b=CKEDITOR.dom.walker.bookmark(false,true),c=CKEDITOR.dom.walker.whitespaces(true);a.evaluator=function(a){return c(a)&&b(a)};var d=a.next();a.reset();return d&&d.equals(a.previous())?d:null},getTouchedStartNode:function(){var a= +this.startContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.startOffset)||a},getTouchedEndNode:function(){var a=this.endContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.endOffset-1)||a},scrollIntoView:function(){var a=new CKEDITOR.dom.element.createFromHtml(" ",this.document),b,c,d,h=this.clone();h.optimize();if(d=h.startContainer.type==CKEDITOR.NODE_TEXT){c=h.startContainer.getText();b=h.startContainer.split(h.startOffset); +a.insertAfter(h.startContainer)}else h.insertNode(a);a.scrollIntoView();if(d){h.startContainer.setText(c);b.remove()}a.remove()}}})();CKEDITOR.POSITION_AFTER_START=1;CKEDITOR.POSITION_BEFORE_END=2;CKEDITOR.POSITION_BEFORE_START=3;CKEDITOR.POSITION_AFTER_END=4;CKEDITOR.ENLARGE_ELEMENT=1;CKEDITOR.ENLARGE_BLOCK_CONTENTS=2;CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS=3;CKEDITOR.ENLARGE_INLINE=4;CKEDITOR.START=1;CKEDITOR.END=2;CKEDITOR.SHRINK_ELEMENT=1;CKEDITOR.SHRINK_TEXT=2; +(function(){function a(a){if(!(arguments.length<1)){this.range=a;this.forceBrBreak=0;this.enlargeBr=1;this.enforceRealBlocks=0;this._||(this._={})}}function c(a,b,c){for(a=a.getNextSourceNode(b,null,c);!f(a);)a=a.getNextSourceNode(b,null,c);return a}var b=/^[\r\n\t ]+$/,f=CKEDITOR.dom.walker.bookmark(false,true),e=CKEDITOR.dom.walker.whitespaces(true),d=function(a){return f(a)&&e(a)};a.prototype={getNextParagraph:function(a){a=a||"p";if(!CKEDITOR.dtd[this.range.root.getName()][a])return null;var e, +i,m,n,r,p;if(!this._.started){i=this.range.clone();i.shrink(CKEDITOR.NODE_ELEMENT,true);n=i.endContainer.hasAscendant("pre",true)||i.startContainer.hasAscendant("pre",true);i.enlarge(this.forceBrBreak&&!n||!this.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS);if(!i.collapsed){n=new CKEDITOR.dom.walker(i.clone());var g=CKEDITOR.dom.walker.bookmark(true,true);n.evaluator=g;this._.nextNode=n.next();n=new CKEDITOR.dom.walker(i.clone());n.evaluator=g;n=n.previous();this._.lastNode= +n.getNextSourceNode(true);if(this._.lastNode&&this._.lastNode.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()){g=this.range.clone();g.moveToPosition(this._.lastNode,CKEDITOR.POSITION_AFTER_END);if(g.checkEndOfBlock()){g=new CKEDITOR.dom.elementPath(g.endContainer,g.root);this._.lastNode=(g.block||g.blockLimit).getNextSourceNode(true)}}if(!this._.lastNode){this._.lastNode=this._.docEndMarker=i.document.createText("");this._.lastNode.insertAfter(n)}i= +null}this._.started=1}g=this._.nextNode;n=this._.lastNode;for(this._.nextNode=null;g;){var h=0,u=g.hasAscendant("pre"),w=g.type!=CKEDITOR.NODE_ELEMENT,k=0;if(w)g.type==CKEDITOR.NODE_TEXT&&b.test(g.getText())&&(w=0);else{var t=g.getName();if(g.isBlockBoundary(this.forceBrBreak&&!u&&{br:1})){if(t=="br")w=1;else if(!i&&!g.getChildCount()&&t!="hr"){e=g;m=g.equals(n);break}if(i){i.setEndAt(g,CKEDITOR.POSITION_BEFORE_START);if(t!="br")this._.nextNode=g}h=1}else{if(g.getFirst()){if(!i){i=this.range.clone(); +i.setStartAt(g,CKEDITOR.POSITION_BEFORE_START)}g=g.getFirst();continue}w=1}}if(w&&!i){i=this.range.clone();i.setStartAt(g,CKEDITOR.POSITION_BEFORE_START)}m=(!h||w)&&g.equals(n);if(i&&!h)for(;!g.getNext(d)&&!m;){t=g.getParent();if(t.isBlockBoundary(this.forceBrBreak&&!u&&{br:1})){h=1;w=0;m||t.equals(n);i.setEndAt(t,CKEDITOR.POSITION_BEFORE_END);break}g=t;w=1;m=g.equals(n);k=1}w&&i.setEndAt(g,CKEDITOR.POSITION_AFTER_END);g=c(g,k,n);if((m=!g)||h&&i)break}if(!e){if(!i){this._.docEndMarker&&this._.docEndMarker.remove(); +return this._.nextNode=null}e=new CKEDITOR.dom.elementPath(i.startContainer,i.root);g=e.blockLimit;h={div:1,th:1,td:1};e=e.block;if(!e&&g&&!this.enforceRealBlocks&&h[g.getName()]&&i.checkStartOfBlock()&&i.checkEndOfBlock()&&!g.equals(i.root))e=g;else if(!e||this.enforceRealBlocks&&e.getName()=="li"){e=this.range.document.createElement(a);i.extractContents().appendTo(e);e.trim();i.insertNode(e);r=p=true}else if(e.getName()!="li"){if(!i.checkStartOfBlock()||!i.checkEndOfBlock()){e=e.clone(false);i.extractContents().appendTo(e); +e.trim();p=i.splitBlock();r=!p.wasStartOfBlock;p=!p.wasEndOfBlock;i.insertNode(e)}}else if(!m)this._.nextNode=e.equals(n)?null:c(i.getBoundaryNodes().endNode,1,n)}if(r)(i=e.getPrevious())&&i.type==CKEDITOR.NODE_ELEMENT&&(i.getName()=="br"?i.remove():i.getLast()&&i.getLast().$.nodeName.toLowerCase()=="br"&&i.getLast().remove());if(p)(i=e.getLast())&&i.type==CKEDITOR.NODE_ELEMENT&&i.getName()=="br"&&(CKEDITOR.env.ie||i.getPrevious(f)||i.getNext(f))&&i.remove();if(!this._.nextNode)this._.nextNode=m|| +e.equals(n)||!n?null:c(e,1,n);return e}};CKEDITOR.dom.range.prototype.createIterator=function(){return new a(this)}})(); +CKEDITOR.command=function(a,c){this.uiItems=[];this.exec=function(b){if(this.state==CKEDITOR.TRISTATE_DISABLED||!this.checkAllowed())return false;this.editorFocus&&a.focus();return this.fire("exec")===false?true:c.exec.call(this,a,b)!==false};this.refresh=function(a,b){if(!this.readOnly&&a.readOnly)return true;if(this.context&&!b.isContextFor(this.context)){this.disable();return true}this.enable();return this.fire("refresh",{editor:a,path:b})===false?true:c.refresh&&c.refresh.apply(this,arguments)!== +false};var b;this.checkAllowed=function(){return typeof b=="boolean"?b:b=a.filter.checkFeature(this)};CKEDITOR.tools.extend(this,c,{modes:{wysiwyg:1},editorFocus:1,contextSensitive:!!c.context,state:CKEDITOR.TRISTATE_DISABLED});CKEDITOR.event.call(this)}; +CKEDITOR.command.prototype={enable:function(){this.state==CKEDITOR.TRISTATE_DISABLED&&this.checkAllowed()&&this.setState(!this.preserveState||typeof this.previousState=="undefined"?CKEDITOR.TRISTATE_OFF:this.previousState)},disable:function(){this.setState(CKEDITOR.TRISTATE_DISABLED)},setState:function(a){if(this.state==a||!this.checkAllowed())return false;this.previousState=this.state;this.state=a;this.fire("state");return true},toggleState:function(){this.state==CKEDITOR.TRISTATE_OFF?this.setState(CKEDITOR.TRISTATE_ON): +this.state==CKEDITOR.TRISTATE_ON&&this.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.event.implementOn(CKEDITOR.command.prototype);CKEDITOR.ENTER_P=1;CKEDITOR.ENTER_BR=2;CKEDITOR.ENTER_DIV=3; +CKEDITOR.config={customConfig:"config.js",autoUpdateElement:!0,language:"",defaultLanguage:"en",contentsLangDirection:"",enterMode:CKEDITOR.ENTER_P,forceEnterMode:!1,shiftEnterMode:CKEDITOR.ENTER_BR,docType:"",bodyId:"",bodyClass:"",fullPage:!1,height:200,extraPlugins:"",removePlugins:"",protectedSource:[],tabIndex:0,width:"",baseFloatZIndex:1E4,blockedKeystrokes:[CKEDITOR.CTRL+66,CKEDITOR.CTRL+73,CKEDITOR.CTRL+85]}; +(function(){function a(a,b,d,g,h){var f=b.name;if((g||typeof a.elements!="function"||a.elements(f))&&(!a.match||a.match(b))){if(g=!h){a:if(a.nothingRequired)g=true;else{if(h=a.requiredClasses){f=b.classes;for(g=0;g0;){k=d[--f];if(e&&(k.type==CKEDITOR.NODE_TEXT||k.type==CKEDITOR.NODE_ELEMENT&&D.$inline[k.name])){if(!j){j=new CKEDITOR.htmlParser.element(b);j.insertAfter(a);c.push({check:"parent-down",el:j})}j.add(k,0)}else{j=null;k.insertAfter(a);h.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT&&(k.type== +CKEDITOR.NODE_ELEMENT&&!D[h.name][k.name])&&c.push({check:"el-up",el:k})}}a.remove()}}else if(d=="style")a.remove();else{a.parent&&c.push({check:"it",el:a.parent});a.replaceWithChildren()}}function u(a,b,c){var d,g;for(d=0;d";if(e in this._.cachedChecks)return this._.cachedChecks[e];h=j(a).$1;g=h.styles;var k=h.classes;h.name=h.elements;h.classes=k=k?k.split(/\s*,\s*/): +[];h.styles=d(g);h.attributes=d(h.attributes);h.children=[];k.length&&(h.attributes["class"]=k.join(" "));if(g)h.attributes.style=CKEDITOR.tools.writeCssText(h.styles);g=h}else{h=a.getDefinition();g=h.styles;k=h.attributes||{};if(g){g=B(g);k.style=CKEDITOR.tools.writeCssText(g,true)}else g={};g={name:h.element,attributes:k,classes:k["class"]?k["class"].split(/\s+/):[],styles:g,children:[]}}var k=CKEDITOR.tools.clone(g),o=[],p;if(b!==false&&(p=this._.transformations[g.name])){for(h=0;h0?false:CKEDITOR.tools.objectCompare(g.attributes,k.attributes,true)?true:false;typeof a=="string"&&(this._.cachedChecks[e]=b);return b}};var s={styles:1,attributes:1,classes:1},A={styles:"requiredStyles",attributes:"requiredAttributes",classes:"requiredClasses"},v=/^([a-z0-9*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i,o={styles:/{([^}]+)}/,attrs:/\[([^\]]+)\]/, +classes:/\(([^\)]+)\)/},x=CKEDITOR.filter.transformationsTools={sizeToStyle:function(a){this.lengthToStyle(a,"width");this.lengthToStyle(a,"height")},sizeToAttribute:function(a){this.lengthToAttribute(a,"width");this.lengthToAttribute(a,"height")},lengthToStyle:function(a,b,c){c=c||b;if(!(c in a.styles)){var d=a.attributes[b];if(d){/^\d+$/.test(d)&&(d=d+"px");a.styles[c]=d}}delete a.attributes[b]},lengthToAttribute:function(a,b,c){c=c||b;if(!(c in a.attributes)){var d=a.styles[b],h=d&&d.match(/^(\d+)(?:\.\d*)?px$/); +h?a.attributes[c]=h[1]:d==z&&(a.attributes[c]=z)}delete a.styles[b]},alignmentToStyle:function(a){if(!("float"in a.styles)){var b=a.attributes.align;if(b=="left"||b=="right")a.styles["float"]=b}delete a.attributes.align},alignmentToAttribute:function(a){if(!("align"in a.attributes)){var b=a.styles["float"];if(b=="left"||b=="right")a.attributes.align=b}delete a.styles["float"]},matchesStyle:w,transform:function(a,b){if(typeof b=="string")a.name=b;else{var c=b.getDefinition(),d=c.styles,h=c.attributes, +g,e,k,f;a.name=c.element;for(g in h)if(g=="class"){c=a.classes.join("|");for(k=h[g].split(/\s+/);f=k.pop();)c.indexOf(f)==-1&&a.classes.push(f)}else a.attributes[g]=h[g];for(e in d)a.styles[e]=d[e]}}}})(); +(function(){CKEDITOR.focusManager=function(a){if(a.focusManager)return a.focusManager;this.hasFocus=false;this.currentActive=null;this._={editor:a};return this};CKEDITOR.focusManager._={blurDelay:200};CKEDITOR.focusManager.prototype={focus:function(){this._.timer&&clearTimeout(this._.timer);if(!this.hasFocus&&!this._.locked){var a=CKEDITOR.currentInstance;a&&a.focusManager.blur(1);this.hasFocus=true;(a=this._.editor.container)&&a.addClass("cke_focus");this._.editor.fire("focus")}},lock:function(){this._.locked= +1},unlock:function(){delete this._.locked},blur:function(a){function c(){if(this.hasFocus){this.hasFocus=false;var a=this._.editor.container;a&&a.removeClass("cke_focus");this._.editor.fire("blur")}}if(!this._.locked){this._.timer&&clearTimeout(this._.timer);var b=CKEDITOR.focusManager._.blurDelay;a||!b?c.call(this):this._.timer=CKEDITOR.tools.setTimeout(function(){delete this._.timer;c.call(this)},b,this)}},add:function(a,c){var b=a.getCustomData("focusmanager");if(!b||b!=this){b&&b.remove(a);var b= +"focus",f="blur";if(c)if(CKEDITOR.env.ie){b="focusin";f="focusout"}else CKEDITOR.event.useCapture=1;var e={blur:function(){a.equals(this.currentActive)&&this.blur()},focus:function(){this.currentActive=a;this.focus()}};a.on(b,e.focus,this);a.on(f,e.blur,this);if(c)CKEDITOR.event.useCapture=0;a.setCustomData("focusmanager",this);a.setCustomData("focusmanager_handlers",e)}},remove:function(a){a.removeCustomData("focusmanager");var c=a.removeCustomData("focusmanager_handlers");a.removeListener("blur", +c.blur);a.removeListener("focus",c.focus)}}})();CKEDITOR.keystrokeHandler=function(a){if(a.keystrokeHandler)return a.keystrokeHandler;this.keystrokes={};this.blockedKeystrokes={};this._={editor:a};return this}; +(function(){var a,c=function(b){var b=b.data,c=b.getKeystroke(),d=this.keystrokes[c],j=this._.editor;a=j.fire("key",{keyCode:c})===false;if(!a){d&&(a=j.execCommand(d,{from:"keystrokeHandler"})!==false);a||(a=!!this.blockedKeystrokes[c])}a&&b.preventDefault(true);return!a},b=function(b){if(a){a=false;b.data.preventDefault(true)}};CKEDITOR.keystrokeHandler.prototype={attach:function(a){a.on("keydown",c,this);if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)a.on("keypress",b,this)}}})(); +(function(){CKEDITOR.lang={languages:{af:1,ar:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,el:1,"en-au":1,"en-ca":1,"en-gb":1,en:1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,"fr-ca":1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,is:1,it:1,ja:1,ka:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,ms:1,nb:1,nl:1,no:1,pl:1,"pt-br":1,pt:1,ro:1,ru:1,sk:1,sl:1,sq:1,"sr-latn":1,sr:1,sv:1,th:1,tr:1,ug:1,uk:1,vi:1,"zh-cn":1,zh:1},load:function(a,c,b){if(!a||!CKEDITOR.lang.languages[a])a=this.detect(c,a);this[a]?b(a,this[a]):CKEDITOR.scriptLoader.load(CKEDITOR.getUrl("lang/"+ +a+".js"),function(){b(a,this[a])},this)},detect:function(a,c){var b=this.languages,c=c||navigator.userLanguage||navigator.language||a,f=c.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),e=f[1],f=f[2];b[e+"-"+f]?e=e+"-"+f:b[e]||(e=null);CKEDITOR.lang.detect=e?function(){return e}:function(a){return a};return e||a}}})(); +CKEDITOR.scriptLoader=function(){var a={},c={};return{load:function(b,f,e,d){var j=typeof b=="string";j&&(b=[b]);e||(e=CKEDITOR);var l=b.length,i=[],m=[],n=function(a){f&&(j?f.call(e,a):f.call(e,i,m))};if(l===0)n(true);else{var r=function(a,b){(b?i:m).push(a);if(--l<=0){d&&CKEDITOR.document.getDocumentElement().removeStyle("cursor");n(b)}},p=function(b,d){a[b]=1;var h=c[b];delete c[b];for(var g=0;g +1)){var h=new CKEDITOR.dom.element("script");h.setAttributes({type:"text/javascript",src:b});if(f)if(CKEDITOR.env.ie)h.$.onreadystatechange=function(){if(h.$.readyState=="loaded"||h.$.readyState=="complete"){h.$.onreadystatechange=null;p(b,true)}};else{h.$.onload=function(){setTimeout(function(){p(b,true)},0)};h.$.onerror=function(){p(b,false)}}h.appendTo(CKEDITOR.document.getHead())}}};d&&CKEDITOR.document.getDocumentElement().setStyle("cursor","wait");for(var h=0;h=0)p=a.langCode;else{p=a.langCode.replace(/-.*/,"");p=p!=a.langCode&&CKEDITOR.tools.indexOf(o,p)>=0?p:CKEDITOR.tools.indexOf(o,"en")>=0?"en":o[0]}if(!j.langEntries||!j.langEntries[p])e.push(CKEDITOR.getUrl(j.path+"lang/"+p+".js"));else{a.lang[k]=j.langEntries[p];p=null}}g.push(p);d.push(j)}CKEDITOR.scriptLoader.load(e, +function(){for(var c=["beforeInit","init","afterInit"],e=0;e]+)>)|(?:!--([\\S|\\s]*?)--\>)|(?:([^\\s>]+)\\s*((?:(?:\"[^\"]*\")|(?:'[^']*')|[^\"'>])*)\\/?>))","g")}}; +(function(){var a=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,c={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};CKEDITOR.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(b){for(var f,e,d=0,j;f=this._.htmlPartsRegex.exec(b);){e=f.index;if(e>d){d=b.substring(d,e);if(j)j.push(d);else this.onText(d)}d= +this._.htmlPartsRegex.lastIndex;if(e=f[1]){e=e.toLowerCase();if(j&&CKEDITOR.dtd.$cdata[e]){this.onCDATA(j.join(""));j=null}if(!j){this.onTagClose(e);continue}}if(j)j.push(f[0]);else if(e=f[3]){e=e.toLowerCase();if(!/="/.test(e)){var l={},i;f=f[4];var m=!!(f&&f.charAt(f.length-1)=="/");if(f)for(;i=a.exec(f);){var n=i[1].toLowerCase();i=i[2]||i[3]||i[4]||"";l[n]=!i&&c[n]?n:i}this.onTagOpen(e,l,m);!j&&CKEDITOR.dtd.$cdata[e]&&(j=[])}}else if(e=f[2])this.onComment(e)}if(b.length>d)this.onText(b.substring(d, +b.length))}}})(); +CKEDITOR.htmlParser.basicWriter=CKEDITOR.tools.createClass({$:function(){this._={output:[]}},proto:{openTag:function(a){this._.output.push("<",a)},openTagClose:function(a,c){c?this._.output.push(" />"):this._.output.push(">")},attribute:function(a,c){typeof c=="string"&&(c=CKEDITOR.tools.htmlEncodeAttr(c));this._.output.push(" ",a,'="',c,'"')},closeTag:function(a){this._.output.push("")},text:function(a){this._.output.push(a)},comment:function(a){this._.output.push("<\!--",a,"--\>")},write:function(a){this._.output.push(a)}, +reset:function(){this._.output=[];this._.indent=false},getHtml:function(a){var c=this._.output.join("");a&&this.reset();return c}}});"use strict"; +(function(){CKEDITOR.htmlParser.node=function(){};CKEDITOR.htmlParser.node.prototype={remove:function(){var a=this.parent.children,c=CKEDITOR.tools.indexOf(a,this),b=this.previous,f=this.next;b&&(b.next=f);f&&(f.previous=b);a.splice(c,1);this.parent=null},replaceWith:function(a){var c=this.parent.children,b=CKEDITOR.tools.indexOf(c,this),f=a.previous=this.previous,e=a.next=this.next;f&&(f.next=a);e&&(e.previous=a);c[b]=a;a.parent=this.parent;this.parent=null},insertAfter:function(a){var c=a.parent.children, +b=CKEDITOR.tools.indexOf(c,a),f=a.next;c.splice(b+1,0,this);this.next=a.next;this.previous=a;a.next=this;f&&(f.previous=this);this.parent=a.parent},insertBefore:function(a){var c=a.parent.children,b=CKEDITOR.tools.indexOf(c,a);c.splice(b,0,this);this.next=a;(this.previous=a.previous)&&(a.previous.next=this);a.previous=this;this.parent=a.parent}}})();"use strict";CKEDITOR.htmlParser.comment=function(a){this.value=a;this._={isBlockLike:false}}; +CKEDITOR.htmlParser.comment.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_COMMENT,filter:function(a){var c=this.value;if(!(c=a.onComment(c,this))){this.remove();return false}if(typeof c!="string"){this.replaceWith(c);return false}this.value=c;return true},writeHtml:function(a,c){c&&this.filter(c);a.comment(this.value)}});"use strict"; +(function(){CKEDITOR.htmlParser.text=function(a){this.value=a;this._={isBlockLike:false}};CKEDITOR.htmlParser.text.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(a){if(!(this.value=a.onText(this.value,this))){this.remove();return false}},writeHtml:function(a,c){c&&this.filter(c);a.text(this.value)}})})();"use strict"; +(function(){CKEDITOR.htmlParser.cdata=function(a){this.value=a};CKEDITOR.htmlParser.cdata.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(){},writeHtml:function(a){a.write(this.value)}})})();"use strict";CKEDITOR.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:true,hasInlineStarted:false}}; +(function(){function a(a){return a.name=="a"&&a.attributes.href||CKEDITOR.dtd.$removeEmpty[a.name]}var c=CKEDITOR.tools.extend({table:1,ul:1,ol:1,dl:1},CKEDITOR.dtd.table,CKEDITOR.dtd.ul,CKEDITOR.dtd.ol,CKEDITOR.dtd.dl),b={ol:1,ul:1},f=CKEDITOR.tools.extend({},{html:1},CKEDITOR.dtd.html,CKEDITOR.dtd.body,CKEDITOR.dtd.head,{style:1,script:1});CKEDITOR.htmlParser.fragment.fromHtml=function(e,d,j){function l(a){var b;if(u.length>0)for(var c=0;c=0;b--)if(a==u[b].name){u.splice(b,1);return}for(var c=[],d=[],g=k;g!=h&&g.name!=a;){g._.isBlockLike||d.unshift(g);c.push(g);g=g.returnPoint||g.parent}if(g!=h){for(b=0;b0?this.children[b-1]:null;if(c){if(a._.isBlockLike&&c.type==CKEDITOR.NODE_TEXT){c.value=CKEDITOR.tools.rtrim(c.value);if(c.value.length===0){this.children.pop();this.add(a);return}}c.next=a}a.previous=c;a.parent=this; +this.children.splice(b,0,a);if(!this._.hasInlineStarted)this._.hasInlineStarted=a.type==CKEDITOR.NODE_TEXT||a.type==CKEDITOR.NODE_ELEMENT&&!a._.isBlockLike},filter:function(a){a.onRoot(this);this.filterChildren(a)},filterChildren:function(a,b){if(this.childrenFilteredBy!=a.id){if(b&&!this.parent)a.onRoot(this);this.childrenFilteredBy=a.id;for(var c=0;c=0;f--)if(n=b[f]){n.pri=c;a.splice(e,0,n)}}}function b(a,b,c){if(b)for(var e in b){var m=a[e];a[e]=f(m,b[e],c);m||a.$length++}}function f(a,b,f){if(b){b.pri=f;if(a){if(a.splice)c(a,b,f);else{a=a.pri>f?[b,a]:[a,b];a.filter=e}return a}return b.filter=b}}function e(a){for(var b= +a.type||a instanceof CKEDITOR.htmlParser.fragment,c=0;c7||e.name in CKEDITOR.dtd.tr||e.name in CKEDITOR.dtd.$listItem))h=false;else{h=b(e);h=!h||e.name=="form"&&h.name=="input"}h&&e.add(g(a))}}}function k(a,b){if((!p||!CKEDITOR.env.ie)&&a.type==CKEDITOR.NODE_ELEMENT&&a.name=="br"&&!a.attributes["data-cke-eol"])return true;var c;if(a.type== +CKEDITOR.NODE_TEXT&&(c=a.value.match(F))){if(c.index){j(a,new CKEDITOR.htmlParser.text(a.value.substring(0,c.index)));a.value=c[0]}if(CKEDITOR.env.ie&&p&&(!b||a.parent.name in r))return true;if(!p)if((c=a.previous)&&c.name=="br"||!c||d(c))return true}return false}var o={elements:{}},p=c=="html",r=CKEDITOR.tools.extend({},z),u;for(u in r)"#"in B[u]||delete r[u];for(u in r)o.elements[u]=h(p,a.config.fillEmptyBlocks!==false);o.root=h(p);o.elements.br=function(a){return function(b){if(b.parent.type!= +CKEDITOR.NODE_DOCUMENT_FRAGMENT){var c=b.attributes;if("data-cke-bogus"in c||"data-cke-eol"in c)delete c["data-cke-bogus"];else{for(c=b.next;c&&e(c);)c=c.next;var h=f(b);!c&&d(b.parent)?l(b.parent,g(a)):d(c)&&(h&&!d(h))&&j(c,g(a))}}}}(p);return o}function c(a){return a.enterMode!=CKEDITOR.ENTER_BR&&a.autoParagraph!==false?a.enterMode==CKEDITOR.ENTER_DIV?"div":"p":false}function b(a){for(a=a.children[a.children.length-1];a&&e(a);)a=a.previous;return a}function f(a){for(a=a.previous;a&&e(a);)a=a.previous; +return a}function e(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a.value)||a.type==CKEDITOR.NODE_ELEMENT&&a.attributes["data-cke-bookmark"]}function d(a){return a&&(a.type==CKEDITOR.NODE_ELEMENT&&a.name in z||a.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)}function j(a,b){var c=a.parent.children,g=CKEDITOR.tools.indexOf(c,a);c.splice(g,0,b);c=a.previous;a.previous=b;b.next=a;b.parent=a.parent;if(c){b.previous=c;c.next=b}}function l(a,b){var c=a.children[a.children.length-1];a.children.push(b); +b.parent=a;if(c){c.next=b;b.previous=c}}function i(a){var b=a.parent.children,c=CKEDITOR.tools.indexOf(b,a),g=a.previous,a=a.next;g&&(g.next=a);a&&(a.previous=g);b.splice(c,1)}function m(a){var b=a.parent;return b?CKEDITOR.tools.indexOf(b.children,a):-1}function n(a){a=a.attributes;a.contenteditable!="false"&&(a["data-cke-editable"]=a.contenteditable?"true":1);a.contenteditable="false"}function r(a){a=a.attributes;switch(a["data-cke-editable"]){case "true":a.contenteditable="true";break;case "1":delete a.contenteditable}} +function p(a){return a.replace(o,function(a,b,c){return"<"+b+c.replace(x,function(a,b){return!/^on/.test(b)&&c.indexOf("data-cke-saved-"+b)==-1?" data-cke-saved-"+a+" data-cke-"+CKEDITOR.rnd+"-"+a:a})+">"})}function g(a,b){return a.replace(b,function(a,b,c){a.indexOf("/g,">")+"");return""+encodeURIComponent(a)+""})}function h(a){return a.replace(C,function(a,b){return decodeURIComponent(b)})}function u(a){return a.replace(/<\!--(?!{cke_protected})[\s\S]+?--\>/g, +function(a){return"<\!--"+D+"{C}"+encodeURIComponent(a).replace(/--/g,"%2D%2D")+"--\>"})}function w(a){return a.replace(/<\!--\{cke_protected\}\{C\}([\s\S]+?)--\>/g,function(a,b){return decodeURIComponent(b)})}function k(a,b){var c=b._.dataStore;return a.replace(/<\!--\{cke_protected\}([\s\S]+?)--\>/g,function(a,b){return decodeURIComponent(b)}).replace(/\{cke_protected_(\d+)\}/g,function(a,b){return c&&c[b]||""})}function t(a,b){for(var c=[],g=b.config.protectedSource,d=b._.dataStore||(b._.dataStore= +{id:1}),e=/<\!--\{cke_temp(comment)?\}(\d*?)--\>/g,g=[//gi,//gi].concat(g),a=a.replace(/<\!--[\s\S]*?--\>/g,function(a){return"<\!--{cke_tempcomment}"+(c.push(a)-1)+"--\>"}),h=0;h"});a=a.replace(e,function(a,b,g){return"<\!--"+D+(b?"{C}":"")+encodeURIComponent(c[g]).replace(/--/g,"%2D%2D")+ +"--\>"});return a.replace(/(['"]).*?\1/g,function(a){return a.replace(/<\!--\{cke_protected\}([\s\S]+?)--\>/g,function(a,b){d[d.id]=decodeURIComponent(b);return"{cke_protected_"+d.id++ +"}"})})}CKEDITOR.htmlDataProcessor=function(b){var d,e,f=this;this.editor=b;this.dataFilter=d=new CKEDITOR.htmlParser.filter;this.htmlFilter=e=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;d.addRules(s);d.addRules(a(b,"data"));e.addRules(A);e.addRules(a(b,"html"));b.on("toHtml",function(a){var a= +a.data,d=a.dataValue,d=t(d,b),d=g(d,G),d=p(d),d=g(d,I),d=d.replace(Q,"$1cke:$2"),d=d.replace(E,""),d=CKEDITOR.env.opera?d:d.replace(/(]*>)(\r\n|\n)/g,"$1$2$2"),e=a.context||b.editable().getName(),f;if(CKEDITOR.env.ie&&CKEDITOR.env.version<9&&e=="pre"){e="div";d="
    "+d+"
    ";f=1}e=b.document.createElement(e);e.setHtml("a"+d);d=e.getHtml().substr(1);d=d.replace(RegExp(" data-cke-"+CKEDITOR.rnd+"-","ig")," ");f&&(d=d.replace(/^
    |<\/pre>$/gi,""));d=d.replace(L,"$1$2");
    +d=h(d);d=w(d);a.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(d,a.context,a.fixForBody===false?false:c(b.config))},null,null,5);b.on("toHtml",function(a){a.data.dataValue.filterChildren(f.dataFilter,true)},null,null,10);b.on("toHtml",function(a){var a=a.data,b=a.dataValue,c=new CKEDITOR.htmlParser.basicWriter;b.writeChildrenHtml(c);b=c.getHtml(true);a.dataValue=u(b)},null,null,15);b.on("toDataFormat",function(a){a.data.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(a.data.dataValue,b.editable().getName(),
    +c(b.config))},null,null,5);b.on("toDataFormat",function(a){a.data.dataValue.filterChildren(f.htmlFilter,true)},null,null,10);b.on("toDataFormat",function(a){var c=a.data.dataValue,g=f.writer;g.reset();c.writeChildrenHtml(g);c=g.getHtml(true);c=w(c);c=k(c,b);a.data.dataValue=c},null,null,15)};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,b,c,g){var d=this.editor;!b&&b!==null&&(b=d.editable().getName());return d.fire("toHtml",{dataValue:a,context:b,fixForBody:c,dontFilter:!!g}).dataValue},
    +toDataFormat:function(a){return this.editor.fire("toDataFormat",{dataValue:a}).dataValue}};var F=/(?: |\xa0)$/,D="{cke_protected}",B=CKEDITOR.dtd,q=["caption","colgroup","col","thead","tfoot","tbody"],z=CKEDITOR.tools.extend({},B.$blockLimit,B.$block),s={elements:{},attributeNames:[[/^on/,"data-cke-pa-on"]]},A={elementNames:[[/^cke:/,""],[/^\?xml:namespace$/,""]],attributeNames:[[/^data-cke-(saved|pa)-/,""],[/^data-cke-.*/,""],["hidefocus",""]],elements:{$:function(a){var b=a.attributes;if(b){if(b["data-cke-temp"])return false;
    +for(var c=["name","href","src"],g,d=0;d-1&&g>-1&&c!=g)){c=m(a);g=m(b)}return c>g?1:-1})},embed:function(a){var b=a.parent;if(b&&b.name=="object"){var c=b.attributes.width,b=b.attributes.height;c&&(a.attributes.width=c);b&&(a.attributes.height=
    +b)}},param:function(a){a.children=[];a.isEmpty=true;return a},a:function(a){if(!a.children.length&&!a.attributes.name&&!a.attributes["data-cke-saved-name"])return false},span:function(a){a.attributes["class"]=="Apple-style-span"&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes["class"]},body:function(a){delete a.attributes.spellcheck;delete a.attributes.contenteditable},style:function(a){var b=a.children[0];b&&b.value&&(b.value=CKEDITOR.tools.trim(b.value));
    +if(!a.attributes.type)a.attributes.type="text/css"},title:function(a){var b=a.children[0];!b&&l(a,b=new CKEDITOR.htmlParser.text);b.value=a.attributes["data-cke-title"]||""}},attributes:{"class":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g,""))||false}}};if(CKEDITOR.env.ie)A.attributes.style=function(a){return a.replace(/(^|;)([^\:]+)/g,function(a){return a.toLowerCase()})};for(var v in{input:1,textarea:1}){s.elements[v]=n;A.elements[v]=r}var o=/<(a|area|img|input|source)\b([^>]*)>/gi,
    +x=/\b(on\w+|href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,I=/(?:])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,G=/(])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi,C=/([^<]*)<\/cke:encoded>/gi,Q=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,L=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,E=/]*?)\/?>(?!\s*<\/cke:\1)/gi})();"use strict";
    +CKEDITOR.htmlParser.element=function(a,c){this.name=a;this.attributes=c||{};this.children=[];var b=a||"",f=b.match(/^cke:(.*)/);f&&(b=f[1]);b=!(!CKEDITOR.dtd.$nonBodyContent[b]&&!CKEDITOR.dtd.$block[b]&&!CKEDITOR.dtd.$listItem[b]&&!CKEDITOR.dtd.$tableContent[b]&&!(CKEDITOR.dtd.$nonEditable[b]||b=="br"));this.isEmpty=!!CKEDITOR.dtd.$empty[a];this.isUnknown=!CKEDITOR.dtd[a];this._={isBlockLike:b,hasInlineStarted:this.isEmpty||!b}};
    +CKEDITOR.htmlParser.cssStyle=function(a){var c={};((a instanceof CKEDITOR.htmlParser.element?a.attributes.style:a)||"").replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,f,e){f=="font-family"&&(e=e.replace(/["']/g,""));c[f.toLowerCase()]=e});return{rules:c,populate:function(a){var c=this.toString();if(c)a instanceof CKEDITOR.dom.element?a.setAttribute("style",c):a instanceof CKEDITOR.htmlParser.element?a.attributes.style=c:a.style=c},toString:function(){var a=[],f;
    +for(f in c)c[f]&&a.push(f,":",c[f],";");return a.join("")}}};
    +(function(){var a=function(a,c){a=a[0];c=c[0];return ac?1:0},c=CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_ELEMENT,add:c.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},filter:function(a){var c=this,e,d;if(!c.parent)a.onRoot(c);for(;;){e=c.name;if(!(d=a.onElementName(e))){this.remove();return false}c.name=d;if(!(c=a.onElement(c))){this.remove();return false}if(c!==
    +this){this.replaceWith(c);return false}if(c.name==e)break;if(c.type!=CKEDITOR.NODE_ELEMENT){this.replaceWith(c);return false}if(!c.name){this.replaceWithChildren();return false}}e=c.attributes;var j,l;for(j in e){l=j;for(d=e[j];;)if(l=a.onAttributeName(j))if(l!=j){delete e[j];j=l}else break;else{delete e[j];break}l&&((d=a.onAttribute(c,l,d))===false?delete e[l]:e[l]=d)}c.isEmpty||this.filterChildren(a);return true},filterChildren:c.filterChildren,writeHtml:function(b,c){c&&this.filter(c);var e=this.name,
    +d=[],j=this.attributes,l,i;b.openTag(e,j);for(l in j)d.push([l,j[l]]);b.sortAttributes&&d.sort(a);l=0;for(i=d.length;l{voiceLabel}<{outerEl} class="cke_inner cke_reset" role="presentation">{topHtml}<{outerEl} id="{contentId}" class="cke_contents cke_reset" role="presentation">{bottomHtml}'));b=CKEDITOR.dom.element.createFromHtml(e.output({id:a.id,name:b,langDir:a.lang.dir,langCode:a.langCode,voiceLabel:a.lang.editor,
    +topHtml:m?''+m+"":"",contentId:a.ui.spaceId("contents"),bottomHtml:n?''+n+"":"",outerEl:CKEDITOR.env.ie?"span":"div"}));if(f==CKEDITOR.ELEMENT_MODE_REPLACE){c.hide();b.insertAfter(c)}else c.append(b);a.container=b;m&&a.ui.space("top").unselectable();n&&a.ui.space("bottom").unselectable();c=
    +a.config.width;f=a.config.height;c&&b.setStyle("width",CKEDITOR.tools.cssLength(c));f&&a.ui.space("contents").setStyle("height",CKEDITOR.tools.cssLength(f));b.disableContextMenu();CKEDITOR.env.webkit&&b.on("focus",function(){a.focus()});a.fireOnce("uiReady")}function f(a){var b=a.element;if(a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&b.is("textarea")){var c=b.$.form&&new CKEDITOR.dom.element(b.$.form);if(c){var e=function(){a.updateElement()};c.on("submit",e);if(!c.$.submit.nodeName&&!c.$.submit.length)c.$.submit=
    +CKEDITOR.tools.override(c.$.submit,function(b){return function(){a.updateElement();b.apply?b.apply(this,arguments):b()}});a.on("destroy",function(){c.removeListener("submit",e)})}}}CKEDITOR.replace=function(b,c){return a(b,c,null,CKEDITOR.ELEMENT_MODE_REPLACE)};CKEDITOR.appendTo=function(b,c,e){return a(b,c,e,CKEDITOR.ELEMENT_MODE_APPENDTO)};CKEDITOR.replaceAll=function(){for(var a=document.getElementsByTagName("textarea"),b=0;b",k="",a=i+a.replace(f,function(){return k+i})+k}a=a.replace(/\n/g,"
    ");b||(a=a.replace(RegExp("
    (?=)"),function(a){return e.repeat(a,2)}));a=a.replace(/^ | $/g," ");a=a.replace(/(>|\s) /g,function(a,b){return b+" "}).replace(/ (?=<)/g," ");n(this,"text",a)},insertElement:function(a){d(this);for(var c=this.editor,g=c.config.enterMode, +e=c.getSelection(),f=e.getRanges(),i=a.getName(),k=CKEDITOR.dtd.$block[i],m,n,l,B=f.length-1;B>=0;B--){m=f[B];if(!m.checkReadOnly()){m.deleteContents(1);n=!B&&a||a.clone(1);var q,z;if(k)for(;(q=m.getCommonAncestor(0,1))&&(z=CKEDITOR.dtd[q.getName()])&&(!z||!z[i]);)if(q.getName()in CKEDITOR.dtd.span)m.splitElement(q);else if(m.checkStartOfBlock()&&m.checkEndOfBlock()){m.setStartBefore(q);m.collapse(true);q.remove()}else m.splitBlock(g==CKEDITOR.ENTER_DIV?"div":"p",c.editable());m.insertNode(n);l|| +(l=n)}}if(l){m.moveToPosition(l,CKEDITOR.POSITION_AFTER_END);if(k)if((a=l.getNext(b))&&a.type==CKEDITOR.NODE_ELEMENT&&a.is(CKEDITOR.dtd.$block))a.getDtd()["#"]?m.moveToElementEditStart(a):m.moveToElementEditEnd(l);else if(!a&&g!=CKEDITOR.ENTER_BR){a=m.fixBlock(true,g==CKEDITOR.ENTER_DIV?"div":"p");m.moveToElementEditStart(a)}}e.selectRanges([m]);j(this,CKEDITOR.env.opera)},setData:function(a,b){!b&&this.editor.dataProcessor&&(a=this.editor.dataProcessor.toHtml(a));this.setHtml(a);this.editor.fire("dataReady")}, +getData:function(a){var b=this.getHtml();!a&&this.editor.dataProcessor&&(b=this.editor.dataProcessor.toDataFormat(b));return b},setReadOnly:function(a){this.setAttribute("contenteditable",!a)},detach:function(){this.removeClass("cke_editable");var a=this.editor;this._.detach();delete a.document;delete a.window},isInline:function(){return this.getDocument().equals(CKEDITOR.document)},setup:function(){var a=this.editor;this.attachListener(a,"beforeGetData",function(){var b=this.getData();this.is("textarea")|| +a.config.ignoreEmptyParagraph!==false&&(b=b.replace(l,function(a,b){return b}));a.setData(b,null,1)},this);this.attachListener(a,"getSnapshot",function(a){a.data=this.getData(1)},this);this.attachListener(a,"afterSetData",function(){this.setData(a.getData(1))},this);this.attachListener(a,"loadSnapshot",function(a){this.setData(a.data,1)},this);this.attachListener(a,"beforeFocus",function(){var b=a.getSelection();(b=b&&b.getNative())&&b.type=="Control"||this.focus()},this);this.attachListener(a,"insertHtml", +function(a){this.insertHtml(a.data.dataValue,a.data.mode)},this);this.attachListener(a,"insertElement",function(a){this.insertElement(a.data)},this);this.attachListener(a,"insertText",function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass("cke_editable");this.attachClass(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"cke_editable_inline":a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE||a.elementMode==CKEDITOR.ELEMENT_MODE_APPENDTO?"cke_editable_themed":"");this.attachClass("cke_contents_"+ +a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]=a.readOnly;a.keystrokeHandler.attach(this);this.on("blur",function(a){CKEDITOR.env.opera&&CKEDITOR.document.getActive().equals(this.isInline()?this:this.getWindow().getFrame())?a.cancel():this.hasFocus=false},null,null,-1);this.on("focus",function(){this.hasFocus=true},null,null,-1);a.focusManager.add(this);if(this.equals(CKEDITOR.document.getActive())){this.hasFocus=true;a.once("contentDom",function(){a.focusManager.focus()})}this.isInline()&& +this.changeAttr("tabindex",a.tabIndex);if(!this.is("textarea")){a.document=this.getDocument();a.window=this.getWindow();var b=a.document;this.changeAttr("spellcheck",!a.config.disableNativeSpellChecker);var g=a.config.contentsLangDirection;this.getDirection(1)!=g&&this.changeAttr("dir",g);var d=CKEDITOR.getCss();if(d){g=b.getHead();if(!g.getCustomData("stylesheet")){d=b.appendStyleText(d);d=new CKEDITOR.dom.element(d.ownerNode||d.owningElement);g.setCustomData("stylesheet",d);d.data("cke-temp",1)}}g= +b.getCustomData("stylesheet_ref")||0;b.setCustomData("stylesheet_ref",g+1);this.setCustomData("cke_includeReadonly",!a.config.disableReadonlyStyling);this.attachListener(this,"click",function(a){var a=a.data,b=a.getTarget();b.is("a")&&(a.$.button!=2&&b.isReadOnly())&&a.preventDefault()});this.attachListener(a,"key",function(b){if(a.readOnly)return true;var c=b.data.keyCode,g;if(c in{8:1,46:1}){var d=a.getSelection(),b=d.getRanges()[0],h=b.startPath(),f,p,j,c=c==8;if(d=e(d)){a.fire("saveSnapshot"); +b.moveToPosition(d,CKEDITOR.POSITION_BEFORE_START);d.remove();b.select();a.fire("saveSnapshot");g=1}else if(b.collapsed)if((f=h.block)&&b[c?"checkStartOfBlock":"checkEndOfBlock"]()&&(j=f[c?"getPrevious":"getNext"](i))&&j.is("table")){a.fire("saveSnapshot");b[c?"checkEndOfBlock":"checkStartOfBlock"]()&&f.remove();b["moveToElementEdit"+(c?"End":"Start")](j);b.select();a.fire("saveSnapshot");g=1}else if(h.blockLimit&&h.blockLimit.is("td")&&(p=h.blockLimit.getAscendant("table"))&&b.checkBoundaryOfElement(p, +c?CKEDITOR.START:CKEDITOR.END)&&(j=p[c?"getPrevious":"getNext"](i))){a.fire("saveSnapshot");b["moveToElementEdit"+(c?"End":"Start")](j);b.checkStartOfBlock()&&b.checkEndOfBlock()?j.remove():b.select();a.fire("saveSnapshot");g=1}else if((p=h.contains(["td","th","caption"]))&&b.checkBoundaryOfElement(p,c?CKEDITOR.START:CKEDITOR.END))g=1}return!g});CKEDITOR.env.ie&&this.attachListener(this,"click",c);!CKEDITOR.env.ie&&!CKEDITOR.env.opera&&this.attachListener(this,"mousedown",function(b){var c=b.data.getTarget(); +if(c.is("img","hr","input","textarea","select")){a.getSelection().selectElement(c);c.is("input","textarea","select")&&b.data.preventDefault()}});CKEDITOR.env.gecko&&this.attachListener(this,"mouseup",function(b){if(b.data.$.button==2){b=b.data.getTarget();if(!b.getOuterHtml().replace(l,"")){var c=a.createRange();c.moveToElementEditStart(b);c.select(true)}}});if(CKEDITOR.env.webkit){this.attachListener(this,"click",function(a){a.data.getTarget().is("input","select")&&a.data.preventDefault()});this.attachListener(this, +"mouseup",function(a){a.data.getTarget().is("input","textarea")&&a.data.preventDefault()})}}}},_:{detach:function(){this.editor.setData(this.editor.getData(),0,1);this.clearListeners();this.restoreAttrs();var a;if(a=this.removeCustomData("classes"))for(;a.length;)this.removeClass(a.pop());a=this.getDocument();var b=a.getHead();if(b.getCustomData("stylesheet")){var c=a.getCustomData("stylesheet_ref");if(--c)a.setCustomData("stylesheet_ref",c);else{a.removeCustomData("stylesheet_ref");b.removeCustomData("stylesheet").remove()}}delete this.editor}}}); +CKEDITOR.editor.prototype.editable=function(a){var b=this._.editable;if(b&&a)return 0;if(arguments.length)b=this._.editable=a?a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(b&&b.detach(),null);return b};var l=/(^|]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi,i=CKEDITOR.dom.walker.whitespaces(true),m=CKEDITOR.dom.walker.bookmark(false,true);CKEDITOR.on("instanceLoaded",function(b){var c=b.editor;c.on("insertElement", +function(a){a=a.data;if(a.type==CKEDITOR.NODE_ELEMENT&&(a.is("input")||a.is("textarea"))){a.getAttribute("contentEditable")!="false"&&a.data("cke-editable",a.hasAttribute("contenteditable")?"true":"1");a.setAttribute("contentEditable",false)}});c.on("selectionChange",function(b){if(!c.readOnly){var d=c.getSelection();if(d&&!d.isLocked){d=c.checkDirty();c.fire("lockSnapshot");a(b);c.fire("unlockSnapshot");!d&&c.resetDirty()}}})});CKEDITOR.on("instanceCreated",function(a){var b=a.editor;b.on("mode", +function(){var a=b.editable();if(a&&a.isInline()){var c=this.lang.editor+", "+this.name;a.changeAttr("role","textbox");a.changeAttr("aria-label",c);a.changeAttr("title",c);if(c=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"top":"contents")){var d=CKEDITOR.tools.getNextId(),e=CKEDITOR.dom.element.createFromHtml(''+this.lang.common.editorHelp+"");c.append(e);a.changeAttr("aria-describedby",d)}}})});CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}"); +var n=function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT}function c(b,d){var g,e,h,f,o=[],i=d.range.startContainer;g=d.range.startPath();for(var i=k[i.getName()],j=0,m=b.getChildren(),n=m.count(),l=-1,u=-1,t=0,w=g.contains(k.$list);j-1)o[l].firstNotAllowed=1;if(u>-1)o[u].lastNotAllowed=1;return o}function d(b,c){var e=[],h=b.getChildren(),f=h.count(),i,o=0,j=k[c],p=!b.is(k.$inline)||b.is("br");for(p&&e.push(" ");o ",s.document);s.insertNode(x);s.setStartAfter(x)}I=new CKEDITOR.dom.elementPath(s.startContainer);q.endPath=G=new CKEDITOR.dom.elementPath(s.endContainer);if(!s.collapsed){var o=G.block||G.blockLimit,Q=s.getCommonAncestor(); +o&&(!o.equals(Q)&&!o.contains(Q)&&s.checkEndOfBlock())&&q.zombies.push(o);s.deleteContents()}for(;(C=a(s.startContainer)&&s.startContainer.getChild(s.startOffset-1))&&a(C)&&C.isBlockBoundary()&&I.contains(C);)s.moveToPosition(C,CKEDITOR.POSITION_BEFORE_END);f(s,q.blockLimit,I,G);if(x){s.setEndBefore(x);s.collapse();x.remove()}x=s.startPath();if(o=x.contains(e,false,1)){s.splitElement(o);q.inlineStylesRoot=o;q.inlineStylesPeak=x.lastElement}x=s.createBookmark();(o=x.startNode.getPrevious(b))&&a(o)&& +e(o)&&v.push(o);(o=x.startNode.getNext(b))&&a(o)&&e(o)&&v.push(o);for(o=x.startNode;(o=o.getParent())&&e(o);)v.push(o);s.moveToBookmark(x);if(t){C=t;t=q.range;if(q.type=="text"&&q.inlineStylesRoot){x=C;C=q.inlineStylesPeak;s=C.getDocument().createText("{cke-peak}");for(v=q.inlineStylesRoot.getParent();!C.equals(v);){s=s.appendTo(C.clone());C=C.getParent()}C=s.getOuterHtml().replace("{cke-peak}",x)}x=q.blockLimit.getName();if(/^\s+|\s+$/.test(C)&&"span"in CKEDITOR.dtd[x]){var L=' '; +C=L+C+L}C=q.editor.dataProcessor.toHtml(C,null,false,q.dontFilter);x=t.document.createElement("body");x.setHtml(C);if(L){x.getFirst().remove();x.getLast().remove()}if((L=t.startPath().block)&&!(L.getChildCount()==1&&L.getBogus()))a:{var E;if(x.getChildCount()==1&&a(E=x.getFirst())&&E.is(l)){L=E.getElementsByTag("*");t=0;for(s=L.count();t0;else{y=E.startPath();if(!G.isBlock&&(N=q.editor.config.enterMode!=CKEDITOR.ENTER_BR&&q.editor.config.autoParagraph!==false?q.editor.config.enterMode==CKEDITOR.ENTER_DIV?"div":"p":false)&&!y.block&&y.blockLimit&&y.blockLimit.equals(E.root)){N=L.createElement(N);!CKEDITOR.env.ie&&N.appendBogus();E.insertNode(N);!CKEDITOR.env.ie&&(J=N.getBogus())&&J.remove();E.moveToPosition(N,CKEDITOR.POSITION_BEFORE_END)}if((y= +E.startPath().block)&&!y.equals(H)){if(J=y.getBogus()){J.remove();C.push(y)}H=y}G.firstNotAllowed&&(s=1);if(s&&G.isElement){y=E.startContainer;for(K=null;y&&!k[y.getName()][G.name];){if(y.equals(t)){y=null;break}K=y;y=y.getParent()}if(y){if(K){O=E.splitElement(K);q.zombies.push(O);q.zombies.push(K)}}else{K=t.getName();P=!x;y=x==I.length-1;K=d(G.node,K);for(var M=[],R=K.length,T=0,U=void 0,V=0,W=-1;T1&&f&&f.intersectsNode(c.$)){d=[e.anchorOffset,e.focusOffset];f=e.focusNode==c.$&&e.focusOffset>0;e.anchorNode==c.$&&e.anchorOffset>0&&d[0]--;f&&d[1]--;var i;f=e;if(!f.isCollapsed){i=f.getRangeAt(0);i.setStart(f.anchorNode,f.anchorOffset);i.setEnd(f.focusNode,f.focusOffset);i=i.collapsed}i&&d.unshift(d.pop())}}c.setText(j(c.getText()));if(d){c=e.getRangeAt(0);c.setStart(c.startContainer,d[0]);c.setEnd(c.startContainer,d[1]);e.removeAllRanges();e.addRange(c)}}}function j(a){return a.replace(/\u200B( )?/g, +function(a){return a[1]?" ":""})}var l,i,m=CKEDITOR.dom.walker.invisible(1);CKEDITOR.on("instanceCreated",function(b){function g(){var a=e.getSelection();a&&a.removeAllRanges()}var e=b.editor;e.define("selectionChange",{errorProof:1});e.on("contentDom",function(){var b=e.document,g=CKEDITOR.document,f=e.editable(),i=b.getBody(),j=b.getDocumentElement(),p=f.isInline(),m;CKEDITOR.env.gecko&&f.attachListener(f,"focus",function(a){a.removeListener();if(m!==0){a=e.getSelection().getNative();if(a.isCollapsed&& +a.anchorNode==f.$){a=e.createRange();a.moveToElementEditStart(f);a.select()}}},null,null,-2);f.attachListener(f,"focus",function(){e.unlockSelection(m);m=0},null,null,-1);f.attachListener(f,"mousedown",function(){m=0});if(CKEDITOR.env.ie||CKEDITOR.env.opera||p){var l,r=function(){l=e.getSelection(1);l.lock()};n?f.attachListener(f,"beforedeactivate",r,null,null,-1):f.attachListener(e,"selectionCheck",r,null,null,-1);f.attachListener(f,"blur",function(){e.lockSelection(l);m=1},null,null,-1)}if(CKEDITOR.env.ie&& +!p){var s;f.attachListener(f,"mousedown",function(a){a.data.$.button==2&&e.document.$.selection.type=="None"&&(s=e.window.getScrollPosition())});f.attachListener(f,"mouseup",function(a){if(a.data.$.button==2&&s){e.document.$.documentElement.scrollLeft=s.x;e.document.$.documentElement.scrollTop=s.y}s=null});if(b.$.compatMode!="BackCompat"){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)j.on("mousedown",function(a){function b(a){a=a.data.$;if(d){var c=i.$.createTextRange();try{c.moveToPoint(a.x, +a.y)}catch(e){}d.setEndPoint(f.compareEndPoints("StartToStart",c)<0?"EndToEnd":"StartToStart",c);d.select()}}function c(){j.removeListener("mousemove",b);g.removeListener("mouseup",c);j.removeListener("mouseup",c);d.select()}a=a.data;if(a.getTarget().is("html")&&a.$.y7){j.on("mousedown", +function(a){if(a.data.getTarget().is("html")){g.on("mouseup",A);j.on("mouseup",A)}});var A=function(){g.removeListener("mouseup",A);j.removeListener("mouseup",A);var a=CKEDITOR.document.$.selection,c=a.createRange();a.type!="None"&&c.parentElement().ownerDocument==b.$&&c.select()}}}}f.attachListener(f,"selectionchange",a,e);f.attachListener(f,"keyup",c,e);f.attachListener(f,"focus",function(){e.forceNextSelectionCheck();e.selectionChange(1)});if(p?CKEDITOR.env.webkit||CKEDITOR.env.gecko:CKEDITOR.env.opera){var v; +f.attachListener(f,"mousedown",function(){v=1});f.attachListener(b.getDocumentElement(),"mouseup",function(){v&&c.call(e);v=0})}else f.attachListener(CKEDITOR.env.ie?f:b.getDocumentElement(),"mouseup",c,e);CKEDITOR.env.webkit&&f.attachListener(b,"keydown",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:d(f)}},null,null,-1)});e.on("contentDomUnload",e.forceNextSelectionCheck,e);e.on("dataReady",function(){e.selectionChange(1)});CKEDITOR.env.ie9Compat&& +e.on("beforeDestroy",g,null,null,9);CKEDITOR.env.webkit&&e.on("setData",g);e.on("contentDomUnload",function(){e.unlockSelection()})});CKEDITOR.on("instanceReady",function(a){var b=a.editor;if(CKEDITOR.env.webkit){b.on("selectionChange",function(){var a=b.editable(),c=e(a);c&&(c.getCustomData("ready")?d(a):c.setCustomData("ready",1))},null,null,-1);b.on("beforeSetMode",function(){d(b.editable())},null,null,-1);var c,f,a=function(){var a=b.editable();if(a)if(a=e(a)){var d=b.document.$.defaultView.getSelection(); +d.type=="Caret"&&d.anchorNode==a.$&&(f=1);c=a.getText();a.setText(j(c))}},i=function(){var a=b.editable();if(a)if(a=e(a)){a.setText(c);if(f){b.document.$.defaultView.getSelection().setPosition(a.$,a.getLength());f=0}}};b.on("beforeUndoImage",a);b.on("afterUndoImage",i);b.on("beforeGetData",a,null,null,0);b.on("getData",i)}});CKEDITOR.editor.prototype.selectionChange=function(b){(b?a:c).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){if(this._.savedSelection&&!a)return this._.savedSelection; +return(a=this.editable())?new CKEDITOR.dom.selection(a):null};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);if(a.getType()!=CKEDITOR.SELECTION_NONE){!a.isLocked&&a.lock();this._.savedSelection=a;return true}return false};CKEDITOR.editor.prototype.unlockSelection=function(a){var b=this._.savedSelection;if(b){b.unlock(a);delete this._.savedSelection;return true}return false};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath}; +CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable?this.root.editor.getSelection():new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;var n=typeof window.getSelection!="function";CKEDITOR.dom.selection=function(a){var b=a instanceof CKEDITOR.dom.element;this.document= +a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=b?a:this.document.getBody();this.isLocked=0;this._={cache:{}};if(CKEDITOR.env.webkit){a=this.document.getWindow().$.getSelection();if(a.type=="None"&&this.document.getActive().equals(this.root)||a.type=="Caret"&&a.anchorNode.nodeType==CKEDITOR.NODE_DOCUMENT){var c=new CKEDITOR.dom.range(this.root);c.moveToPosition(this.root,CKEDITOR.POSITION_AFTER_START);b=this.document.$.createRange();b.setStart(c.startContainer.$,c.startOffset);b.collapse(1); +var d=this.root.on("focus",function(a){a.cancel()},null,null,-100);a.addRange(b);d.removeListener()}}var a=this.getNative(),e;if(a)if(a.getRangeAt)e=(c=a.rangeCount&&a.getRangeAt(0))&&new CKEDITOR.dom.node(c.commonAncestorContainer);else{try{c=a.createRange()}catch(f){}e=c&&CKEDITOR.dom.element.get(c.item&&c.item(0)||c.parentElement())}if(!e||!this.root.equals(e)&&!this.root.contains(e)){this._.cache.type=CKEDITOR.SELECTION_NONE;this._.cache.startElement=null;this._.cache.selectedElement=null;this._.cache.selectedText= +"";this._.cache.ranges=new CKEDITOR.dom.rangeList}return this};var r={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1};CKEDITOR.dom.selection.prototype={getNative:function(){return this._.cache.nativeSel!==void 0?this._.cache.nativeSel:this._.cache.nativeSel=n?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:n?function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_NONE; +try{var c=this.getNative(),d=c.type;if(d=="Text")b=CKEDITOR.SELECTION_TEXT;if(d=="Control")b=CKEDITOR.SELECTION_ELEMENT;if(c.createRange().parentElement())b=CKEDITOR.SELECTION_TEXT}catch(e){}return a.type=b}:function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE;else if(c.rangeCount==1){var c=c.getRangeAt(0),d=c.startContainer;if(d==c.endContainer&&d.nodeType==1&&c.endOffset-c.startOffset==1&&r[d.childNodes[c.startOffset].nodeName.toLowerCase()])b= +CKEDITOR.SELECTION_ELEMENT}return a.type=b},getRanges:function(){var a=n?function(){function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}var b=function(b,c){b=b.duplicate();b.collapse(c);var d=b.parentElement(),e=d.ownerDocument;if(!d.hasChildNodes())return{container:d,offset:0};for(var f=d.children,h,i,j=b.duplicate(),m=0,p=f.length-1,l=-1,n,o;m<=p;){l=Math.floor((m+p)/2);h=f[l];j.moveToElementText(h);n=j.compareEndPoints("StartToStart",b);if(n>0)p=l-1;else if(n<0)m=l+1;else{if(CKEDITOR.env.ie9Compat&& +h.tagName=="BR"){f=e.defaultView.getSelection();return{container:f[c?"anchorNode":"focusNode"],offset:f[c?"anchorOffset":"focusOffset"]}}return{container:d,offset:a(h)}}}if(l==-1||l==f.length-1&&n<0){j.moveToElementText(d);j.setEndPoint("StartToStart",b);e=j.text.replace(/(\r\n|\r)/g,"\n").length;f=d.childNodes;if(!e){h=f[f.length-1];return h.nodeType!=CKEDITOR.NODE_TEXT?{container:d,offset:f.length}:{container:h,offset:h.nodeValue.length}}for(d=f.length;e>0&&d>0;){i=f[--d];if(i.nodeType==CKEDITOR.NODE_TEXT){o= +i;e=e-i.nodeValue.length}}return{container:o,offset:-e}}j.collapse(n>0?true:false);j.setEndPoint(n>0?"StartToStart":"EndToStart",b);e=j.text.replace(/(\r\n|\r)/g,"\n").length;if(!e)return{container:d,offset:a(h)+(n>0?0:1)};for(;e>0;)try{i=h[n>0?"previousSibling":"nextSibling"];if(i.nodeType==CKEDITOR.NODE_TEXT){e=e-i.nodeValue.length;o=i}h=i}catch(x){return{container:d,offset:a(h)}}return{container:o,offset:n>0?-e:o.nodeValue.length+e}};return function(){var a=this.getNative(),c=a&&a.createRange(), +d=this.getType();if(!a)return[];if(d==CKEDITOR.SELECTION_TEXT){a=new CKEDITOR.dom.range(this.root);d=b(c,true);a.setStart(new CKEDITOR.dom.node(d.container),d.offset);d=b(c);a.setEnd(new CKEDITOR.dom.node(d.container),d.offset);a.endContainer.getPosition(a.startContainer)&CKEDITOR.POSITION_PRECEDING&&a.endOffset<=a.startContainer.getIndex()&&a.collapse();return[a]}if(d==CKEDITOR.SELECTION_ELEMENT){for(var d=[],e=0;e=b.getLength()?l.setStartAfter(b):l.setStartBefore(b));i&&i.type==CKEDITOR.NODE_TEXT&&(m?l.setEndAfter(i):l.setEndBefore(i));b=new CKEDITOR.dom.walker(l);b.evaluator=function(a){if(a.type==CKEDITOR.NODE_ELEMENT&&a.isReadOnly()){var b=f.clone();f.setEndBefore(a);f.collapsed&&d.splice(e--,1);if(!(a.getPosition(l.endContainer)&CKEDITOR.POSITION_CONTAINS)){b.setStartAfter(a);b.collapsed||d.splice(e+1,0,b)}return true}return false};b.next()}}return c.ranges}}(),getStartElement:function(){var a=this._.cache; +if(a.startElement!==void 0)return a.startElement;var b;switch(this.getType()){case CKEDITOR.SELECTION_ELEMENT:return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:var c=this.getRanges()[0];if(c){if(c.collapsed){b=c.startContainer;b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent())}else{for(c.optimize();;){b=c.startContainer;if(c.startOffset==(b.getChildCount?b.getChildCount():b.getLength())&&!b.isBlockBoundary())c.setStartAfter(b);else break}b=c.startContainer;if(b.type!=CKEDITOR.NODE_ELEMENT)return b.getParent(); +b=b.getChild(c.startOffset);if(!b||b.type!=CKEDITOR.NODE_ELEMENT)b=c.startContainer;else for(c=b.getFirst();c&&c.type==CKEDITOR.NODE_ELEMENT;){b=c;c=c.getFirst()}}b=b.$}}return a.startElement=b?new CKEDITOR.dom.element(b):null},getSelectedElement:function(){var a=this._.cache;if(a.selectedElement!==void 0)return a.selectedElement;var b=this,c=CKEDITOR.tools.tryThese(function(){return b.getNative().createRange().item(0)},function(){for(var a=b.getRanges()[0],c,d,e=2;e&&(!(c=a.getEnclosedNode())||!(c.type== +CKEDITOR.NODE_ELEMENT&&r[c.getName()]&&(d=c)));e--)a.shrink(CKEDITOR.SHRINK_ELEMENT);return d.$});return a.selectedElement=c?new CKEDITOR.dom.element(c):null},getSelectedText:function(){var a=this._.cache;if(a.selectedText!==void 0)return a.selectedText;var b=this.getNative(),b=n?b.type=="Control"?"":b.createRange().text:b.toString();return a.selectedText=b},lock:function(){this.getRanges();this.getStartElement();this.getSelectedElement();this.getSelectedText();this._.cache.nativeSel=null;this.isLocked= +1},unlock:function(a){if(this.isLocked){if(a)var b=this.getSelectedElement(),c=!b&&this.getRanges();this.isLocked=0;this.reset();if(a)(a=b||c[0]&&c[0].getCommonAncestor())&&a.getAscendant("body",1)&&(b?this.selectElement(b):this.selectRanges(c))}},reset:function(){this._.cache={}},selectElement:function(a){var b=new CKEDITOR.dom.range(this.root);b.setStartBefore(a);b.setEndAfter(a);this.selectRanges([b])},selectRanges:function(a){if(a.length)if(this.isLocked){var b=CKEDITOR.document.getActive();this.unlock(); +this.selectRanges(a);this.lock();!b.equals(this.root)&&b.focus()}else{if(n){var c=CKEDITOR.dom.walker.whitespaces(true),e=/\ufeff|\u00a0/,i={table:1,tbody:1,tr:1};if(a.length>1){b=a[a.length-1];a[0].setEnd(b.endContainer,b.endOffset)}var b=a[0],a=b.collapsed,k,j,m,l=b.getEnclosedNode();if(l&&l.type==CKEDITOR.NODE_ELEMENT&&l.getName()in r&&(!l.is("a")||!l.getText()))try{m=l.$.createControlRange();m.addElement(l.$);m.select();return}catch(B){}(b.startContainer.type==CKEDITOR.NODE_ELEMENT&&b.startContainer.getName()in +i||b.endContainer.type==CKEDITOR.NODE_ELEMENT&&b.endContainer.getName()in i)&&b.shrink(CKEDITOR.NODE_ELEMENT,true);m=b.createBookmark();var i=m.startNode,q;if(!a)q=m.endNode;m=b.document.$.body.createTextRange();m.moveToElementText(i.$);m.moveStart("character",1);if(q){e=b.document.$.body.createTextRange();e.moveToElementText(q.$);m.setEndPoint("EndToEnd",e);m.moveEnd("character",-1)}else{k=i.getNext(c);j=i.hasAscendant("pre");k=!(k&&k.getText&&k.getText().match(e))&&(j||!i.hasPrevious()||i.getPrevious().is&& +i.getPrevious().is("br"));j=b.document.createElement("span");j.setHtml("");j.insertBefore(i);k&&b.document.createText("").insertBefore(i)}b.setStartBefore(i);i.remove();if(a){if(k){m.moveStart("character",-1);m.select();b.document.$.selection.clear()}else m.select();b.moveToPosition(j,CKEDITOR.POSITION_BEFORE_START);j.remove()}else{b.setEndBefore(q);q.remove();m.select()}}else{q=this.getNative();if(!q)return;if(CKEDITOR.env.opera){b=this.document.$.createRange();b.selectNodeContents(this.root.$); +q.addRange(b)}this.removeAllRanges();for(e=0;e=0){b.collapse(1);m.setEnd(b.endContainer.$,b.endOffset)}else throw z;}q.addRange(m)}}this.reset();this.root.fire("selectionchange")}},createBookmarks:function(a){return this.getRanges().createBookmarks(a)},createBookmarks2:function(a){return this.getRanges().createBookmarks2(a)},selectBookmarks:function(a){for(var b=[],c=0;c< +a.length;c++){var d=new CKEDITOR.dom.range(this.root);d.moveToBookmark(a[c]);b.push(d)}this.selectRanges(b);return this},getCommonAncestor:function(){var a=this.getRanges();return a[0].startContainer.getCommonAncestor(a[a.length-1].endContainer)},scrollIntoView:function(){this.type!=CKEDITOR.SELECTION_NONE&&this.getRanges()[0].scrollIntoView()},removeAllRanges:function(){var a=this.getNative();try{a&&a[n?"empty":"removeAllRanges"]()}catch(b){}this.reset()}}})(); +CKEDITOR.editor.prototype.attachStyleStateChange=function(a,c){var b=this._.styleStateChangeCallbacks;if(!b){b=this._.styleStateChangeCallbacks=[];this.on("selectionChange",function(a){for(var c=0;c]*>)[ \t\r\n]*/gi,"$1");f=f.replace(/([ \t\n\r]+| )/g," ");f=f.replace(/]*>/gi,"\n");if(CKEDITOR.env.ie){var g=a.getDocument().createElement("div");g.append(d);d.$.outerHTML="
    "+f+"
    ";d.copyAttributes(g.getFirst());d=g.getFirst().remove()}else d.setHtml(f);b=d}else f?b=n(c?[a.getHtml()]:i(a),b):a.moveChildren(b);b.replace(a);if(e){var c=b,j;if((j=c.getPrevious(v))&&j.is&&j.is("pre")){e=m(j.getHtml(),/\n$/,"")+ +"\n\n"+m(c.getHtml(),/^\n/,"");CKEDITOR.env.ie?c.$.outerHTML="
    "+e+"
    ":c.setHtml(e);j.remove()}}else c&&h(b)}function i(a){a.getName();var b=[];m(a.getOuterHtml(),/(\S\s*)\n(?:\s|(]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi,function(a,b,c){return b+"
    "+c+"
    "}).replace(/([\s\S]*?)<\/pre>/gi,function(a,c){b.push(c)});return b}function m(a,b,c){var e="",d="",a=a.replace(/(^]+data-cke-bookmark.*?\/span>)|(]+data-cke-bookmark.*?\/span>$)/gi,function(a,
    +b,c){b&&(e=b);c&&(d=c);return""});return e+a.replace(b,c)+d}function n(a,b){var c;a.length>1&&(c=new CKEDITOR.dom.documentFragment(b.getDocument()));for(var e=0;e"),d=d.replace(/[ \t]{2,}/g,function(a){return CKEDITOR.tools.repeat(" ",
    +a.length-1)+" "});if(c){var f=b.clone();f.setHtml(d);c.append(f)}else b.setHtml(d)}return c||b}function r(a){var b=this._.definition,c=b.attributes,b=b.styles,d=t(this)[a.getName()],e=CKEDITOR.tools.isEmpty(c)&&CKEDITOR.tools.isEmpty(b),f;for(f in c)if(!((f=="class"||this._.definition.fullMatch)&&a.getAttribute(f)!=F(f,c[f]))){e=a.hasAttribute(f);a.removeAttribute(f)}for(var i in b)if(!(this._.definition.fullMatch&&a.getStyle(i)!=F(i,b[i],true))){e=e||!!a.getStyle(i);a.removeStyle(i)}g(a,d,B[a.getName()]);
    +e&&(this._.definition.alwaysRemoveElement?h(a,1):!CKEDITOR.dtd.$block[a.getName()]||this._.enterMode==CKEDITOR.ENTER_BR&&!a.hasAttributes()?h(a):a.renameNode(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))}function p(a){for(var b=t(this),c=a.getElementsByTag(this.element),d=c.count();--d>=0;)r.call(this,c.getItem(d));for(var e in b)if(e!=this.element){c=a.getElementsByTag(e);for(d=c.count()-1;d>=0;d--){var f=c.getItem(d);g(f,b[e])}}}function g(a,b,c){if(b=b&&b.attributes)for(var d=0;d",a||b.name,"");return c.join("")},getDefinition:function(){return this._.definition}};CKEDITOR.style.getStyleText=function(a){var b=a._ST;
    +if(b)return b;var b=a.styles,c=a.attributes&&a.attributes.style||"",d="";c.length&&(c=c.replace(z,";"));for(var e in b){var f=b[e],g=(e+":"+f).replace(z,";");f=="inherit"?d=d+g:c=c+g}c.length&&(c=CKEDITOR.tools.normalizeCssText(c,true));return a._ST=c+d}})();CKEDITOR.styleCommand=function(a,c){this.requiredContent=this.allowedContent=this.style=a;CKEDITOR.tools.extend(this,c,true)};
    +CKEDITOR.styleCommand.prototype.exec=function(a){a.focus();this.state==CKEDITOR.TRISTATE_OFF?a.applyStyle(this.style):this.state==CKEDITOR.TRISTATE_ON&&a.removeStyle(this.style)};CKEDITOR.stylesSet=new CKEDITOR.resourceManager("","stylesSet");CKEDITOR.addStylesSet=CKEDITOR.tools.bind(CKEDITOR.stylesSet.add,CKEDITOR.stylesSet);CKEDITOR.loadStylesSet=function(a,c,b){CKEDITOR.stylesSet.addExternal(a,c,"");CKEDITOR.stylesSet.load(a,b)};
    +CKEDITOR.editor.prototype.getStylesSet=function(a){if(this._.stylesDefinitions)a(this._.stylesDefinitions);else{var c=this,b=c.config.stylesCombo_stylesSet||c.config.stylesSet;if(b===false)a(null);else if(b instanceof Array){c._.stylesDefinitions=b;a(b)}else{b||(b="default");var b=b.split(":"),f=b[0];CKEDITOR.stylesSet.addExternal(f,b[1]?b.slice(1).join(":"):CKEDITOR.getUrl("styles.js"),"");CKEDITOR.stylesSet.load(f,function(b){c._.stylesDefinitions=b[f];a(c._.stylesDefinitions)})}}};
    +CKEDITOR.dom.comment=function(a,c){typeof a=="string"&&(a=(c?c.$:document).createComment(a));CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.comment.prototype=new CKEDITOR.dom.node;CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype,{type:CKEDITOR.NODE_COMMENT,getOuterHtml:function(){return"<\!--"+this.$.nodeValue+"--\>"}});
    +(function(){var a={},c;for(c in CKEDITOR.dtd.$blockLimit)c in CKEDITOR.dtd.$list||(a[c]=1);var b={};for(c in CKEDITOR.dtd.$block)c in CKEDITOR.dtd.$blockLimit||c in CKEDITOR.dtd.$empty||(b[c]=1);CKEDITOR.dom.elementPath=function(c,e){var d=null,j=null,l=[],e=e||c.getDocument().getBody(),i=c;do if(i.type==CKEDITOR.NODE_ELEMENT){l.push(i);if(!this.lastElement){this.lastElement=i;if(i.is(CKEDITOR.dtd.$object))continue}var m=i.getName();if(!j){!d&&b[m]&&(d=i);if(a[m]){var n;if(n=!d){if(m=m=="div"){a:{m=
    +i.getChildren();n=0;for(var r=m.count();n-1}:typeof a=="function"?f=a:typeof a=="object"&&(f=
    +function(b){return b.getName()in a});var e=this.elements,d=e.length;c&&d--;if(b){e=Array.prototype.slice.call(e,0);e.reverse()}for(c=0;c=f){d=e.createText("");d.insertAfter(this)}else{a=e.createText("");a.insertAfter(d);a.remove()}return d},substring:function(a,
    +c){return typeof c!="number"?this.$.nodeValue.substr(a):this.$.nodeValue.substring(a,c)}});
    +(function(){function a(a,c,e){var d=a.serializable,j=c[e?"endContainer":"startContainer"],l=e?"endOffset":"startOffset",i=d?c.document.getById(a.startNode):a.startNode,a=d?c.document.getById(a.endNode):a.endNode;if(j.equals(i.getPrevious())){c.startOffset=c.startOffset-j.getLength()-a.getPrevious().getLength();j=a.getNext()}else if(j.equals(a.getPrevious())){c.startOffset=c.startOffset-j.getLength();j=a.getNext()}j.equals(i.getParent())&&c[l]++;j.equals(a.getParent())&&c[l]++;c[e?"endContainer":"startContainer"]=
    +j;return c}CKEDITOR.dom.rangeList=function(a){if(a instanceof CKEDITOR.dom.rangeList)return a;a?a instanceof CKEDITOR.dom.range&&(a=[a]):a=[];return CKEDITOR.tools.extend(a,c)};var c={createIterator:function(){var a=this,c=CKEDITOR.dom.walker.bookmark(),e=[],d;return{getNextRange:function(j){d=d==void 0?0:d+1;var l=a[d];if(l&&a.length>1){if(!d)for(var i=a.length-1;i>=0;i--)e.unshift(a[i].createBookmark(true));if(j)for(var m=0;a[d+m+1];){for(var n=l.document,j=0,i=n.getById(e[m].endNode),n=n.getById(e[m+
    +1].startNode);;){i=i.getNextSourceNode(false);if(n.equals(i))j=1;else if(c(i)||i.type==CKEDITOR.NODE_ELEMENT&&i.isBlockBoundary())continue;break}if(!j)break;m++}for(l.moveToBookmark(e.shift());m--;){i=a[++d];i.moveToBookmark(e.shift());l.setEnd(i.endContainer,i.endOffset)}}return l}}},createBookmarks:function(b){for(var c=[],e,d=0;db?-1:1}),e=0,f;e',CKEDITOR.document);a.appendTo(CKEDITOR.document.getHead());try{CKEDITOR.env.hc=a.getComputedStyle("border-top-color")==a.getComputedStyle("border-right-color")}catch(c){CKEDITOR.env.hc=false}a.remove()}if(CKEDITOR.env.hc)CKEDITOR.env.cssClass=CKEDITOR.env.cssClass+" cke_hc";CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}");
    +CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(a=CKEDITOR._.pending){delete CKEDITOR._.pending;for(var b=0;bc;c++){var f=a,h=c,d;d=parseInt(a[c],16);d=("0"+(0>e?0|d*(1+e):0|d+(255-d)*e).toString(16)).slice(-2);f[h]=d}return"#"+a.join("")}}(),c=function(){var b=new CKEDITOR.template("background:#{to};background-image:-webkit-gradient(linear,lefttop,leftbottom,from({from}),to({to}));background-image:-moz-linear-gradient(top,{from},{to});background-image:-webkit-linear-gradient(top,{from},{to});background-image:-o-linear-gradient(top,{from},{to});background-image:-ms-linear-gradient(top,{from},{to});background-image:linear-gradient(top,{from},{to});filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='{from}',endColorstr='{to}');");return function(c,
    +a){return b.output({from:c,to:a})}}(),f={editor:new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ {defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_bottom [{defaultGradient}border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [{defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [{defaultGradient}outline-color:{defaultBorder};border-top-color:{defaultBorder};] {id} .cke_dialog_tab [{lightGradient}border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [{mediumGradient}] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} .cke_toolgroup [{lightGradient}border-color:{defaultBorder};] {id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [{mediumGradient}] {id} .cke_button_on [{ckeButtonOn}] {id} .cke_toolbar_separator [background-color: {ckeToolbarSeparator};] {id} .cke_combo_button [border-color:{defaultBorder};{lightGradient}] {id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [border-color:{defaultBorder};{mediumGradient}] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [background-color:{elementsPathBg};] {id}.cke_panel [border-color:{defaultBorder};] "),
    +panel:new CKEDITOR.template(".cke_panel_grouptitle [{lightGradient}border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:focus.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:focus.cke_colorauto, a:focus.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] ")};
    +return function(g,e){var a=g.uiColor,a={id:"."+g.id,defaultBorder:b(a,-0.1),defaultGradient:c(b(a,0.9),a),lightGradient:c(b(a,1),b(a,0.7)),mediumGradient:c(b(a,0.8),b(a,0.5)),ckeButtonOn:c(b(a,0.6),b(a,0.7)),ckeResizer:b(a,-0.4),ckeToolbarSeparator:b(a,0.5),ckeColorauto:b(a,0.8),dialogBody:b(a,0.7),dialogTabSelected:c("#FFFFFF","#FFFFFF"),dialogTabSelectedBorder:"#FFF",elementsPathColor:b(a,-0.6),elementsPathBg:a,menubuttonIcon:b(a,0.5),menubuttonIconHover:b(a,0.3)};return f[e].output(a).replace(/\[/g,
    +"{").replace(/\]/g,"}")}}();CKEDITOR.plugins.add("dialogui",{onLoad:function(){var h=function(b){this._||(this._={});this._["default"]=this._.initValue=b["default"]||"";this._.required=b.required||!1;for(var a=[this._],d=1;darguments.length)){var c=h.call(this,a);c.labelId=CKEDITOR.tools.getNextId()+"_label";this._.children=[];CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,"div",null,{role:"presentation"},function(){var f=[],d=a.required?" cke_required":"";"horizontal"!=
    +a.labelLayout?f.push('",'"):(d={type:"hbox",widths:a.widths,padding:0,children:[{type:"html",html:'

    + CKEditor Samples » Create and Destroy Editor Instances for Ajax Applications +

    +
    +

    + This sample shows how to create and destroy CKEditor instances on the fly. After the removal of CKEditor the content created inside the editing + area will be displayed in a <div> element. +

    +

    + For details of how to create this setup check the source code of this sample page + for JavaScript code responsible for the creation and destruction of a CKEditor instance. +

    +
    +

    Click the buttons to create and remove a CKEditor instance.

    +

    + + +

    + +
    +
    + + + + diff --git a/static/ckeditor/samples/api.html b/static/ckeditor/samples/api.html new file mode 100644 index 0000000..1bc8948 --- /dev/null +++ b/static/ckeditor/samples/api.html @@ -0,0 +1,207 @@ + + + + + + API Usage — CKEditor Sample + + + + + + +

    + CKEditor Samples » Using CKEditor JavaScript API +

    +
    +

    + This sample shows how to use the + CKEditor JavaScript API + to interact with the editor at runtime. +

    +

    + For details on how to create this setup check the source code of this sample page. +

    +
    + + +
    + +
    +
    + + + + +

    +

    + + +
    + + + diff --git a/static/ckeditor/samples/appendto.html b/static/ckeditor/samples/appendto.html new file mode 100644 index 0000000..3a5fbef --- /dev/null +++ b/static/ckeditor/samples/appendto.html @@ -0,0 +1,57 @@ + + + + + CKEDITOR.appendTo — CKEditor Sample + + + + + +

    + CKEditor Samples » Append To Page Element Using JavaScript Code +

    +
    +
    +

    + CKEDITOR.appendTo is basically to place editors + inside existing DOM elements. Unlike CKEDITOR.replace, + a target container to be replaced is no longer necessary. A new editor + instance is inserted directly wherever it is desired. +

    +
    CKEDITOR.appendTo( 'container_id',
    +	{ /* Configuration options to be used. */ }
    +	'Editor content to be used.'
    +);
    +
    + +
    +
    + + + diff --git a/static/ckeditor/samples/assets/inlineall/logo.png b/static/ckeditor/samples/assets/inlineall/logo.png new file mode 100644 index 0000000..334e7ac Binary files /dev/null and b/static/ckeditor/samples/assets/inlineall/logo.png differ diff --git a/static/ckeditor/samples/assets/outputxhtml/outputxhtml.css b/static/ckeditor/samples/assets/outputxhtml/outputxhtml.css new file mode 100644 index 0000000..2b15e1c --- /dev/null +++ b/static/ckeditor/samples/assets/outputxhtml/outputxhtml.css @@ -0,0 +1,204 @@ +/* + * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.html or http://ckeditor.com/license + * + * Styles used by the XHTML 1.1 sample page (xhtml.html). + */ + +/** + * Basic definitions for the editing area. + */ +body +{ + font-family: Arial, Verdana, sans-serif; + font-size: 80%; + color: #000000; + background-color: #ffffff; + padding: 5px; + margin: 0px; +} + +/** + * Core styles. + */ + +.Bold +{ + font-weight: bold; +} + +.Italic +{ + font-style: italic; +} + +.Underline +{ + text-decoration: underline; +} + +.StrikeThrough +{ + text-decoration: line-through; +} + +.Subscript +{ + vertical-align: sub; + font-size: smaller; +} + +.Superscript +{ + vertical-align: super; + font-size: smaller; +} + +/** + * Font faces. + */ + +.FontComic +{ + font-family: 'Comic Sans MS'; +} + +.FontCourier +{ + font-family: 'Courier New'; +} + +.FontTimes +{ + font-family: 'Times New Roman'; +} + +/** + * Font sizes. + */ + +.FontSmaller +{ + font-size: smaller; +} + +.FontLarger +{ + font-size: larger; +} + +.FontSmall +{ + font-size: 8pt; +} + +.FontBig +{ + font-size: 14pt; +} + +.FontDouble +{ + font-size: 200%; +} + +/** + * Font colors. + */ +.FontColor1 +{ + color: #ff9900; +} + +.FontColor2 +{ + color: #0066cc; +} + +.FontColor3 +{ + color: #ff0000; +} + +.FontColor1BG +{ + background-color: #ff9900; +} + +.FontColor2BG +{ + background-color: #0066cc; +} + +.FontColor3BG +{ + background-color: #ff0000; +} + +/** + * Indentation. + */ + +.Indent1 +{ + margin-left: 40px; +} + +.Indent2 +{ + margin-left: 80px; +} + +.Indent3 +{ + margin-left: 120px; +} + +/** + * Alignment. + */ + +.JustifyLeft +{ + text-align: left; +} + +.JustifyRight +{ + text-align: right; +} + +.JustifyCenter +{ + text-align: center; +} + +.JustifyFull +{ + text-align: justify; +} + +/** + * Other. + */ + +code +{ + font-family: courier, monospace; + background-color: #eeeeee; + padding-left: 1px; + padding-right: 1px; + border: #c0c0c0 1px solid; +} + +kbd +{ + padding: 0px 1px 0px 1px; + border-width: 1px 2px 2px 1px; + border-style: solid; +} + +blockquote +{ + color: #808080; +} diff --git a/static/ckeditor/samples/assets/posteddata.php b/static/ckeditor/samples/assets/posteddata.php new file mode 100644 index 0000000..dcef922 --- /dev/null +++ b/static/ckeditor/samples/assets/posteddata.php @@ -0,0 +1,59 @@ + + + + + + Sample — CKEditor + + + +

    + CKEditor — Posted Data +

    + + + + + + + + + $value ) + { + if ( ( !is_string($value) && !is_numeric($value) ) || !is_string($key) ) + continue; + + if ( get_magic_quotes_gpc() ) + $value = htmlspecialchars( stripslashes((string)$value) ); + else + $value = htmlspecialchars( (string)$value ); +?> + + + + + +
    Field NameValue
    + + + diff --git a/static/ckeditor/samples/assets/sample.css b/static/ckeditor/samples/assets/sample.css new file mode 100644 index 0000000..64167c2 --- /dev/null +++ b/static/ckeditor/samples/assets/sample.css @@ -0,0 +1,3 @@ +/** + * Required by tests (dom/document.html). + */ diff --git a/static/ckeditor/samples/assets/sample.jpg b/static/ckeditor/samples/assets/sample.jpg new file mode 100644 index 0000000..a4a77fa Binary files /dev/null and b/static/ckeditor/samples/assets/sample.jpg differ diff --git a/static/ckeditor/samples/assets/uilanguages/languages.js b/static/ckeditor/samples/assets/uilanguages/languages.js new file mode 100644 index 0000000..6b3342b --- /dev/null +++ b/static/ckeditor/samples/assets/uilanguages/languages.js @@ -0,0 +1,7 @@ +/* + Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +var CKEDITOR_LANGS=function(){var c={af:"Afrikaans",ar:"Arabic",bg:"Bulgarian",bn:"Bengali/Bangla",bs:"Bosnian",ca:"Catalan",cs:"Czech",cy:"Welsh",da:"Danish",de:"German",el:"Greek",en:"English","en-au":"English (Australia)","en-ca":"English (Canadian)","en-gb":"English (United Kingdom)",eo:"Esperanto",es:"Spanish",et:"Estonian",eu:"Basque",fa:"Persian",fi:"Finnish",fo:"Faroese",fr:"French","fr-ca":"French (Canada)",gl:"Galician",gu:"Gujarati",he:"Hebrew",hi:"Hindi",hr:"Croatian",hu:"Hungarian",is:"Icelandic", +it:"Italian",ja:"Japanese",ka:"Georgian",km:"Khmer",ko:"Korean",ku:"Kurdish",lt:"Lithuanian",lv:"Latvian",mk:"Macedonian",mn:"Mongolian",ms:"Malay",nb:"Norwegian Bokmal",nl:"Dutch",no:"Norwegian",pl:"Polish",pt:"Portuguese (Portugal)","pt-br":"Portuguese (Brazil)",ro:"Romanian",ru:"Russian",sk:"Slovak",sq:"Albanian",sl:"Slovenian",sr:"Serbian (Cyrillic)","sr-latn":"Serbian (Latin)",sv:"Swedish",th:"Thai",tr:"Turkish",ug:"Uighur",uk:"Ukrainian",vi:"Vietnamese",zh:"Chinese Traditional","zh-cn":"Chinese Simplified"}, +b=[],a;for(a in CKEDITOR.lang.languages)b.push({code:a,name:c[a]||a});b.sort(function(a,b){return a.name + + + + Data Filtering — CKEditor Sample + + + + + + +

    + CKEditor Samples » Data Filtering and Features Activation +

    +
    +

    + This sample page demonstrates the idea of Advanced Content Filter + (ACF), a sophisticated + tool that takes control over what kind of data is accepted by the editor and what + kind of output is produced. +

    +

    When and what is being filtered?

    +

    + ACF controls + every single source of data that comes to the editor. + It process both HTML that is inserted manually (i.e. pasted by the user) + and programmatically like: +

    +
    +editor.setData( '<p>Hello world!</p>' );
    +
    +

    + ACF discards invalid, + useless HTML tags and attributes so the editor remains "clean" during + runtime. ACF behaviour + can be configured and adjusted for a particular case to prevent the + output HTML (i.e. in CMS systems) from being polluted. + + This kind of filtering is a first, client-side line of defense + against "tag soups", + the tool that precisely restricts which tags, attributes and styles + are allowed (desired). When properly configured, ACF + is an easy and fast way to produce a high-quality, intentionally filtered HTML. +

    + +

    How to configure or disable ACF?

    +

    + Advanced Content Filter is enabled by default, working in "automatic mode", yet + it provides a set of easy rules that allow adjusting filtering rules + and disabling the entire feature when necessary. The config property + responsible for this feature is config.allowedContent. +

    +

    + By "automatic mode" is meant that loaded plugins decide which kind + of content is enabled and which is not. For example, if the link + plugin is loaded it implies that <a> tag is + automatically allowed. Each plugin is given a set + of predefined ACF rules + that control the editor until + config.allowedContent + is defined manually. +

    +

    + Let's assume our intention is to restrict the editor to accept (produce) paragraphs + only: no attributes, no styles, no other tags. + With ACF + this is very simple. Basically set + config.allowedContent to 'p': +

    +
    +var editor = CKEDITOR.replace( textarea_id, {
    +	allowedContent: 'p'
    +} );
    +
    +

    + Now try to play with allowed content: +

    +
    +// Trying to insert disallowed tag and attribute.
    +editor.setData( '<p style="color: red">Hello <em>world</em>!</p>' );
    +alert( editor.getData() );
    +
    +// Filtered data is returned.
    +"<p>Hello world!</p>"
    +
    +

    + What happened? Since config.allowedContent: 'p' is set the editor assumes + that only plain <p> are accepted. Nothing more. This is why + style attribute and <em> tag are gone. The same + filtering would happen if we pasted disallowed HTML into this editor. +

    +

    + This is just a small sample of what ACF + can do. To know more, please refer to the sample section below and + the official Advanced Content Filter guide. +

    +

    + You may, of course, want CKEditor to avoid filtering of any kind. + To get rid of ACF, + basically set + config.allowedContent to true like this: +

    +
    +CKEDITOR.replace( textarea_id, {
    +	allowedContent: true
    +} );
    +
    + +

    Beyond data flow: Features activation

    +

    + ACF is far more than + I/O control: the entire + UI of the editor is adjusted to what + filters restrict. For example: if <a> tag is + disallowed + by ACF, + then accordingly link command, toolbar button and link dialog + are also disabled. Editor is smart: it knows which features must be + removed from the interface to match filtering rules. +

    +

    + CKEditor can be far more specific. If <a> tag is + allowed by filtering rules to be used but it is restricted + to have only one attribute (href) + config.allowedContent = 'a[!href]', then + "Target" tab of the link dialog is automatically disabled as target + attribute isn't included in ACF rules + for <a>. This behaviour applies to dialog fields, context + menus and toolbar buttons. +

    + +

    Sample configurations

    +

    + There are several editor instances below that present different + ACF setups. All of them, + except the last inline instance, share the same HTML content to visualize + how different filtering rules affect the same input data. +

    +
    + +
    + +
    +

    + This editor is using default configuration ("automatic mode"). It means that + + config.allowedContent is defined by loaded plugins. + Each plugin extends filtering rules to make it's own associated content + available for the user. +

    +
    + + + +
    + +
    + +
    + +
    +

    + This editor is using a custom configuration for + ACF: +

    +
    +CKEDITOR.replace( 'editor2', {
    +	allowedContent:
    +		'h1 h2 h3 p blockquote strong em;' +
    +		'a[!href];' +
    +		'img(left,right)[!src,alt,width,height];' +
    +		'table tr th td caption;' +
    +		'span{!font-family};' +'
    +		'span{!color};' +
    +		'span(!marker);' +
    +		'del ins'
    +} );
    +
    +

    + The following rules may require additional explanation: +

    +
      +
    • + h1 h2 h3 p blockquote strong em - These tags + are accepted by the editor. Any tag attributes will be discarded. +
    • +
    • + a[!href] - href attribute is obligatory + for <a> tag. Tags without this attribute + are disarded. No other attribute will be accepted. +
    • +
    • + img(left,right)[!src,alt,width,height] - src + attribute is obligatory for <img> tag. + alt, width, height + and class attributes are accepted but + class must be either class="left" + or class="right" +
    • +
    • + table tr th td caption - These tags + are accepted by the editor. Any tag attributes will be discarded. +
    • +
    • + span{!font-family}, span{!color}, + span(!marker) - <span> tags + will be accepted if either font-family or + color style is set or class="marker" + is present. +
    • +
    • + del ins - These tags + are accepted by the editor. Any tag attributes will be discarded. +
    • +
    +

    + Please note that UI of the + editor is different. It's a response to what happened to the filters. + Since text-align isn't allowed, the align toolbar is gone. + The same thing happened to subscript/superscript, strike, underline + (<u>, <sub>, <sup> + are disallowed by + config.allowedContent) and many other buttons. +

    +
    + + +
    + +
    + +
    + +
    +

    + This editor is using a custom configuration for + ACF. + Note that filters can be configured as an object literal + as an alternative to a string-based definition. +

    +
    +CKEDITOR.replace( 'editor3', {
    +	allowedContent: {
    +		'b i ul ol big small': true,
    +		'h1 h2 h3 p blockquote li': {
    +			styles: 'text-align'
    +		},
    +		a: { attributes: '!href,target' },
    +		img: {
    +			attributes: '!src,alt',
    +			styles: 'width,height',
    +			classes: 'left,right'
    +		}
    +	}
    +} );
    +
    +
    + + +
    + +
    + +
    + +
    +

    + This editor is using a custom set of plugins and buttons. +

    +
    +CKEDITOR.replace( 'editor4', {
    +	removePlugins: 'bidi,font,forms,flash,horizontalrule,iframe,justify,table,tabletools,smiley',
    +	removeButtons: 'Anchor,Underline,Strike,Subscript,Superscript,Image',
    +	format_tags: 'p;h1;h2;h3;pre;address'
    +} );
    +
    +

    + As you can see, removing plugins and buttons implies filtering. + Several tags are not allowed in the editor because there's no + plugin/button that is responsible for creating and editing this + kind of content (for example: the image is missing because + of removeButtons: 'Image'). The conclusion is that + ACF works "backwards" + as well: modifying UI + elements is changing allowed content rules. +

    +
    + + +
    + +
    + +
    + +
    +

    + This editor is built on editable <h1> element. + ACF takes care of + what can be included in <h1>. Note that there + are no block styles in Styles combo. Also why lists, indentation, + blockquote, div, form and other buttons are missing. +

    +

    + ACF makes sure that + no disallowed tags will come to <h1> so the final + markup is valid. If the user tried to paste some invalid HTML + into this editor (let's say a list), it would be automatically + converted into plain text. +

    +
    +

    + Apollo 11 was the spaceflight that landed the first humans, Americans Neil Armstrong and Buzz Aldrin, on the Moon on July 20, 1969, at 20:18 UTC. +

    +
    + + + + diff --git a/static/ckeditor/samples/divreplace.html b/static/ckeditor/samples/divreplace.html new file mode 100644 index 0000000..ac5f5f8 --- /dev/null +++ b/static/ckeditor/samples/divreplace.html @@ -0,0 +1,141 @@ + + + + + Replace DIV — CKEditor Sample + + + + + + + +

    + CKEditor Samples » Replace DIV with CKEditor on the Fly +

    +
    +

    + This sample shows how to automatically replace <div> elements + with a CKEditor instance on the fly, following user's doubleclick. The content + that was previously placed inside the <div> element will now + be moved into CKEditor editing area. +

    +

    + For details on how to create this setup check the source code of this sample page. +

    +
    +

    + Double-click any of the following <div> elements to transform them into + editor instances. +

    +
    +

    + Part 1 +

    +

    + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi + semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna + rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla + nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce + eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus. +

    +
    +
    +

    + Part 2 +

    +

    + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi + semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna + rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla + nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce + eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus. +

    +

    + Donec velit. Mauris massa. Vestibulum non nulla. Nam suscipit arcu nec elit. Phasellus + sollicitudin iaculis ante. Ut non mauris et sapien tincidunt adipiscing. Vestibulum + vitae leo. Suspendisse nec mi tristique nulla laoreet vulputate. +

    +
    +
    +

    + Part 3 +

    +

    + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi + semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna + rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla + nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce + eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus. +

    +
    + + + diff --git a/static/ckeditor/samples/index.html b/static/ckeditor/samples/index.html new file mode 100644 index 0000000..b868a23 --- /dev/null +++ b/static/ckeditor/samples/index.html @@ -0,0 +1,122 @@ + + + + + CKEditor Samples + + + + +

    + CKEditor Samples +

    +
    +
    +

    + Basic Samples +

    +
    +
    Replace textarea elements by class name
    +
    Automatic replacement of all textarea elements of a given class with a CKEditor instance.
    + +
    Replace textarea elements by code
    +
    Replacement of textarea elements with CKEditor instances by using a JavaScript call.
    +
    + +

    + Basic Customization +

    +
    +
    User Interface color
    +
    Changing CKEditor User Interface color and adding a toolbar button that lets the user set the UI color.
    + +
    User Interface languages
    +
    Changing CKEditor User Interface language and adding a drop-down list that lets the user choose the UI language.
    +
    + + +

    Plugins

    +
    +
    Magicline pluginNew!
    +
    Using the Magicline plugin to access difficult focus spaces.
    + +
    Full page support
    +
    CKEditor inserted with a JavaScript call and used to edit the whole page from <html> to </html>.
    +
    +
    +
    +

    + Inline Editing New! +

    +
    +
    Massive inline editor creation New!
    +
    Turn all elements with contentEditable = true attribute into inline editors.
    + +
    Convert element into an inline editor by code New!
    +
    Conversion of DOM elements into inline CKEditor instances by using a JavaScript call.
    + + +
    + +

    + Advanced Samples +

    +
    +
    Data filtering and features activation New!
    +
    Data filtering and automatic features activation basing on configuration.
    + +
    Replace DIV elements on the fly
    +
    Transforming a div element into an instance of CKEditor with a mouse click.
    + +
    Append editor instances
    +
    Appending editor instances to existing DOM elements.
    + +
    Create and destroy editor instances for Ajax applications
    +
    Creating and destroying CKEditor instances on the fly and saving the contents entered into the editor window.
    + +
    Basic usage of the API
    +
    Using the CKEditor JavaScript API to interact with the editor at runtime.
    + +
    XHTML-compliant style
    +
    Configuring CKEditor to produce XHTML 1.1 compliant attributes and styles.
    + +
    Read-only mode
    +
    Using the readOnly API to block introducing changes to the editor contents.
    + +
    "Tab" key-based navigation New!
    +
    Navigating among editor instances with tab key.
    + + + +
    Using the JavaScript API to customize dialog windows
    +
    Using the dialog windows API to customize dialog windows without changing the original editor code.
    + +
    Using the "Enter" key in CKEditor
    +
    Configuring the behavior of Enter and Shift+Enter keys.
    + +
    Output for Flash
    +
    Configuring CKEditor to produce HTML code that can be used with Adobe Flash.
    + +
    Output HTML
    +
    Configuring CKEditor to produce legacy HTML 4 code.
    + +
    Toolbar ConfigurationsNew!
    +
    Configuring CKEditor to display full or custom toolbar layout.
    + +
    +
    +
    + + + diff --git a/static/ckeditor/samples/inlineall.html b/static/ckeditor/samples/inlineall.html new file mode 100644 index 0000000..2a76b56 --- /dev/null +++ b/static/ckeditor/samples/inlineall.html @@ -0,0 +1,311 @@ + + + + + Massive inline editing — CKEditor Sample + + + + + + + +
    +

    CKEditor Samples » Massive inline editing

    +
    +

    This sample page demonstrates the inline editing feature - CKEditor instances will be created automatically from page elements with contentEditable attribute set to value true:

    +
    <div contenteditable="true" > ... </div>
    +

    Click inside of any element below to start editing.

    +
    +
    +
    + +
    +
    +
    +

    + Fusce vitae porttitor +

    +

    + + Lorem ipsum dolor sit amet dolor. Duis blandit vestibulum faucibus a, tortor. + +

    +

    + Proin nunc justo felis mollis tincidunt, risus risus pede, posuere cubilia Curae, Nullam euismod, enim. Etiam nibh ultricies dolor ac dignissim erat volutpat. Vivamus fermentum nisl nulla sem in metus. Maecenas wisi. Donec nec erat volutpat. +

    +
    +

    + Fusce vitae porttitor a, euismod convallis nisl, blandit risus tortor, pretium. + Vehicula vitae, imperdiet vel, ornare enim vel sodales rutrum +

    +
    +
    +

    + Libero nunc, rhoncus ante ipsum non ipsum. Nunc eleifend pede turpis id sollicitudin fringilla. Phasellus ultrices, velit ac arcu. +

    +
    +

    Pellentesque nunc. Donec suscipit erat. Pellentesque habitant morbi tristique ullamcorper.

    +

    Mauris mattis feugiat lectus nec mauris. Nullam vitae ante.

    +
    +
    +
    +
    +

    + Integer condimentum sit amet +

    +

    + Aenean nonummy a, mattis varius. Cras aliquet. + Praesent magna non mattis ac, rhoncus nunc, rhoncus eget, cursus pulvinar mollis.

    +

    Proin id nibh. Sed eu libero posuere sed, lectus. Phasellus dui gravida gravida feugiat mattis ac, felis.

    +

    Integer condimentum sit amet, tempor elit odio, a dolor non ante at sapien. Sed ac lectus. Nulla ligula quis eleifend mi, id leo velit pede cursus arcu id nulla ac lectus. Phasellus vestibulum. Nunc viverra enim quis diam.

    +
    +
    +

    + Praesent wisi accumsan sit amet nibh +

    +

    Donec ullamcorper, risus tortor, pretium porttitor. Morbi quam quis lectus non leo.

    +

    Integer faucibus scelerisque. Proin faucibus at, aliquet vulputate, odio at eros. Fusce gravida, erat vitae augue. Fusce urna fringilla gravida.

    +

    In hac habitasse platea dictumst. Praesent wisi accumsan sit amet nibh. Maecenas orci luctus a, lacinia quam sem, posuere commodo, odio condimentum tempor, pede semper risus. Suspendisse pede. In hac habitasse platea dictumst. Nam sed laoreet sit amet erat. Integer.

    +
    +
    +
    +
    +

    + CKEditor logo +

    +

    Quisque justo neque, mattis sed, fermentum ultrices posuere cubilia Curae, Vestibulum elit metus, quis placerat ut, lectus. Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis. Fusce porttitor, nulla quis turpis. Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi. Donec odio nec velit ac nunc sit amet, accumsan cursus aliquet. Vestibulum ante sit amet sagittis mi.

    +

    + Nullam laoreet vel consectetuer tellus suscipit +

    +
      +
    • Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis.
    • +
    • Fusce porttitor, nulla quis turpis. Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi.
    • +
    • Mauris eget tellus. Donec non felis. Nam eget dolor. Vestibulum enim. Donec.
    • +
    +

    Quisque justo neque, mattis sed, fermentum ultrices posuere cubilia Curae, Vestibulum elit metus, quis placerat ut, lectus.

    +

    Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi. Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis. Fusce porttitor, nulla quis turpis.

    +

    Donec odio nec velit ac nunc sit amet, accumsan cursus aliquet. Vestibulum ante sit amet sagittis mi. Sed in nonummy faucibus turpis. Mauris eget tellus. Donec non felis. Nam eget dolor. Vestibulum enim. Donec.

    +
    +
    +
    +
    + Tags of this article: +

    + inline, editing, floating, CKEditor +

    +
    +
    + + + diff --git a/static/ckeditor/samples/inlinebycode.html b/static/ckeditor/samples/inlinebycode.html new file mode 100644 index 0000000..e224c68 --- /dev/null +++ b/static/ckeditor/samples/inlinebycode.html @@ -0,0 +1,122 @@ + + + + + Inline Editing by Code — CKEditor Sample + + + + + + +

    + CKEditor Samples » Inline Editing by Code +

    +
    +

    + This sample shows how to create an inline editor instance of CKEditor. It is created + with a JavaScript call using the following code: +

    +
    +// This property tells CKEditor to not activate every element with contenteditable=true element.
    +CKEDITOR.disableAutoInline = true;
    +
    +var editor = CKEDITOR.inline( document.getElementById( 'editable' ) );
    +
    +

    + Note that editable in the code above is the id + attribute of the <div> element to be converted into an inline instance. +

    +
    +
    +

    Saturn V carrying Apollo 11 Apollo 11

    + +

    Apollo 11 was the spaceflight that landed the first humans, Americans Neil Armstrong and Buzz Aldrin, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.

    + +

    Armstrong spent about three and a half two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5 kg) of lunar material for return to Earth. A third member of the mission, Michael Collins, piloted the command spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.

    + +

    Broadcasting and quotes

    + +

    Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:

    + +
    +

    One small step for [a] man, one giant leap for mankind.

    +
    + +

    Apollo 11 effectively ended the Space Race and fulfilled a national goal proposed in 1961 by the late U.S. President John F. Kennedy in a speech before the United States Congress:

    + +
    +

    [...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.

    +
    + +

    Technical details

    + + + + + + + + + + + + + + + + + + + + + + + +
    Mission crew
    PositionAstronaut
    CommanderNeil A. Armstrong
    Command Module PilotMichael Collins
    Lunar Module PilotEdwin "Buzz" E. Aldrin, Jr.
    + +

    Launched by a Saturn V rocket from Kennedy Space Center in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of NASA's Apollo program. The Apollo spacecraft had three parts:

    + +
      +
    1. Command Module with a cabin for the three astronauts which was the only part which landed back on Earth
    2. +
    3. Service Module which supported the Command Module with propulsion, electrical power, oxygen and water
    4. +
    5. Lunar Module for landing on the Moon.
    6. +
    + +

    After being sent to the Moon by the Saturn V's upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the Sea of Tranquility. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the Pacific Ocean on July 24.

    + +
    +

    Source: Wikipedia.org

    +
    + + + + diff --git a/static/ckeditor/samples/plugins/dialog/assets/my_dialog.js b/static/ckeditor/samples/plugins/dialog/assets/my_dialog.js new file mode 100644 index 0000000..b80cac9 --- /dev/null +++ b/static/ckeditor/samples/plugins/dialog/assets/my_dialog.js @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.html or http://ckeditor.com/license + */ + +CKEDITOR.dialog.add( 'myDialog', function( editor ) { + return { + title: 'My Dialog', + minWidth: 400, + minHeight: 200, + contents: [ + { + id: 'tab1', + label: 'First Tab', + title: 'First Tab', + elements: [ + { + id: 'input1', + type: 'text', + label: 'Text Field' + }, + { + id: 'select1', + type: 'select', + label: 'Select Field', + items: [ + [ 'option1', 'value1' ], + [ 'option2', 'value2' ] + ] + } + ] + }, + { + id: 'tab2', + label: 'Second Tab', + title: 'Second Tab', + elements: [ + { + id: 'button1', + type: 'button', + label: 'Button Field' + } + ] + } + ] + }; +}); + diff --git a/static/ckeditor/samples/plugins/dialog/dialog.html b/static/ckeditor/samples/plugins/dialog/dialog.html new file mode 100644 index 0000000..0027684 --- /dev/null +++ b/static/ckeditor/samples/plugins/dialog/dialog.html @@ -0,0 +1,187 @@ + + + + + Using API to Customize Dialog Windows — CKEditor Sample + + + + + + + + + + +

    + CKEditor Samples » Using CKEditor Dialog API +

    +
    +

    + This sample shows how to use the + CKEditor Dialog API + to customize CKEditor dialog windows without changing the original editor code. + The following customizations are being done in the example below: +

    +

    + For details on how to create this setup check the source code of this sample page. +

    +
    +

    A custom dialog is added to the editors using the pluginsLoaded event, from an external dialog definition file:

    +
      +
    1. Creating a custom dialog window – "My Dialog" dialog window opened with the "My Dialog" toolbar button.
    2. +
    3. Creating a custom button – Add button to open the dialog with "My Dialog" toolbar button.
    4. +
    + + +

    The below editor modify the dialog definition of the above added dialog using the dialogDefinition event:

    +
      +
    1. Adding dialog tab – Add new tab "My Tab" to dialog window.
    2. +
    3. Removing a dialog window tab – Remove "Second Tab" page from the dialog window.
    4. +
    5. Adding dialog window fields – Add "My Custom Field" to the dialog window.
    6. +
    7. Removing dialog window field – Remove "Select Field" selection field from the dialog window.
    8. +
    9. Setting default values for dialog window fields – Set default value of "Text Field" text field.
    10. +
    11. Setup initial focus for dialog window – Put initial focus on "My Custom Field" text field.
    12. +
    + + + + + diff --git a/static/ckeditor/samples/plugins/enterkey/enterkey.html b/static/ckeditor/samples/plugins/enterkey/enterkey.html new file mode 100644 index 0000000..c2b19b5 --- /dev/null +++ b/static/ckeditor/samples/plugins/enterkey/enterkey.html @@ -0,0 +1,103 @@ + + + + + ENTER Key Configuration — CKEditor Sample + + + + + + + + + +

    + CKEditor Samples » ENTER Key Configuration +

    +
    +

    + This sample shows how to configure the Enter and Shift+Enter keys + to perform actions specified in the + enterMode + and shiftEnterMode + parameters, respectively. + You can choose from the following options: +

    +
      +
    • ENTER_P – new <p> paragraphs are created;
    • +
    • ENTER_BR – lines are broken with <br> elements;
    • +
    • ENTER_DIV – new <div> blocks are created.
    • +
    +

    + The sample code below shows how to configure CKEditor to create a <div> block when Enter key is pressed. +

    +
    +CKEDITOR.replace( 'textarea_id', {
    +	enterMode: CKEDITOR.ENTER_DIV
    +});
    +

    + Note that textarea_id in the code above is the id attribute of + the <textarea> element to be replaced. +

    +
    +
    + When Enter is pressed:
    + +
    +
    + When Shift+Enter is pressed:
    + +
    +
    +
    +

    +
    + +

    +

    + +

    +
    + + + diff --git a/static/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/outputforflash.fla b/static/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/outputforflash.fla new file mode 100644 index 0000000..27e68cc Binary files /dev/null and b/static/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/outputforflash.fla differ diff --git a/static/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/outputforflash.swf b/static/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/outputforflash.swf new file mode 100644 index 0000000..dbe17b6 Binary files /dev/null and b/static/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/outputforflash.swf differ diff --git a/static/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/swfobject.js b/static/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/swfobject.js new file mode 100644 index 0000000..95fdf0a --- /dev/null +++ b/static/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/swfobject.js @@ -0,0 +1,18 @@ +var swfobject=function(){function u(){if(!s){try{var a=d.getElementsByTagName("body")[0].appendChild(d.createElement("span"));a.parentNode.removeChild(a)}catch(b){return}s=!0;for(var a=x.length,c=0;cf){f++;setTimeout(arguments.callee,10);return}a.removeChild(b);c=null;D()})()}else D()}function D(){var a=p.length;if(0e.wk))t(c,!0),f&&(g.success=!0,g.ref=E(c),f(g));else if(p[b].expressInstall&&F()){g={};g.data=p[b].expressInstall;g.width=d.getAttribute("width")||"0";g.height=d.getAttribute("height")||"0";d.getAttribute("class")&&(g.styleclass=d.getAttribute("class"));d.getAttribute("align")&&(g.align=d.getAttribute("align"));for(var h={},d=d.getElementsByTagName("param"),j=d.length,k=0;ke.wk)}function G(a,b,c,f){A=!0;H=f||null;N={success:!1,id:c};var g=n(c);if(g){"OBJECT"==g.nodeName?(w=I(g),B=null):(w=g,B=c);a.id= +O;if(typeof a.width==i||!/%$/.test(a.width)&&310>parseInt(a.width,10))a.width="310";if(typeof a.height==i||!/%$/.test(a.height)&&137>parseInt(a.height,10))a.height="137";d.title=d.title.slice(0,47)+" - Flash Player Installation";f=e.ie&&e.win?"ActiveX":"PlugIn";f="MMredirectURL="+m.location.toString().replace(/&/g,"%26")+"&MMplayerType="+f+"&MMdoctitle="+d.title;b.flashvars=typeof b.flashvars!=i?b.flashvars+("&"+f):f;e.ie&&(e.win&&4!=g.readyState)&&(f=d.createElement("div"),c+="SWFObjectNew",f.setAttribute("id", +c),g.parentNode.insertBefore(f,g),g.style.display="none",function(){g.readyState==4?g.parentNode.removeChild(g):setTimeout(arguments.callee,10)}());J(a,b,c)}}function W(a){if(e.ie&&e.win&&4!=a.readyState){var b=d.createElement("div");a.parentNode.insertBefore(b,a);b.parentNode.replaceChild(I(a),b);a.style.display="none";(function(){4==a.readyState?a.parentNode.removeChild(a):setTimeout(arguments.callee,10)})()}else a.parentNode.replaceChild(I(a),a)}function I(a){var b=d.createElement("div");if(e.win&& +e.ie)b.innerHTML=a.innerHTML;else if(a=a.getElementsByTagName(r)[0])if(a=a.childNodes)for(var c=a.length,f=0;fe.wk)return f;if(g)if(typeof a.id==i&&(a.id=c),e.ie&&e.win){var o="",h;for(h in a)a[h]!=Object.prototype[h]&&("data"==h.toLowerCase()?b.movie=a[h]:"styleclass"==h.toLowerCase()?o+=' class="'+a[h]+'"':"classid"!=h.toLowerCase()&&(o+=" "+ +h+'="'+a[h]+'"'));h="";for(var j in b)b[j]!=Object.prototype[j]&&(h+='');g.outerHTML='"+h+"";C[C.length]=a.id;f=n(a.id)}else{j=d.createElement(r);j.setAttribute("type",y);for(var k in a)a[k]!=Object.prototype[k]&&("styleclass"==k.toLowerCase()?j.setAttribute("class",a[k]):"classid"!=k.toLowerCase()&&j.setAttribute(k,a[k]));for(o in b)b[o]!=Object.prototype[o]&&"movie"!=o.toLowerCase()&& +(a=j,h=o,k=b[o],c=d.createElement("param"),c.setAttribute("name",h),c.setAttribute("value",k),a.appendChild(c));g.parentNode.replaceChild(j,g);f=j}return f}function P(a){var b=n(a);b&&"OBJECT"==b.nodeName&&(e.ie&&e.win?(b.style.display="none",function(){if(4==b.readyState){var c=n(a);if(c){for(var f in c)"function"==typeof c[f]&&(c[f]=null);c.parentNode.removeChild(c)}}else setTimeout(arguments.callee,10)}()):b.parentNode.removeChild(b))}function n(a){var b=null;try{b=d.getElementById(a)}catch(c){}return b} +function U(a,b,c){a.attachEvent(b,c);v[v.length]=[a,b,c]}function z(a){var b=e.pv,a=a.split(".");a[0]=parseInt(a[0],10);a[1]=parseInt(a[1],10)||0;a[2]=parseInt(a[2],10)||0;return b[0]>a[0]||b[0]==a[0]&&b[1]>a[1]||b[0]==a[0]&&b[1]==a[1]&&b[2]>=a[2]?!0:!1}function Q(a,b,c,f){if(!e.ie||!e.mac){var g=d.getElementsByTagName("head")[0];if(g){c=c&&"string"==typeof c?c:"screen";f&&(K=l=null);if(!l||K!=c)f=d.createElement("style"),f.setAttribute("type","text/css"),f.setAttribute("media",c),l=g.appendChild(f), +e.ie&&(e.win&&typeof d.styleSheets!=i&&0\.;]/.exec(a)&&typeof encodeURIComponent!=i?encodeURIComponent(a):a}var i="undefined",r="object",y="application/x-shockwave-flash", +O="SWFObjectExprInst",m=window,d=document,q=navigator,T=!1,x=[function(){T?V():D()}],p=[],C=[],v=[],w,B,H,N,s=!1,A=!1,l,K,R=!0,e=function(){var a=typeof d.getElementById!=i&&typeof d.getElementsByTagName!=i&&typeof d.createElement!=i,b=q.userAgent.toLowerCase(),c=q.platform.toLowerCase(),f=c?/win/.test(c):/win/.test(b),c=c?/mac/.test(c):/mac/.test(b),b=/webkit/.test(b)?parseFloat(b.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):!1,g=!+"\v1",e=[0,0,0],h=null;if(typeof q.plugins!=i&&typeof q.plugins["Shockwave Flash"]== +r){if((h=q.plugins["Shockwave Flash"].description)&&!(typeof q.mimeTypes!=i&&q.mimeTypes[y]&&!q.mimeTypes[y].enabledPlugin))T=!0,g=!1,h=h.replace(/^.*\s+(\S+\s+\S+$)/,"$1"),e[0]=parseInt(h.replace(/^(.*)\..*$/,"$1"),10),e[1]=parseInt(h.replace(/^.*\.(.*)\s.*$/,"$1"),10),e[2]=/[a-zA-Z]/.test(h)?parseInt(h.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}else if(typeof m.ActiveXObject!=i)try{var j=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");if(j&&(h=j.GetVariable("$version")))g=!0,h=h.split(" ")[1].split(","), +e=[parseInt(h[0],10),parseInt(h[1],10),parseInt(h[2],10)]}catch(k){}return{w3:a,pv:e,wk:b,ie:g,win:f,mac:c}}();(function(){e.w3&&((typeof d.readyState!=i&&"complete"==d.readyState||typeof d.readyState==i&&(d.getElementsByTagName("body")[0]||d.body))&&u(),s||(typeof d.addEventListener!=i&&d.addEventListener("DOMContentLoaded",u,!1),e.ie&&e.win&&(d.attachEvent("onreadystatechange",function(){"complete"==d.readyState&&(d.detachEvent("onreadystatechange",arguments.callee),u())}),m==top&&function(){if(!s){try{d.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee, +0);return}u()}}()),e.wk&&function(){s||(/loaded|complete/.test(d.readyState)?u():setTimeout(arguments.callee,0))}(),M(u)))})();(function(){e.ie&&e.win&&window.attachEvent("onunload",function(){for(var a=v.length,b=0;be.wk)&&a&&b&&c&&d&&g?(t(b,!1),L(function(){c+="";d+="";var e={};if(k&&typeof k===r)for(var l in k)e[l]=k[l];e.data=a;e.width=c;e.height=d;l={};if(j&&typeof j===r)for(var p in j)l[p]=j[p];if(h&&typeof h===r)for(var q in h)l.flashvars=typeof l.flashvars!=i?l.flashvars+("&"+q+"="+h[q]):q+"="+h[q];if(z(g))p=J(e,l,b),e.id== +b&&t(b,!0),n.success=!0,n.ref=p;else{if(o&&F()){e.data=o;G(e,l,b,m);return}t(b,!0)}m&&m(n)})):m&&m(n)},switchOffAutoHideShow:function(){R=!1},ua:e,getFlashPlayerVersion:function(){return{major:e.pv[0],minor:e.pv[1],release:e.pv[2]}},hasFlashPlayerVersion:z,createSWF:function(a,b,c){if(e.w3)return J(a,b,c)},showExpressInstall:function(a,b,c,d){e.w3&&F()&&G(a,b,c,d)},removeSWF:function(a){e.w3&&P(a)},createCSS:function(a,b,c,d){e.w3&&Q(a,b,c,d)},addDomLoadEvent:L,addLoadEvent:M,getQueryParamValue:function(a){var b= +d.location.search||d.location.hash;if(b){/\?/.test(b)&&(b=b.split("?")[1]);if(null==a)return S(b);for(var b=b.split("&"),c=0;c + + + + Output for Flash — CKEditor Sample + + + + + + + + + + + + +

    + CKEditor Samples » Producing Flash Compliant HTML Output +

    +
    +

    + This sample shows how to configure CKEditor to output + HTML code that can be used with + + Adobe Flash. + The code will contain a subset of standard HTML elements like <b>, + <i>, and <p> as well as HTML attributes. +

    +

    + To add a CKEditor instance outputting Flash compliant HTML code, load the editor using a standard + JavaScript call, and define CKEditor features to use HTML elements and attributes. +

    +

    + For details on how to create this setup check the source code of this sample page. +

    +
    +

    + To see how it works, create some content in the editing area of CKEditor on the left + and send it to the Flash object on the right side of the page by using the + Send to Flash button. +

    + + + + + +
    + + +

    + +

    +
    +
    +
    + + + diff --git a/static/ckeditor/samples/plugins/htmlwriter/outputhtml.html b/static/ckeditor/samples/plugins/htmlwriter/outputhtml.html new file mode 100644 index 0000000..4616708 --- /dev/null +++ b/static/ckeditor/samples/plugins/htmlwriter/outputhtml.html @@ -0,0 +1,221 @@ + + + + + HTML Compliant Output — CKEditor Sample + + + + + + + + + + +

    + CKEditor Samples » Producing HTML Compliant Output +

    +
    +

    + This sample shows how to configure CKEditor to output valid + HTML 4.01 code. + Traditional HTML elements like <b>, + <i>, and <font> are used in place of + <strong>, <em>, and CSS styles. +

    +

    + To add a CKEditor instance outputting legacy HTML 4.01 code, load the editor using a standard + JavaScript call, and define CKEditor features to use the HTML compliant elements and attributes. +

    +

    + A snippet of the configuration code can be seen below; check the source of this page for + full definition: +

    +
    +CKEDITOR.replace( 'textarea_id', {
    +	coreStyles_bold: { element: 'b' },
    +	coreStyles_italic: { element: 'i' },
    +
    +	fontSize_style: {
    +		element: 'font',
    +		attributes: { 'size': '#(size)' }
    +	}
    +
    +	...
    +});
    +
    +
    +

    + + + +

    +

    + +

    +
    + + + diff --git a/static/ckeditor/samples/plugins/magicline/magicline.html b/static/ckeditor/samples/plugins/magicline/magicline.html new file mode 100644 index 0000000..2ee60ee --- /dev/null +++ b/static/ckeditor/samples/plugins/magicline/magicline.html @@ -0,0 +1,207 @@ + + + + + Using Magicline plugin — CKEditor Sample + + + + + + + + + +

    + CKEditor Samples » Using Magicline plugin +

    +
    +

    + This sample shows the advantages of Magicline plugin + which is to enhance the editing process. Thanks to this plugin, + a number of difficult focus spaces which are inaccessible due to + browser issues can now be focused. +

    +

    + Magicline plugin shows a red line with a handler + which, when clicked, inserts a paragraph and allows typing. To see this, + focus an editor and move your mouse above the focus space you want + to access. The plugin is enabled by default so no additional + configuration is necessary. +

    +
    +
    + +
    +

    + This editor uses a default Magicline setup. +

    +
    + + +
    +
    +
    + +
    +

    + This editor is using a blue line. +

    +
    +CKEDITOR.replace( 'editor2', {
    +	magicline_color: 'blue'
    +});
    +
    + + +
    + + + diff --git a/static/ckeditor/samples/plugins/toolbar/toolbar.html b/static/ckeditor/samples/plugins/toolbar/toolbar.html new file mode 100644 index 0000000..b0f7179 --- /dev/null +++ b/static/ckeditor/samples/plugins/toolbar/toolbar.html @@ -0,0 +1,232 @@ + + + + + Toolbar Configuration — CKEditor Sample + + + + + + + + + +

    + CKEditor Samples » Toolbar Configuration +

    +
    +

    + This sample page demonstrates editor with loaded full toolbar (all registered buttons) and, if + current editor's configuration modifies default settings, also editor with modified toolbar. +

    + +

    Since CKEditor 4 there are two ways to configure toolbar buttons.

    + +

    By config.toolbar

    + +

    + You can explicitly define which buttons are displayed in which groups and in which order. + This is the more precise setting, but less flexible. If newly added plugin adds its + own button you'll have to add it manually to your config.toolbar setting as well. +

    + +

    To add a CKEditor instance with custom toolbar setting, insert the following JavaScript call to your code:

    + +
    +CKEDITOR.replace( 'textarea_id', {
    +	toolbar: [
    +		{ name: 'document', items: [ 'Source', '-', 'NewPage', 'Preview', '-', 'Templates' ] },	// Defines toolbar group with name (used to create voice label) and items in 3 subgroups.
    +		[ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ],			// Defines toolbar group without name.
    +		'/',																					// Line break - next group will be placed in new line.
    +		{ name: 'basicstyles', items: [ 'Bold', 'Italic' ] }
    +	]
    +});
    + +

    By config.toolbarGroups

    + +

    + You can define which groups of buttons (like e.g. basicstyles, clipboard + and forms) are displayed and in which order. Registered buttons are associated + with toolbar groups by toolbar property in their definition. + This setting's advantage is that you don't have to modify toolbar configuration + when adding/removing plugins which register their own buttons. +

    + +

    To add a CKEditor instance with custom toolbar groups setting, insert the following JavaScript call to your code:

    + +
    +CKEDITOR.replace( 'textarea_id', {
    +	toolbarGroups: [
    +		{ name: 'document',	   groups: [ 'mode', 'document' ] },			// Displays document group with its two subgroups.
    + 		{ name: 'clipboard',   groups: [ 'clipboard', 'undo' ] },			// Group's name will be used to create voice label.
    + 		'/',																// Line break - next group will be placed in new line.
    + 		{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
    + 		{ name: 'links' }
    +	]
    +
    +	// NOTE: Remember to leave 'toolbar' property with the default value (null).
    +});
    +
    + + + +
    +

    Full toolbar configuration

    +

    Below you can see editor with full toolbar, generated automatically by the editor.

    +

    + Note: To create editor instance with full toolbar you don't have to set anything. + Just leave toolbar and toolbarGroups with the default, null values. +

    + +
    
    +	
    + + + + + + diff --git a/static/ckeditor/samples/plugins/wysiwygarea/fullpage.html b/static/ckeditor/samples/plugins/wysiwygarea/fullpage.html new file mode 100644 index 0000000..a4196ac --- /dev/null +++ b/static/ckeditor/samples/plugins/wysiwygarea/fullpage.html @@ -0,0 +1,77 @@ + + + + + Full Page Editing — CKEditor Sample + + + + + + + + + + +

    + CKEditor Samples » Full Page Editing +

    +
    +

    + This sample shows how to configure CKEditor to edit entire HTML pages, from the + <html> tag to the </html> tag. +

    +

    + The CKEditor instance below is inserted with a JavaScript call using the following code: +

    +
    +CKEDITOR.replace( 'textarea_id', {
    +	fullPage: true,
    +	allowedContent: true
    +});
    +
    +

    + Note that textarea_id in the code above is the id attribute of + the <textarea> element to be replaced. +

    +

    + The allowedContent in the code above is set to true to disable content filtering. + Setting this option is not obligatory, but in full page mode there is a strong chance that one may want be able to freely enter any HTML content in source mode without any limitations. +

    +
    +
    + + + +

    + +

    +
    + + + diff --git a/static/ckeditor/samples/readonly.html b/static/ckeditor/samples/readonly.html new file mode 100644 index 0000000..5fbb60b --- /dev/null +++ b/static/ckeditor/samples/readonly.html @@ -0,0 +1,73 @@ + + + + + Using the CKEditor Read-Only API — CKEditor Sample + + + + + + +

    + CKEditor Samples » Using the CKEditor Read-Only API +

    +
    +

    + This sample shows how to use the + setReadOnly + API to put editor into the read-only state that makes it impossible for users to change the editor contents. +

    +

    + For details on how to create this setup check the source code of this sample page. +

    +
    +
    +

    + +

    +

    + + +

    +
    + + + diff --git a/static/ckeditor/samples/replacebyclass.html b/static/ckeditor/samples/replacebyclass.html new file mode 100644 index 0000000..a95d261 --- /dev/null +++ b/static/ckeditor/samples/replacebyclass.html @@ -0,0 +1,57 @@ + + + + + Replace Textareas by Class Name — CKEditor Sample + + + + + +

    + CKEditor Samples » Replace Textarea Elements by Class Name +

    +
    +

    + This sample shows how to automatically replace all <textarea> elements + of a given class with a CKEditor instance. +

    +

    + To replace a <textarea> element, simply assign it the ckeditor + class, as in the code below: +

    +
    +<textarea class="ckeditor" name="editor1"></textarea>
    +
    +

    + Note that other <textarea> attributes (like id or name) need to be adjusted to your document. +

    +
    +
    +

    + + +

    +

    + +

    +
    + + + diff --git a/static/ckeditor/samples/replacebycode.html b/static/ckeditor/samples/replacebycode.html new file mode 100644 index 0000000..d5a01e8 --- /dev/null +++ b/static/ckeditor/samples/replacebycode.html @@ -0,0 +1,56 @@ + + + + + Replace Textarea by Code — CKEditor Sample + + + + + +

    + CKEditor Samples » Replace Textarea Elements Using JavaScript Code +

    +
    +
    +

    + This editor is using an <iframe> element-based editing area, provided by the Wysiwygarea plugin. +

    +
    +CKEDITOR.replace( 'textarea_id' )
    +
    +
    + + +

    + +

    +
    + + + diff --git a/static/ckeditor/samples/sample.css b/static/ckeditor/samples/sample.css new file mode 100644 index 0000000..14a790a --- /dev/null +++ b/static/ckeditor/samples/sample.css @@ -0,0 +1,339 @@ +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +html, body, h1, h2, h3, h4, h5, h6, div, span, blockquote, p, address, form, fieldset, img, ul, ol, dl, dt, dd, li, hr, table, td, th, strong, em, sup, sub, dfn, ins, del, q, cite, var, samp, code, kbd, tt, pre +{ + line-height: 1.5em; +} + +body +{ + padding: 10px 30px; +} + +input, textarea, select, option, optgroup, button, td, th +{ + font-size: 100%; +} + +pre, code, kbd, samp, tt +{ + font-family: monospace,monospace; + font-size: 1em; +} + +body { + width: 960px; + margin: 0 auto; +} + +code +{ + background: #f3f3f3; + border: 1px solid #ddd; + padding: 1px 4px; + + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +abbr +{ + border-bottom: 1px dotted #555; + cursor: pointer; +} + +.new +{ + background: #FF7E00; + border: 1px solid #DA8028; + color: #fff; + font-size: 10px; + font-weight: bold; + padding: 1px 4px; + text-shadow: 0 1px 0 #C97626; + text-transform: uppercase; + margin: 0 0 0 3px; + + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + + -moz-box-shadow: 0 2px 3px 0 #FFA54E inset; + -webkit-box-shadow: 0 2px 3px 0 #FFA54E inset; + box-shadow: 0 2px 3px 0 #FFA54E inset; +} + +h1.samples +{ + color: #0782C1; + font-size: 200%; + font-weight: normal; + margin: 0; + padding: 0; +} + +h1.samples a +{ + color: #0782C1; + text-decoration: none; + border-bottom: 1px dotted #0782C1; +} + +.samples a:hover +{ + border-bottom: 1px dotted #0782C1; +} + +h2.samples +{ + color: #000000; + font-size: 130%; + margin: 15px 0 0 0; + padding: 0; +} + +p, blockquote, address, form, pre, dl, h1.samples, h2.samples +{ + margin-bottom: 15px; +} + +ul.samples +{ + margin-bottom: 15px; +} + +.clear +{ + clear: both; +} + +fieldset +{ + margin: 0; + padding: 10px; +} + +body, input, textarea +{ + color: #333333; + font-family: Arial, Helvetica, sans-serif; +} + +body +{ + font-size: 75%; +} + +a.samples +{ + color: #189DE1; + text-decoration: none; +} + +form +{ + margin: 0; + padding: 0; +} + +pre.samples +{ + background-color: #F7F7F7; + border: 1px solid #D7D7D7; + overflow: auto; + padding: 0.25em; + white-space: pre-wrap; /* CSS 2.1 */ + word-wrap: break-word; /* IE7 */ + -moz-tab-size: 4; + -o-tab-size: 4; + -webkit-tab-size: 4; + tab-size: 4; +} + +#footer +{ + clear: both; + padding-top: 10px; +} + +#footer hr +{ + margin: 10px 0 15px 0; + height: 1px; + border: solid 1px gray; + border-bottom: none; +} + +#footer p +{ + margin: 0 10px 10px 10px; + float: left; +} + +#footer #copy +{ + float: right; +} + +#outputSample +{ + width: 100%; + table-layout: fixed; +} + +#outputSample thead th +{ + color: #dddddd; + background-color: #999999; + padding: 4px; + white-space: nowrap; +} + +#outputSample tbody th +{ + vertical-align: top; + text-align: left; +} + +#outputSample pre +{ + margin: 0; + padding: 0; +} + +.description +{ + border: 1px dotted #B7B7B7; + margin-bottom: 10px; + padding: 10px 10px 0; + overflow: hidden; +} + +label +{ + display: block; + margin-bottom: 6px; +} + +/** + * CKEditor editables are automatically set with the "cke_editable" class + * plus cke_editable_(inline|themed) depending on the editor type. + */ + +/* Style a bit the inline editables. */ +.cke_editable.cke_editable_inline +{ + cursor: pointer; +} + +/* Once an editable element gets focused, the "cke_focus" class is + added to it, so we can style it differently. */ +.cke_editable.cke_editable_inline.cke_focus +{ + box-shadow: inset 0px 0px 20px 3px #ddd, inset 0 0 1px #000; + outline: none; + background: #eee; + cursor: text; +} + +/* Avoid pre-formatted overflows inline editable. */ +.cke_editable_inline pre +{ + white-space: pre-wrap; + word-wrap: break-word; +} + +/** + * Samples index styles. + */ + +.twoColumns, +.twoColumnsLeft, +.twoColumnsRight +{ + overflow: hidden; +} + +.twoColumnsLeft, +.twoColumnsRight +{ + width: 45%; +} + +.twoColumnsLeft +{ + float: left; +} + +.twoColumnsRight +{ + float: right; +} + +dl.samples +{ + padding: 0 0 0 40px; +} +dl.samples > dt +{ + display: list-item; + list-style-type: disc; + list-style-position: outside; + margin: 0 0 3px; +} +dl.samples > dd +{ + margin: 0 0 3px; +} +.warning +{ + color: #ff0000; + background-color: #FFCCBA; + border: 2px dotted #ff0000; + padding: 15px 10px; + margin: 10px 0; +} + +/* Used on inline samples */ + +blockquote +{ + font-style: italic; + font-family: Georgia, Times, "Times New Roman", serif; + padding: 2px 0; + border-style: solid; + border-color: #ccc; + border-width: 0; +} + +.cke_contents_ltr blockquote +{ + padding-left: 20px; + padding-right: 8px; + border-left-width: 5px; +} + +.cke_contents_rtl blockquote +{ + padding-left: 8px; + padding-right: 20px; + border-right-width: 5px; +} + +img.right { + border: 1px solid #ccc; + float: right; + margin-left: 15px; + padding: 5px; +} + +img.left { + border: 1px solid #ccc; + float: left; + margin-right: 15px; + padding: 5px; +} diff --git a/static/ckeditor/samples/sample.js b/static/ckeditor/samples/sample.js new file mode 100644 index 0000000..8827e78 --- /dev/null +++ b/static/ckeditor/samples/sample.js @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.html or http://ckeditor.com/license + */ + +// Tool scripts for the sample pages. +// This file can be ignored and is not required to make use of CKEditor. + +(function() { + // Check for sample compliance. + CKEDITOR.on( 'instanceReady', function( ev ) { + var editor = ev.editor, + meta = CKEDITOR.document.$.getElementsByName( 'ckeditor-sample-required-plugins' ), + requires = meta.length ? CKEDITOR.dom.element.get( meta[ 0 ] ).getAttribute( 'content' ).split( ',' ) : [], + missing = []; + + if ( requires.length ) { + for ( var i = 0; i < requires.length; i++ ) { + if ( !editor.plugins[ requires[ i ] ] ) + missing.push( '' + requires[ i ] + '' ); + } + + if ( missing.length ) { + var warn = CKEDITOR.dom.element.createFromHtml( + '
    ' + + 'To fully experience this demo, the ' + missing.join( ', ' ) + ' plugin' + ( missing.length > 1 ? 's are' : ' is' ) + ' required.' + + '
    ' + ); + warn.insertBefore( editor.container ); + } + } + }); +})(); diff --git a/static/ckeditor/samples/sample_posteddata.php b/static/ckeditor/samples/sample_posteddata.php new file mode 100644 index 0000000..59de8be --- /dev/null +++ b/static/ckeditor/samples/sample_posteddata.php @@ -0,0 +1,16 @@ +
    +
    +-------------------------------------------------------------------------------------------
    +  CKEditor - Posted Data
    +
    +  We are sorry, but your Web server does not support the PHP language used in this script.
    +
    +  Please note that CKEditor can be used with any other server-side language than just PHP.
    +  To save the content created with CKEditor you need to read the POST data on the server
    +  side and write it to a file or the database.
    +
    +  Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
    +  For licensing, see LICENSE.html or http://ckeditor.com/license
    +-------------------------------------------------------------------------------------------
    +
    +
    */ include "assets/posteddata.php"; ?> diff --git a/static/ckeditor/samples/tabindex.html b/static/ckeditor/samples/tabindex.html new file mode 100644 index 0000000..24e7d6f --- /dev/null +++ b/static/ckeditor/samples/tabindex.html @@ -0,0 +1,75 @@ + + + + + TAB Key-Based Navigation — CKEditor Sample + + + + + + + +

    + CKEditor Samples » TAB Key-Based Navigation +

    +
    +

    + This sample shows how tab key navigation among editor instances is + affected by the tabIndex attribute from + the original page element. Use TAB key to move between the editors. +

    +
    +

    + +

    +
    +

    + +

    +

    + +

    + + + diff --git a/static/ckeditor/samples/uicolor.html b/static/ckeditor/samples/uicolor.html new file mode 100644 index 0000000..0e0d2e6 --- /dev/null +++ b/static/ckeditor/samples/uicolor.html @@ -0,0 +1,69 @@ + + + + + UI Color Picker — CKEditor Sample + + + + + +

    + CKEditor Samples » UI Color +

    +
    +

    + This sample shows how to automatically replace <textarea> elements + with a CKEditor instance with an option to change the color of its user interface.
    + Note:The UI skin color feature depends on the CKEditor skin + compatibility. The Moono and Kama skins are examples of skins that work with it. +

    +
    +
    +

    + This editor instance has a UI color value defined in configuration to change the skin color, + To specify the color of the user interface, set the uiColor property: +

    +
    +CKEDITOR.replace( 'textarea_id', {
    +	uiColor: '#14B8C4'
    +});
    +

    + Note that textarea_id in the code above is the id attribute of + the <textarea> element to be replaced. +

    +

    + + +

    +

    + +

    +
    + + + diff --git a/static/ckeditor/samples/uilanguages.html b/static/ckeditor/samples/uilanguages.html new file mode 100644 index 0000000..ea2134c --- /dev/null +++ b/static/ckeditor/samples/uilanguages.html @@ -0,0 +1,119 @@ + + + + + User Interface Globalization — CKEditor Sample + + + + + + +

    + CKEditor Samples » User Interface Languages +

    +
    +

    + This sample shows how to automatically replace <textarea> elements + with a CKEditor instance with an option to change the language of its user interface. +

    +

    + It pulls the language list from CKEditor _languages.js file that contains the list of supported languages and creates + a drop-down list that lets the user change the UI language. +

    +

    + By default, CKEditor automatically localizes the editor to the language of the user. + The UI language can be controlled with two configuration options: + language and + + defaultLanguage. The defaultLanguage setting specifies the + default CKEditor language to be used when a localization suitable for user's settings is not available. +

    +

    + To specify the user interface language that will be used no matter what language is + specified in user's browser or operating system, set the language property: +

    +
    +CKEDITOR.replace( 'textarea_id', {
    +	// Load the German interface.
    +	language: 'de'
    +});
    +

    + Note that textarea_id in the code above is the id attribute of + the <textarea> element to be replaced. +

    +
    +
    +

    + Available languages ( languages!):
    + +
    + + (You may see strange characters if your system does not support the selected language) + +

    +

    + + +

    +
    + + + diff --git a/static/ckeditor/samples/xhtmlstyle.html b/static/ckeditor/samples/xhtmlstyle.html new file mode 100644 index 0000000..cbda164 --- /dev/null +++ b/static/ckeditor/samples/xhtmlstyle.html @@ -0,0 +1,231 @@ + + + + + XHTML Compliant Output — CKEditor Sample + + + + + + + +

    + CKEditor Samples » Producing XHTML Compliant Output +

    +
    +

    + This sample shows how to configure CKEditor to output valid + XHTML 1.1 code. + Deprecated elements (<font>, <u>) or attributes + (size, face) will be replaced with XHTML compliant code. +

    +

    + To add a CKEditor instance outputting valid XHTML code, load the editor using a standard + JavaScript call and define CKEditor features to use the XHTML compliant elements and styles. +

    +

    + A snippet of the configuration code can be seen below; check the source of this page for + full definition: +

    +
    +CKEDITOR.replace( 'textarea_id', {
    +	contentsCss: 'assets/outputxhtml.css',
    +
    +	coreStyles_bold: {
    +		element: 'span',
    +		attributes: { 'class': 'Bold' }
    +	},
    +	coreStyles_italic: {
    +		element: 'span',
    +		attributes: { 'class': 'Italic' }
    +	},
    +
    +	...
    +});
    +
    +
    +

    + + + +

    +

    + +

    +
    + + + diff --git a/static/ckeditor/skins/moono/dialog.css b/static/ckeditor/skins/moono/dialog.css new file mode 100644 index 0000000..a0b60e2 --- /dev/null +++ b/static/ckeditor/skins/moono/dialog.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fffafafa',endColorstr='#ffededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ff9ad717',endColorstr='#ff69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%} \ No newline at end of file diff --git a/static/ckeditor/skins/moono/dialog_ie.css b/static/ckeditor/skins/moono/dialog_ie.css new file mode 100644 index 0000000..ad7069c --- /dev/null +++ b/static/ckeditor/skins/moono/dialog_ie.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fffafafa',endColorstr='#ffededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ff9ad717',endColorstr='#ff69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} \ No newline at end of file diff --git a/static/ckeditor/skins/moono/dialog_ie7.css b/static/ckeditor/skins/moono/dialog_ie7.css new file mode 100644 index 0000000..0915841 --- /dev/null +++ b/static/ckeditor/skins/moono/dialog_ie7.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fffafafa',endColorstr='#ffededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ff9ad717',endColorstr='#ff69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_title{zoom:1}.cke_dialog_footer{border-top:1px solid #bfbfbf}.cke_dialog_footer_buttons{position:static}.cke_dialog_footer_buttons a.cke_dialog_ui_button{vertical-align:top}.cke_dialog .cke_resizer_ltr{padding-left:4px}.cke_dialog .cke_resizer_rtl{padding-right:4px}.cke_dialog_ui_input_text,.cke_dialog_ui_input_password,.cke_dialog_ui_input_textarea,.cke_dialog_ui_input_select{padding:0!important}.cke_dialog_ui_checkbox_input,.cke_dialog_ui_ratio_input,.cke_btn_reset,.cke_btn_locked,.cke_btn_unlocked{border:1px solid transparent!important} \ No newline at end of file diff --git a/static/ckeditor/skins/moono/dialog_ie8.css b/static/ckeditor/skins/moono/dialog_ie8.css new file mode 100644 index 0000000..f8b5131 --- /dev/null +++ b/static/ckeditor/skins/moono/dialog_ie8.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fffafafa',endColorstr='#ffededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ff9ad717',endColorstr='#ff69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{display:block} \ No newline at end of file diff --git a/static/ckeditor/skins/moono/dialog_iequirks.css b/static/ckeditor/skins/moono/dialog_iequirks.css new file mode 100644 index 0000000..b826b08 --- /dev/null +++ b/static/ckeditor/skins/moono/dialog_iequirks.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fffafafa',endColorstr='#ffededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ff9ad717',endColorstr='#ff69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:} \ No newline at end of file diff --git a/static/ckeditor/skins/moono/dialog_opera.css b/static/ckeditor/skins/moono/dialog_opera.css new file mode 100644 index 0000000..bc93c9e --- /dev/null +++ b/static/ckeditor/skins/moono/dialog_opera.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fffafafa',endColorstr='#ffededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ff9ad717',endColorstr='#ff69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.png);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_footer{display:block;height:38px}.cke_ltr .cke_dialog_footer>*{float:right}.cke_rtl .cke_dialog_footer>*{float:left} \ No newline at end of file diff --git a/static/ckeditor/skins/moono/editor.css b/static/ckeditor/skins/moono/editor.css new file mode 100644 index 0000000..051c584 --- /dev/null +++ b/static/ckeditor/skins/moono/editor.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffebebeb',endColorstr='#cfd1cf')}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffaaaaaa',endColorstr='#ffcacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffaaaaaa',endColorstr='#ffcacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon{background: url(icons.png) no-repeat 0 -32px !important;}.cke_button__italic_icon{background: url(icons.png) no-repeat 0 -64px !important;}.cke_button__strike_icon{background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__subscript_icon{background: url(icons.png) no-repeat 0 -128px !important;}.cke_button__superscript_icon{background: url(icons.png) no-repeat 0 -160px !important;}.cke_button__underline_icon{background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon{background: url(icons.png) no-repeat 0 -224px !important;}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -256px !important;}.cke_ltr .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -288px !important;}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -320px !important;}.cke_ltr .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -352px !important;}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -416px !important;}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -448px !important;}.cke_ltr .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -512px !important;}.cke_ltr .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -544px !important;}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -608px !important;}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -640px !important;}.cke_ltr .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__horizontalrule_icon{background: url(icons.png) no-repeat 0 -704px !important;}.cke_button__image_icon{background: url(icons.png) no-repeat 0 -736px !important;}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -768px !important;}.cke_ltr .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -800px !important;}.cke_button__link_icon{background: url(icons.png) no-repeat 0 -832px !important;}.cke_button__unlink_icon{background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__maximize_icon{background: url(icons.png) no-repeat 0 -896px !important;}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -928px !important;}.cke_ltr .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -992px !important;}.cke_ltr .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -1024px !important;}.cke_button__removeformat_icon{background: url(icons.png) no-repeat 0 -1056px !important;}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background: url(icons.png) no-repeat 0 -1088px !important;}.cke_ltr .cke_button__source_icon{background: url(icons.png) no-repeat 0 -1120px !important;}.cke_button__specialchar_icon{background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__scayt_icon{background: url(icons.png) no-repeat 0 -1184px !important;}.cke_button__table_icon{background: url(icons.png) no-repeat 0 -1216px !important;}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -1248px !important;}.cke_ltr .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -1280px !important;}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -1312px !important;}.cke_ltr .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -1344px !important;}.cke_button__spellchecker_icon{background: url(icons.png) no-repeat 0 -1376px !important;} \ No newline at end of file diff --git a/static/ckeditor/skins/moono/editor_gecko.css b/static/ckeditor/skins/moono/editor_gecko.css new file mode 100644 index 0000000..37b571b --- /dev/null +++ b/static/ckeditor/skins/moono/editor_gecko.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffebebeb',endColorstr='#cfd1cf')}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffaaaaaa',endColorstr='#ffcacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffaaaaaa',endColorstr='#ffcacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px}.cke_button__about_icon{background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon{background: url(icons.png) no-repeat 0 -32px !important;}.cke_button__italic_icon{background: url(icons.png) no-repeat 0 -64px !important;}.cke_button__strike_icon{background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__subscript_icon{background: url(icons.png) no-repeat 0 -128px !important;}.cke_button__superscript_icon{background: url(icons.png) no-repeat 0 -160px !important;}.cke_button__underline_icon{background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon{background: url(icons.png) no-repeat 0 -224px !important;}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -256px !important;}.cke_ltr .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -288px !important;}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -320px !important;}.cke_ltr .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -352px !important;}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -416px !important;}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -448px !important;}.cke_ltr .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -512px !important;}.cke_ltr .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -544px !important;}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -608px !important;}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -640px !important;}.cke_ltr .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__horizontalrule_icon{background: url(icons.png) no-repeat 0 -704px !important;}.cke_button__image_icon{background: url(icons.png) no-repeat 0 -736px !important;}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -768px !important;}.cke_ltr .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -800px !important;}.cke_button__link_icon{background: url(icons.png) no-repeat 0 -832px !important;}.cke_button__unlink_icon{background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__maximize_icon{background: url(icons.png) no-repeat 0 -896px !important;}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -928px !important;}.cke_ltr .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -992px !important;}.cke_ltr .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -1024px !important;}.cke_button__removeformat_icon{background: url(icons.png) no-repeat 0 -1056px !important;}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background: url(icons.png) no-repeat 0 -1088px !important;}.cke_ltr .cke_button__source_icon{background: url(icons.png) no-repeat 0 -1120px !important;}.cke_button__specialchar_icon{background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__scayt_icon{background: url(icons.png) no-repeat 0 -1184px !important;}.cke_button__table_icon{background: url(icons.png) no-repeat 0 -1216px !important;}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -1248px !important;}.cke_ltr .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -1280px !important;}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -1312px !important;}.cke_ltr .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -1344px !important;}.cke_button__spellchecker_icon{background: url(icons.png) no-repeat 0 -1376px !important;} \ No newline at end of file diff --git a/static/ckeditor/skins/moono/editor_ie.css b/static/ckeditor/skins/moono/editor_ie.css new file mode 100644 index 0000000..796828c --- /dev/null +++ b/static/ckeditor/skins/moono/editor_ie.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffebebeb',endColorstr='#cfd1cf')}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffaaaaaa',endColorstr='#ffcacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffaaaaaa',endColorstr='#ffcacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_button__about_icon{background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon{background: url(icons.png) no-repeat 0 -32px !important;}.cke_button__italic_icon{background: url(icons.png) no-repeat 0 -64px !important;}.cke_button__strike_icon{background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__subscript_icon{background: url(icons.png) no-repeat 0 -128px !important;}.cke_button__superscript_icon{background: url(icons.png) no-repeat 0 -160px !important;}.cke_button__underline_icon{background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon{background: url(icons.png) no-repeat 0 -224px !important;}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -256px !important;}.cke_ltr .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -288px !important;}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -320px !important;}.cke_ltr .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -352px !important;}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -416px !important;}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -448px !important;}.cke_ltr .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -512px !important;}.cke_ltr .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -544px !important;}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -608px !important;}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -640px !important;}.cke_ltr .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__horizontalrule_icon{background: url(icons.png) no-repeat 0 -704px !important;}.cke_button__image_icon{background: url(icons.png) no-repeat 0 -736px !important;}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -768px !important;}.cke_ltr .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -800px !important;}.cke_button__link_icon{background: url(icons.png) no-repeat 0 -832px !important;}.cke_button__unlink_icon{background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__maximize_icon{background: url(icons.png) no-repeat 0 -896px !important;}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -928px !important;}.cke_ltr .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -992px !important;}.cke_ltr .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -1024px !important;}.cke_button__removeformat_icon{background: url(icons.png) no-repeat 0 -1056px !important;}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background: url(icons.png) no-repeat 0 -1088px !important;}.cke_ltr .cke_button__source_icon{background: url(icons.png) no-repeat 0 -1120px !important;}.cke_button__specialchar_icon{background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__scayt_icon{background: url(icons.png) no-repeat 0 -1184px !important;}.cke_button__table_icon{background: url(icons.png) no-repeat 0 -1216px !important;}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -1248px !important;}.cke_ltr .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -1280px !important;}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -1312px !important;}.cke_ltr .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -1344px !important;}.cke_button__spellchecker_icon{background: url(icons.png) no-repeat 0 -1376px !important;} \ No newline at end of file diff --git a/static/ckeditor/skins/moono/editor_ie7.css b/static/ckeditor/skins/moono/editor_ie7.css new file mode 100644 index 0000000..76b80e0 --- /dev/null +++ b/static/ckeditor/skins/moono/editor_ie7.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffebebeb',endColorstr='#cfd1cf')}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffaaaaaa',endColorstr='#ffcacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffaaaaaa',endColorstr='#ffcacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon,{display:inline-block;vertical-align:top}.cke_toolbox{display:inline-block;padding-bottom:5px;height:100%}.cke_rtl .cke_toolbox{padding-bottom:0}.cke_toolbar{margin-bottom:5px}.cke_rtl .cke_toolbar{margin-bottom:0}.cke_toolgroup{height:26px}.cke_toolgroup,.cke_combo{position:relative}a.cke_button{float:none;vertical-align:top}.cke_toolbar_separator{display:inline-block;float:none;vertical-align:top;background-color:#c0c0c0}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_rtl .cke_button_arrow{padding-top:8px;margin-right:2px}.cke_rtl .cke_combo_inlinelabel{display:table-cell;vertical-align:middle}.cke_menubutton{display:block;height:24px}.cke_menubutton_inner{display:block;position:relative}.cke_menubutton_icon{height:16px;width:16px}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:inline-block}.cke_menubutton_label{width:auto;vertical-align:top;line-height:24px;height:24px;margin:0 10px 0 0}.cke_menuarrow{width:5px;height:6px;padding:0;position:absolute;right:8px;top:10px;background-position:0 0}.cke_rtl .cke_menubutton_icon{position:absolute;right:0;top:0}.cke_rtl .cke_menubutton_label{float:right;clear:both;margin:0 24px 0 10px}.cke_hc .cke_rtl .cke_menubutton_label{margin-right:0}.cke_rtl .cke_menuarrow{left:8px;right:auto;background-position:0 -24px}.cke_hc .cke_menuarrow{top:5px;padding:0 5px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{position:relative}.cke_wysiwyg_div{padding-top:0!important;padding-bottom:0!important}.cke_button__about_icon{background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon{background: url(icons.png) no-repeat 0 -32px !important;}.cke_button__italic_icon{background: url(icons.png) no-repeat 0 -64px !important;}.cke_button__strike_icon{background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__subscript_icon{background: url(icons.png) no-repeat 0 -128px !important;}.cke_button__superscript_icon{background: url(icons.png) no-repeat 0 -160px !important;}.cke_button__underline_icon{background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon{background: url(icons.png) no-repeat 0 -224px !important;}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -256px !important;}.cke_ltr .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -288px !important;}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -320px !important;}.cke_ltr .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -352px !important;}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -416px !important;}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -448px !important;}.cke_ltr .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -512px !important;}.cke_ltr .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -544px !important;}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -608px !important;}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -640px !important;}.cke_ltr .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__horizontalrule_icon{background: url(icons.png) no-repeat 0 -704px !important;}.cke_button__image_icon{background: url(icons.png) no-repeat 0 -736px !important;}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -768px !important;}.cke_ltr .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -800px !important;}.cke_button__link_icon{background: url(icons.png) no-repeat 0 -832px !important;}.cke_button__unlink_icon{background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__maximize_icon{background: url(icons.png) no-repeat 0 -896px !important;}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -928px !important;}.cke_ltr .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -992px !important;}.cke_ltr .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -1024px !important;}.cke_button__removeformat_icon{background: url(icons.png) no-repeat 0 -1056px !important;}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background: url(icons.png) no-repeat 0 -1088px !important;}.cke_ltr .cke_button__source_icon{background: url(icons.png) no-repeat 0 -1120px !important;}.cke_button__specialchar_icon{background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__scayt_icon{background: url(icons.png) no-repeat 0 -1184px !important;}.cke_button__table_icon{background: url(icons.png) no-repeat 0 -1216px !important;}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -1248px !important;}.cke_ltr .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -1280px !important;}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -1312px !important;}.cke_ltr .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -1344px !important;}.cke_button__spellchecker_icon{background: url(icons.png) no-repeat 0 -1376px !important;} \ No newline at end of file diff --git a/static/ckeditor/skins/moono/editor_ie8.css b/static/ckeditor/skins/moono/editor_ie8.css new file mode 100644 index 0000000..c2ed232 --- /dev/null +++ b/static/ckeditor/skins/moono/editor_ie8.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffebebeb',endColorstr='#cfd1cf')}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffaaaaaa',endColorstr='#ffcacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffaaaaaa',endColorstr='#ffcacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_button__about_icon{background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon{background: url(icons.png) no-repeat 0 -32px !important;}.cke_button__italic_icon{background: url(icons.png) no-repeat 0 -64px !important;}.cke_button__strike_icon{background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__subscript_icon{background: url(icons.png) no-repeat 0 -128px !important;}.cke_button__superscript_icon{background: url(icons.png) no-repeat 0 -160px !important;}.cke_button__underline_icon{background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon{background: url(icons.png) no-repeat 0 -224px !important;}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -256px !important;}.cke_ltr .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -288px !important;}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -320px !important;}.cke_ltr .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -352px !important;}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -416px !important;}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -448px !important;}.cke_ltr .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -512px !important;}.cke_ltr .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -544px !important;}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -608px !important;}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -640px !important;}.cke_ltr .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__horizontalrule_icon{background: url(icons.png) no-repeat 0 -704px !important;}.cke_button__image_icon{background: url(icons.png) no-repeat 0 -736px !important;}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -768px !important;}.cke_ltr .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -800px !important;}.cke_button__link_icon{background: url(icons.png) no-repeat 0 -832px !important;}.cke_button__unlink_icon{background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__maximize_icon{background: url(icons.png) no-repeat 0 -896px !important;}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -928px !important;}.cke_ltr .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -992px !important;}.cke_ltr .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -1024px !important;}.cke_button__removeformat_icon{background: url(icons.png) no-repeat 0 -1056px !important;}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background: url(icons.png) no-repeat 0 -1088px !important;}.cke_ltr .cke_button__source_icon{background: url(icons.png) no-repeat 0 -1120px !important;}.cke_button__specialchar_icon{background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__scayt_icon{background: url(icons.png) no-repeat 0 -1184px !important;}.cke_button__table_icon{background: url(icons.png) no-repeat 0 -1216px !important;}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -1248px !important;}.cke_ltr .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -1280px !important;}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -1312px !important;}.cke_ltr .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -1344px !important;}.cke_button__spellchecker_icon{background: url(icons.png) no-repeat 0 -1376px !important;} \ No newline at end of file diff --git a/static/ckeditor/skins/moono/editor_iequirks.css b/static/ckeditor/skins/moono/editor_iequirks.css new file mode 100644 index 0000000..4e0b16a --- /dev/null +++ b/static/ckeditor/skins/moono/editor_iequirks.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffebebeb',endColorstr='#cfd1cf')}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff5f5f5',endColorstr='#ffcfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffaaaaaa',endColorstr='#ffcacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffffff',endColorstr='#ffe4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fff2f2f2',endColorstr='#ffcccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffaaaaaa',endColorstr='#ffcacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon,{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0}.cke_button__about_icon{background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon{background: url(icons.png) no-repeat 0 -32px !important;}.cke_button__italic_icon{background: url(icons.png) no-repeat 0 -64px !important;}.cke_button__strike_icon{background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__subscript_icon{background: url(icons.png) no-repeat 0 -128px !important;}.cke_button__superscript_icon{background: url(icons.png) no-repeat 0 -160px !important;}.cke_button__underline_icon{background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon{background: url(icons.png) no-repeat 0 -224px !important;}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -256px !important;}.cke_ltr .cke_button__copy_icon{background: url(icons.png) no-repeat 0 -288px !important;}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -320px !important;}.cke_ltr .cke_button__cut_icon{background: url(icons.png) no-repeat 0 -352px !important;}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -384px !important;}.cke_ltr .cke_button__paste_icon{background: url(icons.png) no-repeat 0 -416px !important;}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -448px !important;}.cke_ltr .cke_button__bulletedlist_icon{background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -512px !important;}.cke_ltr .cke_button__numberedlist_icon{background: url(icons.png) no-repeat 0 -544px !important;}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -576px !important;}.cke_ltr .cke_button__indent_icon{background: url(icons.png) no-repeat 0 -608px !important;}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -640px !important;}.cke_ltr .cke_button__outdent_icon{background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__horizontalrule_icon{background: url(icons.png) no-repeat 0 -704px !important;}.cke_button__image_icon{background: url(icons.png) no-repeat 0 -736px !important;}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -768px !important;}.cke_ltr .cke_button__anchor_icon{background: url(icons.png) no-repeat 0 -800px !important;}.cke_button__link_icon{background: url(icons.png) no-repeat 0 -832px !important;}.cke_button__unlink_icon{background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__maximize_icon{background: url(icons.png) no-repeat 0 -896px !important;}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -928px !important;}.cke_ltr .cke_button__pastetext_icon{background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -992px !important;}.cke_ltr .cke_button__pastefromword_icon{background: url(icons.png) no-repeat 0 -1024px !important;}.cke_button__removeformat_icon{background: url(icons.png) no-repeat 0 -1056px !important;}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background: url(icons.png) no-repeat 0 -1088px !important;}.cke_ltr .cke_button__source_icon{background: url(icons.png) no-repeat 0 -1120px !important;}.cke_button__specialchar_icon{background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__scayt_icon{background: url(icons.png) no-repeat 0 -1184px !important;}.cke_button__table_icon{background: url(icons.png) no-repeat 0 -1216px !important;}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -1248px !important;}.cke_ltr .cke_button__redo_icon{background: url(icons.png) no-repeat 0 -1280px !important;}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -1312px !important;}.cke_ltr .cke_button__undo_icon{background: url(icons.png) no-repeat 0 -1344px !important;}.cke_button__spellchecker_icon{background: url(icons.png) no-repeat 0 -1376px !important;} \ No newline at end of file diff --git a/static/ckeditor/skins/moono/icons.png b/static/ckeditor/skins/moono/icons.png new file mode 100644 index 0000000..eae75d2 Binary files /dev/null and b/static/ckeditor/skins/moono/icons.png differ diff --git a/static/ckeditor/skins/moono/images/arrow.png b/static/ckeditor/skins/moono/images/arrow.png new file mode 100644 index 0000000..0d1eb39 Binary files /dev/null and b/static/ckeditor/skins/moono/images/arrow.png differ diff --git a/static/ckeditor/skins/moono/images/close.png b/static/ckeditor/skins/moono/images/close.png new file mode 100644 index 0000000..a795fd5 Binary files /dev/null and b/static/ckeditor/skins/moono/images/close.png differ diff --git a/static/ckeditor/skins/moono/images/mini.png b/static/ckeditor/skins/moono/images/mini.png new file mode 100644 index 0000000..3e65bd5 Binary files /dev/null and b/static/ckeditor/skins/moono/images/mini.png differ diff --git a/static/ckeditor/skins/moono/readme.md b/static/ckeditor/skins/moono/readme.md new file mode 100644 index 0000000..0fa4c1a --- /dev/null +++ b/static/ckeditor/skins/moono/readme.md @@ -0,0 +1,51 @@ +"Moono" Skin +==================== + +This skin has been chosen for the **default skin** of CKEditor 4.x, elected from the CKEditor +[skin contest](http://ckeditor.com/blog/new_ckeditor_4_skin) and further shaped by +the CKEditor team. "Moono" is maintained by the core developers. + +For more information about skins, please check the [CKEditor Skin SDK](http://docs.cksource.com/CKEditor_4.x/Skin_SDK) +documentation. + +Features +------------------- +"Moono" is a monochromatic skin, which offers a modern look coupled with gradients and transparency. +It comes with the following features: + +- Chameleon feature with brightness, +- high-contrast compatibility, +- graphics source provided in SVG. + +Directory Structure +------------------- + +CSS parts: +- **editor.css**: the main CSS file. It's simply loading several other files, for easier maintenance, +- **mainui.css**: the file contains styles of entire editor outline structures, +- **toolbar.css**: the file contains styles of the editor toolbar space (top), +- **richcombo.css**: the file contains styles of the rich combo ui elements on toolbar, +- **panel.css**: the file contains styles of the rich combo drop-down, it's not loaded +until the first panel open up, +- **elementspath.css**: the file contains styles of the editor elements path bar (bottom), +- **menu.css**: the file contains styles of all editor menus including context menu and button drop-down, +it's not loaded until the first menu open up, +- **dialog.css**: the CSS files for the dialog UI, it's not loaded until the first dialog open, +- **reset.css**: the file defines the basis of style resets among all editor UI spaces, +- **preset.css**: the file defines the default styles of some UI elements reflecting the skin preference, +- **editor_XYZ.css** and **dialog_XYZ.css**: browser specific CSS hacks. + +Other parts: +- **skin.js**: the only JavaScript part of the skin that registers the skin, its browser specific files and its icons and defines the Chameleon feature, +- **icons/**: contains all skin defined icons, +- **images/**: contains a fill general used images, +- **dev/**: contains SVG source of the skin icons. + +License +------- + +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. + +Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). + +See LICENSE.md for more information. diff --git a/static/ckeditor/styles.js b/static/ckeditor/styles.js new file mode 100644 index 0000000..0340601 --- /dev/null +++ b/static/ckeditor/styles.js @@ -0,0 +1,111 @@ +/** + * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.html or http://ckeditor.com/license + */ + +// This file contains style definitions that can be used by CKEditor plugins. +// +// The most common use for it is the "stylescombo" plugin, which shows a combo +// in the editor toolbar, containing all styles. Other plugins instead, like +// the div plugin, use a subset of the styles on their feature. +// +// If you don't have plugins that depend on this file, you can simply ignore it. +// Otherwise it is strongly recommended to customize this file to match your +// website requirements and design properly. + +CKEDITOR.stylesSet.add( 'default', [ + /* Block Styles */ + + // These styles are already available in the "Format" combo ("format" plugin), + // so they are not needed here by default. You may enable them to avoid + // placing the "Format" combo in the toolbar, maintaining the same features. + /* + { name: 'Paragraph', element: 'p' }, + { name: 'Heading 1', element: 'h1' }, + { name: 'Heading 2', element: 'h2' }, + { name: 'Heading 3', element: 'h3' }, + { name: 'Heading 4', element: 'h4' }, + { name: 'Heading 5', element: 'h5' }, + { name: 'Heading 6', element: 'h6' }, + { name: 'Preformatted Text',element: 'pre' }, + { name: 'Address', element: 'address' }, + */ + + { name: 'Italic Title', element: 'h2', styles: { 'font-style': 'italic' } }, + { name: 'Subtitle', element: 'h3', styles: { 'color': '#aaa', 'font-style': 'italic' } }, + { + name: 'Special Container', + element: 'div', + styles: { + padding: '5px 10px', + background: '#eee', + border: '1px solid #ccc' + } + }, + + /* Inline Styles */ + + // These are core styles available as toolbar buttons. You may opt enabling + // some of them in the Styles combo, removing them from the toolbar. + // (This requires the "stylescombo" plugin) + /* + { name: 'Strong', element: 'strong', overrides: 'b' }, + { name: 'Emphasis', element: 'em' , overrides: 'i' }, + { name: 'Underline', element: 'u' }, + { name: 'Strikethrough', element: 'strike' }, + { name: 'Subscript', element: 'sub' }, + { name: 'Superscript', element: 'sup' }, + */ + + { name: 'Marker', element: 'span', attributes: { 'class': 'marker' } }, + + { name: 'Big', element: 'big' }, + { name: 'Small', element: 'small' }, + { name: 'Typewriter', element: 'tt' }, + + { name: 'Computer Code', element: 'code' }, + { name: 'Keyboard Phrase', element: 'kbd' }, + { name: 'Sample Text', element: 'samp' }, + { name: 'Variable', element: 'var' }, + + { name: 'Deleted Text', element: 'del' }, + { name: 'Inserted Text', element: 'ins' }, + + { name: 'Cited Work', element: 'cite' }, + { name: 'Inline Quotation', element: 'q' }, + + { name: 'Language: RTL', element: 'span', attributes: { 'dir': 'rtl' } }, + { name: 'Language: LTR', element: 'span', attributes: { 'dir': 'ltr' } }, + + /* Object Styles */ + + { + name: 'Styled image (left)', + element: 'img', + attributes: { 'class': 'left' } + }, + + { + name: 'Styled image (right)', + element: 'img', + attributes: { 'class': 'right' } + }, + + { + name: 'Compact table', + element: 'table', + attributes: { + cellpadding: '5', + cellspacing: '0', + border: '1', + bordercolor: '#ccc' + }, + styles: { + 'border-collapse': 'collapse' + } + }, + + { name: 'Borderless Table', element: 'table', styles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } }, + { name: 'Square Bulleted List', element: 'ul', styles: { 'list-style-type': 'square' } } +]); + diff --git a/static/css/bootstrap.css b/static/css/bootstrap.css new file mode 100644 index 0000000..aace146 --- /dev/null +++ b/static/css/bootstrap.css @@ -0,0 +1,5774 @@ +/*! + * Bootstrap v2.1.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover { + color: #005580; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +.text-warning { + color: #c09853; +} + +.text-error { + color: #b94a48; +} + +.text-info { + color: #3a87ad; +} + +.text-success { + color: #468847; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 1; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1 { + font-size: 36px; + line-height: 40px; +} + +h2 { + font-size: 30px; + line-height: 40px; +} + +h3 { + font-size: 24px; + line-height: 40px; +} + +h4 { + font-size: 18px; + line-height: 20px; +} + +h5 { + font-size: 14px; + line-height: 20px; +} + +h6 { + font-size: 12px; + line-height: 20px; +} + +h1 small { + font-size: 24px; +} + +h2 small { + font-size: 18px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 25px; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 9px; + font-size: 14px; + line-height: 20px; + color: #555555; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; + cursor: pointer; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 18px; + padding-left: 18px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -18px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"] { + float: left; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning > label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error > label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success > label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info > label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:required:invalid, +textarea:focus:required:invalid, +select:focus:required:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:required:invalid:focus, +textarea:focus:required:invalid:focus, +select:focus:required:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + margin-bottom: 5px; + font-size: 0; + white-space: nowrap; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + font-size: 14px; + vertical-align: top; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append .add-on, +.input-append .btn { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child th:first-child, +.table-bordered tbody:first-child tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child th:last-child, +.table-bordered tbody:first-child tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child th:first-child, +.table-bordered tbody:last-child tr:last-child td:first-child, +.table-bordered tfoot:last-child tr:last-child td:first-child { + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child th:last-child, +.table-bordered tbody:last-child tr:last-child td:last-child, +.table-bordered tfoot:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-striped tbody tr:nth-child(odd) td, +.table-striped tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover td, +.table-hover tbody tr:hover th { + background-color: #f5f5f5; +} + +table [class*=span], +.row-fluid table [class*=span] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table .span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table .span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table .span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table .span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table .span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table .span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table .span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table .span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table .span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table .span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table .span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table .span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table .span13 { + float: none; + width: 1004px; + margin-left: 0; +} + +.table .span14 { + float: none; + width: 1084px; + margin-left: 0; +} + +.table .span15 { + float: none; + width: 1164px; + margin-left: 0; +} + +.table .span16 { + float: none; + width: 1244px; + margin-left: 0; +} + +.table .span17 { + float: none; + width: 1324px; + margin-left: 0; +} + +.table .span18 { + float: none; + width: 1404px; + margin-left: 0; +} + +.table .span19 { + float: none; + width: 1484px; + margin-left: 0; +} + +.table .span20 { + float: none; + width: 1564px; + margin-left: 0; +} + +.table .span21 { + float: none; + width: 1644px; + margin-left: 0; +} + +.table .span22 { + float: none; + width: 1724px; + margin-left: 0; +} + +.table .span23 { + float: none; + width: 1804px; + margin-left: 0; +} + +.table .span24 { + float: none; + width: 1884px; + margin-left: 0; +} + +.table tbody tr.success td { + background-color: #dff0d8; +} + +.table tbody tr.error td { + background-color: #f2dede; +} + +.table tbody tr.warning td { + background-color: #fcf8e3; +} + +.table tbody tr.info td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/active states of certain elements */ + +.icon-white, +.nav-tabs > .active > a > [class^="icon-"], +.nav-tabs > .active > a > [class*=" icon-"], +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu li > a:hover, +.dropdown-menu li > a:focus, +.dropdown-submenu:hover > a { + color: #ffffff; + text-decoration: none; + background-color: #0088cc; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu .active > a, +.dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #0088cc; + background-color: #0081c2; + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu .disabled > a, +.dropdown-menu .disabled > a:hover { + color: #999999; +} + +.dropdown-menu .disabled > a:hover { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 14px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + *line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #bbbbbb; + *border: 0; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-bottom-color: #a2a2a2; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover { + color: #333333; + text-decoration: none; + background-color: #e6e6e6; + *background-color: #d9d9d9; + /* Buttons in IE7 don't get borders, so darken on hover */ + + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-color: #e6e6e6; + background-color: #d9d9d9 \9; + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-color: #e6e6e6; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 9px 14px; + font-size: 16px; + line-height: normal; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.btn-large [class^="icon-"] { + margin-top: 2px; +} + +.btn-small { + padding: 3px 9px; + font-size: 12px; + line-height: 18px; +} + +.btn-small [class^="icon-"] { + margin-top: 0; +} + +.btn-mini { + padding: 2px 6px; + font-size: 11px; + line-height: 17px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn { + border-color: #c5c5c5; + border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-image: -moz-linear-gradient(top, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar .btn-group { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-toolbar .btn + .btn, +.btn-toolbar .btn-group + .btn, +.btn-toolbar .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 11px; +} + +.btn-group > .btn-small { + font-size: 12px; +} + +.btn-group > .btn-large { + font-size: 16px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-mini .caret, +.btn-small .caret, +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.dropup .btn-large .caret { + border-top: 0; + border-bottom: 5px solid #000000; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical .btn { + display: block; + float: none; + width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + color: #c09853; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; + color: #777777; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover { + color: #333333; +} + +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 6px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + width: 100%; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse { + color: #999999; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-image: -moz-linear-gradient(top, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb .active { + color: #999999; +} + +.pagination { + height: 40px; + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 0 14px; + line-height: 38px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager a, +.pager span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager a:hover { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next a, +.pager .next span { + float: right; +} + +.pager .previous a { + float: left; +} + +.pager .disabled a, +.pager .disabled a:hover, +.pager .disabled span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-open .modal .dropdown-menu { + z-index: 2050; +} + +.modal-open .modal .dropdown.open { + *z-index: 2050; +} + +.modal-open .modal .popover { + z-index: 2060; +} + +.modal-open .modal .tooltip { + z-index: 2080; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 50%; + left: 50%; + z-index: 1050; + width: 560px; + margin: -250px 0 0 -280px; + overflow: auto; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 50%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + margin-top: -3px; +} + +.tooltip.right { + margin-left: 3px; +} + +.tooltip.bottom { + margin-top: 3px; +} + +.tooltip.left { + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + width: 236px; + padding: 1px; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-bottom: 10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-right: 10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover-content p, +.popover-content ul, +.popover-content ol { + margin-bottom: 0; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: inline-block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow:after { + z-index: -1; + content: ""; +} + +.popover.top .arrow { + bottom: -10px; + left: 50%; + margin-left: -10px; + border-top-color: #ffffff; + border-width: 10px 10px 0; +} + +.popover.top .arrow:after { + bottom: -1px; + left: -11px; + border-top-color: rgba(0, 0, 0, 0.25); + border-width: 11px 11px 0; +} + +.popover.right .arrow { + top: 50%; + left: -10px; + margin-top: -10px; + border-right-color: #ffffff; + border-width: 10px 10px 10px 0; +} + +.popover.right .arrow:after { + bottom: -11px; + left: -1px; + border-right-color: rgba(0, 0, 0, 0.25); + border-width: 11px 11px 11px 0; +} + +.popover.bottom .arrow { + top: -10px; + left: 50%; + margin-left: -10px; + border-bottom-color: #ffffff; + border-width: 0 10px 10px; +} + +.popover.bottom .arrow:after { + top: -1px; + left: -11px; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-width: 0 11px 11px; +} + +.popover.left .arrow { + top: 50%; + right: -10px; + margin-top: -10px; + border-left-color: #ffffff; + border-width: 10px 0 10px 10px; +} + +.popover.left .arrow:after { + right: -1px; + bottom: -11px; + border-left-color: rgba(0, 0, 0, 0.25); + border-width: 11px 0 11px 11px; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.label, +.badge { + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + padding: 1px 4px 2px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding: 1px 9px 2px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +a.label:hover, +a.badge:hover { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel .item > img { + display: block; + line-height: 1; +} + +.carousel .active, +.carousel .next, +.carousel .prev { + display: block; +} + +.carousel .active { + left: 0; +} + +.carousel .next, +.carousel .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel .next { + left: 100%; +} + +.carousel .prev { + left: -100%; +} + +.carousel .next.left, +.carousel .prevel.right { + left: 0; +} + +.carousel .active.left { + left: -100%; +} + +.carousel .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit p { + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} diff --git a/static/css/default-small-s-arrow.png b/static/css/default-small-s-arrow.png new file mode 100644 index 0000000..b3368f1 Binary files /dev/null and b/static/css/default-small-s-arrow.png differ diff --git a/static/css/delete-col-icon.png b/static/css/delete-col-icon.png new file mode 100644 index 0000000..695d215 Binary files /dev/null and b/static/css/delete-col-icon.png differ diff --git a/static/css/edit-col-icon.png b/static/css/edit-col-icon.png new file mode 100644 index 0000000..4357e24 Binary files /dev/null and b/static/css/edit-col-icon.png differ diff --git a/static/css/favorite-col-icon.png b/static/css/favorite-col-icon.png new file mode 100644 index 0000000..3acb57d Binary files /dev/null and b/static/css/favorite-col-icon.png differ diff --git a/static/css/tool-cancel.png b/static/css/tool-cancel.png new file mode 100644 index 0000000..ad197d9 Binary files /dev/null and b/static/css/tool-cancel.png differ diff --git a/static/css/tool-cancel.xcf b/static/css/tool-cancel.xcf new file mode 100644 index 0000000..4ee411d Binary files /dev/null and b/static/css/tool-cancel.xcf differ diff --git a/static/css/tool-edit.png b/static/css/tool-edit.png new file mode 100644 index 0000000..70e22df Binary files /dev/null and b/static/css/tool-edit.png differ diff --git a/static/css/tool-edit.xcf b/static/css/tool-edit.xcf new file mode 100644 index 0000000..7f77969 Binary files /dev/null and b/static/css/tool-edit.xcf differ diff --git a/static/css/tool-key.png b/static/css/tool-key.png new file mode 100644 index 0000000..1db4128 Binary files /dev/null and b/static/css/tool-key.png differ diff --git a/static/css/tool-key.xcf b/static/css/tool-key.xcf new file mode 100644 index 0000000..036a6e0 Binary files /dev/null and b/static/css/tool-key.xcf differ diff --git a/static/css/unfavorite-col-icon.png b/static/css/unfavorite-col-icon.png new file mode 100644 index 0000000..c346b96 Binary files /dev/null and b/static/css/unfavorite-col-icon.png differ diff --git a/static/css/warning-icon.png b/static/css/warning-icon.png new file mode 100644 index 0000000..042ca05 Binary files /dev/null and b/static/css/warning-icon.png differ diff --git a/static/css/wiki.css b/static/css/wiki.css new file mode 100644 index 0000000..e69de29 diff --git a/static/css/wikis.css b/static/css/wikis.css new file mode 100644 index 0000000..b1b6197 --- /dev/null +++ b/static/css/wikis.css @@ -0,0 +1,111 @@ +.delete-col { + background-image: url('/static/css/delete-col-icon.png') !important; + margin-right: 1px; +} + +.favorite-col { + background-image: url('/static/css/favorite-col-icon.png') !important; + margin-right: 1px; +} + +.unfavorite-col { + background-image: url('/static/css/unfavorite-col-icon.png') !important; + margin-right: 1px; +} + +.edit-col { + background-image: url('/static/css/edit-col-icon.png') !important; + margin-right: 1px; +} + +td.x-grid-cell p { + margin: 0px; +} + +.x-action-col-icon { + margin-top: 3px; +} + +.warning-icon { + background-image: url('/static/css/warning-icon.png') !important; + width: 32px; + height: 29px; +} + +.x-grid-row .x-grid-cell-inner { + white-space: normal; +} +.x-grid-row-over .x-grid-cell-inner { + white-space: normal; +} + +.x-tool-cancel { + background-image: url(tool-cancel.png) !important; + width: 18px; +} + +.x-tool-edit { + background-image: url(tool-edit.png) !important; + width: 18px; +} + +.x-tool-key { + background-image: url(tool-key.png) !important; + margin-left: -2px; + width: 14px; +} + +.pagetitleinput input { + font-size: 10px; + line-height: 10px; + height: 18px; + width: 40em; +} + +.toc ul { + list-style-type: none; + padding: 0 0 0 5px; +} + +.toc .level-1 { + /* Perhaps something later */ +} + +.toc .level-2 { + padding-left: 10px; +} + +.toc .level-3 { + padding-left: 20px; +} + +.toc .level-3 { + padding-left: 30px; +} +.pagecontent { + /* + width: 100%; + height: 100%; + padding: 3px; + */ +} + +#drop_zone { + border: 2px dashed #bbb; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + padding: 25px; + text-align: center; + font: 20pt bold 'Vollkorn'; + color: #bbb; +} + +.iwsplitbutton .x-btn-split-right { + background-image: url(/static/css/default-small-s-arrow.png); + padding-right: 23px; +} + +.x-tool-img { + margin: 0 -2px; +} diff --git a/static/ext-4.2.1.883/.sencha/workspace/codegen b/static/ext-4.2.1.883/.sencha/workspace/codegen new file mode 100644 index 0000000..853b569 --- /dev/null +++ b/static/ext-4.2.1.883/.sencha/workspace/codegen @@ -0,0 +1,3 @@ +.sencha/package/sencha.cfg={"pkgName":"ext-theme-neutral","senchadir":".sencha","uniqueId":"950d69eb-0125-4518-9150-8135087a911f"} +build.xml={"pkgName":"ext-theme-neutral","senchadir":".sencha","uniqueId":"950d69eb-0125-4518-9150-8135087a911f"} +package.json={"pkgName":"ext-theme-neutral","senchadir":".sencha","uniqueId":"950d69eb-0125-4518-9150-8135087a911f"} diff --git a/static/ext-4.2.1.883/.sencha/workspace/plugin.xml b/static/ext-4.2.1.883/.sencha/workspace/plugin.xml new file mode 100644 index 0000000..54626e9 --- /dev/null +++ b/static/ext-4.2.1.883/.sencha/workspace/plugin.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/static/ext-4.2.1.883/.sencha/workspace/sencha.cfg b/static/ext-4.2.1.883/.sencha/workspace/sencha.cfg new file mode 100644 index 0000000..e8dc759 --- /dev/null +++ b/static/ext-4.2.1.883/.sencha/workspace/sencha.cfg @@ -0,0 +1,37 @@ +# ----------------------------------------------------------------------------- +# This file contains configuration options that apply to all applications in +# the workspace. By convention, these options start with "workspace." but any +# option can be set here. Options specified in an application's sencha.cfg will +# take priority over those values contained in this file. These options will +# take priority over configuration values in Sencha Cmd or a framework plugin. + +# ----------------------------------------------------------------------------- +# This configuration property (if set) is included by default in all compile +# commands executed according to this formulation: +# +# sencha compile -classpath=...,$\u007Bframework.classpath},$\u007Bworkspace.classpath},$\u007Bapp.classpath} +# +#workspace.classpath=platform/core/src,platform/src,extjs/src + +#------------------------------------------------------------------------------ +# This is the folder for build outputs in the workspace + +workspace.build.dir=${workspace.dir}/build + +#------------------------------------------------------------------------------ +# This folder contains all generated and extracted packages. + +workspace.packages.dir=${workspace.dir}/packages + +# ----------------------------------------------------------------------------- +# This option specifies where Schema definitions are stored. + +xworkspace.schema.dir=${workspace.dir}/schema + +# ============================================================================= +# Customizations go below this divider to avoid merge conflicts on upgrade +# ============================================================================= + +ext.dir=${workspace.dir} + +sencha.is.sdk.repo=1 diff --git a/static/ext-4.2.1.883/ext-all.js b/static/ext-4.2.1.883/ext-all.js new file mode 100644 index 0000000..f4ab4bf --- /dev/null +++ b/static/ext-4.2.1.883/ext-all.js @@ -0,0 +1,21 @@ +/* +This file is part of Ext JS 4.2 + +Copyright (c) 2011-2013 Sencha Inc + +Contact: http://www.sencha.com/contact + +GNU General Public License Usage +This file may be used under the terms of the GNU General Public License version 3.0 as +published by the Free Software Foundation and appearing in the file LICENSE included in the +packaging of this file. + +Please review the following information to ensure the GNU General Public License version 3.0 +requirements will be met: http://www.gnu.org/copyleft/gpl.html. + +If you are unsure which license is appropriate for your use, please contact the sales department +at http://www.sencha.com/contact. + +Build date: 2013-05-16 14:36:50 (f9be68accb407158ba2b1be2c226a6ce1f649314) +*/ +var Ext=Ext||{};if(!Ext.Direct){Ext.Direct={}}if(!Ext.Toolbar){Ext.Toolbar={}}if(!Ext.app){Ext.app={}}if(!Ext.app.domain){Ext.app.domain={}}if(!Ext.button){Ext.button={}}if(!Ext.chart){Ext.chart={}}if(!Ext.chart.axis){Ext.chart.axis={}}if(!Ext.chart.series){Ext.chart.series={}}if(!Ext.chart.theme){Ext.chart.theme={}}if(!Ext.container){Ext.container={}}if(!Ext.core){Ext.core={}}if(!Ext.data){Ext.data={}}if(!Ext.data.association){Ext.data.association={}}if(!Ext.data.flash){Ext.data.flash={}}if(!Ext.data.proxy){Ext.data.proxy={}}if(!Ext.data.reader){Ext.data.reader={}}if(!Ext.data.writer){Ext.data.writer={}}if(!Ext.dd){Ext.dd={}}if(!Ext.direct){Ext.direct={}}if(!Ext.dom){Ext.dom={}}if(!Ext.draw){Ext.draw={}}if(!Ext.draw.engine){Ext.draw.engine={}}if(!Ext.flash){Ext.flash={}}if(!Ext.form){Ext.form={}}if(!Ext.form.Action){Ext.form.Action={}}if(!Ext.form.action){Ext.form.action={}}if(!Ext.form.field){Ext.form.field={}}if(!Ext.fx){Ext.fx={}}if(!Ext.fx.target){Ext.fx.target={}}if(!Ext.grid){Ext.grid={}}if(!Ext.grid.column){Ext.grid.column={}}if(!Ext.grid.feature){Ext.grid.feature={}}if(!Ext.grid.header){Ext.grid.header={}}if(!Ext.grid.locking){Ext.grid.locking={}}if(!Ext.grid.plugin){Ext.grid.plugin={}}if(!Ext.grid.property){Ext.grid.property={}}if(!Ext.layout){Ext.layout={}}if(!Ext.layout.boxOverflow){Ext.layout.boxOverflow={}}if(!Ext.layout.component){Ext.layout.component={}}if(!Ext.layout.component.field){Ext.layout.component.field={}}if(!Ext.layout.container){Ext.layout.container={}}if(!Ext.layout.container.border){Ext.layout.container.border={}}if(!Ext.layout.container.boxOverflow){Ext.layout.container.boxOverflow={}}if(!Ext.list){Ext.list={}}if(!Ext.menu){Ext.menu={}}if(!Ext.panel){Ext.panel={}}if(!Ext.perf){Ext.perf={}}if(!Ext.picker){Ext.picker={}}if(!Ext.resizer){Ext.resizer={}}if(!Ext.rtl){Ext.rtl={}}if(!Ext.rtl.button){Ext.rtl.button={}}if(!Ext.rtl.dd){Ext.rtl.dd={}}if(!Ext.rtl.dom){Ext.rtl.dom={}}if(!Ext.rtl.form){Ext.rtl.form={}}if(!Ext.rtl.form.field){Ext.rtl.form.field={}}if(!Ext.rtl.grid){Ext.rtl.grid={}}if(!Ext.rtl.grid.column){Ext.rtl.grid.column={}}if(!Ext.rtl.grid.plugin){Ext.rtl.grid.plugin={}}if(!Ext.rtl.layout){Ext.rtl.layout={}}if(!Ext.rtl.layout.component){Ext.rtl.layout.component={}}if(!Ext.rtl.layout.component.field){Ext.rtl.layout.component.field={}}if(!Ext.rtl.layout.container){Ext.rtl.layout.container={}}if(!Ext.rtl.layout.container.boxOverflow){Ext.rtl.layout.container.boxOverflow={}}if(!Ext.rtl.panel){Ext.rtl.panel={}}if(!Ext.rtl.resizer){Ext.rtl.resizer={}}if(!Ext.rtl.selection){Ext.rtl.selection={}}if(!Ext.rtl.slider){Ext.rtl.slider={}}if(!Ext.rtl.tab){Ext.rtl.tab={}}if(!Ext.rtl.tip){Ext.rtl.tip={}}if(!Ext.rtl.tree){Ext.rtl.tree={}}if(!Ext.rtl.util){Ext.rtl.util={}}if(!Ext.rtl.view){Ext.rtl.view={}}if(!Ext.selection){Ext.selection={}}if(!Ext.slider){Ext.slider={}}if(!Ext.state){Ext.state={}}if(!Ext.tab){Ext.tab={}}if(!Ext.tip){Ext.tip={}}if(!Ext.toolbar){Ext.toolbar={}}if(!Ext.tree){Ext.tree={}}if(!Ext.tree.plugin){Ext.tree.plugin={}}if(!Ext.util){Ext.util={}}if(!Ext.ux){Ext.ux={}}if(!Ext.ux.form){Ext.ux.form={}}if(!Ext.view){Ext.view={}}if(!Ext.window){Ext.window={}}(function(j){var l=[],m=["constructor","toString","valueOf","toLocaleString"],k={},p={},b=0,h,c,o,g,a=function(){var r,q;c=Ext.Base;o=Ext.ClassManager;for(r=m.length;r-->0;){q=(1<0;){r=l[s];q[r]=c[r]}return q},d=function(v,y,R,q,x,F,w,O,t,H,B){var r=function A(){return this.constructor.apply(this,arguments)||null},Q=r,s={enumerableMembers:q&b,onCreated:B,onBeforeCreated:e,aliases:O},E=R.alternateClassName||[],M=Ext.global,I,L,N,D,K,U,T,u,J,z,P,G,C,S;for(N=l.length;N-->0;){T=l[N];r[T]=c[T]}if(R.$isFunction){R=R(r)}s.data=R;z=R.statics,R.$className=v;if(R.$className){r.$className=R.$className}r.extend(y);J=r.prototype;r.xtype=R.xtype=x[0];if(x){J.xtypes=x}J.xtypesChain=F;J.xtypesMap=w;R.alias=O;Q.triggerExtended(r,R,s);if(R.onClassExtended){r.onExtended(R.onClassExtended,r);delete R.onClassExtended}if(z){for(P in z){if(z.hasOwnProperty(P)){S=z[P];if(S&&S.$isFunction&&!S.$isClass&&S!==Ext.emptyFn&&S!==Ext.identityFn){r[P]=C=S;C.$owner=r;C.$name=P}r[P]=S}}}delete R.statics;if(R.inheritableStatics){r.addInheritableStatics(R.inheritableStatics)}if(J.onClassExtended){Q.onExtended(J.onClassExtended,Q);delete J.onClassExtended}if(R.config){g(r,R)}s.onBeforeCreated(r,s.data,s);for(N=0,K=t&&t.length;N0){r--;p[r]="var Ext=window."+Ext.name+";"+p[r]}}n=p.join("");q=o[n];if(!q){q=Function.prototype.constructor.apply(Function.prototype,p);o[n]=q}return q},functionFactory:function(){var p=this,n=Array.prototype.slice.call(arguments),o;if(Ext.isSandboxed){o=n.length;if(o>0){o--;n[o]="var Ext=window."+Ext.name+";"+n[o]}}return Function.prototype.constructor.apply(Function.prototype,n)},Logger:{verbose:g,log:g,info:g,warn:g,error:function(n){throw new Error(n)},deprecate:g}});Ext.type=Ext.typeOf;h=Ext.app;if(!h){h=Ext.app={}}Ext.apply(h,{namespaces:{},collectNamespaces:function(p){var n=Ext.app.namespaces,o;for(o in p){if(p.hasOwnProperty(o)){n[o]=true}}},addNamespaces:function(p){var q=Ext.app.namespaces,o,n;if(!Ext.isArray(p)){p=[p]}for(o=0,n=p.length;on.length&&(p+"."===o.substring(0,p.length+1))){n=p}}return n===""?undefined:n}})}());Ext.globalEval=Ext.global.execScript?function(a){execScript(a)}:function($$code){(function(){var Ext=this.Ext;eval($$code)}())};(function(){var a="4.2.1.883",b;Ext.Version=b=Ext.extend(Object,{constructor:function(c){var e,d;if(c instanceof b){return c}this.version=this.shortVersion=String(c).toLowerCase().replace(/_/g,".").replace(/[\-+]/g,"");d=this.version.search(/([^\d\.])/);if(d!==-1){this.release=this.version.substr(d,c.length);this.shortVersion=this.version.substr(0,d)}this.shortVersion=this.shortVersion.replace(/[^\d]/g,"");e=this.version.split(".");this.major=parseInt(e.shift()||0,10);this.minor=parseInt(e.shift()||0,10);this.patch=parseInt(e.shift()||0,10);this.build=parseInt(e.shift()||0,10);return this},toString:function(){return this.version},valueOf:function(){return this.version},getMajor:function(){return this.major||0},getMinor:function(){return this.minor||0},getPatch:function(){return this.patch||0},getBuild:function(){return this.build||0},getRelease:function(){return this.release||""},isGreaterThan:function(c){return b.compare(this.version,c)===1},isGreaterThanOrEqual:function(c){return b.compare(this.version,c)>=0},isLessThan:function(c){return b.compare(this.version,c)===-1},isLessThanOrEqual:function(c){return b.compare(this.version,c)<=0},equals:function(c){return b.compare(this.version,c)===0},match:function(c){c=String(c);return this.version.substr(0,c.length)===c},toArray:function(){return[this.getMajor(),this.getMinor(),this.getPatch(),this.getBuild(),this.getRelease()]},getShortVersion:function(){return this.shortVersion},gt:function(){return this.isGreaterThan.apply(this,arguments)},lt:function(){return this.isLessThan.apply(this,arguments)},gtEq:function(){return this.isGreaterThanOrEqual.apply(this,arguments)},ltEq:function(){return this.isLessThanOrEqual.apply(this,arguments)}});Ext.apply(b,{releaseValueMap:{dev:-6,alpha:-5,a:-5,beta:-4,b:-4,rc:-3,"#":-2,p:-1,pl:-1},getComponentValue:function(c){return !c?0:(isNaN(c)?this.releaseValueMap[c]||c:parseInt(c,10))},compare:function(h,g){var d,e,c;h=new b(h).toArray();g=new b(g).toArray();for(c=0;ce){return 1}}}return 0}});Ext.apply(Ext,{versions:{},lastRegisteredVersion:null,setVersion:function(d,c){Ext.versions[d]=new b(c);Ext.lastRegisteredVersion=Ext.versions[d];return this},getVersion:function(c){if(c===undefined){return Ext.lastRegisteredVersion}return Ext.versions[c]},deprecate:function(c,e,g,d){if(b.compare(Ext.getVersion(c),e)<1){g.call(d)}}});Ext.setVersion("core",a)}());Ext.String=(function(){var k=/^[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+|[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+$/g,o=/('|\\)/g,j=/\{(\d+)\}/g,b=/([-.*+?\^${}()|\[\]\/\\])/g,p=/^\s+|\s+$/g,l=/\s+/,n=/(^[^a-z]*|[^\w])/gi,e,a,h,d,g=function(r,q){return e[q]},m=function(r,q){return(q in a)?a[q]:String.fromCharCode(parseInt(q.substr(2),10))},c=function(r,q){if(r===null||r===undefined||q===null||q===undefined){return false}return q.length<=r.length};return{insert:function(t,u,r){if(!t){return u}if(!u){return t}var q=t.length;if(!r&&r!==0){r=q}if(r<0){r*=-1;if(r>=q){r=0}else{r=q-r}}if(r===0){t=u+t}else{if(r>=t.length){t+=u}else{t=t.substr(0,r)+u+t.substr(r)}}return t},startsWith:function(t,u,r){var q=c(t,u);if(q){if(r){t=t.toLowerCase();u=u.toLowerCase()}q=t.lastIndexOf(u,0)===0}return q},endsWith:function(u,r,t){var q=c(u,r);if(q){if(t){u=u.toLowerCase();r=r.toLowerCase()}q=u.indexOf(r,u.length-r.length)!==-1}return q},createVarName:function(q){return q.replace(n,"")},htmlEncode:function(q){return(!q)?q:String(q).replace(h,g)},htmlDecode:function(q){return(!q)?q:String(q).replace(d,m)},addCharacterEntities:function(r){var q=[],u=[],s,t;for(s in r){t=r[s];a[s]=t;e[t]=s;q.push(t);u.push(s)}h=new RegExp("("+q.join("|")+")","g");d=new RegExp("("+u.join("|")+"|&#[0-9]{1,5};)","g")},resetCharacterEntities:function(){e={};a={};this.addCharacterEntities({"&":"&",">":">","<":"<",""":'"',"'":"'"})},urlAppend:function(r,q){if(!Ext.isEmpty(q)){return r+(r.indexOf("?")===-1?"?":"&")+q}return r},trim:function(q){return q.replace(k,"")},capitalize:function(q){return q.charAt(0).toUpperCase()+q.substr(1)},uncapitalize:function(q){return q.charAt(0).toLowerCase()+q.substr(1)},ellipsis:function(s,q,t){if(s&&s.length>q){if(t){var u=s.substr(0,q-2),r=Math.max(u.lastIndexOf(" "),u.lastIndexOf("."),u.lastIndexOf("!"),u.lastIndexOf("?"));if(r!==-1&&r>=(q-15)){return u.substr(0,r)+"..."}}return s.substr(0,q-3)+"..."}return s},escapeRegex:function(q){return q.replace(b,"\\$1")},escape:function(q){return q.replace(o,"\\$1")},toggle:function(r,s,q){return r===s?q:s},leftPad:function(r,s,t){var q=String(r);t=t||" ";while(q.lengthe)?e:d)},snap:function(h,e,g,j){var d;if(h===undefined||h=e){h+=e}else{if(d*2<-e){h-=e}}}}return b.constrain(h,g,j)},snapInRange:function(h,d,g,j){var e;g=(g||0);if(h===undefined||h=d){h+=d}}if(j!==undefined){if(h>(j=b.snapInRange(j,d,g))){h=j}}return h},toFixed:c?function(g,d){d=d||0;var e=a.pow(10,d);return(a.round(g*e)/e).toFixed(d)}:function(e,d){return e.toFixed(d)},from:function(e,d){if(isFinite(e)){e=parseFloat(e)}return !isNaN(e)?e:d},randomInt:function(e,d){return a.floor(a.random()*(d-e+1)+e)},correctFloat:function(d){return parseFloat(d.toPrecision(14))}});Ext.num=function(){return b.from.apply(this,arguments)}}();(function(){var g=Array.prototype,p=g.slice,r=(function(){var B=[],e,A=20;if(!B.splice){return false}while(A--){B.push("A")}B.splice(15,0,"F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F");e=B.length;B.splice(13,0,"XXX");if(e+1!=B.length){return false}return true}()),k="forEach" in g,v="map" in g,q="indexOf" in g,z="every" in g,c="some" in g,d="filter" in g,o=(function(){var e=[1,2,3,4,5].sort(function(){return 0});return e[0]===1&&e[1]===2&&e[2]===3&&e[3]===4&&e[4]===5}()),l=true,a,x,u,w;try{if(typeof document!=="undefined"){p.call(document.getElementsByTagName("body"))}}catch(t){l=false}function n(A,e){return(e<0)?Math.max(0,A.length+e):Math.min(A.length,e)}function y(H,G,A,K){var L=K?K.length:0,C=H.length,I=n(H,G),F,J,B,e,D,E;if(I===C){if(L){H.push.apply(H,K)}}else{F=Math.min(A,C-I);J=I+F;B=J+L-F;e=C-J;D=C-F;if(BJ){for(E=e;E--;){H[B+E]=H[J+E]}}}if(L&&I===D){H.length=D;H.push.apply(H,K)}else{H.length=D+L;for(E=0;E-1;A--){if(C.call(B||E[A],E[A],A,E)===false){return A}}}return true},forEach:k?function(B,A,e){B.forEach(A,e)}:function(D,B,A){var e=0,C=D.length;for(;ee){e=B}}}return e},mean:function(e){return e.length>0?a.sum(e)/e.length:undefined},sum:function(D){var A=0,e,C,B;for(e=0,C=D.length;e0){return setTimeout(Ext.supports.TimeoutActualLateness?function(){e()}:e,c)}e();return 0},createSequence:function(b,c,a){if(!c){return b}else{return function(){var d=b.apply(this,arguments);c.apply(a||this,arguments);return d}}},createBuffered:function(e,b,d,c){var a;return function(){var h=c||Array.prototype.slice.call(arguments,0),g=d||this;if(a){clearTimeout(a)}a=setTimeout(function(){e.apply(g,h)},b)}},createThrottled:function(e,b,d){var g,a,c,j,h=function(){e.apply(d||this,c);g=Ext.Date.now()};return function(){a=Ext.Date.now()-g;c=arguments;clearTimeout(j);if(!g||(a>=b)){h()}else{j=setTimeout(h,b-a)}}},interceptBefore:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){var g=d.apply(c||this,arguments);e.apply(this,arguments);return g})},interceptAfter:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){e.apply(this,arguments);return d.apply(c||this,arguments)})}};Ext.defer=Ext.Function.alias(Ext.Function,"defer");Ext.pass=Ext.Function.alias(Ext.Function,"pass");Ext.bind=Ext.Function.alias(Ext.Function,"bind");(function(){var a=function(){},b=Ext.Object={chain:Object.create||function(d){a.prototype=d;var c=new a();a.prototype=null;return c},toQueryObjects:function(e,k,d){var c=b.toQueryObjects,j=[],g,h;if(Ext.isArray(k)){for(g=0,h=k.length;g0){k=o.split("=");w=decodeURIComponent(k[0]);n=(k[1]!==undefined)?decodeURIComponent(k[1]):"";if(!r){if(u.hasOwnProperty(w)){if(!Ext.isArray(u[w])){u[w]=[u[w]]}u[w].push(n)}else{u[w]=n}}else{h=w.match(/(\[):?([^\]]*)\]/g);t=w.match(/^([^\[]+)/);w=t[0];l=[];if(h===null){u[w]=n;continue}for(p=0,c=h.length;p daysInMonth) {","d = daysInMonth;","}","}","h = from(h, from(def.h, dt.getHours()));","i = from(i, from(def.i, dt.getMinutes()));","s = from(s, from(def.s, dt.getSeconds()));","ms = from(ms, from(def.ms, dt.getMilliseconds()));","if(z >= 0 && y >= 0){","v = me.add(new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);","v = !strict? v : (strict === true && (z <= 364 || (me.isLeapYear(v) && z <= 365))? me.add(v, me.DAY, z) : null);","}else if(strict === true && !me.isValid(y, m + 1, d, h, i, s, ms)){","v = null;","}else{","if (W) {","year = y || (new Date()).getFullYear(),","jan4 = new Date(year, 0, 4, 0, 0, 0),","week1monday = new Date(jan4.getTime() - ((jan4.getDay() - 1) * 86400000));","v = Ext.Date.clearTime(new Date(week1monday.getTime() + ((W - 1) * 604800000)));","} else {","v = me.add(new Date(y < 100 ? 100 : y, m, d, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);","}","}","}","}","if(v){","if(zz != null){","v = me.add(v, me.SECOND, -v.getTimezoneOffset() * 60 - zz);","}else if(o){","v = me.add(v, me.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));","}","}","return v;"].join("\n");function h(m){var l=Array.prototype.slice.call(arguments,1);return m.replace(c,function(n,o){return l[o]})}Ext.apply(d,{now:Date.now||function(){return +new Date()},toString:function(l){var m=Ext.String.leftPad;return l.getFullYear()+"-"+m(l.getMonth()+1,2,"0")+"-"+m(l.getDate(),2,"0")+"T"+m(l.getHours(),2,"0")+":"+m(l.getMinutes(),2,"0")+":"+m(l.getSeconds(),2,"0")},getElapsed:function(m,l){return Math.abs(m-(l||d.now()))},useStrict:false,formatCodeToRegex:function(m,l){var n=d.parseCodes[m];if(n){n=typeof n=="function"?n():n;d.parseCodes[m]=n}return n?Ext.applyIf({c:n.c?h(n.c,l||"{0}"):n.c},n):{g:0,c:null,s:Ext.String.escapeRegex(m)}},parseFunctions:{MS:function(m,l){var n=(m||"").match(g);return n?new Date(((n[1]||"")+n[2])*1):null},time:function(m,l){var n=parseInt(m,10);if(n||n===0){return new Date(n)}return null},timestamp:function(m,l){var n=parseInt(m,10);if(n||n===0){return new Date(n*1000)}return null}},parseRegexes:[],formatFunctions:{MS:function(){return"\\/Date("+this.getTime()+")\\/"},time:function(){return this.getTime().toString()},timestamp:function(){return d.format(this,"U")}},y2kYear:50,MILLI:"ms",SECOND:"s",MINUTE:"mi",HOUR:"h",DAY:"d",MONTH:"mo",YEAR:"y",defaults:{},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNumbers:{January:0,Jan:0,February:1,Feb:1,March:2,Mar:2,April:3,Apr:3,May:4,June:5,Jun:5,July:6,Jul:6,August:7,Aug:7,September:8,Sep:8,October:9,Oct:9,November:10,Nov:10,December:11,Dec:11},defaultFormat:"m/d/Y",getShortMonthName:function(l){return Ext.Date.monthNames[l].substring(0,3)},getShortDayName:function(l){return Ext.Date.dayNames[l].substring(0,3)},getMonthNumber:function(l){return Ext.Date.monthNumbers[l.substring(0,1).toUpperCase()+l.substring(1,3).toLowerCase()]},formatContainsHourInfo:function(l){return a.test(l.replace(k,""))},formatContainsDateInfo:function(l){return e.test(l.replace(k,""))},unescapeFormat:function(l){return l.replace(j,"")},formatCodes:{d:"Ext.String.leftPad(this.getDate(), 2, '0')",D:"Ext.Date.getShortDayName(this.getDay())",j:"this.getDate()",l:"Ext.Date.dayNames[this.getDay()]",N:"(this.getDay() ? this.getDay() : 7)",S:"Ext.Date.getSuffix(this)",w:"this.getDay()",z:"Ext.Date.getDayOfYear(this)",W:"Ext.String.leftPad(Ext.Date.getWeekOfYear(this), 2, '0')",F:"Ext.Date.monthNames[this.getMonth()]",m:"Ext.String.leftPad(this.getMonth() + 1, 2, '0')",M:"Ext.Date.getShortMonthName(this.getMonth())",n:"(this.getMonth() + 1)",t:"Ext.Date.getDaysInMonth(this)",L:"(Ext.Date.isLeapYear(this) ? 1 : 0)",o:"(this.getFullYear() + (Ext.Date.getWeekOfYear(this) == 1 && this.getMonth() > 0 ? +1 : (Ext.Date.getWeekOfYear(this) >= 52 && this.getMonth() < 11 ? -1 : 0)))",Y:"Ext.String.leftPad(this.getFullYear(), 4, '0')",y:"('' + this.getFullYear()).substring(2, 4)",a:"(this.getHours() < 12 ? 'am' : 'pm')",A:"(this.getHours() < 12 ? 'AM' : 'PM')",g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)",G:"this.getHours()",h:"Ext.String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",H:"Ext.String.leftPad(this.getHours(), 2, '0')",i:"Ext.String.leftPad(this.getMinutes(), 2, '0')",s:"Ext.String.leftPad(this.getSeconds(), 2, '0')",u:"Ext.String.leftPad(this.getMilliseconds(), 3, '0')",O:"Ext.Date.getGMTOffset(this)",P:"Ext.Date.getGMTOffset(this, true)",T:"Ext.Date.getTimezone(this)",Z:"(this.getTimezoneOffset() * -60)",c:function(){var q,o,n,m,p;for(q="Y-m-dTH:i:sP",o=[],n=0,m=q.length;n me.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:{g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(am|pm|AM|PM)",calcAtEnd:true},A:{g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(AM|PM|am|pm)",calcAtEnd:true},g:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|[0-9])"},G:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|1[0-9]|[0-9])"},h:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|0[1-9])"},H:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|[0-1][0-9])"},i:{g:1,c:"i = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},s:{g:1,c:"s = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},u:{g:1,c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",s:"(\\d+)"},O:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),","mn = o.substring(3,5) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{4})"},P:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),","mn = o.substring(4,6) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{2}:\\d{2})"},T:{g:0,c:null,s:"[A-Z]{1,5}"},Z:{g:1,c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n",s:"([+-]?\\d{1,5})"},c:function(){var o=[],m=[d.formatCodeToRegex("Y",1),d.formatCodeToRegex("m",2),d.formatCodeToRegex("d",3),d.formatCodeToRegex("H",4),d.formatCodeToRegex("i",5),d.formatCodeToRegex("s",6),{c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},{c:["if(results[8]) {","if(results[8] == 'Z'){","zz = 0;","}else if (results[8].indexOf(':') > -1){",d.formatCodeToRegex("P",8).c,"}else{",d.formatCodeToRegex("O",8).c,"}","}"].join("\n")}],p,n;for(p=0,n=m.length;p0?"-":"+")+Ext.String.leftPad(Math.floor(Math.abs(n)/60),2,"0")+(m?":":"")+Ext.String.leftPad(Math.abs(n%60),2,"0")},getDayOfYear:function(o){var n=0,q=Ext.Date.clone(o),l=o.getMonth(),p;for(p=0,q.setDate(1),q.setMonth(0);p28){m=Math.min(m,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(o),Ext.Date.MONTH,r)).getDate())}s.setDate(m);s.setMonth(o.getMonth()+r);break;case Ext.Date.YEAR:m=o.getDate();if(m>28){m=Math.min(m,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(o),Ext.Date.YEAR,r)).getDate())}s.setDate(m);s.setFullYear(o.getFullYear()+r);break}}if(q){switch(n.toLowerCase()){case Ext.Date.MILLI:p=1;break;case Ext.Date.SECOND:p=1000;break;case Ext.Date.MINUTE:p=1000*60;break;case Ext.Date.HOUR:p=1000*60*60;break;case Ext.Date.DAY:p=1000*60*60*24;break;case Ext.Date.MONTH:m=d.getDaysInMonth(s);p=1000*60*60*24*m;break;case Ext.Date.YEAR:m=(d.isLeapYear(s)?366:365);p=1000*60*60*24*m;break}if(p){s.setTime(s.getTime()+p*q)}}return s},subtract:function(m,l,n){return d.add(m,l,-n)},between:function(m,o,l){var n=m.getTime();return o.getTime()<=n&&n<=l.getTime()},compat:function(){var m=window.Date,l,t=["useStrict","formatCodeToRegex","parseFunctions","parseRegexes","formatFunctions","y2kYear","MILLI","SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","defaults","dayNames","monthNames","monthNumbers","getShortMonthName","getShortDayName","getMonthNumber","formatCodes","isValid","parseDate","getFormatCode","createFormat","createParser","parseCodes"],q=["dateFormat","format","getTimezone","getGMTOffset","getDayOfYear","getWeekOfYear","isLeapYear","getFirstDayOfMonth","getLastDayOfMonth","getDaysInMonth","getSuffix","clone","isDST","clearTime","add","between"],r=t.length,n=q.length,o,u,v;for(v=0;v0){for(e=0;e0){if(A===z){return C[A]}B=C[A];z=z.substring(A.length+1)}if(B.length>0){B+="/"}return B.replace(c,"/")+z.replace(g,"/")+".js"},getPrefix:function(A){var C=l.config.paths,B,z="";if(C.hasOwnProperty(A)){return A}for(B in C){if(C.hasOwnProperty(B)&&B+"."===A.substring(0,B.length+1)){if(B.length>z.length){z=B}}}return z},isAClassNameWithAKnownPrefix:function(z){var A=l.getPrefix(z);return A!==""&&A!==z},require:function(B,A,z,C){if(A){A.call(z)}},syncRequire:function(){},exclude:function(z){return{require:function(C,B,A){return l.require(C,B,A,z)},syncRequire:function(C,B,A){return l.syncRequire(C,B,A,z)}}},onReady:function(C,B,D,z){var A;if(D!==false&&Ext.onDocumentReady){A=C;C=function(){Ext.onDocumentReady(A,B,z)}}C.call(B)}});var r=[],s={},v={},t={},q={},x=[],y=[],j={},m=function(z,A){return A.priority-z.priority};Ext.apply(l,{documentHead:typeof document!="undefined"&&(document.head||document.getElementsByTagName("head")[0]),isLoading:false,queue:r,isClassFileLoaded:s,isFileLoaded:v,readyListeners:x,optionalRequires:y,requiresMap:j,numPendingFiles:0,numLoadedFiles:0,hasFileLoadError:false,classNameToFilePathMap:t,scriptsLoading:0,syncModeEnabled:false,scriptElements:q,refreshQueue:function(){var D=r.length,A,C,z,B;if(!D&&!l.scriptsLoading){return l.triggerReady()}for(A=0;Al.numLoadedFiles){continue}for(z=0;z=200&&D<300)||(D===304)){if(!Ext.isIE){E="\n//@ sourceURL="+A}Ext.globalEval(J.responseText+E);H.call(K)}else{}}J=null}},syncRequire:function(){var z=l.syncModeEnabled;if(!z){l.syncModeEnabled=true}l.require.apply(l,arguments);if(!z){l.syncModeEnabled=false}l.refreshQueue()},require:function(R,I,C,E){var K={},B={},H=[],T=[],Q=[],A=[],G,S,M,L,z,F,P,O,N,J,D;if(E){E=(typeof E==="string")?[E]:E;for(O=0,J=E.length;O0){H=b.getNamesByExpression(z);for(N=0,D=H.length;N0){G=function(){var V=[],U,W;for(U=0,W=A.length;U0){T=b.getNamesByExpression(L);D=T.length;for(N=0;N0){if(!l.config.enabled){throw new Error("Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Missing required class"+((Q.length>1)?"es":"")+": "+Q.join(", "))}}else{G.call(C);return l}S=l.syncModeEnabled;if(!S){r.push({requires:Q.slice(),callback:G,scope:C})}J=Q.length;for(O=0;Owindow.innerWidth?"portrait":"landscape"},destroy:function(){var c=arguments.length,b,a;for(b=0;b]+>/gi,j=/(?:)((\n|\r|.)*?)(?:<\/script>)/ig,e=/\r?\n/g,b=/^#+$/,h=/[\d,\.#]+/,k=/[^\d\.#]/g,a,d={};Ext.apply(g,{thousandSeparator:",",decimalSeparator:".",currencyPrecision:2,currencySign:"$",currencyAtEnd:false,undef:function(l){return l!==undefined?l:""},defaultValue:function(m,l){return m!==undefined&&m!==""?m:l},substr:"ab".substr(-1)!="b"?function(m,o,l){var n=String(m);return(o<0)?n.substr(Math.max(n.length+o,0),l):n.substr(o,l)}:function(m,n,l){return String(m).substr(n,l)},lowercase:function(l){return String(l).toLowerCase()},uppercase:function(l){return String(l).toUpperCase()},usMoney:function(l){return g.currency(l,"$",2)},currency:function(n,p,m,l){var r="",q=",0",o=0;n=n-0;if(n<0){n=-n;r="-"}m=Ext.isDefined(m)?m:g.currencyPrecision;q+=(m>0?".":"");for(;o2){}else{if(r.length===2){p=r[1].length;x=b.test(r[1])}}l=["var utilFormat=Ext.util.Format,extNumber=Ext.Number,neg,fnum,parts"+(m?",thousandSeparator,thousands=[],j,n,i":"")+(s?',formatString="'+o+'",formatPattern=/[\\d,\\.#]+/':"")+(x?",trailingZeroes=/\\.?0+$/;":";")+'return function(v){if(typeof v!=="number"&&isNaN(v=extNumber.from(v,NaN)))return"";neg=v<0;',"fnum=Ext.Number.toFixed(Math.abs(v), "+p+");"];if(m){if(p){l[l.length]='parts=fnum.split(".");';l[l.length]="fnum=parts[0];"}l[l.length]="if(v>=1000) {";l[l.length]="thousandSeparator=utilFormat.thousandSeparator;thousands.length=0;j=fnum.length;n=fnum.length%3||3;for(i=0;i")},capitalize:Ext.String.capitalize,ellipsis:Ext.String.ellipsis,format:Ext.String.format,htmlDecode:Ext.String.htmlDecode,htmlEncode:Ext.String.htmlEncode,leftPad:Ext.String.leftPad,trim:Ext.String.trim,parseBox:function(m){m=m||0;if(typeof m==="number"){return{top:m,right:m,bottom:m,left:m}}var n=m.split(" "),l=n.length;if(l==1){n[1]=n[2]=n[3]=n[0]}else{if(l==2){n[2]=n[0];n[3]=n[1]}else{if(l==3){n[3]=n[1]}}}return{top:parseInt(n[0],10)||0,right:parseInt(n[1],10)||0,bottom:parseInt(n[2],10)||0,left:parseInt(n[3],10)||0}},escapeRegex:function(l){return l.replace(/([\-.*+?\^${}()|\[\]\/\\])/g,"\\$1")}})}());(Ext.cmd.derive("Ext.util.TaskRunner",Ext.Base,{interval:10,timerId:null,constructor:function(a){var b=this;if(typeof a=="number"){b.interval=a}else{if(a){Ext.apply(b,a)}}b.tasks=[];b.timerFn=Ext.Function.bind(b.onTick,b)},newTask:function(b){var a=new Ext.util.TaskRunner.Task(b);a.manager=this;return a},start:function(a){var c=this,b=Ext.Date.now();if(!a.pending){c.tasks.push(a);a.pending=true}a.stopped=false;a.taskStartTime=b;a.taskRunTime=a.fireOnStart!==false?0:a.taskStartTime;a.taskRunCount=0;if(!c.firing){if(a.fireOnStart!==false){c.startTimer(0,b)}else{c.startTimer(a.interval,b)}}return a},stop:function(a){if(!a.stopped){a.stopped=true;if(a.onStop){a.onStop.call(a.scope||a,a)}}return a},stopAll:function(){Ext.each(this.tasks,this.stop,this)},firing:false,nextExpires:1e+99,onTick:function(){var m=this,e=m.tasks,a=Ext.Date.now(),n=1e+99,k=e.length,c,o,h,b,d,g;m.timerId=null;m.firing=true;for(h=0;hc){n=c}}}if(o){m.tasks=o}m.firing=false;if(m.tasks.length){m.startTimer(n-a,Ext.Date.now())}if(m.fireIdleEvent!==false){Ext.EventManager.idleEvent.fire()}},startTimer:function(e,c){var d=this,b=c+e,a=d.timerId;if(a&&d.nextExpires-b>d.interval){clearTimeout(a);a=null}if(!a){if(e',''," ({childCount} children)","",''," ({depth} deep)","",'',", {type}: {[this.time(values.sum)]} msec (","avg={[this.time(values.sum / parent.count)]}",")","",""].join(""),{time:function(o){return Math.round(o*100)/100}})}var n=this.getData(m);n.name=this.name;n.pure.type="Pure";n.total.type="Total";n.times=[n.pure,n.total];return d.apply(n)},getData:function(m){var n=this;return{count:n.count,childCount:n.childCount,depth:n.maxDepth,pure:g(n.count,n.childCount,m,n.pure),total:g(n.count,n.childCount,m,n.total)}},enter:function(){var m=this,n={accum:m,leave:e,childTime:0,parent:c};++m.depth;if(m.maxDepth','
    ',"
    ",'
    ','
    ',"
    ",'
    ','
    '].join("");p.body.appendChild(d)}g=c[m];while(h--){k=j[h];o=g&&g[h];if(o!==undefined){l[k.identity]=o}else{if(d||k.early){l[k.identity]=k.fn.call(l,p,d)}else{e.push(k)}}}if(d){p.body.removeChild(d)}l.toRun=e},PointerEvents:"pointerEvents" in document.documentElement.style,LocalStorage:(function(){try{return"localStorage" in window&&window.localStorage!==null}catch(d){return false}})(),CSS3BoxShadow:"boxShadow" in document.documentElement.style||"WebkitBoxShadow" in document.documentElement.style||"MozBoxShadow" in document.documentElement.style,ClassList:!!document.documentElement.classList,OrientationChange:((typeof window.orientation!="undefined")&&("onorientationchange" in window)),DeviceMotion:("ondevicemotion" in window),Touch:("ontouchstart" in window)&&(!Ext.is.Desktop),TimeoutActualLateness:(function(){setTimeout(function(){Ext.supports.TimeoutActualLateness=arguments.length!==0},0)}()),tests:[{identity:"Transitions",fn:function(k,m){var j=["webkit","Moz","o","ms","khtml"],l="TransitionEnd",d=[j[0]+l,"transitionend",j[2]+l,j[3]+l,j[4]+l],h=j.length,g=0,e=false;for(;g

    ";return(g.childNodes.length==2)}},{identity:"Float",fn:function(d,e){return !!e.lastChild.style.cssFloat}},{identity:"AudioTag",fn:function(d){return !!d.createElement("audio").canPlayType}},{identity:"History",fn:function(){var d=window.history;return !!(d&&d.pushState)}},{identity:"CSS3DTransform",fn:function(){return(typeof WebKitCSSMatrix!="undefined"&&new WebKitCSSMatrix().hasOwnProperty("m41"))}},{identity:"CSS3LinearGradient",fn:function(k,d){var m="background-image:",l="-webkit-gradient(linear, left top, right bottom, from(black), to(white))",j="linear-gradient(left top, black, white)",h="-moz-"+j,e="-ms-"+j,g="-o-"+j,n=[m+l,m+j,m+h,m+e,m+g];d.style.cssText=n.join(";");return((""+d.style.backgroundImage).indexOf("gradient")!==-1)&&!Ext.isIE9}},{identity:"CSS3BorderRadius",fn:function(h,j){var e=["borderRadius","BorderRadius","MozBorderRadius","WebkitBorderRadius","OBorderRadius","KhtmlBorderRadius"],g=false,d;for(d=0;d=534.16}},{identity:"TextAreaMaxLength",fn:function(){var d=document.createElement("textarea");return("maxlength" in d)}},{identity:"GetPositionPercentage",fn:function(d,e){return a(e.childNodes[2],"left")=="10%"}},{identity:"PercentageHeightOverflowBug",fn:function(h){var d=false,g,e;if(Ext.getScrollbarSize().height){e=h.createElement("div");g=e.style;g.height="50px";g.width="50px";g.overflow="auto";g.position="absolute";e.innerHTML=['
    ','
    ',"
    "].join("");h.body.appendChild(e);if(e.firstChild.offsetHeight===50){d=true}h.body.removeChild(e)}return d}},{identity:"xOriginBug",fn:function(h,j){j.innerHTML='
    ';var g=document.getElementById("b1").getBoundingClientRect(),e=document.getElementById("b2").getBoundingClientRect(),d=document.getElementById("b3").getBoundingClientRect();return(e.left!==g.left&&d.right!==g.right)}},{identity:"ScrollWidthInlinePaddingBug",fn:function(h){var d=false,g,e;e=h.createElement("div");g=e.style;g.height="50px";g.width="50px";g.padding="10px";g.overflow="hidden";g.position="absolute";e.innerHTML='';h.body.appendChild(e);if(e.scrollWidth===70){d=true}h.body.removeChild(e);return d}}]}}());Ext.supports.init();Ext.util.DelayedTask=function(e,d,b,h){var g=this,a,c=function(){clearInterval(g.id);g.id=null;e.apply(d,b||[]);Ext.EventManager.idleEvent.fire()};h=typeof h==="boolean"?h:true;g.id=null;g.delay=function(k,m,l,j){if(h){g.cancel()}a=k||a,e=m||e;d=l||d;b=j||b;if(!g.id){g.id=setInterval(c,a)}};g.cancel=function(){if(g.id){clearInterval(g.id);g.id=null}}};(Ext.cmd.derive("Ext.util.Event",Ext.Base,function(){var d=Array.prototype.slice,a=Ext.Array.insert,b=Ext.Array.toArray,c=Ext.util.DelayedTask;return{isEvent:true,suspended:0,noOptions:{},constructor:function(g,e){this.name=e;this.observable=g;this.listeners=[]},addListener:function(p,r,t){var n=this,o,j,q,e,s,m,h,l,k,g;r=r||n.observable;if(!n.isListening(p,r)){j=n.createListener(p,r,t);if(n.firing){n.listeners=n.listeners.slice(0)}o=n.listeners;l=h=o.length;q=t&&t.priority;s=n._highestNegativePriorityIndex;m=(s!==undefined);if(q){e=(q<0);if(!e||m){for(k=(e?s:0);k0){l.firing=true;g=arguments.length?d.call(arguments,0):[];e=g.length;for(h=0;h111&&k.keyCode<124){k.keyCode=-1}}catch(l){}}},getRelatedTarget:function(k){k=k.browserEvent||k;var l=k.relatedTarget;if(!l){if(b.mouseLeaveRe.test(k.type)){l=k.toElement}else{if(b.mouseEnterRe.test(k.type)){l=k.fromElement}}}return b.resolveTextNode(l)},getPageX:function(k){return b.getPageXY(k)[0]},getPageY:function(k){return b.getPageXY(k)[1]},getPageXY:function(m){m=m.browserEvent||m;var l=m.pageX,o=m.pageY,n=h.documentElement,k=h.body;if(!l&&l!==0){l=m.clientX+(n&&n.scrollLeft||k&&k.scrollLeft||0)-(n&&n.clientLeft||k&&k.clientLeft||0);o=m.clientY+(n&&n.scrollTop||k&&k.scrollTop||0)-(n&&n.clientTop||k&&k.clientTop||0)}return[l,o]},getTarget:function(k){k=k.browserEvent||k;return b.resolveTextNode(k.target||k.srcElement)},resolveTextNode:Ext.isGecko?function(l){if(l){var k=HTMLElement.prototype.toString.call(l);if(k!=="[xpconnect wrapped native prototype]"&&k!=="[object XULElement]"){return l.nodeType==3?l.parentNode:l}}}:function(k){return k&&k.nodeType==3?k.parentNode:k},curWidth:0,curHeight:0,onWindowResize:function(n,m,l){var k=b.resizeEvent;if(!k){b.resizeEvent=k=new Ext.util.Event();b.on(g,"resize",b.fireResize,null,{buffer:100})}k.addListener(n,m,l)},fireResize:function(){var k=Ext.Element.getViewWidth(),l=Ext.Element.getViewHeight();if(b.curHeight!=l||b.curWidth!=k){b.curHeight=l;b.curWidth=k;b.resizeEvent.fire(k,l)}},removeResizeListener:function(m,l){var k=b.resizeEvent;if(k){k.removeListener(m,l)}},onWindowUnload:function(n,m,l){var k=b.unloadEvent;if(!k){b.unloadEvent=k=new Ext.util.Event();b.addListener(g,"unload",b.fireUnload)}if(n){k.addListener(n,m,l)}},fireUnload:function(){try{h=g=undefined;var p,l,n,m,k;b.unloadEvent.fire();if(Ext.isGecko3){p=Ext.ComponentQuery.query("gridview");l=0;n=p.length;for(;l=525:!((Ext.isGecko&&!Ext.isWindows)||Ext.isOpera),getKeyEvent:function(){return b.useKeyDown?"keydown":"keypress"}});if(!a&&document.attachEvent){Ext.apply(b,{pollScroll:function(){var k=true;try{document.documentElement.doScroll("left")}catch(l){k=false}if(k&&document.body){b.onReadyEvent({type:"doScroll"})}else{b.scrollTimeout=setTimeout(b.pollScroll,20)}return k},scrollTimeout:null,readyStatesRe:/complete/i,checkReadyState:function(){var k=document.readyState;if(b.readyStatesRe.test(k)){b.onReadyEvent({type:k})}},bindReadyEvent:function(){var k=true;if(b.hasBoundOnReady){return}try{k=window.frameElement===undefined}catch(l){k=false}if(!k||!h.documentElement.doScroll){b.pollScroll=Ext.emptyFn}if(b.pollScroll()===true){return}if(h.readyState=="complete"){b.onReadyEvent({type:"already "+(h.readyState||"body")})}else{h.attachEvent("onreadystatechange",b.checkReadyState);window.attachEvent("onload",b.onReadyEvent);b.hasBoundOnReady=true}},onReadyEvent:function(k){if(k&&k.type){b.onReadyChain.push(k.type)}if(b.hasBoundOnReady){document.detachEvent("onreadystatechange",b.checkReadyState);window.detachEvent("onload",b.onReadyEvent)}if(Ext.isNumber(b.scrollTimeout)){clearTimeout(b.scrollTimeout);delete b.scrollTimeout}if(!Ext.isReady){b.fireDocReady()}},onReadyChain:[]})}Ext.onReady=function(m,l,k){Ext.Loader.onReady(m,l,true,k)};Ext.onDocumentReady=b.onDocumentReady;b.on=b.addListener;b.un=b.removeListener;Ext.onReady(d)}();(Ext.cmd.derive("Ext.util.Observable",Ext.Base,function(a){var d=[],e=Array.prototype,g=e.slice,c=Ext.util.Event,b=function(h){if(h instanceof b){return h}this.observable=h;if(arguments[1].isObservable){this.managedListeners=true}this.args=g.call(arguments,1)};b.prototype.destroy=function(){this.observable[this.managedListeners?"mun":"un"].apply(this.observable,this.args)};return{statics:{releaseCapture:function(h){h.fireEventArgs=this.prototype.fireEventArgs},capture:function(l,j,h){var k=function(m,n){return j.apply(h,[m].concat(n))};this.captureArgs(l,k,h)},captureArgs:function(k,j,h){k.fireEventArgs=Ext.Function.createInterceptor(k.fireEventArgs,j,h)},observe:function(h,j){if(h){if(!h.isObservable){Ext.applyIf(h,new this());this.captureArgs(h.prototype,h.fireEventArgs,h)}if(Ext.isObject(j)){h.on(j)}}return h},prepareClass:function(k,j){if(!k.HasListeners){var l=function(){},h=k.superclass.HasListeners||(j&&j.HasListeners)||a.HasListeners;k.prototype.HasListeners=k.HasListeners=l;l.prototype=k.hasListeners=new h()}}},isObservable:true,eventsSuspended:0,constructor:function(h){var j=this;Ext.apply(j,h);if(!j.hasListeners){j.hasListeners=new j.HasListeners()}j.events=j.events||{};if(j.listeners){j.on(j.listeners);j.listeners=null}if(j.bubbleEvents){j.enableBubble(j.bubbleEvents)}},onClassExtended:function(h){if(!h.HasListeners){a.prepareClass(h)}},eventOptionsRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|element|destroyable|vertical|horizontal|freezeEvent|priority)$/,addManagedListener:function(p,l,n,q,r,k){var m=this,o=m.managedListeners=m.managedListeners||[],j,h;if(typeof l!=="string"){h=arguments.length>4?r:l;r=l;for(l in r){if(r.hasOwnProperty(l)){j=r[l];if(!m.eventOptionsRe.test(l)){m.addManagedListener(p,l,j.fn||j,j.scope||r.scope||q,j.fn?j:h,true)}}}if(r&&r.destroyable){return new b(m,p,r)}}else{if(typeof n==="string"){q=q||m;n=Ext.resolveMethod(n,q)}o.push({item:p,ename:l,fn:n,scope:q,options:r});p.on(l,n,q,r);if(!k&&r&&r.destroyable){return new b(m,p,l,n,q)}}},removeManagedListener:function(q,l,o,r){var n=this,s,j,p,h,m,k;if(typeof l!=="string"){s=l;for(l in s){if(s.hasOwnProperty(l)){j=s[l];if(!n.eventOptionsRe.test(l)){n.removeManagedListener(q,l,j.fn||j,j.scope||s.scope||r)}}}}else{p=n.managedListeners?n.managedListeners.slice():[];if(typeof o==="string"){r=r||n;o=Ext.resolveMethod(o,r)}for(m=0,h=p.length;m=532){a=120}else{a=12}a*=3}else{a=120}}return a}()),clickRe:/(dbl)?click/,safariKeys:{3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},btnMap:Ext.isIE?{1:0,4:1,2:2}:{0:0,1:1,2:2},constructor:function(a,b){if(a){this.setEvent(a.browserEvent||a,b)}},setEvent:function(d,e){var c=this,b,a;if(d===c||(d&&d.browserEvent)){return d}c.browserEvent=d;if(d){b=d.button?c.btnMap[d.button]:(d.which?d.which-1:-1);if(c.clickRe.test(d.type)&&b==-1){b=0}a={type:d.type,button:b,shiftKey:d.shiftKey,ctrlKey:d.ctrlKey||d.metaKey||false,altKey:d.altKey,keyCode:d.keyCode,charCode:d.charCode,target:Ext.EventManager.getTarget(d),relatedTarget:Ext.EventManager.getRelatedTarget(d),currentTarget:d.currentTarget,xy:(e?c.getXY():null)}}else{a={button:-1,shiftKey:false,ctrlKey:false,altKey:false,keyCode:0,charCode:0,target:null,xy:[0,0]}}Ext.apply(c,a);return c},stopEvent:function(){this.stopPropagation();this.preventDefault()},preventDefault:function(){if(this.browserEvent){Ext.EventManager.preventDefault(this.browserEvent)}},stopPropagation:function(){var a=this.browserEvent;if(a){if(a.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(this)}Ext.EventManager.stopPropagation(a)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(a){return Ext.isWebKit?(this.safariKeys[a]||a):a},getPageX:function(){return this.getX()},getPageY:function(){return this.getY()},getX:function(){return this.getXY()[0]},getY:function(){return this.getXY()[1]},getXY:function(){if(!this.xy){this.xy=Ext.EventManager.getPageXY(this.browserEvent)}return this.xy},getTarget:function(b,c,a){if(b){return Ext.fly(this.target).findParent(b,c,a)}return a?Ext.get(this.target):this.target},getRelatedTarget:function(b,c,a){if(b&&this.relatedTarget){return Ext.fly(this.relatedTarget).findParent(b,c,a)}return a?Ext.get(this.relatedTarget):this.relatedTarget},correctWheelDelta:function(c){var b=this.WHEEL_SCALE,a=Math.round(c/b);if(!a&&c){a=(c<0)?-1:1}return a},getWheelDeltas:function(){var d=this,c=d.browserEvent,b=0,a=0;if(Ext.isDefined(c.wheelDeltaX)){b=c.wheelDeltaX;a=c.wheelDeltaY}else{if(c.wheelDelta){a=c.wheelDelta}else{if(c.detail){a=-c.detail;if(a>100){a=3}else{if(a<-100){a=-3}}if(Ext.isDefined(c.axis)&&c.axis===c.HORIZONTAL_AXIS){b=a;a=0}}}}return{x:d.correctWheelDelta(b),y:d.correctWheelDelta(a)}},getWheelDelta:function(){var a=this.getWheelDeltas();return a.y},within:function(d,e,b){if(d){var c=e?this.getRelatedTarget():this.getTarget(),a;if(c){a=Ext.fly(d,"_internal").contains(c);if(!a&&b){a=c==Ext.getDom(d)}return a}}return false},isNavKeyPress:function(){var b=this,a=this.normalizeKey(b.keyCode);return(a>=33&&a<=40)||a==b.RETURN||a==b.TAB||a==b.ESC},isSpecialKey:function(){var a=this.normalizeKey(this.keyCode);return(this.type=="keypress"&&this.ctrlKey)||this.isNavKeyPress()||(a==this.BACKSPACE)||(a>=16&&a<=20)||(a>=44&&a<=46)},getPoint:function(){var a=this.getXY();return new Ext.util.Point(a[0],a[1])},hasModifier:function(){return this.ctrlKey||this.altKey||this.shiftKey||this.metaKey},injectEvent:(function(){var d,e={},c;if(!Ext.isIE9m&&document.createEvent){d={createHtmlEvent:function(l,j,h,g){var k=l.createEvent("HTMLEvents");k.initEvent(j,h,g);return k},createMouseEvent:function(v,t,n,m,p,l,j,k,g,s,r,o,q){var h=v.createEvent("MouseEvents"),u=v.defaultView||window;if(h.initMouseEvent){h.initMouseEvent(t,n,m,u,p,l,j,l,j,k,g,s,r,o,q)}else{h=v.createEvent("UIEvents");h.initEvent(t,n,m);h.view=u;h.detail=p;h.screenX=l;h.screenY=j;h.clientX=l;h.clientY=j;h.ctrlKey=k;h.altKey=g;h.metaKey=r;h.shiftKey=s;h.button=o;h.relatedTarget=q}return h},createUIEvent:function(n,l,j,h,k){var m=n.createEvent("UIEvents"),g=n.defaultView||window;m.initUIEvent(l,j,h,g,k);return m},fireEvent:function(j,g,h){j.dispatchEvent(h)},fixTarget:function(g){if(g==window&&!g.dispatchEvent){return document}return g}}}else{if(document.createEventObject){c={0:1,1:4,2:2};d={createHtmlEvent:function(l,j,h,g){var k=l.createEventObject();k.bubbles=h;k.cancelable=g;return k},createMouseEvent:function(u,t,n,m,p,l,j,k,g,s,r,o,q){var h=u.createEventObject();h.bubbles=n;h.cancelable=m;h.detail=p;h.screenX=l;h.screenY=j;h.clientX=l;h.clientY=j;h.ctrlKey=k;h.altKey=g;h.shiftKey=s;h.metaKey=r;h.button=c[o]||o;h.relatedTarget=q;return h},createUIEvent:function(m,k,h,g,j){var l=m.createEventObject();l.bubbles=h;l.cancelable=g;return l},fireEvent:function(j,g,h){j.fireEvent("on"+g,h)},fixTarget:function(g){if(g==document){return document.documentElement}return g}}}}Ext.Object.each({load:[false,false],unload:[false,false],select:[true,false],change:[true,false],submit:[true,true],reset:[true,false],resize:[true,false],scroll:[true,false]},function(j,k){var h=k[0],g=k[1];e[j]=function(n,l){var m=d.createHtmlEvent(j,h,g);d.fireEvent(n,j,m)}});function b(j,h){var g=(j!="mousemove");return function(n,k){var m=k.getXY(),l=d.createMouseEvent(n.ownerDocument,j,true,g,h,m[0],m[1],k.ctrlKey,k.altKey,k.shiftKey,k.metaKey,k.button,k.relatedTarget);d.fireEvent(n,j,l)}}Ext.each(["click","dblclick","mousedown","mouseup","mouseover","mousemove","mouseout"],function(g){e[g]=b(g,1)});Ext.Object.each({focusin:[true,false],focusout:[true,false],activate:[true,true],focus:[false,false],blur:[false,false]},function(j,k){var h=k[0],g=k[1];e[j]=function(n,l){var m=d.createUIEvent(n.ownerDocument,j,h,g,1);d.fireEvent(n,j,m)}});if(!d){e={};d={fixTarget:Ext.identityFn}}function a(h,g){}return function(k){var j=this,h=e[j.type]||a,g=k?(k.dom||k):j.getTarget();g=d.fixTarget(g);h(g,j)}}())},1,0,0,0,0,0,[Ext,"EventObjectImpl"],function(){Ext.EventObject=new Ext.EventObjectImpl()}));(Ext.cmd.derive("Ext.dom.AbstractQuery",Ext.Base,{select:function(k,b){var h=[],d,g,e,c,a;b=b||document;if(typeof b=="string"){b=document.getElementById(b)}k=k.split(",");for(g=0,c=k.length;g")}else{b.push(">");if((a=j.tpl)){a.applyOut(j.tplData,b)}if((a=j.html)){b.push(a)}if((a=j.cn||j.children)){h.generateMarkup(a,b)}c=h.closeTags;b.push(c[k]||(c[k]=""))}}}return b},generateStyles:function(e,c){var b=c||[],d;for(d in e){if(e.hasOwnProperty(d)){b.push(this.decamelizeName(d),":",e[d],";")}}return c||b.join("")},markup:function(a){if(typeof a=="string"){return a}var b=this.generateMarkup(a,[]);return b.join("")},applyStyles:function(c,d){if(d){var b=0,a;c=Ext.fly(c,"_applyStyles");if(typeof d=="function"){d=d.call()}if(typeof d=="string"){d=Ext.util.Format.trim(d).split(this.styleSepRe);for(a=d.length;b "'+c+'"'},insertBefore:function(a,c,b){return this.doInsert(a,c,b,"beforebegin")},insertAfter:function(a,c,b){return this.doInsert(a,c,b,"afterend","nextSibling")},insertFirst:function(a,c,b){return this.doInsert(a,c,b,"afterbegin","firstChild")},append:function(a,c,b){return this.doInsert(a,c,b,"beforeend","",true)},overwrite:function(a,c,b){a=Ext.getDom(a);a.innerHTML=this.markup(c);return b?Ext.get(a.firstChild):a.firstChild},doInsert:function(d,g,e,h,c,a){var b=this.insertHtml(h,Ext.getDom(d),this.markup(g));return e?Ext.get(b,true):b}},0,0,0,0,0,0,[Ext.dom,"AbstractHelper"],0));Ext.define("Ext.dom.AbstractElement_static",{override:"Ext.dom.AbstractElement",inheritableStatics:{unitRe:/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,camelRe:/(-[a-z])/gi,msRe:/^-ms-/,cssRe:/([a-z0-9\-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*)?;?/gi,opacityRe:/alpha\(opacity=(.*)\)/i,propertyCache:{},defaultUnit:"px",borders:{l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"},paddings:{l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"},margins:{l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"},addUnits:function(b,a){if(typeof b=="number"){return b+(a||this.defaultUnit||"px")}if(b===""||b=="auto"||b===undefined||b===null){return b||""}if(!this.unitRe.test(b)){return b||""}return b},isAncestor:function(b,d){var a=false;b=Ext.getDom(b);d=Ext.getDom(d);if(b&&d){if(b.contains){return b.contains(d)}else{if(b.compareDocumentPosition){return !!(b.compareDocumentPosition(d)&16)}else{while((d=d.parentNode)){a=d==b||a}}}}return a},parseBox:function(c){c=c||0;var a=typeof c,d,b;if(a==="number"){return{top:c,right:c,bottom:c,left:c}}else{if(a!=="string"){return c}}d=c.split(" ");b=d.length;if(b==1){d[1]=d[2]=d[3]=d[0]}else{if(b==2){d[2]=d[0];d[3]=d[1]}else{if(b==3){d[3]=d[1]}}}return{top:parseFloat(d[0])||0,right:parseFloat(d[1])||0,bottom:parseFloat(d[2])||0,left:parseFloat(d[3])||0}},unitizeBox:function(g,e){var d=this.addUnits,c=this.parseBox(g);return d(c.top,e)+" "+d(c.right,e)+" "+d(c.bottom,e)+" "+d(c.left,e)},camelReplaceFn:function(b,c){return c.charAt(1).toUpperCase()},normalize:function(a){if(a=="float"){a=Ext.supports.Float?"cssFloat":"styleFloat"}return this.propertyCache[a]||(this.propertyCache[a]=a.replace(this.msRe,"ms-").replace(this.camelRe,this.camelReplaceFn))},getDocumentHeight:function(){return Math.max(!Ext.isStrict?document.body.scrollHeight:document.documentElement.scrollHeight,this.getViewportHeight())},getDocumentWidth:function(){return Math.max(!Ext.isStrict?document.body.scrollWidth:document.documentElement.scrollWidth,this.getViewportWidth())},getViewportHeight:function(){return window.innerHeight},getViewportWidth:function(){return window.innerWidth},getViewSize:function(){return{width:window.innerWidth,height:window.innerHeight}},getOrientation:function(){if(Ext.supports.OrientationChange){return(window.orientation==0)?"portrait":"landscape"}return(window.innerHeight>window.innerWidth)?"portrait":"landscape"},fromPoint:function(a,b){return Ext.get(document.elementFromPoint(a,b))},parseStyles:function(c){var a={},b=this.cssRe,d;if(c){b.lastIndex=0;while((d=b.exec(c))){a[d[1]]=d[2]||""}}return a}}},function(){var c=document,b=null,a=c.compatMode=="CSS1Compat";if(!("activeElement" in c)&&c.addEventListener){c.addEventListener("focus",function(e){if(e&&e.target){b=(e.target==c)?null:e.target}},true)}function d(g,h,e){return function(){g.selectionStart=h;g.selectionEnd=e}}this.addInheritableStatics({getActiveElement:function(){var h;try{h=c.activeElement}catch(g){}h=h||b;if(!h){h=b=document.body}return h},getRightMarginFixCleaner:function(l){var h=Ext.supports,j=h.DisplayChangeInputSelectionBug,k=h.DisplayChangeTextAreaSelectionBug,m,e,n,g;if(j||k){m=c.activeElement||b;e=m&&m.tagName;if((k&&e=="TEXTAREA")||(j&&e=="INPUT"&&m.type=="text")){if(Ext.dom.Element.isAncestor(l,m)){n=m.selectionStart;g=m.selectionEnd;if(Ext.isNumber(n)&&Ext.isNumber(g)){return d(m,n,g)}}}}return Ext.emptyFn},getViewWidth:function(e){return e?Ext.dom.Element.getDocumentWidth():Ext.dom.Element.getViewportWidth()},getViewHeight:function(e){return e?Ext.dom.Element.getDocumentHeight():Ext.dom.Element.getViewportHeight()},getDocumentHeight:function(){return Math.max(!a?c.body.scrollHeight:c.documentElement.scrollHeight,Ext.dom.Element.getViewportHeight())},getDocumentWidth:function(){return Math.max(!a?c.body.scrollWidth:c.documentElement.scrollWidth,Ext.dom.Element.getViewportWidth())},getViewportHeight:function(){return Ext.isIE9m?(Ext.isStrict?c.documentElement.clientHeight:c.body.clientHeight):self.innerHeight},getViewportWidth:function(){return(!Ext.isStrict&&!Ext.isOpera)?c.body.clientWidth:Ext.isIE9m?c.documentElement.clientWidth:self.innerWidth},serializeForm:function(j){var k=j.elements||(document.forms[j]||Ext.getDom(j)).elements,u=false,t=encodeURIComponent,n="",m=k.length,p,g,s,w,v,q,l,r,h;for(q=0;q0?t:0},getWidth:function(t){var v=this.dom,u=t?(v.clientWidth-this.getPadding("lr")):v.offsetWidth;return u>0?u:0},setWidth:function(t){var u=this;u.dom.style.width=d.addUnits(t);return u},setHeight:function(t){var u=this;u.dom.style.height=d.addUnits(t);return u},getBorderWidth:function(t){return this.addStyles(t,m)},getPadding:function(t){return this.addStyles(t,g)},margins:o,applyStyles:function(v){if(v){var u,t,w=this.dom;if(typeof v=="function"){v=v.call()}if(typeof v=="string"){v=Ext.util.Format.trim(v).split(/\s*(?::|;)\s*/);for(u=0,t=v.length;u'+u+""):""});B=z.getSize();w.mask=D;if(v===document.body){B.height=window.innerHeight;if(z.orientationHandler){Ext.EventManager.unOrientationChange(z.orientationHandler,z)}z.orientationHandler=function(){B=z.getSize();B.height=window.innerHeight;D.setSize(B)};Ext.EventManager.onOrientationChange(z.orientationHandler,z)}D.setSize(B);if(Ext.is.iPad){Ext.repaint()}},unmask:function(){var u=this,w=(u.$cache||u.getCache()).data,t=w.mask,v=Ext.baseCSSPrefix;if(t){t.remove();delete w.mask}u.removeCls([v+"masked",v+"masked-relative"]);if(u.dom===document.body){Ext.EventManager.unOrientationChange(u.orientationHandler,u);delete u.orientationHandler}}});Ext.onReady(function(){var B=Ext.supports,t,z,x,u,A;function y(G,D,F,C){var E=C[this.name]||"";return c.test(E)?"transparent":E}function w(I,F,H,E){var C=E.marginRight,D,G;if(C!="0px"){D=I.style;G=D.display;D.display="inline-block";C=(H?E:I.ownerDocument.defaultView.getComputedStyle(I,null)).marginRight;D.display=G}return C}function v(J,G,I,F){var C=F.marginRight,E,D,H;if(C!="0px"){E=J.style;D=d.getRightMarginFixCleaner(J);H=E.display;E.display="inline-block";C=(I?F:J.ownerDocument.defaultView.getComputedStyle(J,"")).marginRight;E.display=H;D()}return C}t=d.prototype.styleHooks;if(B.init){B.init()}if(!B.RightMargin){t.marginRight=t["margin-right"]={name:"marginRight",get:(B.DisplayChangeInputSelectionBug||B.DisplayChangeTextAreaSelectionBug)?v:w}}if(!B.TransparentColor){z=["background-color","border-color","color","outline-color"];for(x=z.length;x--;){u=z[x];A=d.normalize(u);t[u]=t[A]={name:A,get:y}}}})});Ext.define("Ext.dom.AbstractElement_traversal",{override:"Ext.dom.AbstractElement",findParent:function(h,b,a){var e=this.dom,c=document.documentElement,g=0,d;b=b||50;if(isNaN(b)){d=Ext.getDom(b);b=Number.MAX_VALUE}while(e&&e.nodeType==1&&g "+a,c.dom);return b?d:Ext.get(d)},parent:function(a,b){return this.matchNode("parentNode","parentNode",a,b)},next:function(a,b){return this.matchNode("nextSibling","nextSibling",a,b)},prev:function(a,b){return this.matchNode("previousSibling","previousSibling",a,b)},first:function(a,b){return this.matchNode("nextSibling","firstChild",a,b)},last:function(a,b){return this.matchNode("previousSibling","lastChild",a,b)},matchNode:function(b,e,a,c){if(!this.dom){return null}var d=this.dom[e];while(d){if(d.nodeType==1&&(!a||Ext.DomQuery.is(d,a))){return !c?Ext.get(d):d}d=d[b]}return null},isAncestor:function(a){return this.self.isAncestor.call(this.self,this.dom,a)}});(Ext.cmd.derive("Ext.dom.AbstractElement",Ext.Base,{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,inheritableStatics:{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,get:function(c){var j=this,k=window.document,d=Ext.dom.Element,h,b,g,e,a;if(!c){return null}if(c.isFly){c=c.dom}if(typeof c=="string"){if(c==Ext.windowId){return d.get(window)}else{if(c==Ext.documentId){return d.get(k)}}h=Ext.cache[c];if(h&&h.skipGarbageCollection){g=h.el;return g}if(!(e=k.getElementById(c))){return null}if(h&&h.el){g=Ext.updateCacheEntry(h,e).el}else{g=new d(e,!!h)}return g}else{if(c.tagName){if(!(a=c.id)){a=Ext.id(c)}h=Ext.cache[a];if(h&&h.el){g=Ext.updateCacheEntry(h,c).el}else{g=new d(c,!!h)}return g}else{if(c instanceof j){if(c!=j.docEl&&c!=j.winEl){a=c.id;h=Ext.cache[a];if(h){Ext.updateCacheEntry(h,k.getElementById(a)||c.dom)}}return c}else{if(c.isComposite){return c}else{if(Ext.isArray(c)){return j.select(c)}else{if(c===k){if(!j.docEl){b=j.docEl=Ext.Object.chain(d.prototype);b.dom=k;b.el=b;b.id=Ext.id(k);j.addToCache(b)}return j.docEl}else{if(c===window){if(!j.winEl){j.winEl=Ext.Object.chain(d.prototype);j.winEl.dom=window;j.winEl.id=Ext.id(window);j.addToCache(j.winEl)}return j.winEl}}}}}}}return null},addToCache:function(a,b){if(a){Ext.addCacheEntry(b,a)}return a},addMethods:function(){this.override.apply(this,arguments)},mergeClsList:function(){var m,k={},g,b,d,h,c,n=[],e=false,a=this.trimRe,l=this.whitespaceRe;for(g=0,b=arguments.length;g",o=""+h,l=c+"",e=""+o,q=document.createElement("div"),n=["BeforeBegin","previousSibling"],k=["AfterEnd","nextSibling"],d={beforebegin:n,afterend:k},g={beforebegin:n,afterend:k,afterbegin:["AfterBegin","firstChild"],beforeend:["BeforeEnd","lastChild"]};return{tableRe:/^(?:table|thead|tbody|tr|td)$/i,tableElRe:/td|tr|tbody|thead/i,useDom:false,createDom:function(r,x){var s,A=document,v,y,t,z,w,u;if(Ext.isArray(r)){s=A.createDocumentFragment();for(w=0,u=r.length;w1){for(;c]*)\>)|(?:<\/tpl>)/g,actionsRe:/\s*(elif|elseif|if|for|foreach|exec|switch|case|eval|between)\s*\=\s*(?:(?:"([^"]*)")|(?:'([^']*)'))\s*/g,propRe:/prop=(?:(?:"([^"]*)")|(?:'([^']*)'))/,defaultRe:/^\s*default\s*$/,elseRe:/^\s*else\s*$/},1,0,0,0,0,0,[Ext,"XTemplateParser"],0));(Ext.cmd.derive("Ext.XTemplateCompiler",Ext.XTemplateParser,{useEval:Ext.isGecko,useIndex:Ext.isIE8m,useFormat:true,propNameRe:/^[\w\d\$]*$/,compile:function(a){var c=this,b=c.generate(a);return c.useEval?c.evalTpl(b):(new Function("Ext",b))(Ext)},generate:function(a){var d=this,b="var fm=Ext.util.Format,ts=Object.prototype.toString;",c;d.maxLevel=0;d.body=["var c0=values, a0="+d.createArrayTest(0)+", p0=parent, n0=xcount, i0=xindex, k0, v;\n"];if(d.definitions){if(typeof d.definitions==="string"){d.definitions=[d.definitions,b]}else{d.definitions.push(b)}}else{d.definitions=[b]}d.switches=[];d.parse(a);d.definitions.push((d.useEval?"$=":"return")+" function ("+d.fnArgs+") {",d.body.join(""),"}");c=d.definitions.join("\n");d.definitions.length=d.body.length=d.switches.length=0;delete d.definitions;delete d.body;delete d.switches;return c},doText:function(c){var b=this,a=b.body;c=c.replace(b.aposRe,"\\'").replace(b.newLineRe,"\\n");if(b.useIndex){a.push("out[out.length]='",c,"'\n")}else{a.push("out.push('",c,"')\n")}},doExpr:function(b){var a=this.body;a.push("if ((v="+b+") != null) out");if(this.useIndex){a.push("[out.length]=v+''\n")}else{a.push(".push(v+'')\n")}},doTag:function(a){var b=this.parseTag(a);if(b){this.doExpr(b)}else{this.doText("{"+a+"}")}},doElse:function(){this.body.push("} else {\n")},doEval:function(a){this.body.push(a,"\n")},doIf:function(b,c){var a=this;if(b==="."){a.body.push("if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("if (",a.parseTag(b),") {\n")}else{a.body.push("if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doElseIf:function(b,c){var a=this;if(b==="."){a.body.push("else if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("} else if (",a.parseTag(b),") {\n")}else{a.body.push("} else if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doSwitch:function(b){var a=this;if(b==="."){a.body.push("switch (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("switch (",a.parseTag(b),") {\n")}else{a.body.push("switch (",a.addFn(b),a.callFn,") {\n")}}a.switches.push(0)},doCase:function(e){var d=this,c=Ext.isArray(e)?e:[e],g=d.switches.length-1,a,b;if(d.switches[g]){d.body.push("break;\n")}else{d.switches[g]++}for(b=0,g=c.length;b1){ out.push("',h.between,'"); } \n')}},doForEach:function(e,h){var d=this,c,b=d.level,a=b-1,g;if(e==="."){c="values"}else{if(d.propNameRe.test(e)){c=d.parseTag(e)}else{c=d.addFn(e)+d.callFn}}if(d.maxLevel1){ out.push("',h.between,'"); } \n')}},createArrayTest:("isArray" in Array)?function(a){return"Array.isArray(c"+a+")"}:function(a){return"ts.call(c"+a+')==="[object Array]"'},doExec:function(c,d){var b=this,a="f"+b.definitions.length;b.definitions.push("function "+a+"("+b.fnArgs+") {"," try { with(values) {"," "+c," }} catch(e) {","}","}");b.body.push(a+b.callFn+"\n")},addFn:function(a){var c=this,b="f"+c.definitions.length;if(a==="."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return values","}")}else{if(a===".."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return parent","}")}else{c.definitions.push("function "+b+"("+c.fnArgs+") {"," try { with(values) {"," return("+a+")"," }} catch(e) {","}","}")}}return b},parseTag:function(b){var h=this,a=h.tagRe.exec(b),e,j,d,g,c;if(!a){return null}e=a[1];j=a[2];d=a[3];g=a[4];if(e=="."){if(!h.validTypes){h.definitions.push("var validTypes={string:1,number:1,boolean:1};");h.validTypes=true}c='validTypes[typeof values] || ts.call(values) === "[object Date]" ? values : ""'}else{if(e=="#"){c="xindex"}else{if(e=="$"){c="xkey"}else{if(e.substr(0,7)=="parent."){c=e}else{if(isNaN(e)&&e.indexOf("-")==-1&&e.indexOf(".")!=-1){c="values."+e}else{c="values['"+e+"']"}}}}}if(g){c="("+c+g+")"}if(j&&h.useFormat){d=d?","+d:"";if(j.substr(0,5)!="this."){j="fm."+j+"("}else{j+="("}}else{return c}return j+c+d+")"},evalTpl:function($){eval($);return $},newLineRe:/\r\n|\r|\n/g,aposRe:/[']/g,intRe:/^\s*(\d+)\s*$/,tagRe:/^([\w-\.\#\$]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\/]\s?[\d\.\+\-\*\/\(\)]+)?$/},0,0,0,0,0,0,[Ext,"XTemplateCompiler"],function(){var a=this.prototype;a.fnArgs="out,values,parent,xindex,xcount,xkey";a.callFn=".call(this,"+a.fnArgs+")"}));(Ext.cmd.derive("Ext.XTemplate",Ext.Template,{emptyObj:{},apply:function(a,b){return this.applyOut(a,[],b).join("")},applyOut:function(a,b,d){var g=this,c;if(!g.fn){c=new Ext.XTemplateCompiler({useFormat:g.disableFormats!==true,definitions:g.definitions});g.fn=c.compile(g.html)}try{g.fn(b,a,d||g.emptyObj,1,1)}catch(h){}return b},compile:function(){return this},statics:{getTpl:function(b,d){var c=b[d],a;if(c&&!c.isTemplate){c=Ext.ClassManager.dynInstantiate("Ext.XTemplate",c);if(b.hasOwnProperty(d)){a=b}else{for(a=b.self.prototype;a&&!a.hasOwnProperty(d);a=a.superclass){}}a[d]=c;c.owner=a}return c||null}}},0,0,0,0,0,0,[Ext,"XTemplate"],0));Ext.ns("Ext.core");Ext.dom.Query=Ext.core.DomQuery=Ext.DomQuery=(function(){var DQ,doc=document,cache={},simpleCache={},valueCache={},useClassList=!!doc.documentElement.classList,useElementPointer=!!doc.documentElement.firstElementChild,useChildrenCollection=(function(){var d=doc.createElement("div");d.innerHTML="text";return d.children&&(d.children.length===0)})(),nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w\-\*\|\\]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,startIdRe=/^\s*#/,isIE=window.ActiveXObject?true:false,key=30803,longHex=/\\([0-9a-fA-F]{6})/g,shortHex=/\\([0-9a-fA-F]{1,6})\s{0,1}/g,nonHex=/\\([^0-9a-fA-F]{1})/g,escapes=/\\/g,num,hasEscapes,supportsColonNsSeparator=(function(){var xmlDoc,xmlString='';if(window.DOMParser){xmlDoc=(new DOMParser()).parseFromString(xmlString,"application/xml")}else{xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.loadXML(xmlString)}return !!xmlDoc.getElementsByTagName("a:b").length})(),longHexToChar=function($0,$1){return String.fromCharCode(parseInt($1,16))},shortToLongHex=function($0,$1){while($1.length<6){$1="0"+$1}return"\\"+$1},charToLongHex=function($0,$1){num=$1.charCodeAt(0).toString(16);if(num.length===1){num="0"+num}return"\\0000"+num},unescapeCssSelector=function(selector){return(hasEscapes)?selector.replace(longHex,longHexToChar):selector},setupEscapes=function(path){hasEscapes=(path.indexOf("\\")>-1);if(hasEscapes){path=path.replace(shortHex,shortToLongHex).replace(nonHex,charToLongHex).replace(escapes,"\\\\")}return path};eval("var batch = 30803, child, next, prev, byClassName;");child=useChildrenCollection?function child(parent,index){return parent.children[index]}:function child(parent,index){var i=0,n=parent.firstChild;while(n){if(n.nodeType==1){if(++i==index){return n}}n=n.nextSibling}return null};next=useElementPointer?function(n){return n.nextElementSibling}:function(n){while((n=n.nextSibling)&&n.nodeType!=1){}return n};prev=useElementPointer?function(n){return n.previousElementSibling}:function(n){while((n=n.previousSibling)&&n.nodeType!=1){}return n};function children(parent){var n=parent.firstChild,nodeIndex=-1,nextNode;while(n){nextNode=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){parent.removeChild(n)}else{n.nodeIndex=++nodeIndex}n=nextNode}return this}byClassName=useClassList?function(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci,classList;for(i=0;ci=nodeSet[i];i++){classList=ci.classList;if(classList){if(classList.contains(cls)){result[++ri]=ci}}else{if((" "+ci.className+" ").indexOf(cls)!==-1){result[++ri]=ci}}}return result}:function(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci;for(i=0;ci=nodeSet[i];i++){if((" "+ci.className+" ").indexOf(cls)!==-1){result[++ri]=ci}}return result};function attrValue(n,attr){if(!n.tagName&&typeof n.length!="undefined"){n=n[0]}if(!n){return null}if(attr=="for"){return n.htmlFor}if(attr=="class"||attr=="className"){return n.className}return n.getAttribute(attr)||n[attr]}function getNodes(ns,mode,tagName){var result=[],ri=-1,cs,i,ni,j,ci,cn,utag,n,cj;if(!ns){return result}tagName=tagName.replace("|",":")||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns]}if(!mode){tagName=unescapeCssSelector(tagName);if(!supportsColonNsSeparator&&DQ.isXml(ns[0])&&tagName.indexOf(":")!==-1){for(i=0;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName.split(":").pop());for(j=0;ci=cs[j];j++){if(ci.tagName===tagName){result[++ri]=ci}}}}else{for(i=0;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(j=0;ci=cs[j];j++){result[++ri]=ci}}}}else{if(mode=="/"||mode==">"){utag=tagName.toUpperCase();for(i=0;ni=ns[i];i++){cn=ni.childNodes;for(j=0;cj=cn[j];j++){if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){result[++ri]=cj}}}}else{if(mode=="+"){utag=tagName.toUpperCase();for(i=0;n=ns[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(n&&(n.nodeName==utag||n.nodeName==tagName||tagName=="*")){result[++ri]=n}}}else{if(mode=="~"){utag=tagName.toUpperCase();for(i=0;n=ns[i];i++){while((n=n.nextSibling)){if(n.nodeName==utag||n.nodeName==tagName||tagName=="*"){result[++ri]=n}}}}}}}return result}function concat(a,b){a.push.apply(a,b);return a}function byTag(cs,tagName){if(cs.tagName||cs===doc){cs=[cs]}if(!tagName){return cs}var result=[],ri=-1,i,ci;tagName=tagName.toLowerCase();for(i=0;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){result[++ri]=ci}}return result}function byId(cs,id){id=unescapeCssSelector(id);if(cs.tagName||cs===doc){cs=[cs]}if(!id){return cs}var result=[],ri=-1,i,ci;for(i=0;ci=cs[i];i++){if(ci&&ci.id==id){result[++ri]=ci;return result}}return result}function byAttribute(cs,attr,value,op,custom){var result=[],ri=-1,useGetStyle=custom=="{",fn=DQ.operators[op],a,xml,hasXml,i,ci;value=unescapeCssSelector(value);for(i=0;ci=cs[i];i++){if(ci.nodeType===1){if(!hasXml){xml=DQ.isXml(ci);hasXml=true}if(!xml){if(useGetStyle){a=DQ.getStyle(ci,attr)}else{if(attr=="class"||attr=="className"){a=ci.className}else{if(attr=="for"){a=ci.htmlFor}else{if(attr=="href"){a=ci.getAttribute("href",2)}else{a=ci.getAttribute(attr)}}}}}else{a=ci.getAttribute(attr)}if((fn&&fn(a,value))||(!fn&&a)){result[++ri]=ci}}}return result}function byPseudo(cs,name,value){value=unescapeCssSelector(value);return DQ.pseudos[name](cs,value)}function nodupIEXml(cs){var d=++key,r,i,len,c;cs[0].setAttribute("_nodup",d);r=[cs[0]];for(i=1,len=cs.length;i1){return nodup(results)}return results},isXml:function(el){var docEl=(el?el.ownerDocument||el:0).documentElement;return docEl?docEl.nodeName!=="HTML":false},select:doc.querySelectorAll?function(path,root,type,single){root=root||doc;if(!DQ.isXml(root)){try{if(root.parentNode&&(root.nodeType!==9)&&path.indexOf(",")===-1&&!startIdRe.test(path)){path="#"+Ext.escapeId(Ext.id(root))+" "+path;root=root.parentNode}return single?[root.querySelector(path)]:Ext.Array.toArray(root.querySelectorAll(path))}catch(e){}}return DQ.jsSelect.call(this,path,root,type)}:function(path,root,type){return DQ.jsSelect.call(this,path,root,type)},selectNode:function(path,root){return Ext.DomQuery.select(path,root,null,true)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=DQ.compile(path,"select")}else{setupEscapes(path)}var n=valueCache[path](root),v;n=n[0]?n[0]:n;if(typeof n.normalize=="function"){n.normalize()}v=(n&&n.firstChild?n.firstChild.nodeValue:null);return((v===null||v===undefined||v==="")?defaultValue:v)},selectNumber:function(path,root,defaultValue){var v=DQ.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=doc.getElementById(el)}var isArray=Ext.isArray(el),result=DQ.filter(isArray?el:[el],ss);return isArray?(result.length==el.length):(result.length>0)},filter:function(els,ss,nonMatches){ss=ss.replace(trimRe,"");if(!simpleCache[ss]){simpleCache[ss]=DQ.compile(ss,"simple")}else{setupEscapes(ss)}var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result},matchers:[{re:/^\.([\w\-\\]+)/,select:useClassList?'n = byClassName(n, "{1}");':'n = byClassName(n, " {1} ");'},{re:/^\:([\w\-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:'n = byPseudo(n, "{1}", "{2}");'},{re:/^(?:([\[\{])(?:@)?([\w\-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,select:'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'},{re:/^#([\w\-\\]+)/,select:'n = byId(n, "{1}");'},{re:/^@([\w\-\.]+)/,select:'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'}],operators:{"=":function(a,v){return a==v},"!=":function(a,v){return a!=v},"^=":function(a,v){return a&&a.substr(0,v.length)==v},"$=":function(a,v){return a&&a.substr(a.length-v.length)==v},"*=":function(a,v){return a&&a.indexOf(v)!==-1},"%=":function(a,v){return(a%v)===0},"|=":function(a,v){return a&&(a==v||a.substr(0,v.length+1)==v+"-")},"~=":function(a,v){return a&&(" "+a+" ").indexOf(" "+v+" ")!=-1}},pseudos:{"first-child":function(c){var r=[],ri=-1,n,i,ci;for(i=0;(ci=n=c[i]);i++){while((n=n.previousSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"last-child":function(c){var r=[],ri=-1,n,i,ci;for(i=0;(ci=n=c[i]);i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"nth-child":function(c,a){var r=[],ri=-1,m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),f=(m[1]||1)-0,l=m[2]-0,i,n,j,cn,pn;for(i=0;n=c[i];i++){pn=n.parentNode;if(batch!=pn._batch){j=0;for(cn=pn.firstChild;cn;cn=cn.nextSibling){if(cn.nodeType==1){cn.nodeIndex=++j}}pn._batch=batch}if(f==1){if(l===0||n.nodeIndex==l){r[++ri]=n}}else{if((n.nodeIndex+l)%f===0){r[++ri]=n}}}return r},"only-child":function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[++ri]=ci}}return r},empty:function(c){var r=[],ri=-1,i,ci,cns,j,cn,empty;for(i=0;ci=c[i];i++){cns=ci.childNodes;j=0;empty=true;while(cn=cns[j]){++j;if(cn.nodeType==1||cn.nodeType==3){empty=false;break}}if(empty){r[++ri]=ci}}return r},contains:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if((ci.textContent||ci.innerText||ci.text||"").indexOf(v)!=-1){r[++ri]=ci}}return r},nodeValue:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[++ri]=ci}}return r},checked:function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.checked===true){r[++ri]=ci}}return r},not:function(c,ss){return DQ.filter(c,ss,true)},any:function(c,selectors){var ss=selectors.split("|"),r=[],ri=-1,s,i,ci,j;for(i=0;ci=c[i];i++){for(j=0;s=ss[j];j++){if(DQ.is(ci,s)){r[++ri]=ci;break}}}return r},odd:function(c){return this["nth-child"](c,"odd")},even:function(c){return this["nth-child"](c,"even")},nth:function(c,a){return c[a-1]||[]},first:function(c){return c[0]||[]},last:function(c){return c[c.length-1]||[]},has:function(c,ss){var s=DQ.select,r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(s(ss,ci).length>0){r[++ri]=ci}}return r},next:function(c,ss){var is=DQ.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=next(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},prev:function(c,ss){var is=DQ.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=prev(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},focusable:function(candidates){var len=candidates.length,results=[],i=0,c;for(;ia.clientHeight||a.scrollWidth>a.clientWidth},getScroll:function(){var c=this,h=c.dom,g=document,a=g.body,b=g.documentElement,e,d;if(h===g||h===a){e=b.scrollLeft||(a?a.scrollLeft:0);d=b.scrollTop||(a?a.scrollTop:0)}else{e=h.scrollLeft;d=h.scrollTop}return{left:e,top:d}},getScrollLeft:function(){var b=this.dom,a=document;if(b===a||b===a.body){return this.getScroll().left}else{return b.scrollLeft}},getScrollTop:function(){var b=this.dom,a=document;if(b===a||b===a.body){return this.getScroll().top}else{return b.scrollTop}},setScrollLeft:function(a){this.dom.scrollLeft=a;return this},setScrollTop:function(a){this.dom.scrollTop=a;return this},scrollBy:function(b,a,c){var d=this,e=d.dom;if(b.length){c=a;a=b[1];b=b[0]}else{if(typeof b!="number"){c=a;a=b.y;b=b.x}}if(b){d.scrollTo("left",d.constrainScrollLeft(e.scrollLeft+b),c)}if(a){d.scrollTo("top",d.constrainScrollTop(e.scrollTop+a),c)}return d},scrollTo:function(c,e,a){var g=/top/i.test(c),d=this,j=g?"scrollTop":"scrollLeft",h=d.dom,b;if(!a||!d.anim){h[j]=e;h[j]=e}else{b={to:{}};b.to[j]=e;if(Ext.isObject(a)){Ext.applyIf(b,a)}d.animate(b)}return d},scrollIntoView:function(b,e,c,h){var n=this,l=n.dom,j=n.getOffsetsTo(b=Ext.getDom(b)||Ext.getBody().dom),g=j[0]+b.scrollLeft,o=j[1]+b.scrollTop,a=o+l.offsetHeight,p=g+l.offsetWidth,s=b.clientHeight,r=parseInt(b.scrollTop,10),d=parseInt(b.scrollLeft,10),k=r+s,q=d+b.clientWidth,m;if(h){if(c){c=Ext.apply({listeners:{afteranimate:function(){n.scrollChildFly.attach(l).highlight()}}},c)}else{n.scrollChildFly.attach(l).highlight()}}if(l.offsetHeight>s||ok){m=a-s}}if(m!=null){n.scrollChildFly.attach(b).scrollTo("top",m,c)}if(e!==false){m=null;if(l.offsetWidth>b.clientWidth||gq){m=p-b.clientWidth}}if(m!=null){n.scrollChildFly.attach(b).scrollTo("left",m,c)}}return n},scrollChildIntoView:function(b,a){this.scrollChildFly.attach(Ext.getDom(b)).scrollIntoView(this,a)},scroll:function(k,a,c){if(!this.isScrollable()){return false}var j=this,e=j.dom,h=k==="r"||k==="l"?"left":"top",b=false,d,g;if(k==="r"){a=-a}if(h==="left"){d=e.scrollLeft;g=j.constrainScrollLeft(d+a)}else{d=e.scrollTop;g=j.constrainScrollTop(d+a)}if(g!==d){this.scrollTo(h,g,c);b=true}return b},constrainScrollLeft:function(a){var b=this.dom;return Math.max(Math.min(a,b.scrollWidth-b.clientWidth),0)},constrainScrollTop:function(a){var b=this.dom;return Math.max(Math.min(a,b.scrollHeight-b.clientHeight),0)}},function(){this.prototype.scrollChildFly=new this.Fly();this.prototype.scrolltoFly=new this.Fly()});Ext.define("Ext.dom.Element_style",{override:"Ext.dom.Element"},function(){var s=this,o=document.defaultView,q=/table-row|table-.*-group/,a="_internal",u="hidden",r="height",h="width",e="isClipped",l="overflow",n="overflow-x",m="overflow-y",v="originalClip",b=/#document|body/i,w,g,p,d,t,j,x;if(!o||!o.getComputedStyle){s.prototype.getStyle=function(C,B){var O=this,J=O.dom,M=typeof C!="string",k=O.styleHooks,z=C,A=z,I=1,E=B,N,F,y,D,H,K,G;if(M){y={};z=A[0];G=0;if(!(I=A.length)){return y}}if(!J||J.documentElement){return y||""}F=J.style;if(B){K=F}else{K=J.currentStyle;if(!K){E=true;K=F}}do{D=k[z];if(!D){k[z]=D={name:s.normalize(z)}}if(D.get){H=D.get(J,O,E,K)}else{N=D.name;if(D.canThrow){try{H=K[N]}catch(L){H=""}}else{H=K?K[N]:""}}if(!M){return H}y[z]=H;z=A[++G]}while(G0&&C<0.5){k++}}}if(A){k-=z.getBorderWidth("tb")+z.getPadding("tb")}return(k<0)?0:k},getWidth:function(k,C){var A=this,D=A.dom,B=A.isStyle("display","none"),z,y,E;if(B){return 0}if(C&&Ext.supports.BoundingClientRect){z=D.getBoundingClientRect();y=(A.vertical&&!Ext.isIE9&&!Ext.supports.RotatedBoundingClientRect)?(z.bottom-z.top):(z.right-z.left)}else{y=D.offsetWidth}if(Ext.supports.Direct2DBug&&!A.vertical){E=A.adjustDirect2DDimension(h);if(C){y+=E}else{if(E>0&&E<0.5){y++}}}if(k){y-=A.getBorderWidth("lr")+A.getPadding("lr")}return(y<0)?0:y},setWidth:function(y,k){var z=this;y=z.adjustWidth(y);if(!k||!z.anim){z.dom.style.width=z.addUnits(y)}else{if(!Ext.isObject(k)){k={}}z.animate(Ext.applyIf({to:{width:y}},k))}return z},setHeight:function(k,y){var z=this;k=z.adjustHeight(k);if(!y||!z.anim){z.dom.style.height=z.addUnits(k)}else{if(!Ext.isObject(y)){y={}}z.animate(Ext.applyIf({to:{height:k}},y))}return z},applyStyles:function(k){Ext.DomHelper.applyStyles(this.dom,k);return this},setSize:function(z,k,y){var A=this;if(Ext.isObject(z)){y=k;k=z.height;z=z.width}z=A.adjustWidth(z);k=A.adjustHeight(k);if(!y||!A.anim){A.dom.style.width=A.addUnits(z);A.dom.style.height=A.addUnits(k)}else{if(y===true){y={}}A.animate(Ext.applyIf({to:{width:z,height:k}},y))}return A},getViewSize:function(){var z=this,A=z.dom,y=b.test(A.nodeName),k;if(y){k={width:s.getViewWidth(),height:s.getViewHeight()}}else{k={width:A.clientWidth,height:A.clientHeight}}return k},getSize:function(k){return{width:this.getWidth(k),height:this.getHeight(k)}},adjustWidth:function(k){var y=this,z=(typeof k=="number");if(z&&y.autoBoxAdjust&&!y.isBorderBox()){k-=(y.getBorderWidth("lr")+y.getPadding("lr"))}return(z&&k<0)?0:k},adjustHeight:function(k){var y=this,z=(typeof k=="number");if(z&&y.autoBoxAdjust&&!y.isBorderBox()){k-=(y.getBorderWidth("tb")+y.getPadding("tb"))}return(z&&k<0)?0:k},getColor:function(y,z,E){var B=this.getStyle(y),A=E||E===""?E:"#",D,k,C=0;if(!B||(/transparent|inherit/.test(B))){return z}if(/^r/.test(B)){B=B.slice(4,B.length-1).split(",");k=B.length;for(;C5?A.toLowerCase():z)},setOpacity:function(y,k){var z=this;if(!z.dom){return z}if(!k||!z.anim){z.setStyle("opacity",y)}else{if(typeof k!="object"){k={duration:350,easing:"ease-in"}}z.animate(Ext.applyIf({to:{opacity:y}},k))}return z},clearOpacity:function(){return this.setOpacity("")},adjustDirect2DDimension:function(z){var E=this,y=E.dom,C=E.getStyle("display"),B=y.style.display,F=y.style.position,D=z===h?0:1,k=y.currentStyle,A;if(C==="inline"){y.style.display="inline-block"}y.style.position=C.match(q)?"absolute":"static";A=(parseFloat(k[z])||parseFloat(k.msTransformOrigin.split(" ")[D])*2)%1;y.style.position=F;if(C==="inline"){y.style.display=B}return A},clip:function(){var y=this,z=(y.$cache||y.getCache()).data,k;if(!z[e]){z[e]=true;k=y.getStyle([l,n,m]);z[v]={o:k[l],x:k[n],y:k[m]};y.setStyle(l,u);y.setStyle(n,u);y.setStyle(m,u)}return y},unclip:function(){var y=this,z=(y.$cache||y.getCache()).data,k;if(z[e]){z[e]=false;k=z[v];if(k.o){y.setStyle(l,k.o)}if(k.x){y.setStyle(n,k.x)}if(k.y){y.setStyle(m,k.y)}}return y},boxWrap:function(k){k=k||Ext.baseCSSPrefix+"box";var y=Ext.get(this.insertHtml("beforeBegin","
    "+Ext.String.format(s.boxMarkup,k)+"
    "));Ext.DomQuery.selectNode("."+k+"-mc",y.dom).appendChild(this.dom);return y},getComputedHeight:function(){var y=this,k=Math.max(y.dom.offsetHeight,y.dom.clientHeight);if(!k){k=parseFloat(y.getStyle(r))||0;if(!y.isBorderBox()){k+=y.getFrameWidth("tb")}}return k},getComputedWidth:function(){var y=this,k=Math.max(y.dom.offsetWidth,y.dom.clientWidth);if(!k){k=parseFloat(y.getStyle(h))||0;if(!y.isBorderBox()){k+=y.getFrameWidth("lr")}}return k},getFrameWidth:function(y,k){return(k&&this.isBorderBox())?0:(this.getPadding(y)+this.getBorderWidth(y))},addClsOnOver:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.hover(function(){if(k&&C.call(y||A,A)===false){return}Ext.fly(B,a).addCls(z)},function(){Ext.fly(B,a).removeCls(z)});return A},addClsOnFocus:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.on("focus",function(){if(k&&C.call(y||A,A)===false){return false}Ext.fly(B,a).addCls(z)});A.on("blur",function(){Ext.fly(B,a).removeCls(z)});return A},addClsOnClick:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.on("mousedown",function(){if(k&&C.call(y||A,A)===false){return false}Ext.fly(B,a).addCls(z);var E=Ext.getDoc(),D=function(){Ext.fly(B,a).removeCls(z);E.removeListener("mouseup",D)};E.on("mouseup",D)});return A},getStyleSize:function(){var B=this,C=this.dom,y=b.test(C.nodeName),A,k,z;if(y){return{width:s.getViewWidth(),height:s.getViewHeight()}}A=B.getStyle([r,h],true);if(A.width&&A.width!="auto"){k=parseFloat(A.width);if(B.isBorderBox()){k-=B.getFrameWidth("lr")}}if(A.height&&A.height!="auto"){z=parseFloat(A.height);if(B.isBorderBox()){z-=B.getFrameWidth("tb")}}return{width:k||B.getWidth(true),height:z||B.getHeight(true)}},statics:{selectableCls:Ext.baseCSSPrefix+"selectable",unselectableCls:Ext.baseCSSPrefix+"unselectable"},selectable:function(){var k=this;k.dom.unselectable="";k.removeCls(s.unselectableCls);k.addCls(s.selectableCls);return k},unselectable:function(){var k=this;if(Ext.isOpera){k.dom.unselectable="on"}k.removeCls(s.selectableCls);k.addCls(s.unselectableCls);return k},setVertical:function(B,y){var A=this,z=s.prototype,k;A.vertical=true;if(y){A.addCls(A.verticalCls=y)}A.setWidth=z.setHeight;A.setHeight=z.setWidth;if(!Ext.isIE9m){A.getWidth=z.getHeight;A.getHeight=z.getWidth}A.styleHooks=(B===270)?s.prototype.verticalStyleHooks270:s.prototype.verticalStyleHooks90},setHorizontal:function(){var y=this,k=y.verticalCls;delete y.vertical;if(k){delete y.verticalCls;y.removeCls(k)}delete y.setWidth;delete y.setHeight;if(!Ext.isIE9m){delete y.getWidth;delete y.getHeight}delete y.styleHooks}});s.prototype.styleHooks=w=Ext.dom.AbstractElement.prototype.styleHooks;s.prototype.verticalStyleHooks90=g=Ext.Object.chain(s.prototype.styleHooks);s.prototype.verticalStyleHooks270=p=Ext.Object.chain(s.prototype.styleHooks);g.width={name:"height"};g.height={name:"width"};g["margin-top"]={name:"marginLeft"};g["margin-right"]={name:"marginTop"};g["margin-bottom"]={name:"marginRight"};g["margin-left"]={name:"marginBottom"};g["padding-top"]={name:"paddingLeft"};g["padding-right"]={name:"paddingTop"};g["padding-bottom"]={name:"paddingRight"};g["padding-left"]={name:"paddingBottom"};g["border-top"]={name:"borderLeft"};g["border-right"]={name:"borderTop"};g["border-bottom"]={name:"borderRight"};g["border-left"]={name:"borderBottom"};p.width={name:"height"};p.height={name:"width"};p["margin-top"]={name:"marginRight"};p["margin-right"]={name:"marginBottom"};p["margin-bottom"]={name:"marginLeft"};p["margin-left"]={name:"marginTop"};p["padding-top"]={name:"paddingRight"};p["padding-right"]={name:"paddingBottom"};p["padding-bottom"]={name:"paddingLeft"};p["padding-left"]={name:"paddingTop"};p["border-top"]={name:"borderRight"};p["border-right"]={name:"borderBottom"};p["border-bottom"]={name:"borderLeft"};p["border-left"]={name:"borderTop"};if(Ext.isIE7m){w.fontSize=w["font-size"]={name:"fontSize",canThrow:true};w.fontStyle=w["font-style"]={name:"fontStyle",canThrow:true};w.fontFamily=w["font-family"]={name:"fontFamily",canThrow:true}}if(Ext.isIEQuirks||Ext.isIE&&Ext.ieVersion<=8){function c(A,y,z,k){if(k[this.styleName]=="none"){return"0px"}return k[this.name]}d=["Top","Right","Bottom","Left"];t=d.length;while(t--){j=d[t];x="border"+j+"Width";w["border-"+j.toLowerCase()+"-width"]=w[x]={name:x,styleName:"border"+j+"Style",get:c}}}Ext.getDoc().on("selectstart",function(B,D){var C=document.documentElement,A=s.selectableCls,z=s.unselectableCls,k=D&&D.tagName;k=k&&k.toLowerCase();if(k==="input"||k==="textarea"){return}while(D&&D.nodeType===1&&D!==C){var y=Ext.fly(D);if(y.hasCls(A)){return}if(y.hasCls(z)){B.stopEvent();return}D=D.parentNode}})});Ext.onReady(function(){var c=/alpha\(opacity=(.*)\)/i,b=/^\s+|\s+$/g,a=Ext.dom.Element.prototype.styleHooks;a.opacity={name:"opacity",afterSet:function(g,e,d){if(d.isLayer){d.onOpacitySet(e)}}};if(!Ext.supports.Opacity&&Ext.isIE){Ext.apply(a.opacity,{get:function(h){var g=h.style.filter,e,d;if(g.match){e=g.match(c);if(e){d=parseFloat(e[1]);if(!isNaN(d)){return d?d/100:0}}}return 1},set:function(h,e){var d=h.style,g=d.filter.replace(c,"").replace(b,"");d.zoom=1;if(typeof(e)=="number"&&e>=0&&e<1){e*=100;d.filter=g+(g.length?" ":"")+"alpha(opacity="+e+")"}else{d.filter=g}}})}});(Ext.cmd.derive("Ext.util.Positionable",Ext.Base,{_positionTopLeft:["position","top","left"],_alignRe:/^([a-z]+)-([a-z]+)(\?)?$/,afterSetPosition:Ext.emptyFn,adjustForConstraints:function(c,b){var a=this.getConstrainVector(b,c);if(a){c[0]+=a[0];c[1]+=a[1]}return c},alignTo:function(c,a,g,b){var e=this,d=e.el;return e.setXY(e.getAlignToXY(c,a,g),d.anim&&!!b?d.anim(b):false)},anchorTo:function(h,e,b,a,k,l){var g=this,j=!Ext.isEmpty(k),c=function(){g.alignTo(h,e,b,a);Ext.callback(l,g)},d=g.getAnchor();g.removeAnchor();Ext.apply(d,{fn:c,scroll:j});Ext.EventManager.onWindowResize(c,null);if(j){Ext.EventManager.on(window,"scroll",c,null,{buffer:!isNaN(k)?k:50})}c();return g},calculateAnchorXY:function(g,j,h,d){var k=this,c=k.el,l=document,e=c.dom==l.body||c.dom==l,m=Math.round,n,b,a;g=(g||"tl").toLowerCase();d=d||{};b=d.width||e?Ext.Element.getViewWidth():k.getWidth();a=d.height||e?Ext.Element.getViewHeight():k.getHeight();switch(g){case"tl":n=[0,0];break;case"bl":n=[0,a];break;case"tr":n=[b,0];break;case"c":n=[m(b*0.5),m(a*0.5)];break;case"t":n=[m(b*0.5),0];break;case"l":n=[0,m(a*0.5)];break;case"r":n=[b,m(a*0.5)];break;case"b":n=[m(b*0.5),a];break;case"tc":n=[m(b*0.5),0];break;case"bc":n=[m(b*0.5),a];break;case"br":n=[b,a]}return[n[0]+j,n[1]+h]},convertPositionSpec:Ext.identityFn,getAlignToXY:function(k,D,e){var E=this,B=Ext.Element.getViewWidth()-10,d=Ext.Element.getViewHeight()-10,F=document,C=F.documentElement,p=F.body,A=(C.scrollLeft||p.scrollLeft||0),w=(C.scrollTop||p.scrollTop||0),a,h,t,g,u,v,r,s,z,q,o,b,c,j,m,n,l;k=Ext.get(k.el||k);if(!k||!k.dom){}e=e||[0,0];D=(!D||D=="?"?"tl-bl?":(!(/-/).test(D)&&D!==""?"tl-"+D:D||"tl-bl")).toLowerCase();D=E.convertPositionSpec(D);a=D.match(E._alignRe);q=a[1];o=a[2];z=!!a[3];h=E.getAnchorXY(q,true);t=E.getAnchorToXY(k,o,false);n=t[0]-h[0]+e[0];l=t[1]-h[1]+e[1];if(z){g=E.getWidth();u=E.getHeight();v=k.getRegion();b=q.charAt(0);c=q.charAt(q.length-1);j=o.charAt(0);m=o.charAt(o.length-1);r=((b=="t"&&j=="b")||(b=="b"&&j=="t"));s=((c=="r"&&m=="l")||(c=="l"&&m=="r"));if(n+g>B+A){n=s?v.left-g:B+A-g}if(nd+w){l=r?v.top-u:d+w-u}if(le.right){d=true;b[0]=(e.right-j.right)}if(j.left+b[0]e.bottom){d=true;b[1]=(e.bottom-j.bottom)}if(j.top+b[1]0||q.scrollLeft>0){t[++p]=q}}return t};return{alternateClassName:["Ext.Element","Ext.core.Element"],tableTagRe:/^(?:tr|td|table|tbody)$/i,addUnits:function(){return a.addUnits.apply(a,arguments)},focus:function(s,r){var p=this;r=r||p.dom;try{if(Number(s)){Ext.defer(p.focus,s,p,[null,r])}else{r.focus()}}catch(q){}return p},blur:function(){var p=this,r=p.dom;if(r!==document.body){try{r.blur()}catch(q){}return p}else{return p.focus(undefined,r)}},isBorderBox:function(){var p=Ext.isBorderBox;if(p&&Ext.isIE7m){p=!((this.dom.tagName||"").toLowerCase() in d)}return p},hover:function(q,p,s,r){var t=this;t.on("mouseenter",q,s||t.dom,r);t.on("mouseleave",p,s||t.dom,r);return t},getAttributeNS:function(q,p){return this.getAttribute(p,q)},getAttribute:(Ext.isIE&&!(Ext.isIE9p&&g.documentMode>=9))?function(p,r){var s=this.dom,q;if(r){q=typeof s[r+":"+p];if(q!="undefined"&&q!="unknown"){return s[r+":"+p]||null}return null}if(p==="for"){p="htmlFor"}return s[p]||null}:function(p,q){var r=this.dom;if(q){return r.getAttributeNS(q,p)||r.getAttribute(q+":"+p)}return r.getAttribute(p)||r[p]||null},cacheScrollValues:function(){var t=this,s,r,q,u=[],p=function(){for(q=0;q]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,replaceScriptTagRe=/(?:)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,useDocForId=!Ext.isIE8m,internalFly;Element.boxMarkup='
    ';function garbageCollect(){if(!Ext.enableGarbageCollector){clearInterval(Element.collectorThreadId)}else{var eid,d,o,t;for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}o=EC[eid];if(o.skipGarbageCollection){continue}d=o.dom;if(d&&(!d.parentNode||(!d.offsetParent&&!Ext.getElementById(eid)))){if(Ext.enableListenerCollection){Ext.EventManager.removeAll(d)}delete EC[eid]}}if(Ext.isIE){t={};for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}t[eid]=EC[eid]}EC=Ext.cache=t}}}Element.collectorThreadId=setInterval(garbageCollect,30000);Element.addMethods({monitorMouseLeave:function(delay,handler,scope){var me=this,timer,listeners={mouseleave:function(e){timer=setTimeout(Ext.Function.bind(handler,scope||me,[e]),delay)},mouseenter:function(){clearTimeout(timer)},freezeEvent:true};me.on(listeners);return listeners},swallowEvent:function(eventName,preventDefault){var me=this,e,eLen,fn=function(e){e.stopPropagation();if(preventDefault){e.preventDefault()}};if(Ext.isArray(eventName)){eLen=eventName.length;for(e=0;e';interval=setInterval(function(){var hd,match,attrs,srcMatch,typeMatch,el,s;if(!(el=DOC.getElementById(id))){return false}clearInterval(interval);Ext.removeNode(el);hd=Ext.getHead().dom;while((match=scriptTagRe.exec(html))){attrs=match[1];srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){s=DOC.createElement("script");s.src=srcMatch[2];typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2]}hd.appendChild(s)}else{if(match[2]&&match[2].length>0){if(window.execScript){window.execScript(match[2])}else{window.eval(match[2])}}}}Ext.callback(callback,me)},20);dom.innerHTML=html.replace(replaceScriptTagRe,"");return me},removeAllListeners:function(){this.removeAnchor();Ext.EventManager.removeAll(this.dom);return this},createProxy:function(config,renderTo,matchBox){config=(typeof config=="object")?config:{tag:"div",cls:config};var me=this,proxy=renderTo?Ext.DomHelper.append(renderTo,config,true):Ext.DomHelper.insertBefore(me.dom,config,true);proxy.setVisibilityMode(Element.DISPLAY);proxy.hide();if(matchBox&&me.setBox&&me.getBox){proxy.setBox(me.getBox())}return proxy},needsTabIndex:function(){if(this.dom){if((this.dom.nodeName==="a")&&(!this.dom.href)){return true}return !focusRe.test(this.dom.nodeName)}},isFocusable:function(asFocusEl){var dom=this.dom,tabIndexAttr=dom.getAttributeNode("tabIndex"),tabIndex,nodeName=dom.nodeName,canFocus=false;if(tabIndexAttr&&tabIndexAttr.specified){tabIndex=tabIndexAttr.value}if(dom&&!dom.disabled){if(tabIndex==-1){canFocus=Ext.FocusManager&&Ext.FocusManager.enabled&&asFocusEl}else{if(focusRe.test(nodeName)){if((nodeName!=="a")||dom.href){canFocus=true}}else{canFocus=tabIndex!=null&&tabIndex>=0}}canFocus=canFocus&&this.isVisible(true)}return canFocus}});if(Ext.isIE){Element.prototype.getById=function(id,asDom){var dom=this.dom,cacheItem,el,ret;if(dom){el=(useDocForId&&DOC.getElementById(id))||dom.all[id];if(el){if(asDom){ret=el}else{cacheItem=EC[id];if(cacheItem&&cacheItem.el){ret=Ext.updateCacheEntry(cacheItem,el).el}else{ret=new Element(el)}}return ret}}return asDom?Ext.getDom(id):Element.get(id)}}Element.createAlias({addListener:"on",removeListener:"un",clearListeners:"removeAllListeners",focusable:"isFocusable"});Element.Fly=AbstractElement.Fly=new Ext.Class({extend:Element,isFly:true,constructor:function(dom){this.dom=dom;this.el=this},attach:AbstractElement.Fly.prototype.attach});internalFly=new Element.Fly();if(Ext.isIE){Ext.getElementById=function(id){var el=DOC.getElementById(id),detachedBodyEl;if(!el&&(detachedBodyEl=AbstractElement.detachedBodyEl)){el=detachedBodyEl.dom.all[id]}return el}}else{if(!DOC.querySelector){Ext.getDetachedBody=Ext.getBody;Ext.getElementById=function(id){return DOC.getElementById(id)}}}}));(Ext.cmd.derive("Ext.dom.CompositeElementLite",Ext.Base,{alternateClassName:"Ext.CompositeElementLite",statics:{importElementMethods:function(){var b,c=Ext.dom.Element.prototype,a=this.prototype;for(b in c){if(typeof c[b]=="function"){(function(d){a[d]=a[d]||function(){return this.invoke(d,arguments)}}).call(a,b)}}}},constructor:function(b,a){this.elements=[];this.add(b,a);this.el=new Ext.dom.AbstractElement.Fly()},isComposite:true,getElement:function(a){return this.el.attach(a)},transformElement:function(a){return Ext.getDom(a)},getCount:function(){return this.elements.length},add:function(c,a){var e=this.elements,b,d;if(!c){return this}if(typeof c=="string"){c=Ext.dom.Element.selectorFunction(c,a)}else{if(c.isComposite){c=c.elements}else{if(!Ext.isIterable(c)){c=[c]}}}for(b=0,d=c.length;b-1){c=Ext.getDom(c);if(a){g=this.elements[b];g.parentNode.insertBefore(c,g);Ext.removeNode(g)}Ext.Array.splice(this.elements,b,1,c)}return this},clear:function(d){var c=this,b=c.elements,a=b.length-1;if(d){for(;a>=0;a--){Ext.removeNode(b[a])}}this.elements=[]},addElements:function(d,b){if(!d){return this}if(typeof d=="string"){d=Ext.dom.Element.selectorFunction(d,b)}var c=this.elements,a=d.length,g;for(g=0;g";for(;v\^])\s?|\s|$)/,d=/^(#)?([\w\-]+|\*)(?:\((true|false)\))?/,c=[{re:/^\.([\w\-]+)(?:\((true|false)\))?/,method:q},{re:/^(?:\[((?:@|\?)?[\w\-\$]*[^\^\$\*~%!])\s?(?:(=|.=)\s?['"]?(.*?)["']?)?\])/,method:r},{re:/^#([\w\-]+)/,method:e},{re:/^\:([\w\-]+)(?:\(((?:\{[^\}]+\})|(?:(?!\{)[^\s>\/]*?(?!\})))\))?/,method:o},{re:/^(?:\{([^\}]+)\})/,method:n}];j.Query=Ext.extend(Object,{constructor:function(s){s=s||{};Ext.apply(this,s)},execute:function(t){var v=this.operations,w=0,x=v.length,u,s;if(!t){s=Ext.ComponentManager.all.getArray()}else{if(Ext.isIterable(t)){s=t}else{if(t.isMixedCollection){s=t.items}}}for(;w1){for(v=0,w=x.length;v0){s.push(t[0])}return s},last:function(u){var s=u.length,t=[];if(s>0){t.push(u[s-1])}return t},focusable:function(t){var s=t.length,v=[],u=0,w;for(;u1){w=v.length;for(u=0;u=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)>=this.value},">":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)>this.value},"!=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)!=this.value}},constructor:function(a){var b=this;b.initialConfig=a;Ext.apply(b,a);b.filter=b.filter||b.filterFn;if(b.filter===undefined){b.setValue(a.value)}},setValue:function(b){var a=this;a.value=b;if(a.property===undefined||a.value===undefined){}else{a.filter=a.createFilterFn()}a.filterFn=a.filter},setFilterFn:function(a){this.filterFn=this.filter=a},createFilterFn:function(){var a=this,c=a.createValueMatcher(),b=a.property;if(a.operator){return a.operatorFns[a.operator]}else{return function(d){var e=a.getRoot(d)[b];return c===null?e===null:c.test(e)}}},getRoot:function(b){var a=this.root;return a===undefined?b:b[a]},createValueMatcher:function(){var d=this,e=d.value,g=d.anyMatch,c=d.exactMatch,a=d.caseSensitive,b=Ext.String.escapeRegex;if(e===null){return e}if(!e.exec){e=String(e);if(g===true){e=b(e)}else{e="^"+b(e);if(c===true){e+="$"}}e=new RegExp(e,a?"":"i")}return e},serialize:function(){var b=this,a=Ext.apply({},b.initialConfig);a.value=b.value;return a}},1,0,0,0,0,0,[Ext.util,"Filter"],function(){this.prototype.operatorFns["=="]=this.prototype.operatorFns["="]}));(Ext.cmd.derive("Ext.util.AbstractMixedCollection",Ext.Base,{isMixedCollection:true,generation:0,indexGeneration:0,constructor:function(b,a){var c=this;if(arguments.length===1&&Ext.isObject(b)){c.initialConfig=b;Ext.apply(c,b)}else{c.allowFunctions=b===true;if(a){c.getKey=a}c.initialConfig={allowFunctions:c.allowFunctions,getKey:c.getKey}}c.items=[];c.map={};c.keys=[];c.indexMap={};c.length=0;c.mixins.observable.constructor.call(c)},allowFunctions:false,add:function(c,d){var a=this.length,b;if(arguments.length===1){b=this.insert(a,c)}else{b=this.insert(a,c,d)}return b},getKey:function(a){return a.id},replace:function(c,e){var d=this,a,b;if(arguments.length==1){e=arguments[0];c=d.getKey(e)}a=d.map[c];if(typeof c=="undefined"||c===null||typeof a=="undefined"){return d.add(c,e)}d.generation++;b=d.indexOfKey(c);d.items[b]=e;d.map[c]=e;if(d.hasListeners.replace){d.fireEvent("replace",c,a,e)}return e},updateKey:function(g,h){var d=this,e=d.map,c=d.indexMap,a=d.indexOfKey(g),b;if(a>-1){b=e[g];delete e[g];delete c[g];e[h]=b;c[h]=a;d.keys[a]=h;d.generation++}},addAll:function(c){var b=this,a;if(arguments.length>1||Ext.isArray(c)){b.insert(b.length,arguments.length>1?arguments:c)}else{for(a in c){if(c.hasOwnProperty(a)){if(b.allowFunctions||typeof c[a]!="function"){b.add(a,c[a])}}}}},each:function(e,d){var b=Ext.Array.push([],this.items),c=0,a=b.length,g;for(;c2){a=this.doInsert(b,[c],[d])}else{a=this.doInsert(b,[c])}a=a[0]}return a},doInsert:function(j,o,n){var l=this,b,c,g,k=o.length,a=k,e=l.hasListeners.add,d,h={},m,q,p;if(n!=null){l.useLinearSearch=true}else{n=o;o=new Array(k);for(g=0;g=0;--b){c.remove(a[b])}}else{while(c.length){c.removeAt(0)}}}else{c.length=c.items.length=c.keys.length=0;c.map={};c.indexMap={};c.generation++;c.indexGeneration=c.generation}},removeAt:function(a){var c=this,d,b;if(a=0){c.length--;d=c.items[a];Ext.Array.erase(c.items,a,1);b=c.keys[a];if(typeof b!="undefined"){delete c.map[b]}Ext.Array.erase(c.keys,a,1);if(c.hasListeners.remove){c.fireEvent("remove",d,b)}c.generation++;return d}return false},removeRange:function(h,a){var j=this,b,k,g,e,c,d;if(h=0){if(!a){a=1}e=Math.min(h+a,j.length);a=e-h;d=e===j.length;c=d&&j.indexGeneration===j.generation;for(g=h;g=0;a--){if(c[a]==null){d.removeAt(a)}}}else{return d.removeAt(d.indexOfKey(b))}},getCount:function(){return this.length},indexOf:function(c){var b=this,a;if(c!=null){if(!b.useLinearSearch&&(a=b.getKey(c))){return this.indexOfKey(a)}return Ext.Array.indexOf(b.items,c)}return -1},indexOfKey:function(a){if(!this.map.hasOwnProperty(a)){return -1}if(this.indexGeneration!==this.generation){this.rebuildIndexMap()}return this.indexMap[a]},rebuildIndexMap:function(){var e=this,d=e.indexMap={},c=e.keys,a=c.length,b;for(b=0;bb){e=true;g=j;j=b;b=g}if(j<0){j=0}if(b==null||b>=a){b=a-1}c=d.slice(j,b+1);if(e&&c.length){c.reverse()}return c},filter:function(d,c,e,a){var b=[];if(Ext.isString(d)){b.push(new Ext.util.Filter({property:d,value:c,anyMatch:e,caseSensitive:a}))}else{if(Ext.isArray(d)||d instanceof Ext.util.Filter){b=b.concat(d)}}return this.filterBy(Ext.util.Filter.createFilterFn(b))},filterBy:function(e,d){var j=this,a=new j.self(j.initialConfig),h=j.keys,b=j.items,g=b.length,c;a.getKey=j.getKey;for(c=0;ce?1:(g>1;h=d(e,b[c]);if(h>=0){j=c+1}else{if(h<0){a=c-1}}}return j},reorder:function(d){var h=this,b=h.items,c=0,g=b.length,a=[],e=[],j;h.suspendEvents();for(j in d){a[d[j]]=b[j]}for(c=0;ce?1:(g=d.duration),e,h;e=this.collectTargetData(d,a,g,b);if(g){d.target.setAttr(e.anims[d.id].attributes,true);c.collectTargetData(d,d.duration,g,b);d.paused=true;e=d.target.target;if(d.target.isComposite){e=d.target.target.last()}h={};h[Ext.supports.CSS3TransitionEnd]=d.lastFrame;h.scope=d;h.single=true;e.on(h)}},collectTargetData:function(c,a,e,g){var b=c.target.getId(),d=this.targetArr[b];if(!d){d=this.targetArr[b]={id:b,el:c.target,anims:{}}}d.anims[c.id]={id:c.id,anim:c,elapsed:a,isLastFrame:g,attributes:[{duration:c.duration,easing:(e&&c.reverse)?c.easingFn.reverse().toCSS3():c.easing,attrs:c.runAnim(a)}]};return d},applyPendingAttrs:function(){var e=this.targetArr,g,c,b,d,a;for(c in e){if(e.hasOwnProperty(c)){g=e[c];for(a in g.anims){if(g.anims.hasOwnProperty(a)){b=g.anims[a];d=b.anim;if(b.attributes&&d.isRunning()){g.el.setAttr(b.attributes,false,b.isLastFrame);if(b.isLastFrame){d.lastFrame()}}}}}}}},1,0,0,0,0,[["queue",Ext.fx.Queue]],[Ext.fx,"Manager"],0));(Ext.cmd.derive("Ext.fx.Animator",Ext.Base,{isAnimator:true,duration:250,delay:0,delayStart:0,dynamic:false,easing:"ease",running:false,paused:false,damper:1,iterations:1,currentIteration:0,keyframeStep:0,animKeyFramesRE:/^(from|to|\d+%?)$/,constructor:function(a){var b=this;a=Ext.apply(b,a||{});b.config=a;b.id=Ext.id(null,"ext-animator-");b.addEvents("beforeanimate","keyframe","afteranimate");b.mixins.observable.constructor.call(b,a);b.timeline=[];b.createTimeline(b.keyframes);if(b.target){b.applyAnimator(b.target);Ext.fx.Manager.addAnim(b)}},sorter:function(d,c){return d.pct-c.pct},createTimeline:function(d){var h=this,l=[],j=h.to||{},b=h.duration,m,a,c,g,k,e;for(k in d){if(d.hasOwnProperty(k)&&h.animKeyFramesRE.test(k)){e={attrs:Ext.apply(d[k],j)};if(k=="from"){k=0}else{if(k=="to"){k=100}}e.pct=parseInt(k,10);l.push(e)}}Ext.Array.sort(l,h.sorter);g=l.length;for(c=0;c0},isRunning:function(){return false}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.fx,"Animator"],0));(Ext.cmd.derive("Ext.fx.CubicBezier",Ext.Base,{singleton:true,cubicBezierAtTime:function(p,d,b,o,n,j){var k=3*d,m=3*(o-d)-k,a=1-k-m,h=3*b,l=3*(n-b)-h,q=1-h-l;function g(r){return((a*r+m)*r+k)*r}function c(r,u){var s=e(r,u);return((q*s+l)*s+h)*s}function e(r,z){var y,w,u,s,v,t;for(u=r,t=0;t<8;t++){s=g(u)-r;if(Math.abs(s)w){return w}while(ys){y=u}else{w=u}u=(w-y)/2+y}return u}return c(p,1/(200*j))},cubicBezier:function(b,e,a,c){var d=function(g){return Ext.fx.CubicBezier.cubicBezierAtTime(g,b,e,a,c,1)};d.toCSS3=function(){return"cubic-bezier("+[b,e,a,c].join(",")+")"};d.reverse=function(){return Ext.fx.CubicBezier.cubicBezier(1-a,1-c,1-b,1-e)};return d}},0,0,0,0,0,0,[Ext.fx,"CubicBezier"],0));Ext.require("Ext.fx.CubicBezier",function(){var e=Math,h=e.PI,d=e.pow,b=e.sin,g=e.sqrt,a=e.abs,c=1.70158;Ext.define("Ext.fx.Easing",{singleton:true,linear:Ext.identityFn,ease:function(m){var j=0.07813-m/2,o=-0.25,p=g(0.0066+j*j),s=p-j,l=d(a(s),1/3)*(s<0?-1:1),r=-p-j,k=d(a(r),1/3)*(r<0?-1:1),u=l+k+0.25;return d(1-u,2)*3*u*0.1+(1-u)*3*u*u+u*u*u},easeIn:function(j){return d(j,1.7)},easeOut:function(j){return d(j,0.48)},easeInOut:function(s){var m=0.48-s/1.04,l=g(0.1734+m*m),j=l-m,r=d(a(j),1/3)*(j<0?-1:1),p=-l-m,o=d(a(p),1/3)*(p<0?-1:1),k=r+o+0.5;return(1-k)*3*k*k+k*k*k},backIn:function(j){return j*j*((c+1)*j-c)},backOut:function(j){j=j-1;return j*j*((c+1)*j+c)+1},elasticIn:function(l){if(l===0||l===1){return l}var k=0.3,j=k/4;return d(2,-10*l)*b((l-j)*(2*h)/k)+1},elasticOut:function(j){return 1-Ext.fx.Easing.elasticIn(1-j)},bounceIn:function(j){return 1-Ext.fx.Easing.bounceOut(1-j)},bounceOut:function(o){var k=7.5625,m=2.75,j;if(o<(1/m)){j=k*o*o}else{if(o<(2/m)){o-=(1.5/m);j=k*o*o+0.75}else{if(o<(2.5/m)){o-=(2.25/m);j=k*o*o+0.9375}else{o-=(2.625/m);j=k*o*o+0.984375}}}return j}},function(){var k=Ext.fx.Easing.self,j=k.prototype;k.implement({"back-in":j.backIn,"back-out":j.backOut,"ease-in":j.easeIn,"ease-out":j.easeOut,"elastic-in":j.elasticIn,"elastic-out":j.elasticOut,"bounce-in":j.bounceIn,"bounce-out":j.bounceOut,"ease-in-out":j.easeInOut})})});(Ext.cmd.derive("Ext.draw.Color",Ext.Base,{colorToHexRe:/(.*?)rgb\((\d+),\s*(\d+),\s*(\d+)\)/,rgbRe:/\s*rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)\s*/,hexRe:/\s*#([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)\s*/,lightnessFactor:0.2,constructor:function(d,c,a){var b=this,e=Ext.Number.constrain;b.r=e(d,0,255);b.g=e(c,0,255);b.b=e(a,0,255)},getRed:function(){return this.r},getGreen:function(){return this.g},getBlue:function(){return this.b},getRGB:function(){var a=this;return[a.r,a.g,a.b]},getHSL:function(){var k=this,a=k.r/255,j=k.g/255,m=k.b/255,n=Math.max(a,j,m),d=Math.min(a,j,m),o=n-d,e,p=0,c=0.5*(n+d);if(d!=n){p=(c<0.5)?o/(n+d):o/(2-n-d);if(a==n){e=60*(j-m)/o}else{if(j==n){e=120+60*(m-a)/o}else{e=240+60*(a-j)/o}}if(e<0){e+=360}if(e>=360){e-=360}}return[e,p,c]},getLighter:function(b){var a=this.getHSL();b=b||this.lightnessFactor;a[2]=Ext.Number.constrain(a[2]+b,0,1);return this.fromHSL(a[0],a[1],a[2])},getDarker:function(a){a=a||this.lightnessFactor;return this.getLighter(-a)},toString:function(){var h=this,c=Math.round,e=c(h.r).toString(16),d=c(h.g).toString(16),a=c(h.b).toString(16);e=(e.length==1)?"0"+e:e;d=(d.length==1)?"0"+d:d;a=(a.length==1)?"0"+a:a;return["#",e,d,a].join("")},toHex:function(b){if(Ext.isArray(b)){b=b[0]}if(!Ext.isString(b)){return""}if(b.substr(0,1)==="#"){return b}var e=this.colorToHexRe.exec(b),g,d,a,c;if(Ext.isArray(e)){g=parseInt(e[2],10);d=parseInt(e[3],10);a=parseInt(e[4],10);c=a|(d<<8)|(g<<16);return e[1]+"#"+("000000"+c.toString(16)).slice(-6)}else{return b}},fromString:function(j){var c,e,d,a,h=parseInt;if((j.length==4||j.length==7)&&j.substr(0,1)==="#"){c=j.match(this.hexRe);if(c){e=h(c[1],16)>>0;d=h(c[2],16)>>0;a=h(c[3],16)>>0;if(j.length==4){e+=(e*16);d+=(d*16);a+=(a*16)}}}else{c=j.match(this.rgbRe);if(c){e=c[1];d=c[2];a=c[3]}}return(typeof e=="undefined")?undefined:new Ext.draw.Color(e,d,a)},getGrayscale:function(){return this.r*0.3+this.g*0.59+this.b*0.11},fromHSL:function(g,o,d){var a,b,c,e,k=[],n=Math.abs,j=Math.floor;if(o==0||g==null){k=[d,d,d]}else{g/=60;a=o*(1-n(2*d-1));b=a*(1-n(g-2*j(g/2)-1));c=d-a/2;switch(j(g)){case 0:k=[a,b,0];break;case 1:k=[b,a,0];break;case 2:k=[0,a,b];break;case 3:k=[0,b,a];break;case 4:k=[b,0,a];break;case 5:k=[a,0,b];break}k=[k[0]+c,k[1]+c,k[2]+c]}return new Ext.draw.Color(k[0]*255,k[1]*255,k[2]*255)}},3,0,0,0,0,0,[Ext.draw,"Color"],function(){var a=this.prototype;this.addStatics({fromHSL:function(){return a.fromHSL.apply(a,arguments)},fromString:function(){return a.fromString.apply(a,arguments)},toHex:function(){return a.toHex.apply(a,arguments)}})}));(Ext.cmd.derive("Ext.draw.Draw",Ext.Base,{singleton:true,pathToStringRE:/,?([achlmqrstvxz]),?/gi,pathCommandRE:/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,pathValuesRE:/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,stopsRE:/^(\d+%?)$/,radian:Math.PI/180,availableAnimAttrs:{along:"along",blur:null,"clip-rect":"csv",cx:null,cy:null,fill:"color","fill-opacity":null,"font-size":null,height:null,opacity:null,path:"path",r:null,rotation:"csv",rx:null,ry:null,scale:"csv",stroke:"color","stroke-opacity":null,"stroke-width":null,translation:"csv",width:null,x:null,y:null},is:function(b,a){a=String(a).toLowerCase();return(a=="object"&&b===Object(b))||(a=="undefined"&&typeof b==a)||(a=="null"&&b===null)||(a=="array"&&Array.isArray&&Array.isArray(b))||(Object.prototype.toString.call(b).toLowerCase().slice(8,-1))==a},ellipsePath:function(b){var a=b.attr;return Ext.String.format("M{0},{1}A{2},{3},0,1,1,{0},{4}A{2},{3},0,1,1,{0},{1}z",a.x,a.y-a.ry,a.rx,a.ry,a.y+a.ry)},rectPath:function(b){var a=b.attr;if(a.radius){return Ext.String.format("M{0},{1}l{2},0a{3},{3},0,0,1,{3},{3}l0,{5}a{3},{3},0,0,1,{4},{3}l{6},0a{3},{3},0,0,1,{4},{4}l0,{7}a{3},{3},0,0,1,{3},{4}z",a.x+a.radius,a.y,a.width-a.radius*2,a.radius,-a.radius,a.height-a.radius*2,a.radius*2-a.width,a.radius*2-a.height)}else{return Ext.String.format("M{0},{1}L{2},{1},{2},{3},{0},{3}z",a.x,a.y,a.width+a.x,a.height+a.y)}},path2string:function(){return this.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},pathToString:function(a){return a.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},parsePathString:function(a){if(!a){return null}var d={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},c=[],b=this;if(b.is(a,"array")&&b.is(a[0],"array")){c=b.pathClone(a)}if(!c.length){String(a).replace(b.pathCommandRE,function(g,e,k){var j=[],h=e.toLowerCase();k.replace(b.pathValuesRE,function(m,l){l&&j.push(+l)});if(h=="m"&&j.length>2){c.push([e].concat(Ext.Array.splice(j,0,2)));h="l";e=(e=="m")?"l":"L"}while(j.length>=d[h]){c.push([e].concat(Ext.Array.splice(j,0,d[h])));if(!d[h]){break}}})}c.toString=b.path2string;return c},mapPath:function(l,g){if(!g){return l}var h,e,c,k,a,d,b;l=this.path2curve(l);for(c=0,k=l.length;c7){h[b].shift();e=h[b];while(e.length){Ext.Array.splice(h,b++,0,["C"].concat(Ext.Array.splice(e,0,6)))}Ext.Array.erase(h,b,1);c=h.length;b--}a=h[b];g=a.length;j.x=a[g-2];j.y=a[g-1];j.bx=parseFloat(a[g-4])||j.x;j.by=parseFloat(a[g-3])||j.y}return h},interpolatePaths:function(r,l){var j=this,d=j.pathToAbsolute(r),m=j.pathToAbsolute(l),n={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},b=function(p,s){if(p[s].length>7){p[s].shift();var t=p[s];while(t.length){Ext.Array.splice(p,s++,0,["C"].concat(Ext.Array.splice(t,0,6)))}Ext.Array.erase(p,s,1);o=Math.max(d.length,m.length||0)}},c=function(v,u,s,p,t){if(v&&u&&v[t][0]=="M"&&u[t][0]!="M"){Ext.Array.splice(u,t,0,["M",p.x,p.y]);s.bx=0;s.by=0;s.x=v[t][1];s.y=v[t][2];o=Math.max(d.length,m.length||0)}},h,o,g,q,e,k;for(h=0,o=Math.max(d.length,m.length||0);h1){aa=V(aa);H=aa*H;F=aa*F}c=H*H;R=F*F;U=(n==g?-1:1)*V(u((c*R-c*N*N-R*O*O)/(c*N*N+R*O*O)));C=U*H*N/F+(s+r)/2;B=U*-F*O/H+(af+ae)/2;m=o(((af-B)/F).toFixed(7));l=o(((ae-B)/F).toFixed(7));m=sl){m=m-d*2}if(!g&&l>m){l=l-d*2}}else{m=A[0];l=A[1];C=A[2];B=A[3]}q=l-m;if(u(q)>E){D=l;G=r;p=ae;l=m+E*(g&&l>m?1:-1);r=C+H*T(l);ae=B+F*a(l);M=v.arc2curve(r,ae,H,F,z,0,g,G,p,[l,D,C,B])}q=l-m;j=T(m);ad=a(m);e=T(l);ac=a(l);P=J.tan(q/4);S=4/3*H*P;Q=4/3*F*P;ab=[s,af];Z=[s+S*ad,af-Q*j];Y=[r+S*ac,ae-Q*e];W=[r,ae];Z[0]=2*ab[0]-Z[0];Z[1]=2*ab[1]-Z[1];if(A){return[Z,Y,W].concat(M)}else{M=[Z,Y,W].concat(M).join().split(",");L=[];K=M.length;for(X=0;X(a[1]-c[1])*(b[0]-c[0])},intersectIntersection:function(o,n,g,d){var c=[],b=g[0]-d[0],a=g[1]-d[1],l=o[0]-n[0],j=o[1]-n[1],m=g[0]*d[1]-g[1]*d[0],k=o[0]*n[1]-o[1]*n[0],h=1/(b*j-a*l);c[0]=(m*l-k*b)*h;c[1]=(m*j-k*a)*h;return c},intersect:function(o,c){var n=this,k=0,m=c.length,h=c[m-1],p=o,g,q,l,a,b,d;for(;k0){v.push(g)}}else{j=t-3*q+3*n-m;p=2*(t-q-q+n);h=t-q;u=p*p-4*j*h;e=j+j;if(u===0){g=p/e;if(g<1&&g>0){v.push(g)}}else{if(u>0){w=Math.sqrt(u);g=(w+p)/e;if(g<1&&g>0){v.push(g)}g=(p-w)/e;if(g<1&&g>0){v.push(g)}}}}k=Math.min(t,m);o=Math.max(t,m);for(l=0;l=d&&k>=v)||(k<=d&&k<=v)){h=m=s}else{h=g((l-e)/n(k-d));if(ds){c-=q}h+=c;m+=c;p=l-u*a(h);o=k+u*b(h);y=l+t*a(m);x=k+t*b(m);if((k>d&&od)){p+=n(d-o)*(p-l)/(o-k);o=d}if((k>v&&xv)){y-=n(v-x)*(y-l)/(x-k);x=v}return{x1:p,y1:o,x2:y,y2:x}},smooth:function(a,p){var o=this.path2curve(a),c=[o[0]],g=o[0][1],e=o[0][2],q,s,t=1,h=o.length,d=1,l=g,k=e,w,v,u,m,r,n,b;for(;t0){q=Math.floor((o-(n/10))/n)*n}if(u){for(p=0;p=0){d=0;while(d>o){d-=e;a++}o=+d.toFixed(10);d=0;while(d=15){k=1;if(++e>11){j++}}else{k=15}break;case 1/3:if(k>=20){k=1;if(++e>11){j++}}else{if(k>=10){k=20}else{k=10}}break;case 1/4:if(k>=22){k=1;if(++e>11){j++}}else{if(k>=15){k=22}else{if(k>=8){k=15}else{k=8}}}break}q.setYear(j);q.setMonth(e);q.setDate(k);l.push(new Date(q))}else{q=Ext.Date.add(q,h,g);l++}}if(p){q=n}if(d){return{from:+c,to:+q,steps:l}}else{return{from:+c,to:+q,step:(q-c)/l,steps:l}}},sorter:function(d,c){return d.offset-c.offset},rad:function(a){return a%360*Math.PI/180},degrees:function(a){return a*180/Math.PI%360},withinBox:function(a,c,b){b=b||{};return(a>=b.x&&a<=(b.x+b.width)&&c>=b.y&&c<=(b.y+b.height))},parseGradient:function(l){var e=this,g=l.type||"linear",c=l.angle||0,j=e.radian,m=l.stops,a=[],k,b,h,d;if(g=="linear"){b=[0,0,Math.cos(c*j),Math.sin(c*j)];h=1/(Math.max(Math.abs(b[2]),Math.abs(b[3]))||1);b[2]*=h;b[3]*=h;if(b[2]<0){b[0]=-b[2];b[2]=0}if(b[3]<0){b[1]=-b[3];b[3]=0}}for(k in m){if(m.hasOwnProperty(k)&&e.stopsRE.test(k)){d={offset:parseInt(k,10),color:Ext.draw.Color.toHex(m[k].color)||"#ffffff",opacity:m[k].opacity||1};a.push(d)}}Ext.Array.sort(a,e.sorter);if(g=="linear"){return{id:l.id,type:g,vector:b,stops:a}}else{return{id:l.id,type:g,centerX:l.centerX,centerY:l.centerY,focalX:l.focalX,focalY:l.focalY,radius:l.radius,vector:b,stops:a}}}},0,0,0,0,0,0,[Ext.draw,"Draw"],0));(Ext.cmd.derive("Ext.fx.PropertyHandler",Ext.Base,{statics:{defaultHandler:{pixelDefaultsRE:/width|height|top$|bottom$|left$|right$/i,unitRE:/^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/,scrollRE:/^scroll/i,computeDelta:function(k,c,a,g,j){a=(typeof a=="number")?a:1;var h=this.unitRE,d=h.exec(k),b,e;if(d){k=d[1];e=d[2];if(!this.scrollRE.test(j)&&!e&&this.pixelDefaultsRE.test(j)){e="px"}}k=+k||0;d=h.exec(c);if(d){c=d[1];e=d[2]||e}c=+c||0;b=(g!=null)?g:k;return{from:k,delta:(c-b)*a,units:e}},get:function(o,b,a,n,k){var m=o.length,d=[],e,h,l,c,g;for(e=0;e=d){m=d;a=true}if(j.reverse){m=d-m}for(e in l){if(l.hasOwnProperty(e)){k=l[e];h=a?1:c(m/d);g[e]=b[e].set(k,h)}}j.frameCount++;return g},lastFrame:function(){var c=this,a=c.iterations,b=c.currentIteration;b++;if(b0},isRunning:function(){return this.paused===false&&this.running===true&&this.isAnimator!==true}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.fx,"Anim"],0));Ext.enableFx=true;(Ext.cmd.derive("Ext.util.Animate",Ext.Base,{isAnimate:true,animate:function(a){var b=this;if(Ext.fx.Manager.hasFxBlock(b.id)){return b}Ext.fx.Manager.queueFx(new Ext.fx.Anim(b.anim(a)));return this},anim:function(a){if(!Ext.isObject(a)){return(a)?{}:false}var b=this;if(a.stopAnimation){b.stopAnimation()}Ext.applyIf(a,Ext.fx.Manager.getFxDefaults(b.id));return Ext.apply({target:b,paused:true},a)},stopFx:Ext.Function.alias(Ext.util.Animate,"stopAnimation"),stopAnimation:function(){Ext.fx.Manager.stopAnimation(this.id);return this},syncFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:true});return this},sequenceFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:false});return this},hasActiveFx:Ext.Function.alias(Ext.util.Animate,"getActiveAnimation"),getActiveAnimation:function(){return Ext.fx.Manager.getActiveAnimation(this.id)}},0,0,0,0,0,0,[Ext.util,"Animate"],function(){Ext.applyIf(Ext.Element.prototype,this.prototype);Ext.CompositeElementLite.importElementMethods()}));(Ext.cmd.derive("Ext.util.ElementContainer",Ext.Base,{childEls:[],constructor:function(){var b=this,a;if(b.hasOwnProperty("childEls")){a=b.childEls;delete b.childEls;b.addChildEls.apply(b,a)}},destroy:function(){var e=this,d=e.getChildEls(),g,a,c,b;for(c=d.length;c--;){a=d[c];if(typeof a!="string"){a=a.name}g=e[a];if(g){e[a]=null;g.remove()}}},addChildEls:function(){var b=this,a=arguments;if(b.hasOwnProperty("childEls")){b.childEls.push.apply(b.childEls,a)}else{b.childEls=b.getChildEls().concat(Array.prototype.slice.call(a))}b.prune(b.childEls,false)},applyChildEls:function(b,a){var e=this,g=e.getChildEls(),j,k,d,c,h;j=(a||e.id)+"-";for(d=g.length;d--;){k=g[d];if(typeof k=="string"){h=b.getById(j+k)}else{if((c=k.select)){h=Ext.select(c,true,b.dom)}else{if((c=k.selectNode)){h=Ext.get(Ext.DomQuery.selectNode(c,b.dom))}else{h=b.getById(k.id||(j+k.itemId))}}k=k.name}e[k]=h}},getChildEls:function(){var b=this,a;if(b.hasOwnProperty("childEls")){return b.childEls}a=b.self;return a.$childEls||b.getClassChildEls(a)},getClassChildEls:function(o){var k=this,p=o.$childEls,m,d,b,j,n,h,a,c,e,g,l;if(!p){g=o.superclass;if(g){g=g.self;c=[g.$childEls||k.getClassChildEls(g)];l=g.prototype.mixins||{}}else{c=[];l={}}e=o.prototype;h=e.mixins;for(a in h){if(h.hasOwnProperty(a)&&!l.hasOwnProperty(a)){n=h[a].self;c.push(n.$childEls||k.getClassChildEls(n))}}c.push(e.hasOwnProperty("childEls")&&e.childEls);for(d=0,b=c.length;d','
    {parent.baseCls}-{parent.ui}-{.}-tl{frameElCls}" role="presentation">','
    {parent.baseCls}-{parent.ui}-{.}-tr{frameElCls}" role="presentation">','
    {parent.baseCls}-{parent.ui}-{.}-tc{frameElCls}" role="presentation">
    ','
    ','
    ',"",'
    {parent.baseCls}-{parent.ui}-{.}-ml{frameElCls}" role="presentation">','
    {parent.baseCls}-{parent.ui}-{.}-mr{frameElCls}" role="presentation">','
    {parent.baseCls}-{parent.ui}-{.}-mc{frameElCls}" role="presentation">',"{%this.applyRenderTpl(out, values)%}","
    ",'
    ','
    ','','
    {parent.baseCls}-{parent.ui}-{.}-bl{frameElCls}" role="presentation">','
    {parent.baseCls}-{parent.ui}-{.}-br{frameElCls}" role="presentation">','
    {parent.baseCls}-{parent.ui}-{.}-bc{frameElCls}" role="presentation">
    ','
    ','
    ',"
    ","{%this.renderDockedItems(out,values,1);%}"],frameTableTpl:["{%this.renderDockedItems(out,values,0);%}",'','',"",'','','',"","","",'','",'',"",'',"",'','','',"","","
    {parent.baseCls}-{parent.ui}-{.}-tl{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-tc{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-tr{frameElCls}" role="presentation">
    {parent.baseCls}-{parent.ui}-{.}-ml{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-mc{frameElCls}" role="presentation">',"{%this.applyRenderTpl(out, values)%}"," {parent.baseCls}-{parent.ui}-{.}-mr{frameElCls}" role="presentation">
    {parent.baseCls}-{parent.ui}-{.}-bl{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-bc{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-br{frameElCls}" role="presentation">
    ","{%this.renderDockedItems(out,values,1);%}"],afterRender:function(){var d=this,e={},j=d.protoEl,h=d.el,c,g,a,b;d.finishRenderChildren();if(d.contentEl){g=Ext.baseCSSPrefix;a=g+"hide-";b=Ext.get(d.contentEl);b.removeCls([g+"hidden",a+"display",a+"offsets",a+"nosize"]);d.getContentTarget().appendChild(b.dom)}j.writeTo(e);c=e.removed;if(c){h.removeCls(c)}c=e.cls;if(c.length){h.addCls(c)}c=e.style;if(e.style){h.setStyle(c)}d.protoEl=null;if(!d.ownerCt){d.updateLayout()}},afterFirstLayout:function(b,j){var d=this,h=d.x,e=d.y,c,a,g,k;if(!d.ownerLayout){c=Ext.isDefined(h);a=Ext.isDefined(e)}if(d.floating&&(!c||!a)){if(d.floatParent){g=d.floatParent.getTargetEl().getViewRegion();k=d.el.getAlignToXY(d.floatParent.getTargetEl(),"c-c");g.x=k[0]-g.x;g.y=k[1]-g.y}else{k=d.el.getAlignToXY(d.container,"c-c");g=d.container.translateXY(k[0],k[1])}h=c?h:g.x;e=a?e:g.y;c=a=true}if(c||a){d.setPosition(h,e)}d.onBoxReady(b,j)},applyRenderSelectors:function(){var d=this,b=d.renderSelectors,c=d.el,e=c.dom,a;d.applyChildEls(c);if(b){for(a in b){if(b.hasOwnProperty(a)&&b[a]){d[a]=Ext.get(Ext.DomQuery.selectNode(b[a],e))}}}},beforeRender:function(){var c=this,e=c.getTargetEl(),d=c.getOverflowEl(),b=c.getComponentLayout(),a=c.getOverflowStyle();c.frame=c.frame||c.alwaysFramed;if(!b.initialized){b.initLayout()}if(d){d.setStyle(a);c.overflowStyleSet=true}c.setUI(c.ui);if(c.disabled){c.disable(true)}},doApplyRenderTpl:function(c,a){var d=a.$comp,b;if(!d.rendered){b=d.initRenderTpl();b.applyOut(a.renderData,c)}},doAutoRender:function(){var a=this;if(!a.rendered){if(a.floating){a.render(document.body)}else{a.render(Ext.isBoolean(a.autoRender)?Ext.getBody():a.autoRender)}}},doRenderContent:function(a,c){var b=c.$comp;if(b.html){Ext.DomHelper.generateMarkup(b.html,a);delete b.html}if(b.tpl){if(!b.tpl.isTemplate){b.tpl=new Ext.XTemplate(b.tpl)}if(b.data){b.tpl.applyOut(b.data,a);delete b.data}}},doRenderFramingDockedItems:function(a,c,d){var b=c.$comp;if(!b.rendered&&b.doRenderDockedItems){c.renderData.$skipDockedItems=true;b.doRenderDockedItems.call(this,a,c,d)}},finishRender:function(a){var d=this,b,e,c;if(!d.el||d.$pid){if(d.container){c=d.container.getById(d.id,true)}else{c=Ext.getDom(d.id)}if(!d.el){d.wrapPrimaryEl(c)}else{delete d.$pid;if(!d.el.dom){d.wrapPrimaryEl(d.el)}c.parentNode.insertBefore(d.el.dom,c);Ext.removeNode(c)}}else{if(!d.rendering){b=d.initRenderTpl();if(b){e=d.initRenderData();b.insertFirst(d.getTargetEl(),e)}}}if(!d.container){d.container=Ext.get(d.el.dom.parentNode)}if(d.ctCls){d.container.addCls(d.ctCls)}d.onRender(d.container,a);if(!d.overflowStyleSet){d.getOverflowEl().setStyle(d.getOverflowStyle())}d.el.setVisibilityMode(Ext.Element[d.hideMode.toUpperCase()]);if(d.overCls){d.el.hover(d.addOverCls,d.removeOverCls,d)}if(d.hasListeners.render){d.fireEvent("render",d)}d.afterRender();if(d.hasListeners.afterrender){d.fireEvent("afterrender",d)}d.initEvents();if(d.hidden){d.el.hide()}},finishRenderChildren:function(){var a=this.getComponentLayout();a.finishRender()},getElConfig:function(){var j=this,l=j.autoEl,g=j.getFrameInfo(),b={tag:"div",tpl:g?j.initFramingTpl(g.table):j.initRenderTpl()},a=j.protoEl,c,e,h,m,d,k;j.initStyles(a);a.writeTo(b);a.flush();if(Ext.isString(l)){b.tag=l}else{Ext.apply(b,l)}b.id=j.id;if(b.tpl){if(g){e=j.frameElNames;h=e.length;b.tplData=k=j.getFrameRenderData();k.renderData=j.initRenderData();d=k.fgid;for(c=0;c table")[1].remove()}else{if(g){g.remove()}if(d){d.remove()}if(c){c.remove()}}}}else{if(e.frame){e.applyRenderSelectors()}}},getFrameInfo:function(){if(Ext.supports.CSS3BorderRadius||!this.frame){return false}var x=this,p=x.frameInfoCache,e=x.getFramingInfoCls()+"-frameInfo",y=p[e],q=Math.max,o,l,t,n,z,g,k,b,c,m,h,s,u,j,a,d,w,r,v;if(y==null){o=Ext.fly(x.getStyleProxy(e),"frame-style-el");t=o.getStyle("font-family");if(t){t=t.split("-");d=parseInt(t[1],10);w=parseInt(t[2],10);r=parseInt(t[3],10);v=parseInt(t[4],10);b=parseInt(t[5],10);c=parseInt(t[6],10);m=parseInt(t[7],10);h=parseInt(t[8],10);s=parseInt(t[9],10);u=parseInt(t[10],10);j=parseInt(t[11],10);a=parseInt(t[12],10);n=q(b,q(d,w));z=q(c,q(w,r));g=q(m,q(v,r));k=q(h,q(d,v));y={table:t[0].charAt(0)==="t",vertical:t[0].charAt(1)==="v",top:n,right:z,bottom:g,left:k,width:k+z,height:n+g,maxWidth:q(n,z,g,k),border:{top:b,right:c,bottom:m,left:h,width:h+c,height:b+m},padding:{top:s,right:u,bottom:j,left:a,width:a+u,height:s+j},radius:{tl:d,tr:w,br:r,bl:v}}}else{y=false}p[e]=y}x.frame=!!y;x.frameSize=y;return y},getFramingInfoCls:function(){return this.baseCls+"-"+this.ui},getStyleProxy:function(b){var a=this.styleProxyEl||(Ext.AbstractComponent.prototype.styleProxyEl=Ext.getBody().createChild({style:{position:"absolute",top:"-10000px"}},null,true));a.className=b;return a},getFrameTpl:function(a){return this.getTpl(a?"frameTableTpl":"frameTpl")},frameInfoCache:{}},0,0,0,0,0,0,[Ext.util,"Renderable"],0));(Ext.cmd.derive("Ext.state.Provider",Ext.Base,{prefix:"ext-",constructor:function(a){a=a||{};var b=this;Ext.apply(b,a);b.addEvents("statechange");b.state={};b.mixins.observable.constructor.call(b)},get:function(b,a){return typeof this.state[b]=="undefined"?a:this.state[b]},clear:function(a){var b=this;delete b.state[a];b.fireEvent("statechange",b,a,null)},set:function(a,c){var b=this;b.state[a]=c;b.fireEvent("statechange",b,a,c)},decodeValue:function(g){var c=this,l=/^(a|n|d|b|s|o|e)\:(.*)$/,b=l.exec(unescape(g)),h,d,a,k,e,j;if(!b||!b[1]){return}d=b[1];g=b[2];switch(d){case"e":return null;case"n":return parseFloat(g);case"d":return new Date(Date.parse(g));case"b":return(g=="1");case"a":h=[];if(g!=""){k=g.split("^");e=k.length;for(j=0;je){r=l;o=true}if(g&&a>q){n=a;o=true}if(m||g){k=u.el.getStyle("overtflow");if(k!=="hidden"){u.el.setStyle("overflow","hidden")}}if(o){b=!Ext.isNumber(u.width);t=!Ext.isNumber(u.height);u.setSize(n,r);u.el.setSize(q,e);if(b){delete u.width}if(t){delete u.height}}if(g){d.width=a}if(m){d.height=l}}j=u.constrain;p=u.constrainHeader;if(j||p){u.constrain=u.constrainHeader=false;s=c.callback;c.callback=function(){u.constrain=j;u.constrainHeader=p;if(s){s.call(c.scope||u,arguments)}if(k!=="hidden"){u.el.setStyle("overflow",k)}}}return u.mixins.animate.animate.apply(u,arguments)},setHiddenState:function(a){var b=this.getHierarchyState();this.hidden=a;if(a){b.hidden=true}else{delete b.hidden}},onHide:function(){if(this.ownerLayout){this.updateLayout({isRoot:false})}},onShow:function(){this.updateLayout({isRoot:false})},constructPlugin:function(b){var a=this;if(typeof b=="string"){b=Ext.PluginManager.create({},b,a)}else{b=Ext.PluginManager.create(b,null,a)}return b},constructPlugins:function(){var e=this,c=e.plugins,b,d,a;if(c){b=[];if(!Ext.isArray(c)){c=[c]}for(d=0,a=c.length;d=0;a--){if((g=d.getAt(a)).is(b)){return g}}}else{if(a){return d.getAt(--a)}}}}return null},previousNode:function(b,d){var j=this,h=j.ownerCt,a,g,e,c;if(d&&j.is(b)){return j}if(h){for(g=h.items.items,e=Ext.Array.indexOf(g,j)-1;e>-1;e--){c=g[e];if(c.query){a=c.query(b);a=a[a.length-1];if(a){return a}}if(c.is(b)){return c}}return h.previousNode(b,true)}return null},nextNode:function(d,j){var b=this,c=b.ownerCt,k,e,h,g,a;if(j&&b.is(d)){return b}if(c){for(e=c.items.items,g=Ext.Array.indexOf(e,b)+1,h=e.length;g=8){a=new XDomainRequest()}else{Ext.Error.raise({msg:"Your browser does not support CORS"})}return a},getXhrInstance:(function(){var b=[function(){return new XMLHttpRequest()},function(){return new ActiveXObject("MSXML2.XMLHTTP.3.0")},function(){return new ActiveXObject("MSXML2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")}],c=0,a=b.length,g;for(;c=200&&a<300)||a==304,b=false;if(!c){switch(a){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:b=true;break}}return{success:c,isException:b}},createResponse:function(e){var j=this,l=e.xhr,c=j.isXdr,b={},m=c?[]:l.getAllResponseHeaders().replace(/\r\n/g,"\n").split("\n"),h=m.length,n,g,k,d,a;while(h--){n=m[h];g=n.indexOf(":");if(g>=0){k=n.substr(0,g).toLowerCase();if(n.charAt(g+1)==" "){++g}b[k]=n.substr(g+1)}}e.xhr=null;delete e.xhr;d={request:e,requestId:e.id,status:l.status,statusText:l.statusText,getResponseHeader:function(o){return b[o.toLowerCase()]},getAllResponseHeaders:function(){return b}};if(c){j.processXdrResponse(d,l)}if(e.binary){d.responseBytes=j.getByteArray(l)}else{d.responseText=l.responseText;d.responseXML=l.responseXML}l=null;return d},createException:function(a){return{request:a,requestId:a.id,status:a.aborted?-1:0,statusText:a.aborted?"transaction aborted":"communication failure",aborted:a.aborted,timedout:a.timedout}},getByteArray:function(k){var c=k.response,j=k.responseBody,b,g,a,d;if(k instanceof Ext.data.flash.BinaryXhr){b=k.responseBytes}else{if(window.Uint8Array){b=c?new Uint8Array(c):[]}else{if(Ext.isIE9p){try{b=new VBArray(j).toArray()}catch(h){b=[]}}else{if(Ext.isIE){if(!this.self.vbScriptInjected){this.injectVBScript()}getIEByteArray(k.responseBody,b=[])}else{b=[];g=k.responseText;a=g.length;for(d=0;d1){c.overflowY=a||""}}if(c.rendered){c.getOverflowEl().setStyle(c.getOverflowStyle())}c.updateLayout();return c},beforeRender:function(){var b=this,c=b.floating,a;if(c){b.addCls(Ext.baseCSSPrefix+"layer");a=c.cls;if(a){b.addCls(a)}}return b.callParent()},beforeLayout:function(){this.callParent(arguments);if(this.floating){this.onBeforeFloatLayout()}},afterComponentLayout:function(){this.callParent(arguments);if(this.floating){this.onAfterFloatLayout()}},makeFloating:function(a){this.mixins.floating.constructor.call(this,a)},wrapPrimaryEl:function(a){if(this.floating){this.makeFloating(a)}else{this.callParent(arguments)}},initResizable:function(a){var b=this;a=Ext.apply({target:b,dynamic:false,constrainTo:b.constrainTo||(b.floatParent?b.floatParent.getTargetEl():null),handles:b.resizeHandles},a);a.target=b;b.resizer=new Ext.resizer.Resizer(a)},getDragEl:function(){return this.el},initDraggable:function(){var c=this,a=(c.resizer&&c.resizer.el!==c.el)?c.resizerComponent=new Ext.Component({el:c.resizer.el,rendered:true,container:c.container}):c,b=Ext.applyIf({el:a.getDragEl(),constrainTo:(c.constrain||c.draggable.constrain)?(c.constrainTo||(c.floatParent?c.floatParent.getTargetEl():c.container)):undefined},c.draggable);if(c.constrain||c.constrainDelegate){b.constrain=c.constrain;b.constrainDelegate=c.constrainDelegate}c.dd=new Ext.util.ComponentDragger(a,b)},scrollBy:function(b,a,c){var d;if((d=this.getTargetEl())&&d.dom){d.scrollBy.apply(d,arguments)}},setLoading:function(c,d){var b=this,a={target:b};if(b.rendered){Ext.destroy(b.loadMask);b.loadMask=null;if(c!==false&&!b.collapsed){if(Ext.isObject(c)){Ext.apply(a,c)}else{if(Ext.isString(c)){a.msg=c}}if(d){Ext.applyIf(a,{useTargetEl:true})}b.loadMask=new Ext.LoadMask(a);b.loadMask.show()}}return b.loadMask},beforeSetPosition:function(){var b=this,c=b.callParent(arguments),a;if(c){a=b.adjustPosition(c.x,c.y);c.x=a.x;c.y=a.y}return c||null},afterSetPosition:function(b,a){this.onPosition(b,a);this.fireEvent("move",this,b,a)},showAt:function(a,d,b){var c=this;if(!c.rendered&&(c.autoRender||c.floating)){c.x=a;c.y=d;return c.show()}if(c.floating){c.setPosition(a,d,b)}else{c.setPagePosition(a,d,b)}c.show()},showBy:function(b,d,c){var a=this;if(a.floating&&b){a.show();if(a.rendered&&!a.hidden){a.alignTo(b,d||a.defaultAlign,c)}}return a},setPagePosition:function(a,g,b){var c=this,d,e;if(Ext.isArray(a)){g=a[1];a=a[0]}c.pageX=a;c.pageY=g;if(c.floating){if(c.isContainedFloater()){e=c.floatParent.getTargetEl().getViewRegion();if(Ext.isNumber(a)&&Ext.isNumber(e.left)){a-=e.left}if(Ext.isNumber(g)&&Ext.isNumber(e.top)){g-=e.top}}else{d=c.el.translateXY(a,g);a=d.x;g=d.y}c.setPosition(a,g,b)}else{d=c.el.translateXY(a,g);c.setPosition(d.x,d.y,b)}return c},isContainedFloater:function(){return(this.floating&&this.floatParent)},updateBox:function(a){this.setSize(a.width,a.height);this.setPagePosition(a.x,a.y);return this},getOuterSize:function(){var a=this.el;return{width:a.getWidth()+a.getMargin("lr"),height:a.getHeight()+a.getMargin("tb")}},adjustPosition:function(a,d){var b=this,c;if(b.isContainedFloater()){c=b.floatParent.getTargetEl().getViewRegion();a+=c.left;d+=c.top}return{x:a,y:d}},getPosition:function(a){var b=this,d,c=b.isContainedFloater(),e;if((a===true)&&!c){return[b.getLocalX(),b.getLocalY()]}d=b.getXY();if((a===true)&&c){e=b.floatParent.getTargetEl().getViewRegion();d[0]-=e.left;d[1]-=e.top}return d},getId:function(){var a=this,b;if(!a.id){b=a.getXType();if(b){b=b.replace(Ext.Component.INVALID_ID_CHARS_Re,"-")}else{b=Ext.name.toLowerCase()+"-comp"}a.id=b+"-"+a.getAutoId()}return a.id},show:function(d,a,b){var c=this,e=c.rendered;if(c.hierarchicallyHidden||(c.floating&&!e&&c.isHierarchicallyHidden())){if(!e){c.initHierarchyEvents()}if(arguments.length>1){arguments[0]=null;c.pendingShow=arguments}else{c.pendingShow=true}}else{if(e&&c.isVisible()){if(c.toFrontOnShow&&c.floating){c.toFront()}}else{if(c.fireEvent("beforeshow",c)!==false){c.hidden=false;delete this.getHierarchyState().hidden;Ext.suspendLayouts();if(!e&&(c.autoRender||c.floating)){c.doAutoRender();e=c.rendered}if(e){c.beforeShow();Ext.resumeLayouts();c.onShow.apply(c,arguments);c.afterShow.apply(c,arguments)}else{Ext.resumeLayouts(true)}}else{c.onShowVeto()}}}return c},onShowVeto:Ext.emptyFn,beforeShow:Ext.emptyFn,onShow:function(){var a=this;a.el.show();a.callParent(arguments);if(a.floating){if(a.maximized){a.fitContainer()}else{if(a.constrain){a.doConstrain()}}}},getAnimateTarget:function(a){a=a||this.animateTarget;if(a){a=a.isComponent?a.getEl():Ext.get(a)}return a||null},afterShow:function(h,b,e){var g=this,j=g.el,a,c,d;h=g.getAnimateTarget(h);if(!g.ghost){h=null}if(h){c={x:j.getX(),y:j.getY(),width:j.dom.offsetWidth,height:j.dom.offsetHeight};a={x:h.getX(),y:h.getY(),width:h.dom.offsetWidth,height:h.dom.offsetHeight};j.addCls(g.offsetsCls);d=g.ghost();d.el.stopAnimation();d.setX(-10000);g.ghostBox=c;d.el.animate({from:a,to:c,listeners:{afteranimate:function(){delete d.componentLayout.lastComponentSize;g.unghost();delete g.ghostBox;j.removeCls(g.offsetsCls);g.onShowComplete(b,e)}}})}else{g.onShowComplete(b,e)}g.fireHierarchyEvent("show")},onShowComplete:function(a,b){var c=this;if(c.floating){c.toFront();c.onFloatShow()}Ext.callback(a,b||c);c.fireEvent("show",c);delete c.hiddenByLayout},hide:function(e,b,c){var d=this,a;if(d.pendingShow){delete d.pendingShow}if(!(d.rendered&&!d.isVisible())){a=(d.fireEvent("beforehide",d)!==false);if(d.hierarchicallyHidden||a){d.hidden=true;d.getHierarchyState().hidden=true;if(d.rendered){d.onHide.apply(d,arguments)}}}return d},onHide:function(h,a,e){var g=this,c,d,b;h=g.getAnimateTarget(h);if(!g.ghost){h=null}if(h){b={x:h.getX(),y:h.getY(),width:h.dom.offsetWidth,height:h.dom.offsetHeight};c=g.ghost();c.el.stopAnimation();d=g.getSize();c.el.animate({to:b,listeners:{afteranimate:function(){delete c.componentLayout.lastComponentSize;c.el.hide();c.el.setSize(d);g.afterHide(a,e)}}})}g.el.hide();if(!h){g.afterHide(a,e)}},afterHide:function(a,b){var c=this,d=Ext.Element.getActiveElement();c.hiddenByLayout=null;Ext.AbstractComponent.prototype.onHide.call(c);if(d===c.el||c.el.contains(d)){Ext.fly(d).blur()}Ext.callback(a,b||c);c.fireEvent("hide",c);c.fireHierarchyEvent("hide")},onDestroy:function(){var a=this;if(a.rendered){Ext.destroy(a.dd,a.resizer,a.proxy,a.proxyWrap,a.resizerComponent)}delete a.focusTask;a.callParent()},deleteMembers:function(){var b=arguments,a=b.length,c=0;for(;c=0){n=o[l].splitterDelta;if(j.getAt(h+n)!==a){j.remove(a);h=j.indexOf(k);if(n>0){++h}j.insert(h,a)}}}if(m){if(e){k.expand(false)}b.remove(m);k.placeholder=null;if(e){k.collapse(null,false)}}b.updateLayout();Ext.resumeLayouts(true);k.fireEventArgs("changeregion",[k,d])}else{k.region=l}}return d},setRegionWeight:function(d){var c=this,b=c.getOwningBorderContainer(),e=c.placeholder,a=c.weight;if(d!==a){if(c.fireEventArgs("beforechangeweight",[c,d])!==false){c.weight=d;if(e){e.weight=d}if(b){b.updateLayout()}c.fireEventArgs("changeweight",[c,a])}}return a}});(Ext.cmd.derive("Ext.ElementLoader",Ext.Base,{statics:{Renderer:{Html:function(a,b,c){a.getTarget().update(b.responseText,c.scripts===true);return true}}},url:null,params:null,baseParams:null,autoLoad:false,target:null,loadMask:false,ajaxOptions:null,scripts:false,isLoader:true,constructor:function(b){var c=this,a;b=b||{};Ext.apply(c,b);c.setTarget(c.target);c.addEvents("beforeload","exception","load");c.mixins.observable.constructor.call(c);if(c.autoLoad){a=c.autoLoad;if(a===true){a={}}c.load(a)}},setTarget:function(b){var a=this;b=Ext.get(b);if(a.target&&a.target!=b){a.abort()}a.target=b},getTarget:function(){return this.target||null},abort:function(){var a=this.active;if(a!==undefined){Ext.Ajax.abort(a.request);if(a.mask){this.removeMask()}delete this.active}},removeMask:function(){this.target.unmask()},addMask:function(a){this.target.mask(a===true?null:a)},load:function(c){c=Ext.apply({},c);var e=this,a=Ext.isDefined(c.loadMask)?c.loadMask:e.loadMask,g=Ext.apply({},c.params),b=Ext.apply({},c.ajaxOptions),h=c.callback||e.callback,d=c.scope||e.scope||e;Ext.applyIf(b,e.ajaxOptions);Ext.applyIf(c,b);Ext.applyIf(g,e.params);Ext.apply(g,e.baseParams);Ext.applyIf(c,{url:e.url});Ext.apply(c,{scope:e,params:g,callback:e.onComplete});if(e.fireEvent("beforeload",e,c)===false){return}if(a){e.addMask(a)}e.active={options:c,mask:a,scope:d,callback:h,success:c.success||e.success,failure:c.failure||e.failure,renderer:c.renderer||e.renderer,scripts:Ext.isDefined(c.scripts)?c.scripts:e.scripts};e.active.request=Ext.Ajax.request(c);e.setOptions(e.active,c)},setOptions:Ext.emptyFn,onComplete:function(b,g,a){var d=this,e=d.active,c;if(e){c=e.scope;if(g){g=d.getRenderer(e.renderer).call(d,d,a,e)!==false}if(g){Ext.callback(e.success,c,[d,a,b]);d.fireEvent("load",d,a,b)}else{Ext.callback(e.failure,c,[d,a,b]);d.fireEvent("exception",d,a,b)}Ext.callback(e.callback,c,[d,g,a,b]);if(e.mask){d.removeMask()}}delete d.active},getRenderer:function(a){if(Ext.isFunction(a)){return a}return this.statics().Renderer.Html},startAutoRefresh:function(a,b){var c=this;c.stopAutoRefresh();c.autoRefresh=setInterval(function(){c.load(b)},a)},stopAutoRefresh:function(){clearInterval(this.autoRefresh);delete this.autoRefresh},isAutoRefreshing:function(){return Ext.isDefined(this.autoRefresh)},destroy:function(){var a=this;a.stopAutoRefresh();delete a.target;a.abort();a.clearListeners()}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext,"ElementLoader"],0));(Ext.cmd.derive("Ext.ComponentLoader",Ext.ElementLoader,{statics:{Renderer:{Data:function(a,b,d){var g=true;try{a.getTarget().update(Ext.decode(b.responseText))}catch(c){g=false}return g},Component:function(a,c,h){var j=true,g=a.getTarget(),b=[];try{b=Ext.decode(c.responseText)}catch(d){j=false}if(j){g.suspendLayouts();if(h.removeAll){g.removeAll()}g.add(b);g.resumeLayouts(true)}return j}}},target:null,loadMask:false,renderer:"html",setTarget:function(b){var a=this;if(Ext.isString(b)){b=Ext.getCmp(b)}if(a.target&&a.target!=b){a.abort()}a.target=b},removeMask:function(){this.target.setLoading(false)},addMask:function(a){this.target.setLoading(a)},setOptions:function(b,a){b.removeAll=Ext.isDefined(a.removeAll)?a.removeAll:this.removeAll},getRenderer:function(b){if(Ext.isFunction(b)){return b}var a=this.statics().Renderer;switch(b){case"component":return a.Component;case"data":return a.Data;default:return Ext.ElementLoader.Renderer.Html}}},0,0,0,0,0,0,[Ext,"ComponentLoader"],0));(Ext.cmd.derive("Ext.layout.SizeModel",Ext.Base,{constructor:function(c){var e=this,d=e.self,a=d.sizeModelsArray,b;Ext.apply(e,c);e[b=e.name]=true;e.fixed=!(e.auto=e.natural||e.shrinkWrap);a[e.ordinal=a.length]=d[b]=d.sizeModels[b]=e},statics:{sizeModelsArray:[],sizeModels:{}},calculated:false,configured:false,constrainedMax:false,constrainedMin:false,natural:false,shrinkWrap:false,calculatedFromConfigured:false,calculatedFromNatural:false,calculatedFromShrinkWrap:false,names:null},1,0,0,0,0,0,[Ext.layout,"SizeModel"],function(){var e=this,a=e.sizeModelsArray,c,b,h,g,d;new e({name:"calculated"});new e({name:"configured",names:{width:"width",height:"height"}});new e({name:"natural"});new e({name:"shrinkWrap"});new e({name:"calculatedFromConfigured",configured:true,names:{width:"width",height:"height"}});new e({name:"calculatedFromNatural",natural:true});new e({name:"calculatedFromShrinkWrap",shrinkWrap:true});new e({name:"constrainedMax",configured:true,constrained:true,names:{width:"maxWidth",height:"maxHeight"}});new e({name:"constrainedMin",configured:true,constrained:true,names:{width:"minWidth",height:"minHeight"}});new e({name:"constrainedDock",configured:true,constrained:true,constrainedByMin:true,names:{width:"dockConstrainedWidth",height:"dockConstrainedHeight"}});for(c=0,h=a.length;c','
    ',"{%this.renderBody(out,values)%}","
    ","","{% } else if (values.shrinkWrapWidth) { %}",'',"",'","","
    ',"{%this.renderBody(out,values)%}",'
    ',"
    ","{% } else { %}",'
    ','
    ',"{%this.renderBody(out,values)%}",'
    ',"
    ","
    ","{% values.$layout.isShrinkWrapTpl = false %}","{% } %}"],tableTpl:['',"",'","","
    ',"
    "],isShrinkWrapTpl:true,beginLayout:function(e){var d=this,a,b,c,g;d.callParent(arguments);d.initContextItems(e);if(!d.isShrinkWrapTpl){if(e.widthModel.shrinkWrap){g=true}if(Ext.isStrict&&Ext.isIE7){c=d.getOverflowXStyle(e);if((c==="auto"||c==="scroll")&&e.paddingContext.getPaddingInfo().right){g=true}}if(g){d.insertTableCt(e)}}if(!d.isShrinkWrapTpl&&Ext.isIE7&&Ext.isStrict&&!d.clearElHasPadding){a=e.paddingContext.getPaddingInfo().bottom;b=d.getOverflowYStyle(e);if(a&&(b==="auto"||b==="scroll")){d.clearEl.setStyle("height",a);d.clearElHasPadding=true}}},beforeLayoutCycle:function(c){var a=this.owner,d=a.hierarchyState,b=a.hierarchyStateInner;if(!d||d.invalid){d=a.getHierarchyState();b=a.hierarchyStateInner}if(c.widthModel.shrinkWrap&&this.isShrinkWrapTpl){b.inShrinkWrapTable=true}else{delete b.inShrinkWrapTable}},beginLayoutCycle:function(h){var m=this,c=m.outerCt,l=m.lastOuterCtWidth||"",k=m.lastOuterCtHeight||"",n=m.lastOuterCtTableLayout||"",b=h.state,o,g,j,p,d,a,e;m.callParent(arguments);j=p=d="";if(!h.widthModel.shrinkWrap&&m.isShrinkWrapTpl){if(Ext.isIE7m&&Ext.isStrict){g=m.getOverflowYStyle(h);if(g==="auto"||g==="scroll"){a=true}}if(!a){j="100%"}e=m.owner.hierarchyStateInner;o=m.getOverflowXStyle(h);d=(e.inShrinkWrapTable||o==="auto"||o==="scroll")?"":"fixed"}if(!h.heightModel.shrinkWrap&&!Ext.supports.PercentageHeightOverflowBug){p="100%"}if((j!==l)||m.hasOuterCtPxWidth){c.setStyle("width",j);m.lastOuterCtWidth=j;m.hasOuterCtPxWidth=false}if(d!==n){c.setStyle("table-layout",d);m.lastOuterCtTableLayout=d}if((p!==k)||m.hasOuterCtPxHeight){c.setStyle("height",p);m.lastOuterCtHeight=p;m.hasOuterCtPxHeight=false}if(m.hasInnerCtPxHeight){m.innerCt.setStyle("height","");m.hasInnerCtPxHeight=false}b.overflowAdjust=b.overflowAdjust||m.lastOverflowAdjust},calculate:function(c){var a=this,b=c.state,e=a.getContainerSize(c,true),d=b.calculatedItems||(b.calculatedItems=a.calculateItems?a.calculateItems(c,e):true);a.setCtSizeIfNeeded(c,e);if(d&&c.hasDomProp("containerChildrenSizeDone")){a.calculateContentSize(c);if(e.gotAll){if(a.manageOverflow&&!c.state.secondPass&&!a.reserveScrollbar){a.calculateOverflow(c,e)}return}}a.done=false},calculateContentSize:function(g){var e=this,a=((g.widthModel.shrinkWrap?1:0)|(g.heightModel.shrinkWrap?2:0)),c=(a&1)||undefined,h=(a&2)||undefined,d=0,b=g.props;if(c){if(isNaN(b.contentWidth)){++d}else{c=undefined}}if(h){if(isNaN(b.contentHeight)){++d}else{h=undefined}}if(d){if(c&&!g.setContentWidth(e.measureContentWidth(g))){e.done=false}if(h&&!g.setContentHeight(e.measureContentHeight(g))){e.done=false}}},calculateOverflow:function(c){var h=this,b,k,a,g,e,d,j;e=(h.getOverflowXStyle(c)==="auto");d=(h.getOverflowYStyle(c)==="auto");if(e||d){a=Ext.getScrollbarSize();j=c.overflowContext.el.dom;g=0;if(j.scrollWidth>j.clientWidth){g|=1}if(j.scrollHeight>j.clientHeight){g|=2}b=(d&&(g&2))?a.width:0;k=(e&&(g&1))?a.height:0;if(b!==h.lastOverflowAdjust.width||k!==h.lastOverflowAdjust.height){h.done=false;c.invalidate({state:{overflowAdjust:{width:b,height:k},overflowState:g,secondPass:true}})}}},completeLayout:function(a){this.lastOverflowAdjust=a.state.overflowAdjust},doRenderPadding:function(b,d){var c=d.$layout,a=d.$layout.owner,e=a[a.contentPaddingProperty];if(c.managePadding&&e){b.push("padding:",a.unitizeBox(e))}},finishedLayout:function(b){var a=this.innerCt;this.callParent(arguments);if(Ext.isIEQuirks||Ext.isIE8m){a.repaint()}if(Ext.isOpera){a.setStyle("position","relative");a.dom.scrollWidth;a.setStyle("position","")}},getContainerSize:function(b,c){var a=this.callParent(arguments),d=b.state.overflowAdjust;if(d){a.width-=d.width;a.height-=d.height}return a},getRenderData:function(){var a=this.owner,b=this.callParent();if((Ext.isIEQuirks||Ext.isIE7m)&&((a.shrinkWrap&1)||(a.floating&&!a.width))){b.shrinkWrapWidth=true}return b},getRenderTarget:function(){return this.innerCt},getElementTarget:function(){return this.innerCt},getOverflowXStyle:function(a){return a.overflowXStyle||(a.overflowXStyle=this.owner.scrollFlags.overflowX||a.overflowContext.getStyle("overflow-x"))},getOverflowYStyle:function(a){return a.overflowYStyle||(a.overflowYStyle=this.owner.scrollFlags.overflowY||a.overflowContext.getStyle("overflow-y"))},initContextItems:function(c){var b=this,d=c.target,a=b.owner.customOverflowEl;c.outerCtContext=c.getEl("outerCt",b);c.innerCtContext=c.getEl("innerCt",b);if(a){c.overflowContext=c.getEl(a)}else{c.overflowContext=c.targetContext}if(d[d.contentPaddingProperty]!==undefined){c.paddingContext=b.isShrinkWrapTpl?c.innerCtContext:c.outerCtContext}},initLayout:function(){var c=this,b=Ext.getScrollbarSize().width,a=c.owner;c.callParent();if(b&&c.manageOverflow&&!c.hasOwnProperty("lastOverflowAdjust")){if(a.autoScroll||c.reserveScrollbar){c.lastOverflowAdjust={width:b,height:0}}}},insertTableCt:function(b){var h=this,a=h.owner,c=0,e,g,k,d,j;e=Ext.XTemplate.getTpl(this,"tableTpl");e.renderPadding=h.doRenderPadding;h.outerCt.dom.removeChild(h.innerCt.dom);g=document.createDocumentFragment();k=h.innerCt.dom.childNodes;d=k.length;for(;ck.dom.clientHeight)){m-=q.width}}d.outerCtContext.setProp("width",m+g.width);t.hasOuterCtPxWidth=true}if(j&&!d.heightModel.shrinkWrap){if(Ext.supports.PercentageHeightOverflowBug){s=true}if(((Ext.isIE8&&Ext.isStrict)||Ext.isIE7m&&Ext.isStrict&&r)){h=true;c=!Ext.isIE8}if((s||h)&&p&&(k.dom.scrollWidth>k.dom.clientWidth)){j=Math.max(j-q.height,0)}if(s){d.outerCtContext.setProp("height",j+g.height);t.hasOuterCtPxHeight=true}if(h){if(c){j+=g.height}d.innerCtContext.setProp("height",j);t.hasInnerCtPxHeight=true}}if(Ext.isIE7&&Ext.isStrict&&!r&&(l==="auto")){a=(e==="auto")?"overflow-x":"overflow-y";k.setStyle(a,"hidden");k.setStyle(a,"auto")}},setupRenderTpl:function(a){this.callParent(arguments);a.renderPadding=this.doRenderPadding},getContentTarget:function(){return this.innerCt}},0,0,0,0,["layout.auto","layout.autocontainer"],0,[Ext.layout.container,"Auto"],function(){this.prototype.chromeCellMeasureBug=Ext.isChrome&&Ext.chromeVersion>=26}));(Ext.cmd.derive("Ext.ZIndexManager",Ext.Base,{alternateClassName:"Ext.WindowGroup",statics:{zBase:9000},constructor:function(a){var b=this;b.list={};b.zIndexStack=[];b.front=null;if(a){if(a.isContainer){a.on("resize",b._onContainerResize,b);b.zseed=Ext.Number.from(b.rendered?a.getEl().getStyle("zIndex"):undefined,b.getNextZSeed());b.targetEl=a.getTargetEl();b.container=a}else{Ext.EventManager.onWindowResize(b._onContainerResize,b);b.zseed=b.getNextZSeed();b.targetEl=Ext.get(a)}}else{Ext.EventManager.onWindowResize(b._onContainerResize,b);b.zseed=b.getNextZSeed();Ext.onDocumentReady(function(){b.targetEl=Ext.getBody()})}},getNextZSeed:function(){return(Ext.ZIndexManager.zBase+=10000)},setBase:function(b){this.zseed=b;var a=this.assignZIndices();this._activateLast();return a},assignZIndices:function(){var c=this.zIndexStack,b=c.length,e=0,h=this.zseed,d,g;for(;e=0&&a[c].hidden;--c){}if((b=a[c])){d._setActiveChild(b,d.front);if(b.modal){return}}else{if(d.front&&!d.front.destroying){d.front.setActive(false)}d.front=null}for(;c>=0;--c){b=a[c];if(b.isVisible()&&b.modal){d._showModalMask(b);return}}d._hideModalMask()},_showModalMask:function(b){var d=this,h=b.el.getStyle("zIndex")-4,c=b.floatParent?b.floatParent.getTargetEl():b.container,a=d.mask,g=d.maskShim,e;if(!a){if(Ext.isIE6){g=d.maskShim=Ext.getBody().createChild({tag:"iframe",cls:Ext.baseCSSPrefix+"shim "+Ext.baseCSSPrefix+"mask-shim"});g.setVisibilityMode(Ext.Element.DISPLAY)}a=d.mask=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"mask",style:"height:0;width:0"});a.setVisibilityMode(Ext.Element.DISPLAY);a.on("click",d._onMaskClick,d)}a.maskTarget=c;e=d.getMaskBox();if(g){g.setStyle("zIndex",h);g.show();g.setBox(e)}a.setStyle("zIndex",h);a.show();a.setBox(e)},_hideModalMask:function(){var b=this.mask,a=this.maskShim;if(b&&b.isVisible()){b.maskTarget=undefined;b.hide();if(a){a.hide()}}},_onMaskClick:function(){if(this.front){this.front.focus()}},getMaskBox:function(){var a=this.mask.maskTarget;if(a.dom===document.body){return{height:Math.max(document.body.scrollHeight,Ext.dom.Element.getDocumentHeight()),width:Math.max(document.body.scrollWidth,document.documentElement.clientWidth),x:0,y:0}}else{return a.getBox()}},_onContainerResize:function(){var c=this,b=c.mask,a=c.maskShim,d;if(b&&b.isVisible()){b.hide();if(a){a.hide()}d=c.getMaskBox();if(a){a.setSize(d);a.show()}b.setSize(d);b.show()}},register:function(b){var c=this,a=b.afterHide;if(b.zIndexManager){b.zIndexManager.unregister(b)}b.zIndexManager=c;c.list[b.id]=b;c.zIndexStack.push(b);b.afterHide=function(){a.apply(b,arguments);c.onComponentHide(b)}},unregister:function(a){var b=this,c=b.list;delete a.zIndexManager;if(c&&c[a.id]){delete c[a.id];delete a.afterHide;Ext.Array.remove(b.zIndexStack,a);b._activateLast()}},get:function(a){return a.isComponent?a:this.list[a]},bringToFront:function(b,d){var c=this,a=false,e=c.zIndexStack;b=c.get(b);if(b!==c.front){Ext.Array.remove(e,b);if(b.preventBringToFront){e.unshift(b)}else{e.push(b)}c.assignZIndices();if(!d){c._activateLast()}a=true;c.front=b;if(b.modal){c._showModalMask(b)}}return a},sendToBack:function(a){var b=this;a=b.get(a);Ext.Array.remove(b.zIndexStack,a);b.zIndexStack.unshift(a);b.assignZIndices();this._activateLast();return a},hideAll:function(){var b=this.list,a,c;for(c in b){if(b.hasOwnProperty(c)){a=b[c];if(a.isComponent&&a.isVisible()){a.hide()}}}},hide:function(){var d=0,b=this.zIndexStack,a=b.length,c;this.tempHidden=[];for(;d0;){b=a[c];if(b.isComponent&&e.call(d||b,b)===false){return}}},destroy:function(){var b=this,c=b.list,a,d;for(d in c){if(c.hasOwnProperty(d)){a=c[d];if(a.isComponent){a.destroy()}}}delete b.zIndexStack;delete b.list;delete b.container;delete b.targetEl}},1,0,0,0,0,0,[Ext,"ZIndexManager",Ext,"WindowGroup"],function(){Ext.WindowManager=Ext.WindowMgr=new this()}));(Ext.cmd.derive("Ext.Queryable",Ext.Base,{isQueryable:true,query:function(a){a=a||"*";return Ext.ComponentQuery.query(a,this)},queryBy:function(g,e){var c=[],b=this.getRefItems(true),d=0,a=b.length,h;for(;d "+a)[0]||null},down:function(a){if(a&&a.isComponent){a="#"+Ext.escapeId(a.getItemId())}a=a||"";return this.query(a)[0]||null},getRefItems:function(){return[]}},0,0,0,0,0,0,[Ext,"Queryable"],0));(Ext.cmd.derive("Ext.layout.component.Component",Ext.layout.Layout,{type:"component",isComponentLayout:true,nullBox:{},usesContentHeight:true,usesContentWidth:true,usesHeight:true,usesWidth:true,beginLayoutCycle:function(c,q){var l=this,b=l.owner,e=c.ownerCtContext,g=c.heightModel,h=c.widthModel,j=b.el.dom===document.body,d=b.lastBox||l.nullBox,o=b.el.lastBox||l.nullBox,a=!j,n,p,m,k;l.callParent(arguments);if(q){if(l.usesContentWidth){++c.consumersContentWidth}if(l.usesContentHeight){++c.consumersContentHeight}if(l.usesWidth){++c.consumersWidth}if(l.usesHeight){++c.consumersHeight}if(e&&!e.hasRawContent){n=b.ownerLayout;if(n.usesWidth){++c.consumersWidth}if(n.usesHeight){++c.consumersHeight}}}if(h.configured){m=h.names.width;if(!j){a=q?b[m]!==o.width:h.constrained}c.setWidth(b[m],a)}else{if(c.isTopLevel){if(h.calculated){p=d.width;c.setWidth(p,p!=o.width)}p=d.x;c.setProp("x",p,p!=o.x)}}if(g.configured){k=g.names.height;if(!j){a=q?b[k]!==o.height:g.constrained}c.setHeight(b[k],a)}else{if(c.isTopLevel){if(g.calculated){p=d.height;c.setHeight(p,p!=o.height)}p=d.y;c.setProp("y",p,p!=o.y)}}},finishedLayout:function(b){var h=this,k=b.children,a=h.owner,e,c,j,d,g;if(k){e=k.length;for(c=0;c=d){h=0}else{if(h<0){h=d-1}}if(h===e){return[]}if((k=g[h]).isFocusable()){return[k]}}return[]},prevFocus:function(e,d){return this.nextFocus(e,d,-1)},root:function(e){var d=e.length,h=[],g=0,j;for(;gd.el.getZIndex()});return c.concat(a)},initDOM:function(c){var g=this,b=g.focusFrameCls,e=Ext.ComponentQuery.query("{getFocusEl()}:not([focusListenerAdded])"),d=0,a=e.length;if(!Ext.isReady){return Ext.onReady(g.initDOM,g)}for(;d:focusable",a)[0]:a;if(d){d.focus()}else{if(Ext.isFunction(a.onClick)){g.button=0;a.onClick(g);if(a.isVisible(true)){a.focus()}else{c.navigateOut()}}}}},navigateOut:function(c){var b=this,a;if(!b.focusedCmp||!(a=b.focusedCmp.up(":focusable"))){b.focusEl.focus()}else{a.focus()}return true},navigateSiblings:function(j,b,p){var k=this,a=b||k,q=j.getKey(),g=Ext.EventObject,l=j.shiftKey||q==g.LEFT||q==g.UP,c=q==g.LEFT||q==g.RIGHT||q==g.UP||q==g.DOWN,h=l?"prev":"next",o,d,n,m;n=(a.focusedCmp&&a.focusedCmp.comp)||a.focusedCmp;if(!n&&!p){return true}if(c&&k.isWhitelisted(n)){return true}if(!n||n.is(":root")){m=k.getRootComponents()}else{p=p||n.up();if(p){m=p.getRefItems()}}if(m){o=n?Ext.Array.indexOf(m,n):-1;d=Ext.ComponentQuery.query(":"+h+"Focus("+o+")",m)[0];if(d&&n!==d){d.focus();return d}}},onComponentBlur:function(b,c){var a=this;if(a.focusedCmp===b){a.previousFocusedCmp=b;delete a.focusedCmp}if(a.focusFrame){a.focusFrame.hide()}},onComponentFocus:function(d,g){var c=this,a=c.focusChain,b;if(!d.isFocusable()){c.clearComponent(d);if(a[d.id]){return}b=d.up();if(b){a[d.id]=true;b.focus()}return}c.focusChain={};c.focusTask.delay(10,null,null,[d,d.getFocusEl()])},handleComponentFocus:function(m,h){var k=this,p,a,g,o,b,l,d,e,c,n,j;if(k.fireEvent("beforecomponentfocus",k,m,k.previousFocusedCmp)===false){k.clearComponent(m);return}k.focusedCmp=m;if(k.shouldShowFocusFrame(m)){p="."+k.focusFrameCls+"-";a=k.focusFrame;g=(h.dom?h:h.el).getBox();o=g.top;b=g.left;l=g.width;d=g.height;e=a.child(p+"top");c=a.child(p+"bottom");n=a.child(p+"left");j=a.child(p+"right");e.setWidth(l).setLocalXY(b,o);c.setWidth(l).setLocalXY(b,o+d-2);n.setHeight(d-2).setLocalXY(b,o+2);j.setHeight(d-2).setLocalXY(b+l-2,o+2);a.show()}k.fireEvent("componentfocus",k,m,k.previousFocusedCmp)},onComponentHide:function(e){var d=this,b=false,a=d.focusedCmp,c;if(a){b=e.hasFocus||(e.isContainer&&e.isAncestor(d.focusedCmp))}d.clearComponent(e);if(b&&(c=e.up(":focusable"))){c.focus()}else{d.focusEl.focus()}},onComponentDestroy:function(){},removeDOM:function(){var a=this;if(a.enabled||a.subscribers.length){return}Ext.destroy(a.focusFrame);delete a.focusEl;delete a.focusFrame},removeXTypeFromWhitelist:function(b){var a=this;if(Ext.isArray(b)){Ext.Array.forEach(b,a.removeXTypeFromWhitelist,a);return}Ext.Array.remove(a.whitelist,b)},setupSubscriberKeys:function(a,g){var e=this,d=a.getFocusEl(),c=g.scope,b={backspace:e.focusLast,enter:e.navigateIn,esc:e.navigateOut,scope:e},h=function(j){if(e.focusedCmp===a){return e.navigateSiblings(j,e,a)}else{return e.navigateSiblings(j)}};Ext.iterate(g,function(k,j){b[k]=function(m){var l=h(m);if(Ext.isFunction(j)&&j.call(c||a,m,l)===true){return true}return l}},e);return new Ext.util.KeyNav(d,b)},shouldShowFocusFrame:function(c){var b=this,a=b.options||{};if(!b.focusFrame||!c){return false}if(a.focusFrame){return true}if(b.focusData[c.id].focusFrame){return true}return false}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext,"FocusManager",Ext,"FocusMgr"],0));(Ext.cmd.derive("Ext.Img",Ext.Component,{autoEl:"img",baseCls:Ext.baseCSSPrefix+"img",src:"",alt:"",title:"",imgCls:"",initComponent:function(){if(this.glyph){this.autoEl="div"}this.callParent()},getElConfig:function(){var e=this,b=e.callParent(),g=Ext._glyphFontFamily,d=e.glyph,a,c;if(e.autoEl=="img"){a=b}else{if(e.glyph){if(typeof d==="string"){c=d.split("@");d=c[0];g=c[1]}b.html="&#"+d+";";if(g){b.style="font-family:"+g}}else{b.cn=[a={tag:"img",id:e.id+"-img"}]}}if(a){if(e.imgCls){a.cls=(a.cls?a.cls+" ":"")+e.imgCls}a.src=e.src||Ext.BLANK_IMAGE_URL}if(e.alt){(a||b).alt=e.alt}if(e.title){(a||b).title=e.title}return b},onRender:function(){var b=this,a;b.callParent(arguments);a=b.el;b.imgEl=(b.autoEl=="img")?a:a.getById(b.id+"-img")},onDestroy:function(){Ext.destroy(this.imgEl);this.imgEl=null;this.callParent()},setSrc:function(c){var a=this,b=a.imgEl;a.src=c;if(b){b.dom.src=c||Ext.BLANK_IMAGE_URL}},setGlyph:function(c){var b=this,d=Ext._glyphFontFamily,a,e;if(c!=b.glyph){if(typeof c==="string"){a=c.split("@");c=a[0];d=a[1]}e=b.el.dom;e.innerHTML="&#"+c+";";if(d){e.style="font-family:"+d}}}},0,["image","imagecomponent"],["component","image","box","imagecomponent"],{component:true,image:true,box:true,imagecomponent:true},["widget.image","widget.imagecomponent"],0,[Ext,"Img"],0));(Ext.cmd.derive("Ext.util.Bindable",Ext.Base,{bindStore:function(b,c,a){a=a||"store";var d=this,e=d[a];if(!c&&e){d.onUnbindStore(e,c,a);if(b!==e&&e.autoDestroy){e.destroyStore()}else{d.unbindStoreListeners(e)}}if(b){b=Ext.data.StoreManager.lookup(b);d.bindStoreListeners(b);d.onBindStore(b,c,a)}d[a]=b||null;return d},getStore:function(){return this.store},unbindStoreListeners:function(a){var b=this.storeListeners;if(b){a.un(b)}},bindStoreListeners:function(a){var c=this,b=Ext.apply({},c.getStoreListeners(a));if(!b.scope){b.scope=c}c.storeListeners=b;a.on(b)},getStoreListeners:Ext.emptyFn,onUnbindStore:Ext.emptyFn,onBindStore:Ext.emptyFn},0,0,0,0,0,0,[Ext.util,"Bindable"],0));(Ext.cmd.derive("Ext.LoadMask",Ext.Component,{msg:"Loading...",msgCls:Ext.baseCSSPrefix+"mask-loading",maskCls:Ext.baseCSSPrefix+"mask",useMsg:true,useTargetEl:false,baseCls:Ext.baseCSSPrefix+"mask-msg",childEls:["msgEl","msgTextEl"],renderTpl:['
    ','
    ',"
    "],floating:{shadow:"frame"},focusOnToFront:false,bringParentToFront:false,constructor:function(b){var c=this,a;if(arguments.length===2){a=b;b=arguments[1]}else{a=b.target}if(!a.isComponent){a=Ext.get(a);this.isElement=true}c.ownerCt=a;if(!this.isElement){c.bindComponent(a)}c.callParent([b]);if(c.store){c.bindStore(c.store,true)}},bindComponent:function(a){var c=this,b={scope:this,resize:c.sizeMask,added:c.onComponentAdded,removed:c.onComponentRemoved};if(a.floating){b.move=c.sizeMask;c.activeOwner=a}else{if(a.ownerCt){c.onComponentAdded(a.ownerCt)}else{c.preventBringToFront=true}}c.mon(a,b);c.mon(c.hierarchyEventSource,{show:c.onContainerShow,hide:c.onContainerHide,expand:c.onContainerExpand,collapse:c.onContainerCollapse,scope:c})},onComponentAdded:function(a){var b=this;delete b.activeOwner;b.floatParent=a;if(!a.floating){a=a.up("[floating]")}if(a){b.activeOwner=a;b.mon(a,"move",b.sizeMask,b)}else{b.preventBringToFront=true}a=b.floatParent.ownerCt;if(b.rendered&&b.isVisible()&&a){b.floatOwner=a;b.mon(a,"afterlayout",b.sizeMask,b,{single:true})}},onComponentRemoved:function(a){var c=this,d=c.activeOwner,b=c.floatOwner;if(d){c.mun(d,"move",c.sizeMask,c)}if(b){c.mun(b,"afterlayout",c.sizeMask,c)}delete c.activeOwner;delete c.floatOwner},afterRender:function(){this.callParent(arguments);this.container=this.floatParent.getContentTarget()},onContainerShow:function(a){if(this.isActiveContainer(a)){this.onComponentShow()}},onContainerHide:function(a){if(this.isActiveContainer(a)){this.onComponentHide()}},onContainerExpand:function(a){if(this.isActiveContainer(a)){this.onComponentShow()}},onContainerCollapse:function(a){if(this.isActiveContainer(a)){this.onComponentHide()}},isActiveContainer:function(a){return this.isDescendantOf(a)},onComponentHide:function(){var a=this;if(a.rendered&&a.isVisible()){a.hide();a.showNext=true}},onComponentShow:function(){if(this.showNext){this.show()}delete this.showNext},sizeMask:function(){var a=this,b;if(a.rendered&&a.isVisible()){a.center();b=a.getMaskTarget();a.getMaskEl().show().setSize(b.getSize()).alignTo(b,"tl-tl")}},bindStore:function(a,b){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);a=c.store;if(a&&a.isLoading()){c.onBeforeLoad()}},getStoreListeners:function(b){var d=this.onLoad,c=this.onBeforeLoad,a={cachemiss:c,cachefilled:d};if(!b.proxy.isSynchronous){a.beforeLoad=c;a.load=d}return a},onDisable:function(){this.callParent(arguments);if(this.loading){this.onLoad()}},getOwner:function(){return this.ownerCt||this.floatParent},getMaskTarget:function(){var a=this.getOwner();return this.useTargetEl?a.getTargetEl():a.getEl()},onBeforeLoad:function(){var c=this,a=c.getOwner(),b;if(!c.disabled){c.loading=true;if(a.componentLayoutCounter){c.maybeShow()}else{b=a.afterComponentLayout;a.afterComponentLayout=function(){a.afterComponentLayout=b;b.apply(a,arguments);c.maybeShow()}}}},maybeShow:function(){var b=this,a=b.getOwner();if(!a.isVisible(true)){b.showNext=true}else{if(b.loading&&a.rendered){b.show()}}},getMaskEl:function(){var a=this;return a.maskEl||(a.maskEl=a.el.insertSibling({cls:a.maskCls,style:{zIndex:a.el.getStyle("zIndex")-2}},"before"))},onShow:function(){var b=this,a=b.msgEl;b.callParent(arguments);b.loading=true;if(b.useMsg){a.show();b.msgTextEl.update(b.msg)}else{a.parent().hide()}},hide:function(){if(this.isElement){this.ownerCt.unmask();this.fireEvent("hide",this);return}delete this.showNext;return this.callParent(arguments)},onHide:function(){this.callParent();this.getMaskEl().hide()},show:function(){if(this.isElement){this.ownerCt.mask(this.useMsg?this.msg:"",this.msgCls);this.fireEvent("show",this);return}return this.callParent(arguments)},afterShow:function(){this.callParent(arguments);this.sizeMask()},setZIndex:function(b){var c=this,a=c.activeOwner;if(a){b=parseInt(a.el.getStyle("zIndex"),10)+1}c.getMaskEl().setStyle("zIndex",b-1);return c.mixins.floating.setZIndex.apply(c,arguments)},onLoad:function(){this.loading=false;this.hide()},onDestroy:function(){var a=this;if(a.isElement){a.ownerCt.unmask()}Ext.destroy(a.maskEl);a.callParent()}},1,["loadmask"],["component","box","loadmask"],{component:true,box:true,loadmask:true},["widget.loadmask"],[["floating",Ext.util.Floating],["bindable",Ext.util.Bindable]],[Ext,"LoadMask"],0));(Ext.cmd.derive("Ext.data.association.Association",Ext.Base,{alternateClassName:"Ext.data.Association",primaryKey:"id",associationKeyFunction:null,defaultReaderType:"json",isAssociation:true,initialConfig:null,statics:{AUTO_ID:1000,create:function(a){if(Ext.isString(a)){a={type:a}}switch(a.type){case"belongsTo":return new Ext.data.association.BelongsTo(a);case"hasMany":return new Ext.data.association.HasMany(a);case"hasOne":return new Ext.data.association.HasOne(a);default:}return a}},constructor:function(d){Ext.apply(this,d);var h=this,g=Ext.ModelManager.types,k=d.ownerModel,a=d.associatedModel,e=g[k],j=g[a],b=d.associationKey,c;if(b){c=String(b).search(/[\[\.]/);if(c>=0){h.associationKeyFunction=Ext.functionFactory("obj","return obj"+(c>0?".":"")+b)}}h.initialConfig=d;h.ownerModel=e;h.associatedModel=j;Ext.applyIf(h,{ownerName:k,associatedName:a});h.associationId="association"+(++h.statics().AUTO_ID)},getReader:function(){var c=this,a=c.reader,b=c.associatedModel;if(a){if(Ext.isString(a)){a={type:a}}if(a.isReader){a.setModel(b)}else{Ext.applyIf(a,{model:b,type:c.defaultReaderType})}c.reader=Ext.createByAlias("reader."+a.type,a)}return c.reader||null}},1,0,0,0,0,0,[Ext.data.association,"Association",Ext.data,"Association"],0));(Ext.cmd.derive("Ext.ModelManager",Ext.AbstractManager,{alternateClassName:"Ext.ModelMgr",singleton:true,typeName:"mtype",associationStack:[],registerType:function(c,b){var d=b.prototype,a;if(d&&d.isModel){a=b}else{if(!b.extend){b.extend="Ext.data.Model"}a=Ext.define(c,b)}this.types[c]=a;return a},unregisterType:function(a){delete this.types[a]},onModelDefined:function(c){var a=this.associationStack,g=a.length,e=[],b,d,h;for(d=0;d','
    {text}
    ',"",'
    ','','
    ',"
    {text}
    ","
    ","
    ","
    "],componentLayout:"progressbar",initComponent:function(){this.callParent();this.addEvents("update")},initRenderData:function(){var a=this;return Ext.apply(a.callParent(),{internalText:!a.hasOwnProperty("textEl"),text:a.text||" ",percentage:a.value?a.value*100:0})},onRender:function(){var a=this;a.callParent(arguments);if(a.textEl){a.textEl=Ext.get(a.textEl);a.updateText(a.text)}else{a.textEl=a.el.select("."+a.baseCls+"-text")}},updateProgress:function(d,e,a){var c=this,b=c.value;c.value=d||0;if(e){c.updateText(e)}if(c.rendered&&!c.isDestroyed){if(a===true||(a!==false&&c.animate)){c.bar.stopAnimation();c.bar.animate(Ext.apply({from:{width:(b*100)+"%"},to:{width:(c.value*100)+"%"}},c.animate))}else{c.bar.setStyle("width",(c.value*100)+"%")}}c.fireEvent("update",c,c.value,e);return c},updateText:function(b){var a=this;a.text=b;if(a.rendered){a.textEl.update(a.text)}return a},applyText:function(a){this.updateText(a)},getText:function(){return this.text},wait:function(c){var b=this,a;if(!b.waitTimer){a=b;c=c||{};b.updateText(c.text);b.waitTimer=Ext.TaskManager.start({run:function(d){var e=c.increment||10;d-=1;b.updateProgress(((((d+e)%e)+1)*(100/e))*0.01,null,c.animate)},interval:c.interval||1000,duration:c.duration,onStop:function(){if(c.fn){c.fn.apply(c.scope||b)}b.reset()},scope:a})}return b},isWaiting:function(){return this.waitTimer!==null},reset:function(a){var b=this;b.updateProgress(0);b.clearTimer();if(a===true){b.hide()}return b},clearTimer:function(){var a=this;if(a.waitTimer){a.waitTimer.onStop=null;Ext.TaskManager.stop(a.waitTimer);a.waitTimer=null}},onDestroy:function(){var b=this,a=b.bar;b.clearTimer();if(b.rendered){if(b.textEl.isComposite){b.textEl.clear()}Ext.destroyMembers(b,"textEl","progressBar");if(a&&b.animate){a.stopAnimation()}}b.callParent()}},0,["progressbar"],["component","progressbar","box"],{component:true,progressbar:true,box:true},["widget.progressbar"],0,[Ext,"ProgressBar"],0));(Ext.cmd.derive("Ext.ShadowPool",Ext.Base,{singleton:true,markup:(function(){return Ext.String.format('',Ext.baseCSSPrefix,Ext.isIE&&!Ext.supports.CSS3BoxShadow?"ie":"css")}()),shadows:[],pull:function(){var a=this.shadows.shift();if(!a){a=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,this.markup));a.autoBoxAdjust=false}return a},push:function(a){this.shadows.push(a)},reset:function(){var c=[].concat(this.shadows),b,a=c.length;for(b=0;b0;){p[d].hasListeners._incr_(m)}s=j[m]||(j[m]={});s=s[c]||(s[c]={});h=s[g.id]||(s[g.id]=[]);h.push(a)}}}}},match:function(c,a){var b=this.idProperty;if(b){return a==="*"||c[b]===a}return false},monitor:function(d){var b=this,a=d.isInstance?d:d.prototype,c=a.fireEventArgs;b.monitoredClasses.push(d);a.fireEventArgs=function(h,g){var e=c.apply(this,arguments);if(e!==false){e=b.dispatch(this,h,g)}return e}},unlisten:function(e){var b=this.bus,g,d,a,c;for(d in b){if(b.hasOwnProperty(d)&&(c=b[d])){for(a in c){g=c[a];delete g[e]}}}}},1,0,0,0,0,0,[Ext.app,"EventDomain"],0));(Ext.cmd.derive("Ext.app.domain.Component",Ext.app.EventDomain,{singleton:true,type:"component",constructor:function(){var a=this;a.callParent();a.monitor(Ext.Component)},match:function(b,a){return b.is(a)}},1,0,0,0,0,0,[Ext.app.domain,"Component"],0));(Ext.cmd.derive("Ext.app.EventBus",Ext.Base,{singleton:true,constructor:function(){var b=this,a=Ext.app.EventDomain.instances;b.callParent();b.domains=a;b.bus=a.component.bus},control:function(b,a){return this.domains.component.listen(b,a)},listen:function(d,b){var a=this.domains,c;for(c in d){if(d.hasOwnProperty(c)){a[c].listen(d[c],b)}}},unlisten:function(c){var a=Ext.app.EventDomain.instances,b;for(b in a){a[b].unlisten(c)}}},1,0,0,0,0,0,[Ext.app,"EventBus"],0));(Ext.cmd.derive("Ext.data.StoreManager",Ext.util.MixedCollection,{alternateClassName:["Ext.StoreMgr","Ext.data.StoreMgr","Ext.StoreManager"],singleton:true,register:function(){for(var a=0,b;(b=arguments[a]);a++){this.add(b)}},unregister:function(){for(var a=0,b;(b=arguments[a]);a++){this.remove(this.lookup(b))}},lookup:function(c){if(Ext.isArray(c)){var b=["field1"],e=!Ext.isArray(c[0]),g=c,d,a;if(e){g=[];for(d=0,a=c.length;d',' ,__field{#} = fields.map["{name}"]\n',"",";\n","return function(dest, source, record) {\n",'','{% var fieldAccessExpression = this.createFieldAccessExpression(values, "__field" + xindex, "source");'," if (fieldAccessExpression) { %}",' value = {[ this.createFieldAccessExpression(values, "__field" + xindex, "source") ]};\n','',' dest["{name}"] = value === undefined ? __field{#}.convert(__field{#}.defaultValue, record) : __field{#}.convert(value, record);\n',''," if (value === undefined) {\n"," if (me.applyDefaults) {\n",'',' dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"",' dest["{name}"] = __field{#}.defaultValue\n',""," };\n"," } else {\n",'',' dest["{name}"] = __field{#}.convert(value, record);\n',"",' dest["{name}"] = value;\n',""," };\n",""," if (value !== undefined) {\n",'',' dest["{name}"] = __field{#}.convert(value, record);\n',"",' dest["{name}"] = value;\n',""," }\n","","{% } else { %}",'','',' dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"",' dest["{name}"] = __field{#}.defaultValue\n',"","","{% } %}","",'',' if (record && (internalId = {[ this.createFieldAccessExpression({mapping: values.clientIdProp}, null, "source") ]})) {\n',' record.{["internalId"]} = internalId;\n'," }\n","","};"],buildRecordDataExtractor:function(){var c=this,a=c.model.prototype,b={clientIdProp:a.clientIdProperty,fields:a.fields.items};c.recordDataExtractorTemplate.createFieldAccessExpression=function(){return c.createFieldAccessExpression.apply(c,arguments)};return Ext.functionFactory(c.recordDataExtractorTemplate.apply(b)).call(c)},destroyReader:function(){var a=this;delete a.proxy;delete a.model;delete a.convertRecordData;delete a.getId;delete a.getTotal;delete a.getSuccess;delete a.getMessage}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.data.reader,"Reader",Ext.data,"Reader",Ext.data,"DataReader"],function(){var a=this.prototype;Ext.apply(a,{nullResultSet:new Ext.data.ResultSet({total:0,count:0,records:[],success:true,message:""}),recordDataExtractorTemplate:new Ext.XTemplate(a.recordDataExtractorTemplate)})}));(Ext.cmd.derive("Ext.data.reader.Json",Ext.data.reader.Reader,{alternateClassName:"Ext.data.JsonReader",root:"",metaProperty:"metaData",useSimpleAccessors:false,readRecords:function(b){var a=this,c;if(a.getMeta){c=a.getMeta(b);if(c){a.onMetaChange(c)}}else{if(b.metaData){a.onMetaChange(b.metaData)}}a.jsonData=b;return a.callParent([b])},getResponseData:function(a){var d,b;try{d=Ext.decode(a.responseText);return this.readRecords(d)}catch(c){b=new Ext.data.ResultSet({total:0,count:0,records:[],success:false,message:c.message});this.fireEvent("exception",this,a,b);Ext.Logger.warn("Unable to parse the JSON returned by the server");return b}},buildExtractors:function(){var b=this,a=b.metaProperty;b.callParent(arguments);if(b.root){b.getRoot=b.createAccessor(b.root)}else{b.getRoot=Ext.identityFn}if(a){b.getMeta=b.createAccessor(a)}},extractData:function(a){var e=this.record,d=[],c,b;if(e){c=a.length;if(!c&&Ext.isObject(a)){c=1;a=[a]}for(b=0;b=0){return Ext.functionFactory("obj","return obj"+(b>0?".":"")+c)}}return function(d){return d[c]}}}()),createFieldAccessExpression:(function(){var a=/[\[\.]/;return function(o,d,e){var b=o.mapping,m=b||b===0,c=m?b:o.name,p,g;if(b===false){return}if(typeof c==="function"){p=d+".mapping("+e+", this)"}else{if(this.useSimpleAccessors===true||((g=String(c).search(a))<0)){if(!m||isNaN(c)){c='"'+c+'"'}p=e+"["+c+"]"}else{if(g===0){p=e+c}else{var j=c.split("."),l=j.length,k=1,n=e+"."+j[0],h=[n];for(;k1){c[l]=d.internalId}}else{if(this.writeRecordId){e=g.get(d.idProperty)[this.nameProperty]||d.idProperty;c[e]=d.getId()}}return c},writeValue:function(e,g,b){var c=g[this.nameProperty],a=this.dateFormat||g.dateWriteFormat||g.dateFormat,d=b.get(g.name);if(c==null){c=g.name}if(g.serialize){e[c]=g.serialize(d,b)}else{if(g.type===Ext.data.Types.DATE&&a&&Ext.isDate(d)){e[c]=Ext.Date.format(d,a)}else{e[c]=d}}}},1,0,0,0,["writer.base"],0,[Ext.data.writer,"Writer",Ext.data,"DataWriter",Ext.data,"Writer"],0));(Ext.cmd.derive("Ext.data.writer.Json",Ext.data.writer.Writer,{alternateClassName:"Ext.data.JsonWriter",root:undefined,encode:false,allowSingle:true,expandData:false,getExpandedData:function(d){var b=d.length,e=0,k,a,g,c,h,l=function(j,m){var n={};n[j]=m;return n};for(;e0){h=k[a];for(;c>0;c--){h=l(g[c],h)}k[g[0]]=k[g[0]]||{};Ext.Object.merge(k[g[0]],h);delete k[a]}}}}return d},writeRecords:function(b,c){var a=this.root;if(this.expandData){c=this.getExpandedData(c)}if(this.allowSingle&&c.length===1){c=c[0]}if(this.encode){if(a){b.params[a]=Ext.encode(c)}else{}}else{b.jsonData=b.jsonData||{};if(a){b.jsonData[a]=c}else{b.jsonData=c}}return b}},0,0,0,0,["writer.json"],0,[Ext.data.writer,"Json",Ext.data,"JsonWriter"],0));(Ext.cmd.derive("Ext.data.proxy.Proxy",Ext.Base,{alternateClassName:["Ext.data.DataProxy","Ext.data.Proxy"],batchOrder:"create,update,destroy",batchActions:true,defaultReaderType:"json",defaultWriterType:"json",isProxy:true,isSynchronous:false,constructor:function(a){var b=this;a=a||{};b.proxyConfig=a;b.mixins.observable.constructor.call(b,a);if(b.model!==undefined&&!(b.model instanceof Ext.data.Model)){b.setModel(b.model)}else{if(b.reader){b.setReader(b.reader)}if(b.writer){b.setWriter(b.writer)}}},setModel:function(a,b){var c=this;c.model=Ext.ModelManager.getModel(a);c.setReader(this.reader);c.setWriter(this.writer);if(b&&c.store){c.store.setModel(c.model)}},getModel:function(){return this.model},setReader:function(a){var c=this,b=true,d=c.reader;if(a===undefined||typeof a=="string"){a={type:a};b=false}if(a.isReader){a.setModel(c.model)}else{if(b){a=Ext.apply({},a)}Ext.applyIf(a,{proxy:c,model:c.model,type:c.defaultReaderType});a=Ext.createByAlias("reader."+a.type,a)}if(a!==d&&a.onMetaChange){a.onMetaChange=Ext.Function.createSequence(a.onMetaChange,this.onMetaChange,this)}c.reader=a;return c.reader},getReader:function(){return this.reader},onMetaChange:function(a){this.fireEvent("metachange",this,a)},setWriter:function(c){var b=this,a=true;if(c===undefined||typeof c=="string"){c={type:c};a=false}if(!c.isWriter){if(a){c=Ext.apply({},c)}Ext.applyIf(c,{model:b.model,type:b.defaultWriterType});c=Ext.createByAlias("writer."+c.type,c)}b.writer=c;return b.writer},getWriter:function(){return this.writer},create:Ext.emptyFn,read:Ext.emptyFn,update:Ext.emptyFn,destroy:Ext.emptyFn,batch:function(p,m){var l=this,k=l.batchActions,h,c,g,d,e,n,b,o,j;if(p.operations===undefined){p={operations:p,listeners:m}}if(p.batch){if(Ext.isDefined(p.batch.runOperation)){h=Ext.applyIf(p.batch,{proxy:l,listeners:{}})}}else{p.batch={proxy:l,listeners:p.listeners||{}}}if(!h){h=new Ext.data.Batch(p.batch)}h.on("complete",Ext.bind(l.onBatchComplete,l,[p],0));g=l.batchOrder.split(",");d=g.length;for(n=0;n1){if(j.action=="update"||a[0].clientIdProperty){l=new Ext.util.MixedCollection();l.addAll(n);for(h=a.length;h--;){b=a[h];e=l.findBy(j.matchClientRec,b);k=b.copyFrom(e);if(m){c.push(k)}}}else{for(d=0,g=a.length;d0){b.create=g;h=true}if(d.length>0){b.update=d;h=true}if(a.length>0){b.destroy=a;h=true}if(h&&e.fireEvent("beforesync",b)!==false){c=c||{};e.proxy.batch(Ext.apply(c,{operations:b,listeners:e.getBatchListeners()}))}return e},getBatchListeners:function(){var b=this,a={scope:b,exception:b.onBatchException};if(b.batchUpdateMode=="operation"){a.operationcomplete=b.onBatchOperationComplete}else{a.complete=b.onBatchComplete}return a},save:function(){return this.sync.apply(this,arguments)},load:function(b){var c=this,a;b=Ext.apply({action:"read",filters:c.filters.items,sorters:c.getSorters()},b);c.lastOptions=b;a=new Ext.data.Operation(b);if(c.fireEvent("beforeload",c,a)!==false){c.loading=true;c.proxy.read(a,c.onProxyLoad,c)}return c},reload:function(a){return this.load(Ext.apply(this.lastOptions,a))},afterEdit:function(a,e){var d=this,b,c;if(d.autoSync&&!d.autoSyncSuspended){for(b=e.length;b--;){if(a.fields.get(e[b]).persist){c=true;break}}if(c){d.sync()}}d.onUpdate(a,Ext.data.Model.EDIT,e);d.fireEvent("update",d,a,Ext.data.Model.EDIT,e)},afterReject:function(a){this.onUpdate(a,Ext.data.Model.REJECT,null);this.fireEvent("update",this,a,Ext.data.Model.REJECT,null)},afterCommit:function(a,b){if(!b){b=null}this.onUpdate(a,Ext.data.Model.COMMIT,b);this.fireEvent("update",this,a,Ext.data.Model.COMMIT,b)},onUpdate:Ext.emptyFn,onIdChanged:function(c,d,b,a){this.fireEvent("idchanged",this,c,d,b,a)},destroyStore:function(){var a,b=this;if(!b.isDestroyed){b.clearListeners();if(b.storeId){Ext.data.StoreManager.unregister(b)}b.clearData();b.data=b.tree=b.sorters=b.filters=b.groupers=null;if(b.reader){b.reader.destroyReader()}b.proxy=b.reader=b.writer=null;b.isDestroyed=true;if(b.implicitModel){a=Ext.getClassName(b.model);Ext.undefine(a);Ext.ModelManager.unregisterType(a)}else{b.model=null}}},getState:function(){var e=this,c,a,b=!!e.groupers,g=[],h=[],d=[];if(b){e.groupers.each(function(j){g[g.length]=j.serialize();c=true})}if(e.sorters){e.sorters.each(function(j){if(b&&!e.groupers.contains(j)){h[h.length]=j.serialize();c=true}})}if(e.filters&&e.statefulFilters){e.filters.each(function(j){d[d.length]=j.serialize();c=true})}if(c){a={};if(g.length){a.groupers=g}if(h.length){a.sorters=h}if(d.length){a.filters=d}return a}},applyState:function(g){var e=this,c=!!e.sorters,b=!!e.groupers,a=!!e.filters,d;if(b&&g.groupers){e.groupers.clear();e.groupers.addAll(e.decodeGroupers(g.groupers))}if(c&&g.sorters){e.sorters.clear();e.sorters.addAll(e.decodeSorters(g.sorters))}if(a&&g.filters){e.filters.clear();e.filters.addAll(e.decodeFilters(g.filters))}if(c&&b){e.sorters.insert(0,e.groupers.getRange())}if(e.autoLoad&&(e.remoteSort||e.remoteGroup||e.remoteFilter)){if(e.autoLoad===true){e.reload()}else{e.reload(e.autoLoad)}}if(a&&e.filters.length&&!e.remoteFilter){e.filter();d=e.sortOnFilter}if(c&&e.sorters.length&&!e.remoteSort&&!d){e.sort()}},doSort:function(a){var b=this;if(b.remoteSort){b.load()}else{b.data.sortBy(a);b.fireEvent("datachanged",b);b.fireEvent("refresh",b)}b.fireEvent("sort",b,b.sorters.getRange())},clearData:Ext.emptyFn,getCount:Ext.emptyFn,getById:Ext.emptyFn,removeAll:Ext.emptyFn,isLoading:function(){return !!this.loading},suspendAutoSync:function(){this.autoSyncSuspended=true},resumeAutoSync:function(){this.autoSyncSuspended=false}},1,0,0,0,0,[["observable",Ext.util.Observable],["sortable",Ext.util.Sortable]],[Ext.data,"AbstractStore"],0));(Ext.cmd.derive("Ext.app.domain.Store",Ext.app.EventDomain,{singleton:true,type:"store",idProperty:"storeId",constructor:function(){var a=this;a.callParent();a.monitor(Ext.data.AbstractStore)}},1,0,0,0,0,0,[Ext.app.domain,"Store"],0));(Ext.cmd.derive("Ext.app.Controller",Ext.Base,{statics:{strings:{model:{getter:"getModel",upper:"Model"},view:{getter:"getView",upper:"View"},controller:{getter:"getController",upper:"Controller"},store:{getter:"getStore",upper:"Store"}},controllerRegex:/^(.*)\.controller\./,createGetter:function(a,b){return function(){return this[a](b)}},getGetterName:function(c,a){var d="get",e=c.split("."),g=e.length,b;for(b=0;b0){a=c.substring(0,b);g=c.substring(b+1)+"."+a}else{if(c.indexOf(".")>0&&(Ext.ClassManager.isCreated(c)||Ext.Loader.isAClassNameWithAKnownPrefix(c))){g=c}else{if(d){g=d+"."+e+"."+c;a=c}else{g=c}}}return{absoluteName:g,shortName:a}}},application:null,onClassExtended:function(b,c,a){var d=a.onBeforeCreated;a.onBeforeCreated=function(n,h){var g=Ext.app.Controller,l=g.controllerRegex,o=[],m,e,o,k,j;k=n.prototype;m=Ext.getClassName(n);e=h.$namespace||Ext.app.getNamespace(m)||((j=l.exec(m))&&j[1]);if(e){k.$namespace=e}g.processDependencies(k,o,e,"model",h.models);g.processDependencies(k,o,e,"view",h.views);g.processDependencies(k,o,e,"store",h.stores);g.processDependencies(k,o,e,"controller",h.controllers);Ext.require(o,Ext.Function.pass(d,arguments,this))}},constructor:function(a){var b=this;b.mixins.observable.constructor.call(b,a);if(b.refs){b.ref(b.refs)}b.eventbus=Ext.app.EventBus;b.initAutoGetters()},initAutoGetters:function(){var b=this.self.prototype,c,a;for(c in b){a=b[c];if(a&&a["Ext.app.getter"]){a.call(this)}}},doInit:function(b){var a=this;if(!a._initialized){a.init(b);a._initialized=true}},finishInit:function(g){var d=this,e=d.controllers,b,c,a;if(d._initialized&&e&&e.length){for(c=0,a=e.length;c[hidden]");e=b.length;if(e!==c.lastHiddenCount){a.fireEvent("overflowchange",c.lastHiddenCount,e,b);c.lastHiddenCount=e}}},onRemove:Ext.emptyFn,getItem:function(a){return this.layout.owner.getComponent(a)},getOwnerType:function(a){var b;if(a.isToolbar){b="toolbar"}else{if(a.isTabBar){b="tabbar"}else{if(a.isMenu){b="menu"}else{b=a.getXType()}}}return b},getPrefixConfig:Ext.emptyFn,getSuffixConfig:Ext.emptyFn,getOverflowCls:function(){return""}},1,0,0,0,0,0,[Ext.layout.container.boxOverflow,"None",Ext.layout.boxOverflow,"None"],0));(Ext.cmd.derive("Ext.toolbar.Item",Ext.Component,{alternateClassName:"Ext.Toolbar.Item",enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn},0,["tbitem"],["tbitem","component","box"],{tbitem:true,component:true,box:true},["widget.tbitem"],0,[Ext.toolbar,"Item",Ext.Toolbar,"Item"],0));(Ext.cmd.derive("Ext.toolbar.Separator",Ext.toolbar.Item,{alternateClassName:"Ext.Toolbar.Separator",baseCls:Ext.baseCSSPrefix+"toolbar-separator",focusable:false},0,["tbseparator"],["tbitem","component","box","tbseparator"],{tbitem:true,component:true,box:true,tbseparator:true},["widget.tbseparator"],0,[Ext.toolbar,"Separator",Ext.Toolbar,"Separator"],0));(Ext.cmd.derive("Ext.button.Manager",Ext.Base,{singleton:true,alternateClassName:"Ext.ButtonToggleManager",groups:{},pressedButton:null,buttonSelector:"."+Ext.baseCSSPrefix+"btn",init:function(){var a=this;if(!a.initialized){Ext.getDoc().on({keydown:a.onDocumentKeyDown,mouseup:a.onDocumentMouseUp,scope:a});a.initialized=true}},onDocumentKeyDown:function(c){var a=c.getKey(),b;if(a===c.SPACE||a===c.ENTER){b=c.getTarget(this.buttonSelector);if(b){Ext.getCmp(b.id).onClick(c)}}},onButtonMousedown:function(a,c){var b=this.pressedButton;if(b){b.onMouseUp(c)}this.pressedButton=a},onDocumentMouseUp:function(b){var a=this.pressedButton;if(a){a.onMouseUp(b);this.pressedButton=null}},toggleGroup:function(b,e){if(e){var d=this.groups[b.toggleGroup],c=d.length,a;for(a=0;a0){a.hideAll()}},a)},hideAll:function(){var c=this.active,b,a,d;if(c&&c.length>0){b=Ext.Array.slice(c.items);d=b.length;for(a=0;a50&&d.length>0&&!g.getTarget(b.menuSelector)){if(Ext.isIE9m&&!Ext.getDoc().contains(g.target)){c=false}if(c){b.hideAll()}}},register:function(b){var a=this;if(!a.active){a.init()}if(b.floating){a.menus[b.id]=b;b.on({beforehide:a.onBeforeHide,hide:a.onHide,beforeshow:a.onBeforeShow,show:a.onShow,scope:a})}},get:function(b){var a=this.menus;if(typeof b=="string"){if(!a){return null}return a[b]}else{if(b.isMenu){return b}else{if(Ext.isArray(b)){return new Ext.menu.Menu({items:b})}else{return Ext.ComponentManager.create(b,"menu")}}}},unregister:function(d){var a=this,b=a.menus,c=a.active;delete b[d.id];c.remove(d);d.un({beforehide:a.onBeforeHide,hide:a.onHide,beforeshow:a.onBeforeShow,show:a.onShow,scope:a})},registerCheckable:function(c){var a=this.groups,b=c.group;if(b){if(!a[b]){a[b]=[]}a[b].push(c)}},unregisterCheckable:function(c){var a=this.groups,b=c.group;if(b){Ext.Array.remove(a[b],c)}},onCheckChange:function(d,g){var a=this.groups,c=d.group,b=0,j,e,h;if(c&&g){j=a[c];e=j.length;for(;b/,beginLayout:function(c){var b=this,a=b.owner,d=a.text;b.callParent(arguments);c.btnWrapContext=c.getEl("btnWrap");c.btnElContext=c.getEl("btnEl");c.btnInnerElContext=c.getEl("btnInnerEl");c.btnIconElContext=c.getEl("btnIconEl");if(d&&b.htmlRE.test(d)){c.isHtmlText=true;a.btnInnerEl.setStyle("line-height","normal");a.btnInnerEl.setStyle("padding-top","")}},beginLayoutCycle:function(b){var a=this.owner,c=this.lastWidthModel;this.callParent(arguments);if(c&&!this.lastWidthModel.shrinkWrap&&b.widthModel.shrinkWrap){a.btnWrap.setStyle("height","");a.btnEl.setStyle("height","");a.btnInnerEl.setStyle("line-height","")}},calculate:function(d){var h=this,c=h.owner,j=d.btnElContext,g=d.btnInnerElContext,m=d.btnWrapContext,e=Math.max,b,k,l,a;h.callParent(arguments);if(d.heightModel.shrinkWrap){l=c.btnEl.getHeight();if(d.isHtmlText){h.centerInnerEl(d,l);h.ieCenterIcon(d,l)}}else{b=d.getProp("height");if(b){k=b-d.getFrameInfo().height-d.getPaddingInfo().height;l=k;if((c.menu||c.split)&&c.arrowAlign==="bottom"){l-=m.getPaddingInfo().bottom}a=l;if((c.icon||c.iconCls||c.glyph)&&(c.iconAlign==="top"||c.iconAlign==="bottom")){a-=g.getPaddingInfo().height}m.setProp("height",e(0,k));j.setProp("height",e(0,l));if(d.isHtmlText){h.centerInnerEl(d,l)}else{g.setProp("line-height",e(0,a)+"px")}h.ieCenterIcon(d,l)}else{if(b!==0){h.done=false}}}},centerInnerEl:function(e,d){var c=this,b=e.btnInnerElContext,a=c.owner.btnInnerEl.getHeight();if(e.heightModel.shrinkWrap&&(da){b.setProp("padding-top",Math.round((d-a)/2)+b.getPaddingInfo().top)}}},ieCenterIcon:function(c,b){var a=this.owner.iconAlign;if((Ext.isIEQuirks||Ext.isIE6)&&(a==="left"||a==="right")){c.btnIconElContext.setHeight(b)}},publishInnerWidth:function(b,a){if(this.owner.getFrameInfo().table){b.btnInnerElContext.setWidth(a-b.getFrameInfo().width-b.getPaddingInfo().width-b.btnWrapContext.getPaddingInfo().width)}}},0,0,0,0,["layout.button"],0,[Ext.layout.component,"Button"],0));(Ext.cmd.derive("Ext.util.TextMetrics",Ext.Base,{statics:{shared:null,measure:function(a,d,e){var b=this,c=b.shared;if(!c){c=b.shared=new b(a,e)}c.bind(a);c.setFixedWidth(e||"auto");return c.getSize(d)},destroy:function(){var a=this;Ext.destroy(a.shared);a.shared=null}},constructor:function(a,d){var c=this,b=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"textmetrics"});c.measure=b;if(a){c.bind(a)}b.position("absolute");b.setLocalXY(-1000,-1000);b.hide();if(d){b.setWidth(d)}},getSize:function(c){var b=this.measure,a;b.update(c);a=b.getSize();b.update("");return a},bind:function(a){var b=this;b.el=Ext.get(a);b.measure.setStyle(b.el.getStyles("font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"))},setFixedWidth:function(a){this.measure.setWidth(a)},getWidth:function(a){this.measure.dom.style.width="auto";return this.getSize(a).width},getHeight:function(a){return this.getSize(a).height},destroy:function(){var a=this;a.measure.remove();delete a.el;delete a.measure}},1,0,0,0,0,0,[Ext.util,"TextMetrics"],function(){Ext.Element.addMethods({getTextWidth:function(c,b,a){return Ext.Number.constrain(Ext.util.TextMetrics.measure(this.dom,Ext.value(c,this.dom.innerHTML,true)).width,b||0,a||1000000)}})}));(Ext.cmd.derive("Ext.button.Button",Ext.Component,{alternateClassName:"Ext.Button",isButton:true,componentLayout:"button",hidden:false,disabled:false,pressed:false,tabIndex:0,enableToggle:false,menuAlign:"tl-bl?",showEmptyMenu:false,textAlign:"center",clickEvent:"click",preventDefault:true,handleMouseEvents:true,tooltipType:"qtip",baseCls:Ext.baseCSSPrefix+"btn",pressedCls:"pressed",overCls:"over",focusCls:"focus",menuActiveCls:"menu-active",hrefTarget:"_blank",childEls:["btnEl","btnWrap","btnInnerEl","btnIconEl"],renderTpl:[' {splitCls}','{childElCls}" unselectable="on">','','',"{text}","",'background-image:url({iconUrl});','font-family:{glyphFontFamily};">','&#{glyph}; ',"","","",'','',""],scale:"small",allowedScales:["small","medium","large"],iconAlign:"left",arrowAlign:"right",arrowCls:"arrow",maskOnDisable:false,shrinkWrap:3,frame:true,_triggerRegion:{},initComponent:function(){var a=this;a.autoEl={tag:"a",role:"button",hidefocus:"on",unselectable:"on"};a.addCls("x-unselectable");a.callParent(arguments);a.addEvents("click","toggle","mouseover","mouseout","menushow","menuhide","menutriggerover","menutriggerout","textchange","iconchange","glyphchange");if(a.menu){a.split=true;a.menu=Ext.menu.Manager.get(a.menu);a.menu.ownerButton=a}if(a.url){a.href=a.url}if(a.href&&!a.hasOwnProperty("preventDefault")){a.preventDefault=false}if(Ext.isString(a.toggleGroup)&&a.toggleGroup!==""){a.enableToggle=true}if(a.html&&!a.text){a.text=a.html;delete a.html}a.glyphCls=a.baseCls+"-glyph"},getActionEl:function(){return this.el},getFocusEl:function(){return this.el},onDisable:function(){this.callParent(arguments)},setComponentCls:function(){var b=this,a=b.getComponentCls();if(!Ext.isEmpty(b.oldCls)){b.removeClsWithUI(b.oldCls);b.removeClsWithUI(b.pressedCls)}b.oldCls=a;b.addClsWithUI(a)},getComponentCls:function(){var b=this,a;if(b.iconCls||b.icon||b.glyph){a=[b.text?"icon-text-"+b.iconAlign:"icon"]}else{if(b.text){a=["noicon"]}else{a=[]}}if(b.pressed){a[a.length]=b.pressedCls}return a},beforeRender:function(){var b=this,c=b.autoEl,a=b.getHref(),d=b.hrefTarget;if(!b.disabled){c.tabIndex=b.tabIndex}if(a){c.href=a;if(d){c.target=d}}b.callParent();b.oldCls=b.getComponentCls();b.addClsWithUI(b.oldCls);Ext.applyIf(b.renderData,b.getTemplateArgs())},onRender:function(){var c=this,d,a,b;c.doc=Ext.getDoc();c.callParent(arguments);a=c.el;if(c.tooltip){c.setTooltip(c.tooltip,true)}if(c.handleMouseEvents){b={scope:c,mouseover:c.onMouseOver,mouseout:c.onMouseOut,mousedown:c.onMouseDown};if(c.split){b.mousemove=c.onMouseMove}}else{b={scope:c}}if(c.menu){c.mon(c.menu,{scope:c,show:c.onMenuShow,hide:c.onMenuHide});c.keyMap=new Ext.util.KeyMap({target:c.el,key:Ext.EventObject.DOWN,handler:c.onDownKey,scope:c})}if(c.repeat){c.mon(new Ext.util.ClickRepeater(a,Ext.isObject(c.repeat)?c.repeat:{}),"click",c.onRepeatClick,c)}else{if(b[c.clickEvent]){d=true}else{b[c.clickEvent]=c.onClick}}c.mon(a,b);if(d){c.mon(a,c.clickEvent,c.onClick,c)}Ext.button.Manager.register(c)},getTemplateArgs:function(){var c=this,b=c.glyph,d=Ext._glyphFontFamily,a;if(typeof b==="string"){a=b.split("@");b=a[0];d=a[1]}return{innerCls:c.getInnerCls(),splitCls:c.getSplitCls(),iconUrl:c.icon,iconCls:c.iconCls,glyph:b,glyphCls:b?c.glyphCls:"",glyphFontFamily:d,text:c.text||" "}},setHref:function(a){this.href=a;this.el.dom.href=this.getHref()},getHref:function(){var b=this,a=b.href;return a?Ext.urlAppend(a,Ext.Object.toQueryString(Ext.apply({},b.params,b.baseParams))):false},setParams:function(a){this.params=a;this.el.dom.href=this.getHref()},getSplitCls:function(){var a=this;return a.split?(a.baseCls+"-"+a.arrowCls)+" "+(a.baseCls+"-"+a.arrowCls+"-"+a.arrowAlign):""},getInnerCls:function(){return this.textAlign?this.baseCls+"-inner-"+this.textAlign:""},setIcon:function(b){b=b||"";var c=this,a=c.btnIconEl,d=c.icon||"";c.icon=b;if(b!=d){if(a){a.setStyle("background-image",b?"url("+b+")":"");c.setComponentCls();if(c.didIconStateChange(d,b)){c.updateLayout()}}c.fireEvent("iconchange",c,d,b)}return c},setIconCls:function(b){b=b||"";var d=this,a=d.btnIconEl,c=d.iconCls||"";d.iconCls=b;if(c!=b){if(a){a.removeCls(c);a.addCls(b);d.setComponentCls();if(d.didIconStateChange(c,b)){d.updateLayout()}}d.fireEvent("iconchange",d,c,b)}return d},setGlyph:function(g){g=g||0;var e=this,b=e.btnIconEl,c=e.glyph,a,d;e.glyph=g;if(b){if(typeof g==="string"){d=g.split("@");g=d[0];a=d[1]||Ext._glyphFontFamily}if(!g){b.dom.innerHTML=""}else{if(c!=g){b.dom.innerHTML="&#"+g+";"}}if(a){b.setStyle("font-family",a)}}e.fireEvent("glyphchange",e,e.glyph,c);return e},setTooltip:function(c,a){var b=this;if(b.rendered){if(!a||!c){b.clearTip()}if(c){if(Ext.quickTipsActive&&Ext.isObject(c)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.el.id},c));b.tooltip=c}else{b.el.dom.setAttribute(b.getTipAttr(),c)}}}else{b.tooltip=c}return b},setTextAlign:function(c){var b=this,a=b.btnEl;if(a){a.removeCls(b.baseCls+"-inner-"+b.textAlign);a.addCls(b.baseCls+"-inner-"+c)}b.textAlign=c;return b},getTipAttr:function(){return this.tooltipType=="qtip"?"data-qtip":"title"},getRefItems:function(a){var c=this.menu,b;if(c){b=c.getRefItems(a);b.unshift(c)}return b||[]},clearTip:function(){var b=this,a=b.el;if(Ext.quickTipsActive&&Ext.isObject(b.tooltip)){Ext.tip.QuickTipManager.unregister(a)}else{a.dom.removeAttribute(b.getTipAttr())}},beforeDestroy:function(){var a=this;if(a.rendered){a.clearTip()}if(a.menu&&a.destroyMenu!==false){Ext.destroy(a.menu)}Ext.destroy(a.btnInnerEl,a.repeater);a.callParent()},onDestroy:function(){var a=this;if(a.rendered){a.doc.un("mouseover",a.monitorMouseOver,a);delete a.doc;Ext.destroy(a.keyMap);delete a.keyMap}Ext.button.Manager.unregister(a);a.callParent()},setHandler:function(b,a){this.handler=b;this.scope=a;return this},setText:function(c){c=c||"";var b=this,a=b.text||"";if(c!=a){b.text=c;if(b.rendered){b.btnInnerEl.update(c||" ");b.setComponentCls();if(Ext.isStrict&&Ext.isIE8){b.el.repaint()}b.updateLayout()}b.fireEvent("textchange",b,a,c)}return b},didIconStateChange:function(a,c){var b=Ext.isEmpty(c);return Ext.isEmpty(a)?!b:b},getText:function(){return this.text},toggle:function(c,a){var b=this;c=c===undefined?!b.pressed:!!c;if(c!==b.pressed){if(b.rendered){b[c?"addClsWithUI":"removeClsWithUI"](b.pressedCls)}b.pressed=c;if(!a){b.fireEvent("toggle",b,c);Ext.callback(b.toggleHandler,b.scope||b,[b,c])}}return b},maybeShowMenu:function(){var a=this;if(a.menu&&!a.hasVisibleMenu()&&!a.ignoreNextClick){a.showMenu(true)}},showMenu:function(b){var a=this,c=a.menu;if(a.rendered){if(a.tooltip&&Ext.quickTipsActive&&a.getTipAttr()!="title"){Ext.tip.QuickTipManager.getQuickTip().cancelShow(a.el)}if(c.isVisible()){c.hide()}if(!b||a.showEmptyMenu||c.items.getCount()>0){c.showBy(a.el,a.menuAlign)}}return a},hideMenu:function(){if(this.hasVisibleMenu()){this.menu.hide()}return this},hasVisibleMenu:function(){var a=this.menu;return a&&a.rendered&&a.isVisible()},onRepeatClick:function(a,b){this.onClick(b)},onClick:function(b){var a=this;if(a.preventDefault||(a.disabled&&a.getHref())&&b){b.preventDefault()}if(b.type!=="keydown"&&b.button!==0){return}if(!a.disabled){a.doToggle();a.maybeShowMenu();a.fireHandler(b)}},fireHandler:function(c){var b=this,a=b.handler;if(b.fireEvent("click",b,c)!==false){if(a){a.call(b.scope||b,b,c)}}},doToggle:function(){var a=this;if(a.enableToggle&&(a.allowDepress!==false||!a.pressed)){a.toggle()}},onMouseOver:function(b){var a=this;if(!a.disabled&&!b.within(a.el,true,true)){a.onMouseEnter(b)}},onMouseOut:function(b){var a=this;if(!b.within(a.el,true,true)){if(a.overMenuTrigger){a.onMenuTriggerOut(b)}a.onMouseLeave(b)}},onMouseMove:function(g){var c=this,b=c.el,d=c.overMenuTrigger,h,a;if(c.split){h=(c.arrowAlign==="right")?g.getX()-c.getX():g.getY()-b.getY();a=c.getTriggerRegion();if(h>a.begin&&h(None)',constructor:function(b){var a=this;a.callParent(arguments);a.triggerButtonCls=a.triggerButtonCls||Ext.baseCSSPrefix+"box-menu-after";a.menuItems=[]},beginLayout:function(a){this.callParent(arguments);this.clearOverflow(a)},beginLayoutCycle:function(b,a){this.callParent(arguments);if(!a){this.clearOverflow(b);this.layout.cacheChildItems(b)}},onRemove:function(a){Ext.Array.remove(this.menuItems,a)},getSuffixConfig:function(){var d=this,c=d.layout,a=c.owner,b=a.id;d.menu=new Ext.menu.Menu({listeners:{scope:d,beforeshow:d.beforeMenuShow}});d.menuTrigger=new Ext.button.Button({id:b+"-menu-trigger",cls:Ext.layout.container.Box.prototype.innerCls+" "+d.triggerButtonCls+" "+Ext.baseCSSPrefix+"toolbar-item",plain:a.usePlainButtons,ownerCt:a,ownerLayout:c,iconCls:Ext.baseCSSPrefix+d.getOwnerType(a)+"-more-icon",ui:a instanceof Ext.toolbar.Toolbar?"default-toolbar":"default",menu:d.menu,showEmptyMenu:true,getSplitCls:function(){return""}});return d.menuTrigger.getRenderTree()},getOverflowCls:function(){return Ext.baseCSSPrefix+this.layout.direction+"-box-overflow-body"},handleOverflow:function(d){var c=this,b=c.layout,g=b.names,e=d.state.boxPlan,a=[null,null];c.showTrigger(d);if(c.layout.direction!=="vertical"){a[g.heightIndex]=(e.maxSize-c.menuTrigger[g.getHeight]())/2;c.menuTrigger.setPosition.apply(c.menuTrigger,a)}return{reservedSpace:c.triggerTotalWidth}},captureChildElements:function(){var a=this,c=a.menuTrigger,b=a.layout.names;if(c.rendering){c.finishRender();a.triggerTotalWidth=c[b.getWidth]()+c.el.getMargin(b.parallelMargins)}},_asLayoutRoot:{isRoot:true},clearOverflow:function(h){var g=this,b=g.menuItems,e,c=0,d=b.length,a=g.layout.owner,j=g._asLayoutRoot;a.suspendLayouts();g.captureChildElements();g.hideTrigger();a.resumeLayouts();for(;cb){j=q.target;o.menuItems.push(j);j.hide()}}a.resumeLayouts()},hideTrigger:function(){var a=this.menuTrigger;if(a){a.hide()}},beforeMenuShow:function(j){var h=this,b=h.menuItems,d=0,a=b.length,g,e,c=function(l,k){return l.isXType("buttongroup")&&!(k instanceof Ext.toolbar.Separator)};j.suspendLayouts();h.clearMenu();j.removeAll();for(;d=this.getMaxScrollPosition()},scrollTo:function(a,b){var g=this,e=g.layout,h=e.names,d=g.getScrollPosition(),c=Ext.Number.constrain(a,0,g.getMaxScrollPosition());if(c!=d&&!g.scrolling){g.scrollPosition=NaN;if(b===undefined){b=g.animateScroll}e.innerCt[h.scrollTo](h.beforeScrollX,c,b?g.getScrollAnim():false);if(b){g.scrolling=true}else{g.updateScrollButtons()}g.fireEvent("scroll",g,c,b?g.getScrollAnim():false)}},scrollToItem:function(k,b){var j=this,e=j.layout,c=e.owner,h=e.names,a,d,g;k=j.getItem(k);if(k!==undefined){if(k==c.items.first()){g=0}else{if(k===c.items.last()){g=j.getMaxScrollPosition()}else{a=j.getItemVisibility(k);if(!a.fullyVisible){d=k.getBox(false,true);g=d[h.x];if(a.hiddenEnd){g-=(j.layout.innerCt[h.getWidth]()-d[h.width])}}}}if(g!==undefined){j.scrollTo(g,b)}}},getItemVisibility:function(k){var h=this,b=h.getItem(k).getBox(true,true),c=h.layout,g=c.names,e=b[g.x],d=e+b[g.width],a=h.getScrollPosition(),j=a+c.innerCt[g.getWidth]();return{hiddenStart:ej,fullyVisible:e>a&&d=a.x&&b.right<=a.right&&b.y>=a.y&&b.bottom<=a.bottom)},intersect:function(h){var g=this,d=Math.max(g.y,h.y),e=Math.min(g.right,h.right),a=Math.min(g.bottom,h.bottom),c=Math.max(g.x,h.x);if(a>d&&e>c){return new this.self(d,e,a,c)}else{return false}},union:function(h){var g=this,d=Math.min(g.y,h.y),e=Math.max(g.right,h.right),a=Math.max(g.bottom,h.bottom),c=Math.min(g.x,h.x);return new this.self(d,e,a,c)},constrainTo:function(b){var a=this,c=Ext.Number.constrain;a.top=a.y=c(a.top,b.y,b.bottom);a.bottom=c(a.bottom,b.y,b.bottom);a.left=a.x=c(a.left,b.x,b.right);a.right=c(a.right,b.x,b.right);return a},adjust:function(d,g,a,c){var e=this;e.top=e.y+=d;e.left=e.x+=c;e.right+=g;e.bottom+=a;return e},getOutOfBoundOffset:function(a,b){if(!Ext.isObject(a)){if(a=="x"){return this.getOutOfBoundOffsetX(b)}else{return this.getOutOfBoundOffsetY(b)}}else{b=a;var c=new Ext.util.Offset();c.x=this.getOutOfBoundOffsetX(b.x);c.y=this.getOutOfBoundOffsetY(b.y);return c}},getOutOfBoundOffsetX:function(a){if(a<=this.x){return this.x-a}else{if(a>=this.right){return this.right-a}}return 0},getOutOfBoundOffsetY:function(a){if(a<=this.y){return this.y-a}else{if(a>=this.bottom){return this.bottom-a}}return 0},isOutOfBound:function(a,b){if(!Ext.isObject(a)){if(a=="x"){return this.isOutOfBoundX(b)}else{return this.isOutOfBoundY(b)}}else{b=a;return(this.isOutOfBoundX(b.x)||this.isOutOfBoundY(b.y))}},isOutOfBoundX:function(a){return(athis.right)},isOutOfBoundY:function(a){return(athis.bottom)},restrict:function(b,d,a){if(Ext.isObject(b)){var c;a=d;d=b;if(d.copy){c=d.copy()}else{c={x:d.x,y:d.y}}c.x=this.restrictX(d.x,a);c.y=this.restrictY(d.y,a);return c}else{if(b=="x"){return this.restrictX(d,a)}else{return this.restrictY(d,a)}}},restrictX:function(b,a){if(!a){a=1}if(b<=this.x){b-=(b-this.x)*a}else{if(b>=this.right){b-=(b-this.right)*a}}return b},restrictY:function(b,a){if(!a){a=1}if(b<=this.y){b-=(b-this.y)*a}else{if(b>=this.bottom){b-=(b-this.bottom)*a}}return b},getSize:function(){return{width:this.right-this.x,height:this.bottom-this.y}},copy:function(){return new this.self(this.y,this.right,this.bottom,this.x)},copyFrom:function(b){var a=this;a.top=a.y=a[1]=b.y;a.right=b.right;a.bottom=b.bottom;a.left=a.x=a[0]=b.x;return this},toString:function(){return"Region["+this.top+","+this.right+","+this.bottom+","+this.left+"]"},translateBy:function(a,c){if(arguments.length==1){c=a.y;a=a.x}var b=this;b.top=b.y+=c;b.right+=a;b.bottom+=c;b.left=b.x+=a;return b},round:function(){var a=this;a.top=a.y=Math.round(a.y);a.right=Math.round(a.right);a.bottom=Math.round(a.bottom);a.left=a.x=Math.round(a.x);return a},equals:function(a){return(this.top==a.top&&this.right==a.right&&this.bottom==a.bottom&&this.left==a.left)}},3,0,0,0,0,0,[Ext.util,"Region"],0));(Ext.cmd.derive("Ext.dd.DragDropManager",Ext.Base,{singleton:true,alternateClassName:["Ext.dd.DragDropMgr","Ext.dd.DDM"],ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initialized:false,locked:false,init:function(){this.initialized=true},POINT:0,INTERSECT:1,mode:0,notifyOccluded:false,dragCls:Ext.baseCSSPrefix+"dd-drag-current",_execOnAll:function(c,b){var d,a,e;for(d in this.ids){for(a in this.ids[d]){e=this.ids[d][a];if(!this.isTypeOfDD(e)){continue}e[c].apply(e,b)}}},_onLoad:function(){this.init();var a=Ext.EventManager;a.on(document,"mouseup",this.handleMouseUp,this,true);a.on(document,"mousemove",this.handleMouseMove,this,true);a.on(window,"unload",this._onUnload,this,true);a.on(window,"resize",this._onResize,this,true)},_onResize:function(a){this._execOnAll("resetConstraints",[])},lock:function(){this.locked=true},unlock:function(){this.locked=false},isLocked:function(){return this.locked},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:350,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(b,a){if(!this.initialized){this.init()}if(!this.ids[a]){this.ids[a]={}}this.ids[a][b.id]=b},removeDDFromGroup:function(c,a){if(!this.ids[a]){this.ids[a]={}}var b=this.ids[a];if(b&&b[c.id]){delete b[c.id]}},_remove:function(b){for(var a in b.groups){if(a&&this.ids[a]&&this.ids[a][b.id]){delete this.ids[a][b.id]}}delete this.handleIds[b.id]},regHandle:function(b,a){if(!this.handleIds[b]){this.handleIds[b]={}}this.handleIds[b][a]=a},isDragDrop:function(a){return(this.getDDById(a))?true:false},getRelated:function(g,b){var e=[],d,c,a;for(d in g.groups){for(c in this.ids[d]){a=this.ids[d][c];if(!this.isTypeOfDD(a)){continue}if(!b||a.isTarget){e[e.length]=a}}}return e},isLegalTarget:function(e,d){var b=this.getRelated(e,true),c,a;for(c=0,a=b.length;cc.clickPixelThresh||a>c.clickPixelThresh){c.startDrag(c.startX,c.startY)}}if(c.dragThreshMet){d.b4Drag(g);d.onDrag(g);if(!d.moveOnly){c.fireEvents(g,false)}}c.stopEvent(g);return true},fireEvents:function(u,m){var w=this,g=w.dragCurrent,c,o,s=u.getPoint(),d,l,n=[],h=[],k=[],a=[],v=[],t=[],j,b,q,r,p;if(!g||g.isLocked()){return}if(!w.notifyOccluded&&(!Ext.supports.PointerEvents||Ext.isIE10m||Ext.isOpera)&&!(g.deltaX<0||g.deltaY<0)){c=g.getDragEl();o=c.style.top;c.style.top="-10000px";j=u.getXY();u.target=document.elementFromPoint(j[0],j[1]);c.style.top=o}for(q in w.dragOvers){d=w.dragOvers[q];if(!w.isTypeOfDD(d)){continue}if(w.notifyOccluded){if(!this.isOverTarget(s,d,w.mode)){k.push(d)}}else{if(!u.within(d.getEl())){k.push(d)}}h[q]=true;delete w.dragOvers[q]}for(p in g.groups){if("string"!=typeof p){continue}for(q in w.ids[p]){d=w.ids[p][q];if(w.isTypeOfDD(d)&&(l=d.getEl())&&(d.isTarget)&&(!d.isLocked())&&(Ext.fly(l).isVisible(true))&&((d!=g)||(g.ignoreSelf===false))){if(w.notifyOccluded){if((d.zIndex=w.getZIndex(l))!==-1){b=true}n.push(d)}else{if(u.within(d.getEl())){n.push(d);break}}}}}if(b){Ext.Array.sort(n,w.byZIndex)}for(q=0,r=n.length;q','
    ',"{%this.renderBody(out, values)%}","
    ","","{%if (oh.getSuffixConfig!==Ext.emptyFn) {","if(oc=oh.getSuffixConfig())dh.generateMarkup(oc, out)","}%}",{disableFormats:true,definitions:"var dh=Ext.DomHelper;"}],constructor:function(a){var c=this,b;c.callParent(arguments);c.flexSortFn=Ext.Function.bind(c.flexSort,c);c.initOverflowHandler();b=typeof c.padding;if(b=="string"||b=="number"){c.padding=Ext.util.Format.parseBox(c.padding);c.padding.height=c.padding.top+c.padding.bottom;c.padding.width=c.padding.left+c.padding.right}},_percentageRe:/^\s*(\d+(?:\.\d*)?)\s*[%]\s*$/,getItemSizePolicy:function(p,q){var l=this,j=l.sizePolicy,h=l.align,g=p.flex,n=h,k=l.names,b=p[k.width],o=p[k.height],d=l._percentageRe,c=d.test(b),e=(h=="stretch"),a=(h=="stretchmax"),m=l.constrainAlign;if(!q&&(e||g||c||(m&&!a))){q=l.owner.getSizeModel()}if(e){if(!d.test(o)&&q[k.height].shrinkWrap){n="stretchmax"}}else{if(!a){if(d.test(o)){n="stretch"}else{if(m&&!q[k.height].shrinkWrap){n="stretchmax"}else{n=""}}}}if(g||c){if(!q[k.width].shrinkWrap){j=j.flex}}return j[n]},flexSort:function(n,m){var k=this.names.maxWidth,e=this.names.minWidth,l=Infinity,j=n.target,q=m.target,r=0,c,o,h,d,p,g;h=j[k]||l;d=q[k]||l;c=j[e]||0;o=q[e]||0;p=isFinite(c)||isFinite(o);g=isFinite(h)||isFinite(d);if(p||g){if(g){r=h-d}if(r===0&&p){r=o-c}}return r},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},roundFlex:function(a){return Math.ceil(a)},beginCollapse:function(b){var a=this;if(a.direction==="vertical"&&b.collapsedVertical()){b.collapseMemento.capture(["flex"]);delete b.flex}else{if(a.direction==="horizontal"&&b.collapsedHorizontal()){b.collapseMemento.capture(["flex"]);delete b.flex}}},beginExpand:function(a){a.collapseMemento.restore(["flex"])},beginLayout:function(d){var c=this,a=c.owner,g=a.stretchMaxPartner,b=c.innerCt.dom.style,e=c.names;d.boxNames=e;c.overflowHandler.beginLayout(d);if(typeof g==="string"){g=Ext.getCmp(g)||a.query(g)[0]}d.stretchMaxPartner=g&&d.context.getCmp(g);c.callParent(arguments);d.innerCtContext=d.getEl("innerCt",c);c.scrollParallel=a.scrollFlags[e.x];c.scrollPerpendicular=a.scrollFlags[e.y];if(c.scrollParallel){c.scrollPos=a.getTargetEl().dom[e.scrollLeft]}b.width="";b.height=""},beginLayoutCycle:function(e,a){var d=this,h=d.align,g=e.boxNames,b=d.pack,c=g.heightModel;d.overflowHandler.beginLayoutCycle(e,a);d.callParent(arguments);e.parallelSizeModel=e[g.widthModel];e.perpendicularSizeModel=e[c];e.boxOptions={align:h={stretch:h=="stretch",stretchmax:h=="stretchmax",center:h==g.center,bottom:h==g.afterY},pack:b={center:b=="center",end:b=="end"}};if(h.stretch&&e.perpendicularSizeModel.shrinkWrap){h.stretchmax=true;h.stretch=false}h.nostretch=!(h.stretch||h.stretchmax);if(e.parallelSizeModel.shrinkWrap){b.center=b.end=false}d.cacheFlexes(e);d.targetEl.setWidth(20000)},cacheFlexes:function(k){var u=this,l=k.boxNames,a=l.widthModel,d=l.heightModel,c=k.boxOptions.align.nostretch,o=0,b=k.childItems,q=b.length,s=[],m=0,j=l.minWidth,g=u._percentageRe,r=0,t=0,e,n,p,h;while(q--){n=b[q];e=n.target;if(n[a].calculated){n.flex=p=e.flex;if(p){o+=p;s.push(n);m+=e[j]||0}else{h=g.exec(e[l.width]);n.percentageParallel=parseFloat(h[1])/100;++r}}if(c&&n[d].calculated){h=g.exec(e[l.height]);n.percentagePerpendicular=parseFloat(h[1])/100;++t}}k.flexedItems=s;k.flexedMinSize=m;k.totalFlex=o;k.percentageWidths=r;k.percentageHeights=t;Ext.Array.sort(s,u.flexSortFn)},calculate:function(e){var c=this,b=c.getContainerSize(e),h=e.boxNames,d=e.state,g=d.boxPlan||(d.boxPlan={}),a=e.targetContext;g.targetSize=b;if(!e.parallelSizeModel.shrinkWrap&&!b[h.gotWidth]){c.done=false;return}if(!d.parallelDone){d.parallelDone=c.calculateParallel(e,h,g)}if(!d.perpendicularDone){d.perpendicularDone=c.calculatePerpendicular(e,h,g)}if(d.parallelDone&&d.perpendicularDone){if(c.owner.dock&&(Ext.isIE7m||Ext.isIEQuirks)&&!c.owner.width&&!c.horizontal){g.isIEVerticalDock=true;g.calculatedWidth=g.maxSize+e.getPaddingInfo().width+e.getFrameInfo().width;if(a!==e){g.calculatedWidth+=a.getPaddingInfo().width}}c.publishInnerCtSize(e,c.reserveOffset?c.availableSpaceOffset:0);if(c.done&&(e.childItems.length>1||e.stretchMaxPartner)&&e.boxOptions.align.stretchmax&&!d.stretchMaxDone){c.calculateStretchMax(e,h,g);d.stretchMaxDone=true}c.overflowHandler.calculate(e)}else{c.done=false}},calculateParallel:function(k,n,b){var F=this,z=n.width,a=k.childItems,s=n.beforeX,d=n.afterX,q=n.setWidth,A=a.length,x=k.flexedItems,r=x.length,v=k.boxOptions.pack,m=F.padding,h=b.targetSize[z],B=0,e=m[s],E=e+m[d]+F.scrollOffset+(F.reserveOffset?F.availableSpaceOffset:0),w=Ext.getScrollbarSize()[n.width],u,l,g,y,o,t,D,p,C,c,j;if(w&&F.scrollPerpendicular&&k.parallelSizeModel.shrinkWrap&&!k.boxOptions.align.stretch&&!k.perpendicularSizeModel.shrinkWrap){if(!k.state.perpendicularDone){return false}C=true}for(u=0;ub.targetSize[n.height])){p+=w;k[n.hasOverflowY]=true;k.target.componentLayout[n.setWidthInDom]=true;k[n.invalidateScrollY]=Ext.isStrict&&Ext.isIE8}k[n.setContentWidth](p);return true},calculatePerpendicular:function(u,K,z){var t=this,d=u.perpendicularSizeModel.shrinkWrap,b=z.targetSize,j=u.childItems,y=j.length,m=Math.max,l=K.height,n=K.setHeight,h=K.beforeY,s=K.y,H=t.padding,k=H[h],o=b[l]-k-H[K.afterY],E=u.boxOptions.align,p=E.stretch,q=E.stretchmax,N=E.center,M=E.bottom,G=t.constrainAlign,F=0,B=0,D=t.onBeforeConstrainInvalidateChild,A=t.onAfterConstrainInvalidateChild,a=Ext.getScrollbarSize().height,x,I,C,v,w,c,r,e,L,J,g;if(p||((N||M)&&!d)){if(isNaN(o)){return false}}if(t.scrollParallel&&z.tooNarrow){if(d){J=true}else{o-=a;z.targetSize[l]-=a}}if(p){c=o}else{for(I=0;Io){r.invalidate({before:D,after:A,layout:t,childHeight:o,names:K});u.state.parallelDone=false}if(isNaN(F=m(F,C+v,r.target[K.minHeight]||0))){return false}}if(J){F+=a;u[K.hasOverflowX]=true;u.target.componentLayout[K.setHeightInDom]=true;u[K.invalidateScrollX]=Ext.isStrict&&Ext.isIE8}e=u.stretchMaxPartner;if(e){u.setProp("maxChildHeight",F);L=e.childItems;if(L&&L.length){F=m(F,e.getProp("maxChildHeight"));if(isNaN(F)){return false}}}u[K.setContentHeight](F+t.padding[l]+u.targetContext.getPaddingInfo()[l]);if(J){F-=a}z.maxSize=F;if(q){c=F}else{if(N||M||B){if(G){c=d?F:o}else{c=d?F:m(o,F)}c-=u.innerCtContext.getBorderInfo()[l]}}}for(I=0;I0){x=k+Math[t.alignRoundingMethod](w/2)}}else{if(M){x=m(0,c-x-r.props[l])}}}r.setProp(s,x)}return true},onBeforeConstrainInvalidateChild:function(b,a){var c=a.names.heightModel;if(!b[c].constrainedMin){b[c]=Ext.layout.SizeModel.calculated}},onAfterConstrainInvalidateChild:function(b,a){var c=a.names;b.setProp(c.beforeY,0);if(b[c.heightModel].calculated){b[c.setHeight](a.childHeight)}},calculateStretchMax:function(c,k,m){var l=this,h=k.height,n=k.width,g=c.childItems,a=g.length,p=m.maxSize,o=l.onBeforeStretchMaxInvalidateChild,e=l.onAfterStretchMaxInvalidateChild,q,j,d,b;for(d=0;d":{xtype:"tbfill",height:0}},1:{"->":{xtype:"tbfill",width:0}}}},initComponent:function(){var a=this;if(!a.layout&&a.enableOverflow){a.layout={overflowHandler:"Menu"}}if(a.dock==="right"||a.dock==="left"){a.vertical=true}a.layout=Ext.applyIf(Ext.isString(a.layout)?{type:a.layout}:a.layout||{},{type:a.vertical?"vbox":"hbox",align:a.vertical?"stretchmax":"middle"});if(a.vertical){a.addClsWithUI("vertical")}if(a.ui==="footer"){a.ignoreBorderManagement=true}a.callParent();a.addEvents("overflowchange")},getRefItems:function(a){var e=this,b=e.callParent(arguments),d=e.layout,c;if(a&&e.enableOverflow){c=d.overflowHandler;if(c&&c.menu){b=b.concat(c.menu.getRefItems(a))}}return b},lookupComponent:function(e){var d=arguments;if(typeof e=="string"){var b=Ext.toolbar.Toolbar,a=b.shortcutsHV[this.vertical?1:0][e]||b.shortcuts[e];if(typeof a=="string"){e={xtype:a}}else{if(a){e=Ext.apply({},a)}else{e={xtype:"tbtext",text:e}}}this.applyDefaults(e);d=[e]}return this.callParent(d)},applyDefaults:function(a){if(!Ext.isString(a)){a=this.callParent(arguments)}return a},trackMenu:function(c,a){if(this.trackMenus&&c.menu){var d=a?"mun":"mon",b=this;b[d](c,"mouseover",b.onButtonOver,b);b[d](c,"menushow",b.onButtonMenuShow,b);b[d](c,"menuhide",b.onButtonMenuHide,b)}},onBeforeAdd:function(b){var c=this,a=b.isButton;if(a&&c.defaultButtonUI&&b.ui==="default"&&!b.hasOwnProperty("ui")){b.ui=c.defaultButtonUI}else{if((a||b.isFormField)&&c.ui!=="footer"){b.ui=b.ui+"-toolbar";b.addCls(b.baseCls+"-toolbar")}}if(b instanceof Ext.toolbar.Separator){b.setUI((c.vertical)?"vertical":"horizontal")}c.callParent(arguments)},onAdd:function(a){this.callParent(arguments);this.trackMenu(a)},onRemove:function(a){this.callParent(arguments);this.trackMenu(a,true)},getChildItemsToDisable:function(){return this.items.getRange()},onButtonOver:function(a){if(this.activeMenuBtn&&this.activeMenuBtn!=a){this.activeMenuBtn.hideMenu();a.showMenu();this.activeMenuBtn=a}},onButtonMenuShow:function(a){this.activeMenuBtn=a},onButtonMenuHide:function(a){delete this.activeMenuBtn}},0,["toolbar"],["toolbar","component","container","box"],{toolbar:true,component:true,container:true,box:true},["widget.toolbar"],0,[Ext.toolbar,"Toolbar",Ext,"Toolbar"],0));(Ext.cmd.derive("Ext.layout.component.Dock",Ext.layout.component.Component,{alternateClassName:"Ext.layout.component.AbstractDock",type:"dock",horzAxisProps:{name:"horz",oppositeName:"vert",dockBegin:"left",dockEnd:"right",horizontal:true,marginBegin:"margin-left",maxSize:"maxWidth",minSize:"minWidth",pos:"x",setSize:"setWidth",shrinkWrapDock:"shrinkWrapDockWidth",size:"width",sizeModel:"widthModel"},vertAxisProps:{name:"vert",oppositeName:"horz",dockBegin:"top",dockEnd:"bottom",horizontal:false,marginBegin:"margin-top",maxSize:"maxHeight",minSize:"minHeight",pos:"y",setSize:"setHeight",shrinkWrapDock:"shrinkWrapDockHeight",size:"height",sizeModel:"heightModel"},initializedBorders:-1,horizontalCollapsePolicy:{width:true,x:true},verticalCollapsePolicy:{height:true,y:true},finishRender:function(){var b=this,c,a;b.callParent();c=b.getRenderTarget();a=b.getDockedItems();b.finishRenderItems(c,a)},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},noBorderClasses:[Ext.baseCSSPrefix+"docked-noborder-top",Ext.baseCSSPrefix+"docked-noborder-right",Ext.baseCSSPrefix+"docked-noborder-bottom",Ext.baseCSSPrefix+"docked-noborder-left"],noBorderClassesSides:{top:Ext.baseCSSPrefix+"docked-noborder-top",right:Ext.baseCSSPrefix+"docked-noborder-right",bottom:Ext.baseCSSPrefix+"docked-noborder-bottom",left:Ext.baseCSSPrefix+"docked-noborder-left"},borderWidthProps:{top:"border-top-width",right:"border-right-width",bottom:"border-bottom-width",left:"border-left-width"},handleItemBorders:function(){var m=this,a=m.owner,l,q,h=m.lastDockedItems,g=m.borders,b=a.dockedItems.generation,c=m.noBorderClassesSides,n=m.borderWidthProps,e,k,p,o,j,d=m.collapsed;if(m.initializedBorders==b||(a.border&&!a.manageBodyBorders)){return}m.initializedBorders=b;m.collapsed=false;m.lastDockedItems=q=m.getLayoutItems();m.collapsed=d;l={top:[],right:[],bottom:[],left:[]};for(e=0,k=q.length;ed){h=s.constrainedMax;o=d}else{if(kd){g=s.constrainedMax;n=d}else{if(k':"",'
    {bodyCls}',' {baseCls}-body-{ui}',' {parent.baseCls}-body-{parent.ui}-{.}','{childElCls}"',' style="{bodyStyle}">',"{%this.renderContainer(out,values);%}","
    ","{% this.renderDockedItems(out,values,1); %}"],bodyPosProps:{x:"x",y:"y"},border:true,emptyArray:[],initComponent:function(){this.initBorderProps();this.callParent()},initBorderProps:function(){var a=this;if(a.frame&&a.border&&a.bodyBorder===undefined){a.bodyBorder=false}if(a.frame&&a.border&&(a.bodyBorder===false||a.bodyBorder===0)){a.manageBodyBorders=true}},beforeDestroy:function(){this.destroyDockedItems();this.callParent()},initItems:function(){this.callParent();this.initDockingItems()},initRenderData:function(){var a=this,b=a.callParent();a.initBodyStyles();a.protoBody.writeTo(b);delete a.protoBody;return b},getComponent:function(a){var b=this.callParent(arguments);if(b===undefined&&!Ext.isNumber(a)){b=this.getDockedComponent(a)}return b},getProtoBody:function(){var b=this,a=b.protoBody;if(!a){b.protoBody=a=new Ext.util.ProtoElement({cls:b.bodyCls,style:b.bodyStyle,clsProp:"bodyCls",styleProp:"bodyStyle",styleIsText:true})}return a},initBodyStyles:function(){var b=this,a=b.getProtoBody();if(b.bodyPadding!==undefined){if(b.layout.managePadding){a.setStyle("padding",0)}else{a.setStyle("padding",this.unitizeBox((b.bodyPadding===true)?5:b.bodyPadding))}}b.initBodyBorder()},initBodyBorder:function(){var a=this;if(a.frame&&a.bodyBorder){if(!Ext.isNumber(a.bodyBorder)){a.bodyBorder=1}a.getProtoBody().setStyle("border-width",this.unitizeBox(a.bodyBorder))}},getCollapsedDockedItems:function(){var a=this;return a.header===false||a.collapseMode=="placeholder"?a.emptyArray:[a.getReExpander()]},setBodyStyle:function(b,d){var c=this,a=c.rendered?c.body:c.getProtoBody();if(Ext.isFunction(b)){b=b()}if(arguments.length==1){if(Ext.isString(b)){b=Ext.Element.parseStyles(b)}a.setStyle(b)}else{a.setStyle(b,d)}return c},addBodyCls:function(b){var c=this,a=c.rendered?c.body:c.getProtoBody();a.addCls(b);return c},removeBodyCls:function(b){var c=this,a=c.rendered?c.body:c.getProtoBody();a.removeCls(b);return c},addUIClsToElement:function(b){var c=this,a=c.callParent(arguments);c.addBodyCls([Ext.baseCSSPrefix+b,c.baseCls+"-body-"+b,c.baseCls+"-body-"+c.ui+"-"+b]);return a},removeUIClsFromElement:function(b){var c=this,a=c.callParent(arguments);c.removeBodyCls([Ext.baseCSSPrefix+b,c.baseCls+"-body-"+b,c.baseCls+"-body-"+c.ui+"-"+b]);return a},addUIToElement:function(){var a=this;a.callParent(arguments);a.addBodyCls(a.baseCls+"-body-"+a.ui)},removeUIFromElement:function(){var a=this;a.callParent(arguments);a.removeBodyCls(a.baseCls+"-body-"+a.ui)},getTargetEl:function(){return this.body},applyTargetCls:function(a){this.getProtoBody().addCls(a)},getRefItems:function(a){var b=this.callParent(arguments);return this.getDockingRefItems(a,b)},setupRenderTpl:function(a){this.callParent(arguments);this.setupDockingRenderTpl(a)}},0,0,["component","container","box"],{component:true,container:true,box:true},0,[["docking",Ext.container.DockingContainer]],[Ext.panel,"AbstractPanel"],0));(Ext.cmd.derive("Ext.panel.Header",Ext.container.Container,{isHeader:true,defaultType:"tool",indicateDrag:false,weight:-1,componentLayout:"body",childEls:["body"],renderTpl:['
    {parent.baseCls}-body-{parent.ui}-{.}"',' style="{bodyStyle}">',"{%this.renderContainer(out,values)%}","
    "],headingTpl:['{title}'],shrinkWrap:3,titlePosition:0,headerCls:Ext.baseCSSPrefix+"header",initComponent:function(){var g=this,e=g.hasOwnProperty("titlePosition"),c=g.items,a=e?g.titlePosition:(c?c.length:0),b=[g.orientation,g.getDockName()],d=g.ownerCt;g.addEvents("click","dblclick");g.indicateDragCls=g.headerCls+"-draggable";g.title=g.title||" ";g.tools=g.tools||[];c=g.items=(c?Ext.Array.slice(c):[]);g.orientation=g.orientation||"horizontal";g.dock=(g.dock)?g.dock:(g.orientation=="horizontal")?"top":"left";if(d?(!d.border&&!d.frame):!g.border){b.push(g.orientation+"-noborder")}g.addClsWithUI(b);g.addCls([g.headerCls,g.headerCls+"-"+g.orientation]);if(g.indicateDrag){g.addCls(g.indicateDragCls)}if(g.iconCls||g.icon||g.glyph){g.initIconCmp();if(!e&&!c.length){++a}c.push(g.iconCmp)}g.titleCmp=new Ext.Component({ariaRole:"heading",focusable:false,noWrap:true,flex:1,rtl:g.rtl,id:g.id+"_hd",style:g.titleAlign?("text-align:"+g.titleAlign):"",cls:g.headerCls+"-text-container "+g.baseCls+"-text-container "+g.baseCls+"-text-container-"+g.ui,renderTpl:g.getTpl("headingTpl"),renderData:{title:g.title,cls:g.baseCls,headerCls:g.headerCls,ui:g.ui},childEls:["textEl"],autoEl:{unselectable:"on"},listeners:{render:g.onTitleRender,scope:g}});g.layout=(g.orientation=="vertical")?{type:"vbox",align:"center",alignRoundingMethod:"ceil"}:{type:"hbox",align:"middle",alignRoundingMethod:"floor"};Ext.Array.push(c,g.tools);g.tools.length=0;g.callParent();if(c.lengthb){if(k){l.removeCls(d)}l.addCls(m)}}}},onAdd:function(b,a){var c=this.tools;this.callParent(arguments);if(b.isTool){c.push(b);c[b.type]=b}},initRenderData:function(){return Ext.applyIf(this.callParent(),{bodyCls:this.bodyCls,bodyTargetCls:this.bodyTargetCls,headerCls:this.headerCls})},getDockName:function(){return this.dock},getFramingInfoCls:function(){var c=this,b=c.callParent(),a=c.ownerCt;if(!c.expanding&&(a&&a.collapsed)||c.isCollapsedExpander){b+="-"+a.collapsedCls}return b+"-"+c.dock}},0,["header"],["component","container","box","header"],{component:true,container:true,box:true,header:true},["widget.header"],0,[Ext.panel,"Header"],0));(Ext.cmd.derive("Ext.dd.DragDrop",Ext.Base,{constructor:function(c,a,b){if(c){this.init(c,a,b)}},id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true},moveOnly:false,unlock:function(){this.locked=false},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(a,b){},startDrag:function(a,b){},b4Drag:function(a){},onDrag:function(a){},onDragEnter:function(a,b){},b4DragOver:function(a){},onDragOver:function(a,b){},b4DragOut:function(a){},onDragOut:function(a,b){},b4DragDrop:function(a){},onDragDrop:function(a,b){},onInvalidDrop:function(a){},b4EndDrag:function(a){},endDrag:function(a){},b4MouseDown:function(a){},onMouseDown:function(a){},onMouseUp:function(a){},onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(j,g,o){if(Ext.isNumber(g)){g={left:g,right:g,top:g,bottom:g}}g=g||this.defaultPadding;var l=Ext.get(this.getEl()).getBox(),a=Ext.get(j),n=a.getScroll(),k,d=a.dom,m,h,e;if(d==document.body){k={x:n.left,y:n.top,width:Ext.Element.getViewWidth(),height:Ext.Element.getViewHeight()}}else{m=a.getXY();k={x:m[0],y:m[1],width:d.clientWidth,height:d.clientHeight}}h=l.y-k.y;e=l.x-k.x;this.resetConstraints();this.setXConstraint(e-(g.left||0),k.width-e-l.width-(g.right||0),this.xTickSize);this.setYConstraint(h-(g.top||0),k.height-h-l.height-(g.bottom||0),this.yTickSize)},getEl:function(){if(!this._domRef){this._domRef=Ext.getDom(this.id)}return this._domRef},getDragEl:function(){return Ext.getDom(this.dragElId)},init:function(c,a,b){this.initTarget(c,a,b);Ext.EventManager.on(this.id,"mousedown",this.handleMouseDown,this)},initTarget:function(c,a,b){this.config=b||{};this.DDMInstance=Ext.dd.DragDropManager;this.groups={};if(typeof c!=="string"){c=Ext.id(c)}this.id=c;this.addToGroup((a)?a:"default");this.handleElId=c;this.setDragElId(c);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();this.handleOnAvailable()},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false)},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable()},setPadding:function(c,a,d,b){if(!a&&0!==a){this.padding=[c,c,c,c]}else{if(!d&&0!==d){this.padding=[c,a,c,a]}else{this.padding=[c,a,d,b]}}},setInitPosition:function(d,c){var e=this.getEl(),b,a,g;if(!this.DDMInstance.verifyEl(e)){return}b=d||0;a=c||0;g=Ext.Element.getXY(e);this.initPageX=g[0]-b;this.initPageY=g[1]-a;this.lastPageX=g[0];this.lastPageY=g[1];this.setStartPosition(g)},setStartPosition:function(b){var a=b||Ext.Element.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=a[0];this.startPageY=a[1]},addToGroup:function(a){this.groups[a]=true;this.DDMInstance.regDragDrop(this,a)},removeFromGroup:function(a){if(this.groups[a]){delete this.groups[a]}this.DDMInstance.removeDDFromGroup(this,a)},setDragElId:function(a){this.dragElId=a},setHandleElId:function(a){if(typeof a!=="string"){a=Ext.id(a)}this.handleElId=a;this.DDMInstance.regHandle(this.id,a)},setOuterHandleElId:function(a){if(typeof a!=="string"){a=Ext.id(a)}Ext.EventManager.on(a,"mousedown",this.handleMouseDown,this);this.setHandleElId(a);this.hasOuterHandles=true},unreg:function(){Ext.EventManager.un(this.id,"mousedown",this.handleMouseDown,this);this._domRef=null;this.DDMInstance._remove(this)},destroy:function(){this.unreg()},isLocked:function(){return(this.DDMInstance.isLocked()||this.locked)},handleMouseDown:function(c,b){var a=this;if((a.primaryButtonOnly&&c.button!=0)||a.isLocked()){return}a.DDMInstance.refreshCache(a.groups);if(a.hasOuterHandles||a.DDMInstance.isOverTarget(c.getPoint(),a)){if(a.clickValidator(c)){a.setStartPosition();a.b4MouseDown(c);a.onMouseDown(c);a.DDMInstance.handleMouseDown(c,a);a.DDMInstance.stopEvent(c)}}},clickValidator:function(b){var a=b.getTarget();return(this.isValidHandleChild(a)&&(this.id==this.handleElId||this.DDMInstance.handleWasClicked(a,this.id)))},addInvalidHandleType:function(a){var b=a.toUpperCase();this.invalidHandleTypes[b]=b},addInvalidHandleId:function(a){if(typeof a!=="string"){a=Ext.id(a)}this.invalidHandleIds[a]=a},addInvalidHandleClass:function(a){this.invalidHandleClasses.push(a)},removeInvalidHandleType:function(a){var b=a.toUpperCase();delete this.invalidHandleTypes[b]},removeInvalidHandleId:function(a){if(typeof a!=="string"){a=Ext.id(a)}delete this.invalidHandleIds[a]},removeInvalidHandleClass:function(b){for(var c=0,a=this.invalidHandleClasses.length;c=this.minX;b=b-a){if(!c[b]){this.xTicks[this.xTicks.length]=b;c[b]=true}}for(b=this.initPageX;b<=this.maxX;b=b+a){if(!c[b]){this.xTicks[this.xTicks.length]=b;c[b]=true}}Ext.Array.sort(this.xTicks,this.DDMInstance.numericSort)},setYTicks:function(d,a){this.yTicks=[];this.yTickSize=a;var c={},b;for(b=this.initPageY;b>=this.minY;b=b-a){if(!c[b]){this.yTicks[this.yTicks.length]=b;c[b]=true}}for(b=this.initPageY;b<=this.maxY;b=b+a){if(!c[b]){this.yTicks[this.yTicks.length]=b;c[b]=true}}Ext.Array.sort(this.yTicks,this.DDMInstance.numericSort)},setXConstraint:function(c,b,a){this.leftConstraint=c;this.rightConstraint=b;this.minX=this.initPageX-c;this.maxX=this.initPageX+b;if(a){this.setXTicks(this.initPageX,a)}this.constrainX=true},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks()},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0},setYConstraint:function(a,c,b){this.topConstraint=a;this.bottomConstraint=c;this.minY=this.initPageY-a;this.maxY=this.initPageY+c;if(b){this.setYTicks(this.initPageY,b)}this.constrainY=true},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var b=(this.maintainOffset)?this.lastPageX-this.initPageX:0,a=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(b,a)}else{this.setInitPosition()}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize)}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize)}},getTick:function(h,d){if(!d){return h}else{if(d[0]>=h){return d[0]}else{var b,a,c,g,e;for(b=0,a=d.length;b=h){g=h-d[b];e=d[c]-h;return(e>g)?d[b]:d[c]}}return d[d.length-1]}}},toString:function(){return("DragDrop "+this.id)}},3,0,0,0,0,0,[Ext.dd,"DragDrop"],0));(Ext.cmd.derive("Ext.dd.DD",Ext.dd.DragDrop,{constructor:function(c,a,b){if(c){this.init(c,a,b)}},scroll:true,autoOffset:function(c,b){var a=c-this.startPageX,d=b-this.startPageY;this.setDelta(a,d)},setDelta:function(b,a){this.deltaX=b;this.deltaY=a},setDragElPos:function(c,b){var a=this.getDragEl();this.alignElWithMouse(a,c,b)},alignElWithMouse:function(b,e,c){var g=this.getTargetCoord(e,c),d=b.dom?b:Ext.fly(b,"_dd"),m=d.getSize(),j=Ext.Element,k,a,l,h;if(!this.deltaSetXY){k=this.cachedViewportSize={width:j.getDocumentWidth(),height:j.getDocumentHeight()};a=[Math.max(0,Math.min(g.x,k.width-m.width)),Math.max(0,Math.min(g.y,k.height-m.height))];d.setXY(a);l=this.getLocalX(d);h=d.getLocalY();this.deltaSetXY=[l-g.x,h-g.y]}else{k=this.cachedViewportSize;this.setLocalXY(d,Math.max(0,Math.min(g.x+this.deltaSetXY[0],k.width-m.width)),Math.max(0,Math.min(g.y+this.deltaSetXY[1],k.height-m.height)))}this.cachePosition(g.x,g.y);this.autoScroll(g.x,g.y,b.offsetHeight,b.offsetWidth);return g},cachePosition:function(b,a){if(b){this.lastPageX=b;this.lastPageY=a}else{var c=Ext.Element.getXY(this.getEl());this.lastPageX=c[0];this.lastPageY=c[1]}},autoScroll:function(m,l,e,n){if(this.scroll){var o=Ext.Element.getViewHeight(),b=Ext.Element.getViewWidth(),q=this.DDMInstance.getScrollTop(),d=this.DDMInstance.getScrollLeft(),k=e+l,p=n+m,j=(o+q-l-this.deltaY),g=(b+d-m-this.deltaX),c=40,a=(document.all)?80:30;if(k>o&&j0&&l-qb&&g0&&m-dthis.maxX){a=this.maxX}}if(this.constrainY){if(dthis.maxY){d=this.maxY}}a=this.getTick(a,this.xTicks);d=this.getTick(d,this.yTicks);return{x:a,y:d}},applyConfig:function(){this.callParent();this.scroll=(this.config.scroll!==false)},b4MouseDown:function(a){this.autoOffset(a.getPageX(),a.getPageY())},b4Drag:function(a){this.setDragElPos(a.getPageX(),a.getPageY())},toString:function(){return("DD "+this.id)},getLocalX:function(a){return a.getLocalX()},setLocalXY:function(b,a,c){b.setLocalXY(a,c)}},3,0,0,0,0,0,[Ext.dd,"DD"],0));(Ext.cmd.derive("Ext.dd.DDProxy",Ext.dd.DD,{statics:{dragElId:"ygddfdiv"},constructor:function(c,a,b){if(c){this.init(c,a,b);this.initFrame()}},resizeFrame:true,centerFrame:false,createFrame:function(){var b=this,a=document.body,d,c;if(!a||!a.firstChild){setTimeout(function(){b.createFrame()},50);return}d=this.getDragEl();if(!d){d=document.createElement("div");d.id=this.dragElId;c=d.style;c.position="absolute";c.visibility="hidden";c.cursor="move";c.border="2px solid #aaa";c.zIndex=999;a.insertBefore(d,a.firstChild)}},initFrame:function(){this.createFrame()},applyConfig:function(){this.callParent();this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId)},showFrame:function(e,d){var c=this.getEl(),a=this.getDragEl(),b=a.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(b.width,10)/2),Math.round(parseInt(b.height,10)/2))}this.setDragElPos(e,d);Ext.fly(a).show()},_resizeProxy:function(){if(this.resizeFrame){var a=this.getEl();Ext.fly(this.getDragEl()).setSize(a.offsetWidth,a.offsetHeight)}},b4MouseDown:function(b){var a=b.getPageX(),c=b.getPageY();this.autoOffset(a,c);this.setDragElPos(a,c)},b4StartDrag:function(a,b){this.showFrame(a,b)},b4EndDrag:function(a){Ext.fly(this.getDragEl()).hide()},endDrag:function(c){var b=this.getEl(),a=this.getDragEl();a.style.visibility="";this.beforeMove();b.style.visibility="hidden";Ext.dd.DDM.moveToEl(b,a);a.style.visibility="hidden";b.style.visibility="";this.afterDrag()},beforeMove:function(){},afterDrag:function(){},toString:function(){return("DDProxy "+this.id)}},3,0,0,0,0,0,[Ext.dd,"DDProxy"],0));(Ext.cmd.derive("Ext.dd.StatusProxy",Ext.Component,{animRepair:false,childEls:["ghost"],renderTpl:['
    '],repairCls:Ext.baseCSSPrefix+"dd-drag-repair",constructor:function(a){var b=this;a=a||{};Ext.apply(b,{hideMode:"visibility",hidden:true,floating:true,id:b.id||Ext.id(),cls:Ext.baseCSSPrefix+"dd-drag-proxy "+this.dropNotAllowed,shadow:a.shadow||false,renderTo:Ext.getDetachedBody()});b.callParent(arguments);this.dropStatus=this.dropNotAllowed},dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",setStatus:function(a){a=a||this.dropNotAllowed;if(this.dropStatus!=a){this.el.replaceCls(this.dropStatus,a);this.dropStatus=a}},reset:function(b){var c=this,a=Ext.baseCSSPrefix+"dd-drag-proxy ";c.el.replaceCls(a+c.dropAllowed,a+c.dropNotAllowed);c.dropStatus=c.dropNotAllowed;if(b){c.ghost.update("")}},update:function(a){if(typeof a=="string"){this.ghost.update(a)}else{this.ghost.update("");a.style.margin="0";this.ghost.dom.appendChild(a)}var b=this.ghost.dom.firstChild;if(b){Ext.fly(b).setStyle("float","none")}},getGhost:function(){return this.ghost},hide:function(a){this.callParent();if(a){this.reset(true)}},stop:function(){if(this.anim&&this.anim.isAnimated&&this.anim.isAnimated()){this.anim.stop()}},sync:function(){this.el.sync()},repair:function(c,d,a){var b=this;b.callback=d;b.scope=a;if(c&&b.animRepair!==false){b.el.addCls(b.repairCls);b.el.hideUnders(true);b.anim=b.el.animate({duration:b.repairDuration||500,easing:"ease-out",to:{x:c[0],y:c[1]},stopAnimation:true,callback:b.afterRepair,scope:b})}else{b.afterRepair()}},afterRepair:function(){var a=this;a.hide(true);a.el.removeCls(a.repairCls);if(typeof a.callback=="function"){a.callback.call(a.scope||a)}delete a.callback;delete a.scope}},1,0,["component","box"],{component:true,box:true},0,0,[Ext.dd,"StatusProxy"],0));(Ext.cmd.derive("Ext.dd.DragSource",Ext.dd.DDProxy,{dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",animRepair:true,repairHighlightColor:"c3daf9",constructor:function(b,a){this.el=Ext.get(b);if(!this.dragData){this.dragData={}}Ext.apply(this,a);if(!this.proxy){this.proxy=new Ext.dd.StatusProxy({id:this.el.id+"-drag-status-proxy",animRepair:this.animRepair})}this.callParent([this.el.dom,this.ddGroup||this.group,{dragElId:this.proxy.id,resizeFrame:false,isTarget:false,scroll:this.scroll===true}]);this.dragging=false},getDragData:function(a){return this.dragData},onDragEnter:function(c,d){var b=Ext.dd.DragDropManager.getDDById(d),a;this.cachedTarget=b;if(this.beforeDragEnter(b,c,d)!==false){if(b.isNotifyTarget){a=b.notifyEnter(this,c,this.dragData);this.proxy.setStatus(a)}else{this.proxy.setStatus(this.dropAllowed)}if(this.afterDragEnter){this.afterDragEnter(b,c,d)}}},beforeDragEnter:function(b,a,c){return true},onDragOver:function(c,d){var b=this.cachedTarget||Ext.dd.DragDropManager.getDDById(d),a;if(this.beforeDragOver(b,c,d)!==false){if(b.isNotifyTarget){a=b.notifyOver(this,c,this.dragData);this.proxy.setStatus(a)}if(this.afterDragOver){this.afterDragOver(b,c,d)}}},beforeDragOver:function(b,a,c){return true},onDragOut:function(b,c){var a=this.cachedTarget||Ext.dd.DragDropManager.getDDById(c);if(this.beforeDragOut(a,b,c)!==false){if(a.isNotifyTarget){a.notifyOut(this,b,this.dragData)}this.proxy.reset();if(this.afterDragOut){this.afterDragOut(a,b,c)}}this.cachedTarget=null},beforeDragOut:function(b,a,c){return true},onDragDrop:function(b,c){var a=this.cachedTarget||Ext.dd.DragDropManager.getDDById(c);if(this.beforeDragDrop(a,b,c)!==false){if(a.isNotifyTarget){if(a.notifyDrop(this,b,this.dragData)!==false){this.onValidDrop(a,b,c)}else{this.onInvalidDrop(a,b,c)}}else{this.onValidDrop(a,b,c)}if(this.afterDragDrop){this.afterDragDrop(a,b,c)}}delete this.cachedTarget},beforeDragDrop:function(b,a,c){return true},onValidDrop:function(b,a,c){this.hideProxy();if(this.afterValidDrop){this.afterValidDrop(b,a,c)}},getRepairXY:function(b,a){return this.el.getXY()},onInvalidDrop:function(c,b,d){var a=this;if(!b){b=c;c=null;d=b.getTarget().id}if(a.beforeInvalidDrop(c,b,d)!==false){if(a.cachedTarget){if(a.cachedTarget.isNotifyTarget){a.cachedTarget.notifyOut(a,b,a.dragData)}a.cacheTarget=null}a.proxy.repair(a.getRepairXY(b,a.dragData),a.afterRepair,a);if(a.afterInvalidDrop){a.afterInvalidDrop(b,d)}}},afterRepair:function(){var a=this;if(Ext.enableFx){a.el.highlight(a.repairHighlightColor)}a.dragging=false},beforeInvalidDrop:function(b,a,c){return true},handleMouseDown:function(b){if(this.dragging){return}var a=this.getDragData(b);if(a&&this.onBeforeDrag(a,b)!==false){this.dragData=a;this.proxy.stop();this.callParent(arguments)}},onBeforeDrag:function(a,b){return true},onStartDrag:Ext.emptyFn,alignElWithMouse:function(){this.proxy.ensureAttachedToBody(true);return this.callParent(arguments)},startDrag:function(a,b){this.proxy.reset();this.proxy.hidden=false;this.dragging=true;this.proxy.update("");this.onInitDrag(a,b);this.proxy.show()},onInitDrag:function(a,c){var b=this.el.dom.cloneNode(true);b.id=Ext.id();this.proxy.update(b);this.onStartDrag(a,c);return true},getProxy:function(){return this.proxy},hideProxy:function(){this.proxy.hide();this.proxy.reset(true);this.dragging=false},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)},b4EndDrag:function(a){},endDrag:function(a){this.onEndDrag(this.dragData,a)},onEndDrag:function(a,b){},autoOffset:function(a,b){this.setDelta(-12,-20)},destroy:function(){this.callParent();Ext.destroy(this.proxy)}},1,0,0,0,0,0,[Ext.dd,"DragSource"],0));(Ext.cmd.derive("Ext.panel.Proxy",Ext.Base,{alternateClassName:"Ext.dd.PanelProxy",moveOnDrag:true,constructor:function(a,b){var c=this;c.panel=a;c.id=c.panel.id+"-ddproxy";Ext.apply(c,b)},insertProxy:true,setStatus:Ext.emptyFn,reset:Ext.emptyFn,update:Ext.emptyFn,stop:Ext.emptyFn,sync:Ext.emptyFn,getEl:function(){return this.ghost.el},getGhost:function(){return this.ghost},getProxy:function(){return this.proxy},hide:function(){var a=this;if(a.ghost){if(a.proxy){a.proxy.remove();delete a.proxy}a.panel.unghost(null,a.moveOnDrag);delete a.ghost}},show:function(){var b=this,a;if(!b.ghost){a=b.panel.getSize();b.panel.el.setVisibilityMode(Ext.Element.DISPLAY);b.ghost=b.panel.ghost();if(b.insertProxy){b.proxy=b.panel.el.insertSibling({cls:Ext.baseCSSPrefix+"panel-dd-spacer"});b.proxy.setSize(a)}}},repair:function(b,c,a){this.hide();Ext.callback(c,a||this)},moveProxy:function(a,b){if(this.proxy){a.insertBefore(this.proxy.dom,b)}}},1,0,0,0,0,0,[Ext.panel,"Proxy",Ext.dd,"PanelProxy"],0));(Ext.cmd.derive("Ext.panel.DD",Ext.dd.DragSource,{constructor:function(b,a){var c=this;c.panel=b;c.dragData={panel:b};c.panelProxy=new Ext.panel.Proxy(b,a);c.proxy=c.panelProxy.proxy;c.callParent([b.el,a]);c.setupEl(b)},setupEl:function(a){var c=this,d=a.header,b=a.body;if(d){c.setHandleElId(d.id);b=d.el}if(b){b.setStyle("cursor","move");c.scroll=false}else{a.on("boxready",c.setupEl,c,{single:true})}},showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(a,b){this.panelProxy.show()},b4MouseDown:function(b){var a=b.getPageX(),c=b.getPageY();this.autoOffset(a,c)},onInitDrag:function(a,b){this.onStartDrag(a,b);return true},createFrame:Ext.emptyFn,getDragEl:function(b){var a=this.panelProxy.ghost;if(a){return a.el.dom}},endDrag:function(a){this.panelProxy.hide();this.panel.saveState()},autoOffset:function(a,b){a-=this.startPageX;b-=this.startPageY;this.setDelta(a,b)},onInvalidDrop:function(c,b,d){var a=this;if(a.beforeInvalidDrop(c,b,d)!==false){if(a.cachedTarget){if(a.cachedTarget.isNotifyTarget){a.cachedTarget.notifyOut(a,b,a.dragData)}a.cacheTarget=null}if(a.afterInvalidDrop){a.afterInvalidDrop(b,d)}}}},1,0,0,0,0,0,[Ext.panel,"DD"],0));(Ext.cmd.derive("Ext.util.Memento",Ext.Base,(function(){function d(j,h,k,g){j[g?g+k:k]=h[k]}function c(h,g,j){delete h[j]}function e(l,k,m,j){var g=j?j+m:m,h=l[g];if(h||l.hasOwnProperty(g)){a(k,m,h)}}function a(h,j,g){if(Ext.isDefined(g)){h[j]=g}else{delete h[j]}}function b(h,n,m,j,k){if(n){if(Ext.isArray(j)){var l,g=j.length;for(l=0;la){if(k.anchorToTarget){k.defaultAlign="r-l";if(k.mouseOffset){k.mouseOffset[0]*=-1}}k.anchor="right";return k.getTargetXY()}if(b[1]j){if(k.anchorToTarget){k.defaultAlign="b-t";if(k.mouseOffset){k.mouseOffset[1]*=-1}}k.anchor="bottom";return k.getTargetXY()}}k.anchorCls=Ext.baseCSSPrefix+"tip-anchor-"+k.getAnchorPosition();k.anchorEl.addCls(k.anchorCls);k.targetCounter=0;return b}else{d=k.getMouseOffset();return(k.targetXY)?[k.targetXY[0]+d[0],k.targetXY[1]+d[1]]:d}},getMouseOffset:function(){var a=this,b=a.anchor?[0,0]:[15,18];if(a.mouseOffset){b[0]+=a.mouseOffset[0];b[1]+=a.mouseOffset[1]}return b},getAnchorPosition:function(){var b=this,a;if(b.anchor){b.tipAnchor=b.anchor.charAt(0)}else{a=b.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);b.tipAnchor=a[1].charAt(0)}switch(b.tipAnchor){case"t":return"top";case"b":return"bottom";case"r":return"right"}return"left"},getAnchorAlign:function(){switch(this.anchor){case"top":return"tl-bl";case"left":return"tl-tr";case"right":return"tr-tl";default:return"bl-tl"}},getOffsets:function(){var c=this,d,b,a=c.getAnchorPosition().charAt(0);if(c.anchorToTarget&&!c.trackMouse){switch(a){case"t":b=[0,9];break;case"b":b=[0,-13];break;case"r":b=[-13,0];break;default:b=[9,0];break}}else{switch(a){case"t":b=[-15-c.anchorOffset,30];break;case"b":b=[-19-c.anchorOffset,-13-c.el.dom.offsetHeight];break;case"r":b=[-15-c.el.dom.offsetWidth,-13-c.anchorOffset];break;default:b=[25,-13-c.anchorOffset];break}}d=c.getMouseOffset();b[0]+=d[0];b[1]+=d[1];return b},onTargetOver:function(d){var c=this,b=c.delegate,a;if(c.disabled||d.within(c.target.dom,true)){return}a=b?d.getTarget(b):true;if(a){c.triggerElement=a;c.triggerEvent=d;c.clearTimer("hide");c.targetXY=d.getXY();c.delayShow()}},delayShow:function(){var a=this;if(a.hidden&&!a.showTimer){if(Ext.Date.getElapsed(a.lastActive)b){e=d[a];for(c in e){if(e[c]){e[c].hide(true)}}}}},1,0,0,0,0,0,[Ext.chart,"Callout"],0));(Ext.cmd.derive("Ext.draw.CompositeSprite",Ext.util.MixedCollection,{autoDestroy:false,isCompositeSprite:true,constructor:function(a){var b=this;a=a||{};Ext.apply(b,a);b.addEvents("mousedown","mouseup","mouseover","mouseout","click");b.id=Ext.id(null,"ext-sprite-group-");b.callParent()},onClick:function(a){this.fireEvent("click",a)},onMouseUp:function(a){this.fireEvent("mouseup",a)},onMouseDown:function(a){this.fireEvent("mousedown",a)},onMouseOver:function(a){this.fireEvent("mouseover",a)},onMouseOut:function(a){this.fireEvent("mouseout",a)},attachEvents:function(b){var a=this;b.on({scope:a,mousedown:a.onMouseDown,mouseup:a.onMouseUp,mouseover:a.onMouseOver,mouseout:a.onMouseOut,click:a.onClick})},add:function(b,c){var a=this.callParent(arguments);this.attachEvents(a);return a},insert:function(a,b,c){return this.callParent(arguments)},remove:function(b){var a=this;b.un({scope:a,mousedown:a.onMouseDown,mouseup:a.onMouseUp,mouseover:a.onMouseOver,mouseout:a.onMouseOut,click:a.onClick});return a.callParent(arguments)},getBBox:function(){var e=0,n,j,k=this.items,g=this.length,h=Infinity,c=h,m=-h,b=h,l=-h,d,a;for(;e0){b=d.first();d.remove(b);a.remove(b,c)}}d.clearListeners()}},1,0,0,0,0,[["animate",Ext.util.Animate]],[Ext.draw,"CompositeSprite"],0));(Ext.cmd.derive("Ext.draw.Surface",Ext.Base,{separatorRe:/[, ]+/,enginePriority:["Svg","Vml"],statics:{create:function(b,d){d=d||this.prototype.enginePriority;var c=0,a=d.length;for(;c1,a,d,c,h,g;if(j||Ext.isArray(b[0])){a=j?b:b[0];d=[];for(c=0,h=a.length;ch){b=j-1}else{if(a-1;b--){this.remove(a[b],d)}},onRemove:Ext.emptyFn,onDestroy:Ext.emptyFn,applyViewBox:function(){var d=this,m=d.viewBox,a=d.width||1,h=d.height||1,g,e,k,b,j,c,l;if(m&&(a||h)){g=m.x;e=m.y;k=m.width;b=m.height;j=h/b;c=a/k;l=Math.min(c,j);if(k*l0.85){e=e.getDarker(0.3)}else{if(h>0.7){e=e.getDarker(0.15)}}}}c.colors=[e.getDarker(0.3).toString(),e.getDarker(0.15).toString(),e.toString(),e.getLighter(0.15).toString(),e.getLighter(0.3).toString()];delete c.baseColor}if(c.colors){a=c.colors.slice();s=b.markerThemes;r=b.seriesThemes;j=a.length;b.colors=a;for(;m0?q:q+a)+h.el.getX(),y:(o>0?n:n+o)+h.el.getY(),width:s(a),height:s(o)};h.mask.updateBox(h.maskSelection);h.mask.show();h.maskSprite.setAttributes({hidden:true},true)}else{if(t=="horizontal"){r=["M",q,k,"L",q,o]}else{if(t=="vertical"){r=["M",m,n,"L",a,n]}else{r=["M",q,k,"L",q,o,"M",m,n,"L",a,n]}}h.maskSprite.setAttributes({path:r,"stroke-width":t===true?1:1,hidden:false},true)}}},onMouseLeave:function(b){var a=this;a.mouseMoved=false;a.mouseDown=false;a.maskMouseDown=false;a.mask.hide();a.maskSprite.hide(true)}},1,0,0,0,0,0,[Ext.chart,"Mask"],0));(Ext.cmd.derive("Ext.chart.Navigation",Ext.Base,{setZoom:function(p){var t=this,o=t.axes.items,r,m,c,a=t.chartBBox,u=a.width,d=a.height,g={x:p.x-t.el.getX(),y:p.y-t.el.getY(),width:p.width,height:p.height},j,n,q,b,h,l,k,e,s;for(r=0,m=o.length;r0.5?0.2:0.8;K.setAttributes({fill:String(n.fromHSL.apply({},F))},true)}if(q.stacked&&d&&(y.totalPositiveValues||y.totalNegativeValues)){T=(y.totalPositiveValues||0);I=(y.totalNegativeValues||0);B=T+I;if(d=="total"){o=z(B)}else{if(d=="balances"){if(T==0&&I==0){o=z(0)}else{o=z(T);N=z(I)}}}if(o){K=s.getAt(c);if(!K){K=q.onCreateLabel(S,y,P,"over")}F=n.fromString(K.attr.color||K.attr.fill).getHSL();K.setAttributes({text:o,style:E.font,fill:String(n.fromHSL.apply({},F))},true);q.onPlaceLabel(K,S,y,P,"over",M,C);c++}if(N){K=s.getAt(c);if(!K){K=q.onCreateLabel(S,y,P,"under")}F=n.fromString(K.attr.color||K.attr.fill).getHSL();K.setAttributes({text:N,style:E.font,fill:String(n.fromHSL.apply({},F))},true);q.onPlaceLabel(K,S,y,P,"under",M,C);c++}}}J++;C++}}m=s.length;while(m>c){Q.push(c);c++}}q.hideLabels(Q)},hideLabels:function(b){var a=this.labelsGroup,c=!!b&&b.length;if(!a){return}if(c===false){c=a.getCount();while(c--){a.getAt(c).hide(true)}}else{while(c--){a.getAt(b[c]).hide(true)}}}},1,0,0,0,0,0,[Ext.chart,"Label"],0));(Ext.cmd.derive("Ext.chart.TipSurface",Ext.draw.Component,{spriteArray:false,renderFirst:true,constructor:function(a){this.callParent([a]);if(a.sprites){this.spriteArray=[].concat(a.sprites);delete a.sprites}},onRender:function(){var c=this,b=0,a=0,d,e;this.callParent(arguments);e=c.spriteArray;if(c.renderFirst&&e){c.renderFirst=false;for(a=e.length;br){t=r}if(x=0){u[v].positiveValue+=r;if(x0){t=0}}else{u[v].negativeValue+=r;if(t>u[v].negativeValue){t=u[v].negativeValue}if(x<0){x=0}}}}}}if(!isFinite(x)){x=C.prevMax||0}if(!isFinite(t)){t=C.prevMin||0}if(typeof t==="number"){t=Ext.Number.correctFloat(t)}if(typeof x==="number"){x=Ext.Number.correctFloat(x)}if(t!=x&&(x!=Math.floor(x)||t!=Math.floor(t))){t=Math.floor(t);x=Math.floor(x)+1}if(!isNaN(C.minimum)){t=C.minimum}if(!isNaN(C.maximum)){x=C.maximum}if(t>=x){t=Math.floor(t);x=t+1}return{min:t,max:x}},calcEnds:function(){var h=this,d=h.getRange(),g=d.min,a=d.max,c,j,e,b;c=(Ext.isNumber(h.majorTickSteps)?h.majorTickSteps+1:h.steps);j=!(Ext.isNumber(h.maximum)&&Ext.isNumber(h.minimum)&&Ext.isNumber(h.majorTickSteps)&&h.majorTickSteps>0);e=Ext.draw.Draw.snapEnds(g,a,c,j);if(Ext.isNumber(h.maximum)){e.to=h.maximum;b=true}if(Ext.isNumber(h.minimum)){e.from=h.minimum;b=true}if(h.adjustMaximumByMajorUnit){e.to=Math.ceil(e.to/e.step)*e.step;b=true}if(h.adjustMinimumByMajorUnit){e.from=Math.floor(e.from/e.step)*e.step;b=true}if(b){e.steps=Math.ceil((e.to-e.from)/e.step)}h.prevMin=(g==a?0:g);h.prevMax=a;return e},drawAxis:function(N){var m=this,P,H=m.x,G=m.y,T=m.dashSize,p=m.length,I=m.position,b=(I=="left"||I=="right"),k=[],j=(m.isNumericAxis),t=m.applyData(),z=t.step,D=t.steps,F=Ext.isArray(D),h=t.from,S=t.to,g=(S-h)||1,Q,w,v,L,B=m.minorTickSteps||0,A=m.minorTickSteps||0,o=Math.max(B+1,0),n=Math.max(A+1,0),J=(I=="left"||I=="top"?-1:1),d=T*J,c=m.chart.series.items,M=c[0],q=M?M.nullGutters:m.nullGutters,O,R,r,E=0,C=0,a,K,u,s,e,l;m.from=h;m.to=S;if(m.hidden||(h>S)){return}if((F&&(D.length==0))||(!F&&isNaN(z))){return}if(F){D=Ext.Array.filter(D,function(y,x,U){return(+y>+m.from&&+y<+m.to)},this);D=Ext.Array.union([m.from],D,[m.to])}else{D=new Array();for(s=+m.from;s<+m.to;s+=z){D.push(s)}D.push(+m.to)}C=D.length;for(P=0,u=c.length;P0){r=z/(R+1)}}if(q&&r){for(a=0;a=0){if(!this.sprites){for(e=0;e<=l;e++){n=a.add({type:"path",path:["M",d+(m-c)*o(e/l*g-g),b+(m-c)*k(e/l*g-g),"L",d+m*o(e/l*g-g),b+m*k(e/l*g-g),"Z"],stroke:"#ccc"});n.setAttributes({hidden:false},true);h.push(n)}}else{h=this.sprites;for(e=0;e<=l;e++){h[e].setAttributes({path:["M",d+(m-c)*o(e/l*g-g),b+(m-c)*k(e/l*g-g),"L",d+m*o(e/l*g-g),b+m*k(e/l*g-g),"Z"],stroke:"#ccc"},true)}}}this.sprites=h;this.drawLabel();if(this.title){this.drawTitle()}},drawTitle:function(){var e=this,d=e.chart,a=d.surface,g=d.chartBBox,c=e.titleSprite,b;if(!c){e.titleSprite=c=a.add(Ext.apply({type:"text",zIndex:2},e.axisTitleStyle,e.labelTitle))}c.setAttributes(Ext.apply({text:e.title},e.label||{}),true);b=c.getBBox();c.setAttributes({x:g.x+(g.width/2)-(b.width/2),y:g.y+g.height-(b.height/2)-4},true)},setTitle:function(a){this.title=a;this.drawTitle()},drawLabel:function(){var l=this.chart,p=l.surface,b=l.chartBBox,j=b.x+(b.width/2),h=b.y+b.height,m=this.margin||10,d=Math.min(b.width,2*b.height)/2+2*m,u=Math.round,n=[],g,s=this.maximum||0,k=this.minimum||0,r=this.steps,q=0,v,t=Math.PI,c=Math.cos,a=Math.sin,e=this.label,o=e.renderer||Ext.identityFn;if(!this.labelArray){for(q=0;q<=r;q++){v=(q===0||q===r)?7:0;g=p.add({type:"text",text:o(u(k+q/r*(s-k))),x:j+d*c(q/r*t-t),y:h+d*a(q/r*t-t)-v,"text-anchor":"middle","stroke-width":0.2,zIndex:10,stroke:"#333"});g.setAttributes({hidden:false},true);n.push(g)}}else{n=this.labelArray;for(q=0;q<=r;q++){v=(q===0||q===r)?7:0;n[q].setAttributes({text:o(u(k+q/r*(s-k))),x:j+d*c(q/r*t-t),y:h+d*a(q/r*t-t)-v},true)}}this.labelArray=n}},0,0,0,0,["axis.gauge"],0,[Ext.chart.axis,"Gauge"],0));(Ext.cmd.derive("Ext.chart.axis.Numeric",Ext.chart.axis.Axis,{alternateClassName:"Ext.chart.NumericAxis",type:"Numeric",isNumericAxis:true,constructor:function(c){var d=this,a=!!(c.label&&c.label.renderer),b;d.callParent([c]);b=d.label;if(c.constrain==null){d.constrain=(c.minimum!=null&&c.maximum!=null)}if(!a){b.renderer=function(e){return d.roundToDecimal(e,d.decimals)}}},roundToDecimal:function(a,c){var b=Math.pow(10,c||0);return Math.round(a*b)/b},minimum:NaN,maximum:NaN,constrain:true,decimals:2,scale:"linear",doConstrain:function(){var u=this,h=u.chart,b=h.getChartStore(),j=b.data.items,t,w,a,e=h.series.items,k=u.fields,c=k.length,g=u.calcEnds(),n=g.from,q=g.to,r,o,s=false,m,v=[],p;for(t=0,w=j.length;t+q){p=false;break}}if(p){v.push(a)}}h.setSubStore(new Ext.data.Store({model:b.model,data:v}))},position:"left",adjustMaximumByMajorUnit:false,adjustMinimumByMajorUnit:false,processView:function(){var e=this,d=e.chart,c=d.series.items,b,a;for(b=0,a=c.length;b>0),e)}}}},processView:function(){var a=this;if(a.fromDate){a.minimum=+a.fromDate}if(a.toDate){a.maximum=+a.toDate}if(a.constrain){a.doConstrain()}},calcEnds:function(){var c=this,a,b=c.step;if(b){a=c.getRange();a=Ext.draw.Draw.snapEndsByDateAndStep(new Date(a.min),new Date(a.max),Ext.isNumber(b)?[Date.MILLI,b]:b);if(c.minimum){a.from=c.minimum}if(c.maximum){a.to=c.maximum}return a}else{return c.callParent(arguments)}}},1,0,0,0,["axis.time"],0,[Ext.chart.axis,"Time",Ext.chart,"TimeAxis"],0));(Ext.cmd.derive("Ext.chart.series.Series",Ext.Base,{type:null,title:null,showInLegend:true,renderer:function(e,a,c,d,b){return c},shadowAttributes:null,animating:false,nullGutters:{lower:0,upper:0,verticalAxis:undefined},nullPadding:{left:0,right:0,width:0,bottom:0,top:0,height:0},constructor:function(a){var b=this;if(a){Ext.apply(b,a)}b.shadowGroups=[];b.mixins.labels.constructor.call(b,a);b.mixins.highlights.constructor.call(b,a);b.mixins.tips.constructor.call(b,a);b.mixins.callouts.constructor.call(b,a);b.addEvents({scope:b,itemclick:true,itemmouseover:true,itemmouseout:true,itemmousedown:true,itemmouseup:true,mouseleave:true,afterdraw:true,titlechange:true});b.mixins.observable.constructor.call(b,a);b.on({scope:b,itemmouseover:b.onItemMouseOver,itemmouseout:b.onItemMouseOut,mouseleave:b.onMouseLeave});if(b.style){Ext.apply(b.seriesStyle,b.style)}},onRedraw:Ext.emptyFn,eachRecord:function(c,b){var a=this.chart;a.getChartStore().each(c,b)},getRecordCount:function(){var b=this.chart,a=b.getChartStore();return a?a.getCount():0},isExcluded:function(a){var b=this.__excludes;return !!(b&&b[a])},setBBox:function(a){var d=this,c=d.chart,b=c.chartBBox,h=a?{left:0,right:0,bottom:0,top:0}:c.maxGutters,e,g;e={x:b.x,y:b.y,width:b.width,height:b.height};d.clipBox=e;g={x:(e.x+h.left)-(c.zoom.x*c.zoom.width),y:(e.y+h.bottom)-(c.zoom.y*c.zoom.height),width:(e.width-(h.left+h.right))*c.zoom.width,height:(e.height-(h.bottom+h.top))*c.zoom.height};d.bbox=g},onAnimate:function(b,a){var c=this;b.stopAnimation();if(c.animating){return b.animate(Ext.applyIf(a,c.chart.animate))}else{c.animating=true;return b.animate(Ext.apply(Ext.applyIf(a,c.chart.animate),{callback:function(){c.animating=false;c.fireEvent("afterrender")}}))}},getGutters:function(){return this.nullGutters},getPadding:function(){return this.nullPadding},onItemMouseOver:function(b){var a=this;if(b.series===a){if(a.highlight){a.highlightItem(b)}if(a.tooltip){a.showTip(b)}}},onItemMouseOut:function(b){var a=this;if(b.series===a){a.unHighlightItem();if(a.tooltip){a.hideTip(b)}}},onMouseLeave:function(){var a=this;a.unHighlightItem();if(a.tooltip){a.hideTip()}},getItemForPoint:function(a,j){if(!this.items||!this.items.length||this.seriesIsHidden){return null}var g=this,b=g.items,h=g.bbox,e,c,d;if(!Ext.draw.Draw.withinBox(a,j,h)){return null}for(c=0,d=b.length;c0){c=Infinity;m=-c;for(e=0,j=d.length;em){m=b}if(bm){m=s}if(s0){b=Infinity;m=-b;for(d=0,j=c.length;dm){m=o}if(n-1){b="top"}else{if(Ext.Array.indexOf(d,"bottom")>-1){b="bottom"}else{if(l.get("top")&&l.get("bottom")){for(h=0,k=o.length;h-1){a="left"}else{if(Ext.Array.indexOf(d,"right")>-1){a="right"}else{if(l.get("left")&&l.get("right")){for(h=0,k=e.length;h0&&r){E=M[0].get(j.xField);if(typeof E!="number"){E=+E;if(isNaN(E)){r=false}}}for(J=0;Jk.width)&&j.areas){I=j.shrink(z,D,k.width);z=I.x;D=I.y}return{bbox:k,minX:C,minY:B,xValues:z,yValues:D,xScale:h,yScale:F,areasLen:A}},getPaths:function(){var z=this,m=z.chart,c=m.getChartStore(),e=true,g=z.getBounds(),a=g.bbox,n=z.items=[],w=[],b,d=0,p=[],s,j,k,h,q,u,l,A,r,v,o,t;j=g.xValues.length;for(s=0;sa.x+a.width){h=a.x+a.width-m}}g=g-l;if(ga.y+a.height){g-=2*l}}if(u.chart.animate&&!u.chart.resizing){e.show(true);u.onAnimate(e,{to:{x:h,y:g}})}else{e.setAttributes({x:h,y:g},true);if(r&&u.animation){u.animation.on("afteranimate",function(){e.show(true)})}else{e.show(true)}}},onPlaceCallout:function(m,r,J,G,F,d,k){var M=this,s=M.chart,D=s.surface,H=s.resizing,L=M.callouts,t=M.items,v=(G==0)?false:t[G-1].point,z=(G==t.length-1)?false:t[G+1].point,c=J.point,A,g,N,K,o,q,b=(m&&m.label?m.label.getBBox():{width:0,height:0}),I=30,C=10,B=3,h,e,j,w,u,E=M.clipRect,n,l;if(!b.width||!b.height){return}if(!v){v=c}if(!z){z=c}K=(z[1]-v[1])/(z[0]-v[0]);o=(c[1]-v[1])/(c[0]-v[0]);q=(z[1]-c[1])/(z[0]-c[0]);g=Math.sqrt(1+K*K);A=[1/g,K/g];N=[-A[1],A[0]];if(o>0&&q<0&&N[1]<0||o<0&&q>0&&N[1]>0){N[0]*=-1;N[1]*=-1}else{if(Math.abs(o)Math.abs(q)&&N[0]>0){N[0]*=-1;N[1]*=-1}}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;if(h(E[0]+E[2])){N[0]*=-1}if(e(E[1]+E[3])){N[1]*=-1}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;m.lines.setAttributes({path:["M",c[0],c[1],"L",n,l,"Z"]},true);m.box.setAttributes({x:h,y:e,width:j,height:w},true);m.label.setAttributes({x:n+(N[0]>0?B:-(b.width+B)),y:l},true);for(u in m){m[u].show(true)}},isItemInPoint:function(j,h,m,c){var g=this,b=m.pointsUp,d=m.pointsDown,q=Math.abs,o=false,l=false,e=Infinity,a,n,k;for(a=0,n=b.length;aq(j-k[0])){e=q(j-k[0]);o=true;if(l){++a}}if(!o||(o&&l)){k=b[a-1];if(h>=k[1]&&(!d.length||h<=(d[a-1][1]))){m.storeIndex=a-1;m.storeField=g.yField[c];m.storeItem=g.chart.getChartStore().getAt(a-1);m._points=d.length?[k,d[a-1]]:[k];return true}else{break}}}return false},highlightSeries:function(){var a,c,b;if(this._index!==undefined){a=this.areas[this._index];if(a.__highlightAnim){a.__highlightAnim.paused=true}a.__highlighted=true;a.__prevOpacity=a.__prevOpacity||a.attr.opacity||1;a.__prevFill=a.__prevFill||a.attr.fill;a.__prevLineWidth=a.__prevLineWidth||a.attr.lineWidth;b=Ext.draw.Color.fromString(a.__prevFill);c={lineWidth:(a.__prevLineWidth||0)+2};if(b){c.fill=b.getLighter(0.2).toString()}else{c.opacity=Math.max(a.__prevOpacity-0.3,0)}if(this.chart.animate){a.__highlightAnim=new Ext.fx.Anim(Ext.apply({target:a,to:c},this.chart.animate))}else{a.setAttributes(c,true)}}},unHighlightSeries:function(){var a;if(this._index!==undefined){a=this.areas[this._index];if(a.__highlightAnim){a.__highlightAnim.paused=true}if(a.__highlighted){a.__highlighted=false;a.__highlightAnim=new Ext.fx.Anim({target:a,to:{fill:a.__prevFill,opacity:a.__prevOpacity,lineWidth:a.__prevLineWidth}})}}},highlightItem:function(c){var b=this,a,d;if(!c){this.highlightSeries();return}a=c._points;d=a.length==2?["M",a[0][0],a[0][1],"L",a[1][0],a[1][1]]:["M",a[0][0],a[0][1],"L",a[0][0],b.bbox.y+b.bbox.height];b.highlightSprite.setAttributes({path:d,hidden:false},true)},unHighlightItem:function(a){if(!a){this.unHighlightSeries()}if(this.highlightSprite){this.highlightSprite.hide(true)}},hideAll:function(a){var b=this;a=(isNaN(b._index)?a:b._index)||0;b.__excludes[a]=true;b.areas[a].hide(true);b.redraw()},showAll:function(a){var b=this;a=(isNaN(b._index)?a:b._index)||0;b.__excludes[a]=false;b.areas[a].show(true);b.redraw()},redraw:function(){var a=this,b;b=a.chart.legend.rebuild;a.chart.legend.rebuild=false;a.chart.redraw();a.chart.legend.rebuild=b},hide:function(){if(this.areas){var h=this,b=h.areas,d,c,a,g,e;if(b&&b.length){for(d=0,g=b.length;d0)][R]+=n(L)}}y[+(r>0)].push(n(r));y[+(H>0)].push(n(H));g=k.apply(w,y[0]);d=k.apply(w,y[1]);B=(K?q.height-P.height:q.width-P.width)/(d+g);a=a+g*B*(K?-1:1)}else{if(H/r<0){a=a-H*B*(K?-1:1)}}if(o.boundColumn){u=T.axes.get(I.xAxis);if(u){Q=u.applyData();J=Q.from;t=Q.to}if(o.xField&&!Ext.isNumber(J)){G=o.getMinMaxYValues();J=G[0];t=G[1]}if(!Ext.isNumber(J)){J=0}if(!Ext.isNumber(t)){t=0}s=o.getGutters();M=(q.width-(s.lower+s.upper))/((t-J)||1);h=q.x+s.lower;l=[];for(R=0,z=S.length;R=0){ab+=aa}else{C+=aa}e=Math.round((aa-o(G.minY,0))*G.scale);X=h+(v>1?U:0);r={fill:O[X%k]};if(N){Ext.apply(r,{height:e,width:o(G.groupBarWidth,0),x:(u.boundColumn?G.barsLoc[W]:(x.x+V.left+(A-K)*0.5+W*A*(1+m)+g*G.groupBarWidth*(1+c)*!S)),y:a-e})}else{M=(E-1)-W;Ext.apply(r,{height:o(G.groupBarWidth,0),width:e+(a==G.zero),x:a+(a!=G.zero),y:(x.y+V.top+(A-K)*0.5+M*A*(1+m)+g*G.groupBarWidth*(1+c)*!S+1)})}if(e<0){if(N){r.y=l;r.height=t(e)}else{r.x=l+e;r.width=t(e)}}if(S){if(e<0){l+=e*(N?-1:1)}else{a+=e*(N?-1:1)}J+=t(e);if(e<0){D+=t(e)}}r.x=Math.floor(r.x)+1;H=Math.floor(r.y);if(Ext.isIE8m&&r.y>H){H--}r.y=H;r.width=Math.floor(r.width);r.height=Math.floor(r.height);y.push({series:u,yField:P[U],storeItem:L,value:[L.get(u.xField),aa],attr:r,point:N?[r.x+r.width/2,aa>=0?r.y:r.y+r.height]:[aa>=0?r.x+r.width:r.x,r.y+r.height/2]});if(T&&Z.resizing){p=N?{x:r.x,y:G.zero,width:r.width,height:0}:{x:G.zero,y:r.y,width:0,height:r.height};if(n&&(S&&!s||!S)){s=true;for(d=0;d=0?(l.y-v.y):(v.y+v.height-l.y-l.height));if(zl.height){q=k}}if(!C){C=l.y;if(R>=0){switch(q){case r:C+=l.height+(N?-F:-c/2);break;case P:C+=(N?c+H:c/2);break;case k:C+=(N?-F:-c/2);break}}else{switch(q){case r:C+=(N?c+F:c/2);break;case P:C+=(N?l.height-F:l.height-c/2);break;case k:C+=(N?l.height+c+F:l.height+c/2);break}}}}else{if(!a||!c||(K&&!l.width)){J.hide(true);return}C=l.y+(N?(d+c)/2:d/2);if(q==k){var z=(R>=0?(v.x+v.width-l.x-l.width):(l.x-v.x));if(zl.width){if(K){if(c>l.width){J.hide(true);return}E=l.x+l.width/2;C=l.y+l.height-(l.height-a)/2;N=true}else{q=k}}}if(!E){E=l.x;if(R>=0){switch(q){case r:E+=(N?a/2:H);break;case P:E+=l.width+(N?-a/2:-a-H);break;case k:E+=l.width+(N?a/2:H);break}}else{switch(q){case r:E+=l.width+(N?-a/2:-a-H);break;case P:E+=(N?a/2:H);break;case k:E+=(N?-a/2:-a-H);break}}}}}else{if(q==G||q==o){if(K&&h){s=J.attr.text;J.setAttributes({style:Ext.applyIf((J.attr&&J.attr.style)||{},{"font-weight":"bold","font-size":"14px"})});g=m.getLabelSize(s,J.attr.style);a=g.width;c=g.height;switch(q){case G:if(I){E=l.x+(N?d/2:(d-a)/2);C=b-(t.totalDim-t.totalNegDim)-c/2-F}else{E=b+(t.totalDim-t.totalNegDim)+H;C=l.y+(N?(d+c)/2:d/2)}break;case o:if(I){E=l.x+(N?d/2:(d-a)/2);C=b+t.totalNegDim+c/2}else{E=b-t.totalNegDim-a-H;C=l.y+(N?(d+c)/2:d/2)}break}}}}if(E==undefined||C==undefined){J.hide(true);return}J.isOutside=(q==k);J.setAttributes({text:s});A={x:E,y:C};if(N){A.rotate={x:E,y:C,degrees:270}}if(L&&D){if(I){E=l.x+l.width/2;C=b}else{E=b;C=l.y+l.height/2}J.setAttributes({x:E,y:C},true);if(N){J.setAttributes({rotate:{x:E,y:C,degrees:270}},true)}}if(L){m.onAnimate(J,{to:A})}else{J.setAttributes(Ext.apply(A,{hidden:false}),true)}},getLabelSize:function(j,g){var m=this.testerLabel,a=this.label,d=Ext.apply({},a,g,this.seriesLabelStyle||{}),b=a.orientation==="vertical",l,k,e,c;if(!m){m=this.testerLabel=this.chart.surface.add(Ext.apply({type:"text",opacity:0},d))}m.setAttributes({style:g,text:j},true);l=m.getBBox();k=l.width;e=l.height;return{width:b?e:k,height:b?k:e}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(a,d,b){var c=b.sprite.getBBox();return c.x<=a&&c.y<=d&&(c.x+c.width)>=a&&(c.y+c.height)>=d},hideAll:function(a){var e=this.chart.axes,c=e.items,d=c.length,b=0;a=(isNaN(this._index)?a:this._index)||0;if(!this.__excludes){this.__excludes=[]}this.__excludes[a]=true;this.drawSeries();for(b;b0){d.yField.push(e[0].get(b.field))}},getSegment:function(b){var D=this,C=D.rad,d=Math.cos,a=Math.sin,o=Math.abs,l=D.centerX,j=D.centerY,z=0,w=0,v=0,t=0,h=0,g=0,e=0,c=0,A=0.01,n=b.endRho-b.startRho,s=b.startAngle,q=b.endAngle,k=(s+q)/2*C,m=b.margin||0,u=o(q-s)>180,E=Math.min(s,q)*C,B=Math.max(s,q)*C,p=false;l+=m*d(k);j+=m*a(k);z=l+b.startRho*d(E);h=j+b.startRho*a(E);w=l+b.endRho*d(E);g=j+b.endRho*a(E);v=l+b.startRho*d(B);e=j+b.startRho*a(B);t=l+b.endRho*d(B);c=j+b.endRho*a(B);if(o(z-v)<=A&&o(h-e)<=A){p=true}if(p){return{path:[["M",z,h],["L",w,g],["A",b.endRho,b.endRho,0,+u,1,t,c],["Z"]]}}else{return{path:[["M",z,h],["L",w,g],["A",b.endRho,b.endRho,0,+u,1,t,c],["L",v,e],["A",b.startRho,b.startRho,0,+u,0,z,h],["Z"]]}}},calcMiddle:function(q){var l=this,m=l.rad,p=q.slice,o=l.centerX,n=l.centerY,k=p.startAngle,e=p.endAngle,j=Math.max(("rho" in p)?p.rho:l.radius,l.label.minMargin),h=+l.donut,b=Math.min(k,e)*m,a=Math.max(k,e)*m,d=-(b+(a-b)/2),g=o+(q.endRho+q.startRho)/2*Math.cos(d),c=n-(q.endRho+q.startRho)/2*Math.sin(d);q.middle={x:g,y:c}},drawSeries:function(){var w=this,U=w.chart,b=U.getChartStore(),A=w.group,Q=w.chart.animate,D=w.chart.axes.get(0),E=D&&D.minimum||w.minimum||0,I=D&&D.maximum||w.maximum||0,n=w.angleField||w.field||w.xField,K=U.surface,H=U.chartBBox,h=w.rad,c=+w.donut,V={},B=[],m=w.seriesStyle,a=w.seriesLabelStyle,g=w.colorArrayStyle,z=g&&g.length||0,k=Math.cos,s=Math.sin,t,e,d,v,r,C,M,F,G,J,S,R,l,T,x,o,O,P,q,y,u,N,L;Ext.apply(m,w.style||{});w.setBBox();y=w.bbox;if(w.colorSet){g=w.colorSet;z=g.length}if(!b||!b.getCount()||w.seriesIsHidden){w.hide();w.items=[];return}e=w.centerX=H.x+(H.width/2);d=w.centerY=H.y+H.height;w.radius=Math.min(e-H.x,d-H.y);w.slices=r=[];w.items=B=[];if(!w.value){J=b.getAt(0);w.value=J.get(n)}M=w.value;if(w.needle){N={series:w,value:M,startAngle:-180,endAngle:0,rho:w.radius};u=-180*(1-(M-E)/(I-E));r.push(N)}else{u=-180*(1-(M-E)/(I-E));N={series:w,value:M,startAngle:-180,endAngle:u,rho:w.radius};L={series:w,value:w.maximum-M,startAngle:u,endAngle:0,rho:w.radius};r.push(N,L)}for(S=0,G=r.length;S=g&&b=n.startRho&&k<=n.endRho)},getLegendColor:function(b){var a=this.colorSet||this.colorArrayStyle;return a[b%a.length]}},1,0,0,0,["series.gauge"],0,[Ext.chart.series,"Gauge"],0));(Ext.cmd.derive("Ext.chart.series.Line",Ext.chart.series.Cartesian,{alternateClassName:["Ext.chart.LineSeries","Ext.chart.LineChart"],type:"line",selectionTolerance:20,showMarkers:true,markerConfig:{},style:{},smooth:false,defaultSmoothness:3,fill:false,constructor:function(c){this.callParent(arguments);var e=this,a=e.chart.surface,g=e.chart.shadow,d,b;c.highlightCfg=Ext.Object.merge({"stroke-width":3},c.highlightCfg);Ext.apply(e,c,{shadowAttributes:[{"stroke-width":6,"stroke-opacity":0.05,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}},{"stroke-width":4,"stroke-opacity":0.1,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}},{"stroke-width":2,"stroke-opacity":0.15,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}}]});e.group=a.getGroup(e.seriesId);if(e.showMarkers){e.markerGroup=a.getGroup(e.seriesId+"-markers")}if(g){for(d=0,b=e.shadowAttributes.length;daw.width){a=ap.shrink(aD,ag,aw.width);aD=a.x;ag=a.y}ap.items=[];m=0;aB=aD.length;for(R=0;Ra.x+a.width){k-=A}else{k+=A}h.setAttributes({rotation:{x:k,y:j,degrees:-45}},true)}else{if(q=="under"||q=="over"){h.setAttributes({rotation:{degrees:0}},true);if(ka.x+a.width){k=a.x+a.width-o}}g=p.height/2+n;j=j+(q=="over"?-g:g);if(ja.y+a.height){j-=2*g}}}}if(z.chart.animate&&!z.chart.resizing){h.show(true);z.onAnimate(h,{to:{x:k,y:j}})}else{h.setAttributes({x:k,y:j},true);if(u&&z.animation){z.animation.on("afteranimate",function(){h.show(true)})}else{h.show(true)}}},highlightItem:function(){var b=this,a=b.line;b.callParent(arguments);if(a&&!b.highlighted){if(!("__strokeWidth" in a)){a.__strokeWidth=parseFloat(a.attr["stroke-width"])||0}if(a.__anim){a.__anim.paused=true}a.__anim=new Ext.fx.Anim({target:a,to:{"stroke-width":a.__strokeWidth+3}});b.highlighted=true}},unHighlightItem:function(){var c=this,a=c.line,b;c.callParent(arguments);if(a&&c.highlighted){b=a.__strokeWidth||parseFloat(a.attr["stroke-width"])||0;a.__anim=new Ext.fx.Anim({target:a,to:{"stroke-width":b}});c.highlighted=false}},onPlaceCallout:function(m,r,J,G,F,d,k){if(!F){return}var M=this,s=M.chart,D=s.surface,H=s.resizing,L=M.callouts,t=M.items,v=G==0?false:t[G-1].point,z=(G==t.length-1)?false:t[G+1].point,c=[+J.point[0],+J.point[1]],A,g,N,K,o,q,I=L.offsetFromViz||30,C=L.offsetToSide||10,B=L.offsetBox||3,h,e,j,w,u,E=M.clipRect,b={width:L.styles.width||10,height:L.styles.height||10},n,l;if(!v){v=c}if(!z){z=c}K=(z[1]-v[1])/(z[0]-v[0]);o=(c[1]-v[1])/(c[0]-v[0]);q=(z[1]-c[1])/(z[0]-c[0]);g=Math.sqrt(1+K*K);A=[1/g,K/g];N=[-A[1],A[0]];if(o>0&&q<0&&N[1]<0||o<0&&q>0&&N[1]>0){N[0]*=-1;N[1]*=-1}else{if(Math.abs(o)Math.abs(q)&&N[0]>0){N[0]*=-1;N[1]*=-1}}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;if(h(E[0]+E[2])){N[0]*=-1}if(e(E[1]+E[3])){N[1]*=-1}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;if(s.animate){M.onAnimate(m.lines,{to:{path:["M",c[0],c[1],"L",n,l,"Z"]}});if(m.panel){m.panel.setPosition(h,e,true)}}else{m.lines.setAttributes({path:["M",c[0],c[1],"L",n,l,"Z"]},true);if(m.panel){m.panel.setPosition(h,e)}}for(u in m){m[u].show(true)}},isItemInPoint:function(j,g,A,q){var C=this,n=C.items,s=C.selectionTolerance,k=null,z,c,p,v,h,w,b,t,a,l,B,e,d,o,u,r,D=Math.sqrt,m=Math.abs;c=n[q];z=q&&n[q-1];if(q>=h){z=n[h-1]}p=z&&z.point;v=c&&c.point;w=z?p[0]:v[0]-s;b=z?p[1]:v[1];t=c?v[0]:p[0]+s;a=c?v[1]:p[1];e=D((j-w)*(j-w)+(g-b)*(g-b));d=D((j-t)*(j-t)+(g-a)*(g-a));o=Math.min(e,d);if(o<=s){return o==e?z:c}return false},toggleAll:function(a){var e=this,b,d,g,c;if(!a){Ext.chart.series.Cartesian.prototype.hideAll.call(e)}else{Ext.chart.series.Cartesian.prototype.showAll.call(e)}if(e.line){e.line.setAttributes({hidden:!a},true);if(e.line.shadows){for(b=0,c=e.line.shadows,d=c.length;b1?T:U)%w]}||{}));D=Ext.apply({},o.segment,{slice:r,series:s,storeItem:r.storeItem,index:U});s.calcMiddle(D);if(g){D.shadows=r.shadowAttrs[T]}y[U]=D;if(!z){m=Ext.apply({type:"path",group:x,middle:D.middle},Ext.apply(h,e&&{fill:e[(K>1?T:U)%w]}||{}));z=J.add(Ext.apply(m,o))}r.sprite=r.sprite||[];D.sprite=z;r.sprite.push(z);r.point=[D.middle.x,D.middle.y];if(S){o=s.renderer(z,a.getAt(U),o,U,a);z._to=o;z._animating=true;s.onAnimate(z,{to:o,listeners:{afteranimate:{fn:function(){this._animating=false},scope:z}}})}else{o=s.renderer(z,a.getAt(U),Ext.apply(o,{hidden:false}),U,a);z.setAttributes(o,true)}B+=q}}F=x.getCount();for(U=0;U>0]&&x.getAt(U)){x.getAt(U).hide(true)}}if(g){aa=Q.length;for(E=0;E>0]){for(T=0;T90&&A<270)?A+180:A;h=k.attr.rotation.degrees;if(h!=null&&Math.abs(h-A)>180*0.5){if(A>h){A-=360}else{A+=360}A=A%360}else{A=a(A)}b.rotate={degrees:A,x:b.x,y:b.y};break;default:break}b.translate={x:0,y:0};if(e&&!B&&(u!="rotate"||h!=null)){E.onAnimate(k,{to:b})}else{k.setAttributes(b,true)}k._from=t},onPlaceCallout:function(l,o,z,v,u,d,e){var A=this,q=A.chart,j=A.centerX,h=A.centerY,B=z.middle,b={x:B.x,y:B.y},m=B.x-j,k=B.y-h,c=1,n,g=Math.atan2(k,m||1),a=(l&&l.label?l.label.getBBox():{width:0,height:0}),w=20,t=10,s=10,r;if(!a.width||!a.height){return}c=z.endRho+w;n=(z.endRho+z.startRho)/2+(z.endRho-z.startRho)/3;b.x=c*Math.cos(g)+j;b.y=c*Math.sin(g)+h;m=n*Math.cos(g);k=n*Math.sin(g);if(q.animate){A.onAnimate(l.lines,{to:{path:["M",m+j,k+h,"L",b.x,b.y,"Z","M",b.x,b.y,"l",m>0?t:-t,0,"z"]}});A.onAnimate(l.box,{to:{x:b.x+(m>0?t:-(t+a.width+2*s)),y:b.y+(k>0?(-a.height-s/2):(-a.height-s/2)),width:a.width+2*s,height:a.height+2*s}});A.onAnimate(l.label,{to:{x:b.x+(m>0?(t+s):-(t+a.width+s)),y:b.y+(k>0?-a.height/4:-a.height/4)}})}else{l.lines.setAttributes({path:["M",m+j,k+h,"L",b.x,b.y,"Z","M",b.x,b.y,"l",m>0?t:-t,0,"z"]},true);l.box.setAttributes({x:b.x+(m>0?t:-(t+a.width+2*s)),y:b.y+(k>0?(-a.height-s/2):(-a.height-s/2)),width:a.width+2*s,height:a.height+2*s},true);l.label.setAttributes({x:b.x+(m>0?(t+s):-(t+a.width+s)),y:b.y+(k>0?-a.height/4:-a.height/4)},true)}for(r in l){l[r].show(true)}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(l,j,n,e){var h=this,d=h.centerX,c=h.centerY,p=Math.abs,o=p(l-d),m=p(j-c),g=n.startAngle,a=n.endAngle,k=Math.sqrt(o*o+m*m),b=Math.atan2(j-c,l-d)/h.rad;if(b>h.firstAngle){b-=h.accuracy}return(b<=g&&b>a&&k>=n.startRho&&k<=n.endRho)},hideAll:function(c){var g,b,j,h,e,a,d;c=(isNaN(this._index)?c:this._index)||0;this.__excludes=this.__excludes||[];this.__excludes[c]=true;d=this.slices[c].sprite;for(e=0,a=d.length;e45&&n<135)||(n>225&&n<315)){w=(n>45&&n<135?1:-1);b.y+=w*r.height/2}else{w=(n>=135&&n<=225?-1:1);b.x+=w*r.width/2}if(u){h.setAttributes({x:k,y:j},true)}if(d){h.show(true);A.onAnimate(h,{to:b})}else{h.setAttributes(b,true);h.show(true)}},toggleAll:function(a){var e=this,b,d,g,c;if(!a){Ext.chart.series.Radar.superclass.hideAll.call(e)}else{Ext.chart.series.Radar.superclass.showAll.call(e)}if(e.radar){e.radar.setAttributes({hidden:!a},true);if(e.radar.shadows){for(b=0,c=e.radar.shadows,d=c.length;ba.x+a.width){k-=B}else{k+=B}h.setAttributes({rotation:{x:k,y:j,degrees:-45}},true)}else{if(r=="under"||r=="over"){h.setAttributes({rotation:{degrees:0}},true);if(ka.x+a.width){k=a.x+a.width-o}}g=p.height/2+n;j=j+(r=="over"?-g:g);if(ja.y+a.height){j-=2*g}}}}if(!m.animate){h.setAttributes({x:k,y:j},true);h.show(true)}else{if(v){q=w.sprite.getActiveAnimation();if(q){q.on("afteranimate",function(){h.setAttributes({x:k,y:j},true);h.show(true)})}else{h.show(true)}}else{A.onAnimate(h,{to:{x:k,y:j}})}}},onPlaceCallout:function(k,m,B,z,w,c,h){var E=this,n=E.chart,u=n.surface,A=n.resizing,D=E.callouts,o=E.items,b=B.point,F,a=k.label.getBBox(),C=30,t=10,s=3,e,d,g,r,q,v=E.bbox,l,j;F=[Math.cos(Math.PI/4),-Math.sin(Math.PI/4)];l=b[0]+F[0]*C;j=b[1]+F[1]*C;e=l+(F[0]>0?0:-(a.width+2*s));d=j-a.height/2-s;g=a.width+2*s;r=a.height+2*s;if(e(v[0]+v[2])){F[0]*=-1}if(d(v[1]+v[3])){F[1]*=-1}l=b[0]+F[0]*C;j=b[1]+F[1]*C;e=l+(F[0]>0?0:-(a.width+2*s));d=j-a.height/2-s;g=a.width+2*s;r=a.height+2*s;if(n.animate){E.onAnimate(k.lines,{to:{path:["M",b[0],b[1],"L",l,j,"Z"]}},true);E.onAnimate(k.box,{to:{x:e,y:d,width:g,height:r}},true);E.onAnimate(k.label,{to:{x:l+(F[0]>0?s:-(a.width+s)),y:j}},true)}else{k.lines.setAttributes({path:["M",b[0],b[1],"L",l,j,"Z"]},true);k.box.setAttributes({x:e,y:d,width:g,height:r},true);k.label.setAttributes({x:l+(F[0]>0?s:-(a.width+s)),y:j},true)}for(q in k){k[q].show(true)}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(c,h,e){var b,d=10,a=Math.abs;function g(j){var l=a(j[0]-c),k=a(j[1]-h);return Math.sqrt(l*l+k*k)}b=e.point;return(b[0]-d<=c&&b[0]+d>=c&&b[1]-d<=h&&b[1]+d>=h)}},1,0,0,0,["series.scatter"],0,[Ext.chart.series,"Scatter"],0));(Ext.cmd.derive("Ext.layout.container.Table",Ext.layout.container.Container,{alternateClassName:"Ext.layout.TableLayout",monitorResize:false,type:"table",createsInnerCt:true,targetCls:Ext.baseCSSPrefix+"table-layout-ct",tableCls:Ext.baseCSSPrefix+"table-layout",cellCls:Ext.baseCSSPrefix+"table-layout-cell",tableAttrs:null,getItemSizePolicy:function(a){return this.autoSizePolicy},initHierarchyState:function(a){a.inShrinkWrapTable=true},getLayoutItems:function(){var g=this,b=[],c=g.callParent(),e,a=c.length,d;for(d=0;d=h||n[d]>0){if(d>=h){d=0;a=0;b++;for(c=0;c0){n[c]--}}}else{d++}}m.push({rowIdx:b,cellIdx:a});for(c=l.colspan||1;c;--c){n[d]=l.rowspan||1;++d}++a}return m},getRenderTree:function(){var k=this,h=k.getLayoutItems(),o,p=[],q=Ext.apply({tag:"table",role:"presentation",cls:k.tableCls,cellspacing:0,cellpadding:0,cn:{tag:"tbody",cn:p}},k.tableAttrs),c=k.tdAttrs,d=k.needsDivWrap(),e,g=h.length,n,m,j,b,a,l;o=k.calculateCells(h);for(e=0;e0){--this.disabled}},handleAdd:function(b,a){if(!this.disabled){if(a.is(this.selector)){this.onItemAdd(a.ownerCt,a)}if(a.isQueryable){this.onContainerAdd(a)}}},onItemAdd:function(c,b){var e=this,a=e.items,d=e.addHandler;if(!e.disabled){if(d){d.call(e.scope||b,b)}if(a){a.add(b)}}},onItemRemove:function(c,b){var e=this,a=e.items,d=e.removeHandler;if(!e.disabled){if(d){d.call(e.scope||b,b)}if(a){a.remove(b)}}},onContainerAdd:function(g,b){var k=this,j,h,c=k.handleAdd,a=k.handleRemove,d,e;if(g.isContainer){g.on("add",c,k);g.on("dockedadd",c,k);g.on("remove",a,k);g.on("dockedremove",a,k)}if(b!==true){j=g.query(k.selector);for(d=0,h=j.length;d]+>/gi,asText:function(a){return String(a).replace(this.stripTagsRE,"")},asUCText:function(a){return String(a).toUpperCase().replace(this.stripTagsRE,"")},asUCString:function(a){return String(a).toUpperCase()},asDate:function(a){if(!a){return 0}if(Ext.isDate(a)){return a.getTime()}return Date.parse(String(a))},asFloat:function(a){var b=parseFloat(String(a).replace(/,/g,""));return isNaN(b)?0:b},asInt:function(a){var b=parseInt(String(a).replace(/,/g,""),10);return isNaN(b)?0:b}},0,0,0,0,0,0,[Ext.data,"SortTypes"],0));(Ext.cmd.derive("Ext.data.Types",Ext.Base,{singleton:true},0,0,0,0,0,0,[Ext.data,"Types"],function(){var a=Ext.data.SortTypes;Ext.apply(Ext.data.Types,{stripRe:/[\$,%]/g,AUTO:{sortType:a.none,type:"auto"},STRING:{convert:function(c){var b=this.useNull?null:"";return(c===undefined||c===null)?b:String(c)},sortType:a.asUCString,type:"string"},INT:{convert:function(b){if(typeof b=="number"){return parseInt(b)}return b!==undefined&&b!==null&&b!==""?parseInt(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"int"},FLOAT:{convert:function(b){if(typeof b==="number"){return b}return b!==undefined&&b!==null&&b!==""?parseFloat(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"float"},BOOL:{convert:function(b){if(typeof b==="boolean"){return b}if(this.useNull&&(b===undefined||b===null||b==="")){return null}return b==="true"||b==1},sortType:a.none,type:"bool"},DATE:{convert:function(c){var d=this.dateReadFormat||this.dateFormat,b;if(!c){return null}if(c instanceof Date){return c}if(d){return Ext.Date.parse(c,d)}b=Date.parse(c);return b?new Date(b):null},sortType:a.asDate,type:"date"}});Ext.apply(Ext.data.Types,{BOOLEAN:this.BOOL,INTEGER:this.INT,NUMBER:this.FLOAT})}));(Ext.cmd.derive("Ext.data.Field",Ext.Base,{isField:true,constructor:function(b){var d=this,c=Ext.data.Types,a;if(Ext.isString(b)){b={name:b}}Ext.apply(d,b);a=d.sortType;if(d.type){if(Ext.isString(d.type)){d.type=c[d.type.toUpperCase()]||c.AUTO}}else{d.type=c.AUTO}if(Ext.isString(a)){d.sortType=Ext.data.SortTypes[a]}else{if(Ext.isEmpty(a)){d.sortType=d.type.sortType}}if(!b.hasOwnProperty("convert")){d.convert=d.type.convert}else{if(!d.convert&&d.type.convert&&!b.hasOwnProperty("defaultValue")){d.defaultValue=d.type.convert(d.defaultValue)}}if(b.convert){d.hasCustomConvert=true}},dateFormat:null,dateReadFormat:null,dateWriteFormat:null,useNull:false,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC",allowBlank:true,persist:true},1,0,0,0,["data.field"],0,[Ext.data,"Field"],0));(Ext.cmd.derive("Ext.data.Errors",Ext.util.MixedCollection,{isValid:function(){return this.length===0},getByField:function(d){var c=[],a,b;for(b=0;ba)){return false}else{return true}},email:function(b,a){return Ext.data.validations.emailRe.test(a)},format:function(a,b){return !!(a.matcher&&a.matcher.test(b))},inclusion:function(a,b){return a.list&&Ext.Array.indexOf(a.list,b)!=-1},exclusion:function(a,b){return a.list&&Ext.Array.indexOf(a.list,b)==-1}},0,0,0,0,0,0,[Ext.data,"validations"],0));(Ext.cmd.derive("Ext.data.Model",Ext.Base,{alternateClassName:"Ext.data.Record",compareConvertFields:function(a,d){var c=a.convert&&a.type&&a.convert!==a.type.convert,b=d.convert&&d.type&&d.convert!==d.type.convert;if(c&&!b){return 1}if(!c&&b){return -1}return 0},itemNameFn:function(a){return a.name},onClassExtended:function(b,c,a){var d=a.onBeforeCreated;a.onBeforeCreated=function(g,F){var E=this,G=Ext.getClassName(g),t=g.prototype,z=g.prototype.superclass,j=F.validations||[],v=F.fields||[],h,o=F.associations||[],e=function(I,K){var J=0,H,L;if(I){I=Ext.Array.from(I);for(H=I.length;J0;if(e){c.afterEdit(d)}}}},getModifiedFieldNames:function(d){var c=this,e=c[c.persistenceProperty],a=[],b;d=d||c.dataSave;for(b in e){if(e.hasOwnProperty(b)){if(!c.isEqual(e[b],d[b])){a.push(b)}}}return a},getChanges:function(){var a=this.modified,b={},c;for(c in a){if(a.hasOwnProperty(c)){b[c]=this.get(c)}}return b},isModified:function(a){return this.modified.hasOwnProperty(a)},setDirty:function(){var c=this,a=c.fields.items,g=a.length,e,b,d;c.dirty=true;for(d=0;d0){b=p.data.items;h=b.length;for(r=0;r0;if(l){if(d){w[c]=u[0].property;w[n]=u[0].direction||"ASC"}else{w[c]=x.encodeSorters(u)}}if(e&&a&&a.length>0){if(m){k=0;if(a.length>1&&l){k=1}w[e]=a[k].property;w[p]=a[k].direction}else{w[e]=x.encodeSorters(a)}}if(r&&o&&o.length>0){w[r]=x.encodeFilters(o)}return w},buildUrl:function(c){var b=this,a=b.getUrl(c);if(b.noCache){a=Ext.urlAppend(a,Ext.String.format("{0}={1}",b.cacheString,Ext.Date.now()))}return a},getUrl:function(a){return a.url||this.api[a.action]||this.url},doRequest:function(a,c,b){},afterRequest:Ext.emptyFn,onDestroy:function(){Ext.destroy(this.reader,this.writer)}},1,0,0,0,["proxy.server"],0,[Ext.data.proxy,"Server",Ext.data,"ServerProxy"],0));(Ext.cmd.derive("Ext.data.proxy.Ajax",Ext.data.proxy.Server,{alternateClassName:["Ext.data.HttpProxy","Ext.data.AjaxProxy"],actionMethods:{create:"POST",read:"GET",update:"POST",destroy:"POST"},binary:false,doRequest:function(a,e,b){var d=this.getWriter(),c=this.buildRequest(a);if(a.allowWrite()){c=d.write(c)}Ext.apply(c,{binary:this.binary,headers:this.headers,timeout:this.timeout,scope:this,callback:this.createRequestCallback(c,a,e,b),method:this.getMethod(c),disableCaching:false});Ext.Ajax.request(c);return c},getMethod:function(a){return this.actionMethods[a.action]},createRequestCallback:function(d,a,e,b){var c=this;return function(h,j,g){c.processResponse(j,a,d,g,e,b)}}},0,0,0,0,["proxy.ajax"],0,[Ext.data.proxy,"Ajax",Ext.data,"HttpProxy",Ext.data,"AjaxProxy"],function(){Ext.data.HttpProxy=this}));(Ext.cmd.derive("Ext.data.proxy.Client",Ext.data.proxy.Proxy,{alternateClassName:"Ext.data.ClientProxy",isSynchronous:true,clear:function(){}},0,0,0,0,0,0,[Ext.data.proxy,"Client",Ext.data,"ClientProxy"],0));(Ext.cmd.derive("Ext.data.proxy.Memory",Ext.data.proxy.Client,{alternateClassName:"Ext.data.MemoryProxy",constructor:function(a){this.callParent([a]);this.setReader(this.reader)},updateOperation:function(b,g,d){var c=0,e=b.getRecords(),a=e.length;for(c;c=h.total){h.success=false;h.count=0;h.records=[]}else{h.records=Ext.Array.slice(h.records,c.start,c.start+c.limit);h.count=h.records.length}}}if(h.success){c.setSuccessful()}else{g.fireEvent("exception",g,null,c)}Ext.callback(j,k||g,[c])},clear:Ext.emptyFn},1,0,0,0,["proxy.memory"],0,[Ext.data.proxy,"Memory",Ext.data,"MemoryProxy"],0));(Ext.cmd.derive("Ext.util.LruCache",Ext.util.HashMap,{constructor:function(a){Ext.apply(this,a);this.callParent([a])},add:function(b,e){var d=this,a=d.findKey(e),c;if(a){d.unlinkEntry(c=d.map[a]);c.prev=d.last;c.next=null}else{c={prev:d.last,next:null,key:b,value:e}}if(d.last){d.last.next=c}else{d.first=c}d.last=c;d.callParent([b,c]);d.prune();return e},insertBefore:function(b,g,c){var e=this,a,d;if(c=this.map[this.findKey(c)]){a=e.findKey(g);if(a){e.unlinkEntry(d=e.map[a])}else{d={prev:c.prev,next:c,key:b,value:g}}if(c.prev){d.prev.next=d}else{e.first=d}d.next=c;c.prev=d;e.prune();return g}else{return e.add(b,g)}},get:function(a){var b=this.map[a];if(b){if(b.next){this.moveToEnd(b)}return b.value}},removeAtKey:function(a){this.unlinkEntry(this.map[a]);return this.callParent(arguments)},clear:function(a){this.first=this.last=null;return this.callParent(arguments)},unlinkEntry:function(a){if(a){if(a.next){a.next.prev=a.prev}else{this.last=a.prev}if(a.prev){a.prev.next=a.next}else{this.first=a.next}a.prev=a.next=null}},moveToEnd:function(a){this.unlinkEntry(a);if(a.prev=this.last){this.last.next=a}else{this.first=a}this.last=a},getArray:function(c){var a=[],b=this.first;while(b){a.push(c?b.key:b.value);b=b.next}return a},each:function(c,b,a){var g=this,e=a?g.last:g.first,d=g.length;b=b||g;while(e){if(c.call(b,e.key,e.value,d)===false){break}e=a?e.prev:e.next}return g},findKey:function(b){var a,c=this.map;for(a in c){if(c.hasOwnProperty(a)&&c[a].value===b){return a}}return undefined},clone:function(){var a=new this.self(this.initialConfig),c=this.map,b;a.suspendEvents();for(b in c){if(c.hasOwnProperty(b)){a.add(b,c[b].value)}}a.resumeEvents();return a},prune:function(){var a=this,b=a.maxSize?(a.length-a.maxSize):0;if(b>0){for(;a.first&&b;b--){a.removeAtKey(a.first.key)}}}},1,0,0,0,0,0,[Ext.util,"LruCache"],0));(Ext.cmd.derive("Ext.data.PageMap",Ext.util.LruCache,{clear:function(a){var b=this;b.pageMapGeneration=(b.pageMapGeneration||0)+1;b.callParent(arguments)},forEach:function(k,m){var h=this,d=Ext.Object.getKeys(h.map),a=d.length,c,b,l,e,g;for(c=0;c0){this.sort(a.items,"prepend",false)}},decodeGroupers:function(e){if(!Ext.isArray(e)){if(e===undefined){e=[]}else{e=[e]}}var d=e.length,g=Ext.util.Grouper,b,c,a=[];for(c=0;c0},fireGroupChange:function(){this.fireEvent("groupchange",this,this.groupers)},getGroups:function(b){var d=this.data.items,a=d.length,c=[],k={},g,h,j,e;for(e=0;e-1){q.push({record:b,index:g})}if(d){d.remove(b)}}q=Ext.Array.sort(q,function(w,v){var y=w.index,x=v.index;return y===v.index2?0:(yb-1)?b-1:d.prefetchEnd,c;a=Math.max(0,a);c=e.data.getRange(g,a);if(d.fireEvent!==false){e.fireEvent("guaranteedrange",c,g,a,d)}if(d.callback){d.callback.call(d.scope||e,c,g,a,d)}},guaranteeRange:function(e,a,d,c,b){b=Ext.apply({callback:d,scope:c},b);this.getRange(e,a,b)},prefetchRange:function(g,b){var d=this,c,a,e;if(!d.rangeCached(g,b)){c=d.getPageFromRecordIndex(g);a=d.getPageFromRecordIndex(b);d.data.maxSize=d.purgePageCount?(a-c+1)+d.purgePageCount:0;for(e=c;e<=a;e++){if(!d.pageCached(e)){d.prefetchPage(e)}}}},primeCache:function(d,a,c){var b=this;if(c===-1){d=Math.max(d-b.leadingBufferZone,0);a=Math.min(a+b.trailingBufferZone,b.totalCount-1)}else{if(c===1){d=Math.max(Math.min(d-b.trailingBufferZone,b.totalCount-b.pageSize),0);a=Math.min(a+b.leadingBufferZone,b.totalCount-1)}else{d=Math.min(Math.max(Math.floor(d-((b.leadingBufferZone+b.trailingBufferZone)/2)),0),b.totalCount-b.pageSize);a=Math.min(Math.max(Math.ceil(a+((b.leadingBufferZone+b.trailingBufferZone)/2)),0),b.totalCount-1)}}b.prefetchRange(d,a)},sort:function(){var a=this;if(a.buffered&&a.remoteSort){a.data.clear()}return a.callParent(arguments)},doSort:function(b){var e=this,a,d,c;if(e.remoteSort){if(e.buffered){e.data.clear();e.loadPage(1)}else{e.load()}}else{e.data.sortBy(b);if(!e.buffered){a=e.getRange();d=a.length;for(c=0;c=h.totalCount)?d:g;j=c===0?0:c-1;b=g===d?g:g+1;h.lastRequestStart=c;if(h.rangeCached(j,b)){h.onGuaranteedRange(l);k=h.data.getRange(c,g)}else{h.fireEvent("cachemiss",h,c,g);a=function(n,m){if(h.rangeCached(j,b)){h.fireEvent("cachefilled",h,c,g);h.data.un("pageAdded",a);h.onGuaranteedRange(l)}};h.data.on("pageAdded",a);h.prefetchRange(c,g)}h.primeCache(c,g,c0){c=b[0].get(g)}for(;d0){a=c[0].get(g)}for(;da){a=e}}return a},average:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getAverage,b,true,[c])}else{return b.getAverage(b.data.items,c)}},getAverage:function(b,e){var c=0,a=b.length,d=0;if(b.length>0){for(;c1){for(c=0,a=b.length;c0){g.timeout=setTimeout(Ext.bind(k.handleTimeout,k,[g]),n)}k.setupErrorHandling(g);k[m]=Ext.bind(k.handleResponse,k,[g],true);k.loadScript(g);return g},abort:function(c){var b=this,d=b.requests,a;if(c){if(!c.id){c=d[c]}b.handleAbort(c)}else{for(a in d){if(d.hasOwnProperty(a)){b.abort(d[a])}}}},setupErrorHandling:function(a){a.script.onerror=Ext.bind(this.handleError,this,[a])},handleAbort:function(a){a.errorType="abort";this.handleResponse(null,a)},handleError:function(a){a.errorType="error";this.handleResponse(null,a)},cleanupErrorHandling:function(a){a.script.onerror=null},handleTimeout:function(a){a.errorType="timeout";this.handleResponse(null,a)},handleResponse:function(a,b){var c=true;if(b.timeout){clearTimeout(b.timeout)}delete this[b.callbackName];delete this.requests[b.id];this.cleanupErrorHandling(b);Ext.fly(b.script).remove();if(b.errorType){c=false;Ext.callback(b.failure,b.scope,[b.errorType])}else{Ext.callback(b.success,b.scope,[a])}Ext.callback(b.callback,b.scope,[c,a,b.errorType]);Ext.EventManager.idleEvent.fire()},createScript:function(c,d,b){var a=document.createElement("script");a.setAttribute("src",Ext.urlAppend(c,Ext.Object.toQueryString(d)));a.setAttribute("async",true);a.setAttribute("type","text/javascript");return a},loadScript:function(a){Ext.getHead().appendChild(a.script)}},0,0,0,0,0,0,[Ext.data,"JsonP"],0));(Ext.cmd.derive("Ext.data.proxy.JsonP",Ext.data.proxy.Server,{alternateClassName:"Ext.data.ScriptTagProxy",defaultWriterType:"base",callbackKey:"callback",recordParam:"records",autoAppendParams:true,constructor:function(){this.addEvents("exception");this.callParent(arguments)},doRequest:function(a,g,b){var d=this,c=d.buildRequest(a),e=c.params;Ext.apply(c,{callbackKey:d.callbackKey,timeout:d.timeout,scope:d,disableCaching:false,callback:d.createRequestCallback(c,a,g,b)});if(d.autoAppendParams){c.params={}}c.jsonp=Ext.data.JsonP.request(c);c.params=e;a.setStarted();d.lastRequest=c;return c},createRequestCallback:function(d,a,e,b){var c=this;return function(j,g,h){delete c.lastRequest;c.processResponse(j,a,d,g,e,b)}},setException:function(b,a){b.setException(b.request.jsonp.errorType)},buildUrl:function(h){var k=this,a=k.callParent(arguments),d=h.records,e=k.getWriter(),g,c,b,j;if(e&&h.operation.allowWrite()){h=e.write(h)}g=h.params;c=g.filters,delete g.filters;if(c&&c.length){for(j=0;j0){g[k.recordParam]=k.encodeRecords(d)}if(k.autoAppendParams){a=Ext.urlAppend(a,Ext.Object.toQueryString(g))}return a},abort:function(){var a=this.lastRequest;if(a){Ext.data.JsonP.abort(a.jsonp)}},encodeRecords:function(b){var d=[],c=0,a=b.length;for(;c0},isExpandable:function(){var b=this;if(b.get("expandable")){return !(b.isLeaf()||(b.isLoaded()&&!b.hasChildNodes()))}return false},triggerUIUpdate:function(){this.afterEdit([])},appendChild:function(c,l,d){var j=this,e,h,g,k,b,m={isLast:true,parentId:j.getId(),depth:(j.data.depth||0)+1};if(Ext.isArray(c)){j.callStore("suspendAutoSync");for(e=0,h=c.length-1;e0){Ext.Array.sort(e,h);this.setFirstChild(e[0]);this.setLastChild(e[g-1]);for(d=0;d0){e=[];for(d=0;dk){j=j.substring(j.length-k)}else{if(j.length>>16)&4095)|(k.version<<12),4);l[3]=a(128|((k.clockSeq>>>8)&63),2)+a(k.clockSeq&255,2);l[4]=a(k.salt.hi,4)+a(k.salt.lo,8);if(k.version==4){k.init()}else{++j.lo;if(j.lo>=c){j.lo=0;++j.hi}}return l.join("-").toLowerCase()},getRecId:function(j){return j.getId()},init:function(){var k=this,j,l;if(k.version==4){k.clockSeq=d(0,h-1);j=k.salt||(k.salt={});l=k.timestamp||(k.timestamp={});j.lo=d(0,c-1);j.hi=d(0,g-1);l.lo=d(0,c-1);l.hi=d(0,e-1)}else{k.salt=b(k.salt);k.timestamp=b(k.timestamp);k.salt.hi|=256}},reconfigure:function(j){Ext.apply(this,j);this.init()}}}()),1,0,0,0,["idgen.uuid"],0,[Ext.data,"UuidGenerator"],0));(Ext.cmd.derive("Ext.data.reader.Xml",Ext.data.reader.Reader,{alternateClassName:"Ext.data.XmlReader",createAccessor:function(b){var a=this;if(Ext.isEmpty(b)){return Ext.emptyFn}if(Ext.isFunction(b)){return b}return function(c){return a.getNodeValue(Ext.DomQuery.selectNode(b,c))}},getNodeValue:function(a){if(a){if(typeof a.normalize==="function"){a.normalize()}a=a.firstChild;if(a){return a.nodeValue}}return undefined},getResponseData:function(a){var c=a.responseXML,b,d;if(!c){d="XML data not found in the response";b=new Ext.data.ResultSet({total:0,count:0,records:[],success:false,message:d});this.fireEvent("exception",this,a,b);Ext.Logger.warn(d);return b}return this.readRecords(c)},getData:function(a){return a.documentElement||a},getRoot:function(b){var c=b.nodeName,a=this.root;if(!a||(c&&c==a)){return b}else{if(Ext.DomQuery.isXml(b)){return Ext.DomQuery.selectNode(a,b)}}},extractData:function(a){var b=this.record;if(b!=a.nodeName){a=Ext.DomQuery.select(b,a)}else{a=[a]}return this.callParent([a])},getAssociatedDataRoot:function(b,a){return Ext.DomQuery.select(a,b)[0]},readRecords:function(a){if(Ext.isArray(a)){a=a[0]}this.xmlData=a;return this.callParent([a])},createFieldAccessExpression:function(g,d,c){var e=this.namespace,b,a;b=g.mapping||((e?e+"|":"")+g.name);if(typeof b==="function"){a=d+".mapping("+c+", this)"}else{a='me.getNodeValue(Ext.DomQuery.selectNode("'+b+'", '+c+"))"}return a}},0,0,0,0,["reader.xml"],0,[Ext.data.reader,"Xml",Ext.data,"XmlReader"],0));(Ext.cmd.derive("Ext.data.writer.Xml",Ext.data.writer.Writer,{alternateClassName:"Ext.data.XmlWriter",documentRoot:"xmlData",defaultDocumentRoot:"xmlData",header:"",record:"record",writeRecords:function(a,b){var h=this,d=[],c=0,g=b.length,j=h.documentRoot,e=h.record,m=b.length!==1,l,k;d.push(h.header||"");if(!j&&m){j=h.defaultDocumentRoot}if(j){d.push("<",j,">")}for(;c");for(k in l){if(l.hasOwnProperty(k)){d.push("<",k,">",l[k],"")}}d.push("")}if(j){d.push("")}a.xmlData=d.join("");return a}},0,0,0,0,["writer.xml"],0,[Ext.data.writer,"Xml",Ext.data,"XmlWriter"],0));(Ext.cmd.derive("Ext.data.XmlStore",Ext.data.Store,{constructor:function(a){a=Ext.apply({proxy:{type:"ajax",reader:"xml",writer:"xml"}},a);this.callParent([a])}},1,0,0,0,["store.xml"],0,[Ext.data,"XmlStore"],0));(Ext.cmd.derive("Ext.data.association.BelongsTo",Ext.data.association.Association,{alternateClassName:"Ext.data.BelongsToAssociation",constructor:function(c){this.callParent(arguments);var e=this,a=e.ownerModel.prototype,g=e.associatedName,d=e.getterName||"get"+g,b=e.setterName||"set"+g;Ext.applyIf(e,{name:g,foreignKey:g.toLowerCase()+"_id",instanceName:g+"BelongsToInstance",associationKey:g.toLowerCase()});a[d]=e.createGetter();a[b]=e.createSetter()},createSetter:function(){var c=this,b=c.foreignKey,a=c.instanceName;return function(h,e,g){var j=h&&h.isModel,d=j?h.getId():h;if(j){this[a]=h}else{if(this[a] instanceof Ext.data.Model&&!this.isEqual(this.get(b),d)){delete this[a]}}this.set(b,d);if(Ext.isFunction(e)){e={callback:e,scope:g||this}}if(Ext.isObject(e)){return this.save(e)}}},createGetter:function(){var d=this,e=d.associatedName,g=d.associatedModel,c=d.foreignKey,b=d.primaryKey,a=d.instanceName;return function(l,m){l=l||{};var k=this,n=k.get(c),o,h,j;if(l.reload===true||k[a]===undefined){h=Ext.ModelManager.create({},e);h.set(b,n);if(typeof l=="function"){l={callback:l,scope:m||k}}o=l.success;l.success=function(p){k[a]=p;if(o){o.apply(this,arguments)}};g.load(n,l);k[a]=h;return h}else{h=k[a];j=[h];m=m||l.scope||k;Ext.callback(l,m,j);Ext.callback(l.success,m,j);Ext.callback(l.failure,m,j);Ext.callback(l.callback,m,j);return h}}},read:function(b,a,c){b[this.instanceName]=a.read([c]).records[0]}},1,0,0,0,["association.belongsto"],0,[Ext.data.association,"BelongsTo",Ext.data,"BelongsToAssociation"],0));(Ext.cmd.derive("Ext.util.Inflector",Ext.Base,{singleton:true,plurals:[[(/(quiz)$/i),"$1zes"],[(/^(ox)$/i),"$1en"],[(/([m|l])ouse$/i),"$1ice"],[(/(matr|vert|ind)ix|ex$/i),"$1ices"],[(/(x|ch|ss|sh)$/i),"$1es"],[(/([^aeiouy]|qu)y$/i),"$1ies"],[(/(hive)$/i),"$1s"],[(/(?:([^f])fe|([lr])f)$/i),"$1$2ves"],[(/sis$/i),"ses"],[(/([ti])um$/i),"$1a"],[(/(buffal|tomat|potat)o$/i),"$1oes"],[(/(bu)s$/i),"$1ses"],[(/(alias|status|sex)$/i),"$1es"],[(/(octop|vir)us$/i),"$1i"],[(/(ax|test)is$/i),"$1es"],[(/^person$/),"people"],[(/^man$/),"men"],[(/^(child)$/),"$1ren"],[(/s$/i),"s"],[(/$/),"s"]],singulars:[[(/(quiz)zes$/i),"$1"],[(/(matr)ices$/i),"$1ix"],[(/(vert|ind)ices$/i),"$1ex"],[(/^(ox)en/i),"$1"],[(/(alias|status)es$/i),"$1"],[(/(octop|vir)i$/i),"$1us"],[(/(cris|ax|test)es$/i),"$1is"],[(/(shoe)s$/i),"$1"],[(/(o)es$/i),"$1"],[(/(bus)es$/i),"$1"],[(/([m|l])ice$/i),"$1ouse"],[(/(x|ch|ss|sh)es$/i),"$1"],[(/(m)ovies$/i),"$1ovie"],[(/(s)eries$/i),"$1eries"],[(/([^aeiouy]|qu)ies$/i),"$1y"],[(/([lr])ves$/i),"$1f"],[(/(tive)s$/i),"$1"],[(/(hive)s$/i),"$1"],[(/([^f])ves$/i),"$1fe"],[(/(^analy)ses$/i),"$1sis"],[(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i),"$1$2sis"],[(/([ti])a$/i),"$1um"],[(/(n)ews$/i),"$1ews"],[(/people$/i),"person"],[(/s$/i),""]],uncountable:["sheep","fish","series","species","money","rice","information","equipment","grass","mud","offspring","deer","means"],singular:function(b,a){this.singulars.unshift([b,a])},plural:function(b,a){this.plurals.unshift([b,a])},clearSingulars:function(){this.singulars=[]},clearPlurals:function(){this.plurals=[]},isTransnumeral:function(a){return Ext.Array.indexOf(this.uncountable,a)!=-1},pluralize:function(g){if(this.isTransnumeral(g)){return g}var e=this.plurals,d=e.length,a,c,b;for(b=0;bb.tolerance){b.triggerStart(g)}else{return}}if(b.fireEvent("mousemove",b,g)===false){b.onMouseUp(g)}else{b.onDrag(g);b.fireEvent("drag",b,g)}},onMouseUp:function(b){var a=this;a.mouseIsDown=false;if(a.mouseIsOut){a.mouseIsOut=false;a.onMouseOut(b)}b.preventDefault();if(Ext.isIE&&document.releaseCapture){document.releaseCapture()}a.fireEvent("mouseup",a,b);a.endDrag(b)},endDrag:function(c){var b=this,a=b.active;Ext.getDoc().un({mousemove:b.onMouseMove,mouseup:b.onMouseUp,selectstart:b.stopSelect,scope:b});b.clearStart();b.active=false;if(a){b.onEnd(c);b.fireEvent("dragend",b,c)}b._constrainRegion=Ext.EventObject.dragTracked=null},triggerStart:function(b){var a=this;a.clearStart();a.active=true;a.onStart(b);a.fireEvent("dragstart",a,b)},clearStart:function(){var a=this.timer;if(a){clearTimeout(a);this.timer=null}},stopSelect:function(a){a.stopEvent();return false},onBeforeStart:function(a){},onStart:function(a){},onDrag:function(a){},onEnd:function(a){},getDragTarget:function(){return this.dragTarget},getDragCt:function(){return this.el},getConstrainRegion:function(){var a=this;if(a.constrainTo){if(a.constrainTo instanceof Ext.util.Region){return a.constrainTo}if(!a._constrainRegion){a._constrainRegion=Ext.fly(a.constrainTo).getViewRegion()}}else{if(!a._constrainRegion){a._constrainRegion=a.getDragCt().getViewRegion()}}return a._constrainRegion},getXY:function(a){return a?this.constrainModes[a](this,this.lastXY):this.lastXY},getOffset:function(c){var b=this.getXY(c),a=this.startXY;return[b[0]-a[0],b[1]-a[1]]},constrainModes:{point:function(b,d){var c=b.dragRegion,a=b.getConstrainRegion();if(!a){return d}c.x=c.left=c[0]=c.right=d[0];c.y=c.top=c[1]=c.bottom=d[1];c.constrainTo(a);return[c.left,c.top]},dragTarget:function(c,g){var b=c.startXY,e=c.startRegion.copy(),a=c.getConstrainRegion(),d;if(!a){return g}e.translateBy(g[0]-b[0],g[1]-b[1]);if(e.right>a.right){g[0]+=d=(a.right-e.right);e.left+=d}if(e.lefta.bottom){g[1]+=d=(a.bottom-e.bottom);e.top+=d}if(e.top0){if(b){for(d=0,a=b.length;d0){c.sendRequest(a==1?b[0]:b);c.callBuffer=[]}},configureFormRequest:function(e,a,b,j,k){var h=this,c,g,d;c=new Ext.direct.Transaction({provider:h,action:e,method:a.name,args:[b,j,k],callback:k&&Ext.isFunction(j)?Ext.Function.bind(j,k):j,isForm:true});if(h.fireEvent("beforecall",h,c,a)!==false){Ext.direct.Manager.addTransaction(c);g=String(b.getAttribute("enctype")).toLowerCase()=="multipart/form-data";d={extTID:c.id,extAction:e,extMethod:a.name,extType:"rpc",extUpload:String(g)};Ext.apply(c,{form:Ext.getDom(b),isUpload:g,params:j&&Ext.isObject(j.params)?Ext.apply(d,j.params):d});h.fireEvent("call",h,c,a);h.sendFormRequest(c)}},sendFormRequest:function(b){var a=this;Ext.Ajax.request({url:a.url,params:b.params,callback:a.onData,scope:a,form:b.form,isUpload:b.isUpload,transaction:b})}},1,0,0,0,["direct.remotingprovider"],0,[Ext.direct,"RemotingProvider"],0));(Ext.cmd.derive("Ext.dom.Layer",Ext.Element,{alternateClassName:"Ext.Layer",statics:{shims:[]},isLayer:true,localXYNames:{get:"getLocalXY",set:"setLocalXY"},constructor:function(c,b){c=c||{};var d=this,e=Ext.DomHelper,h=c.parentEl,g=h?Ext.getDom(h):document.body,j=c.hideMode,a=Ext.baseCSSPrefix+(c.fixed&&!(Ext.isIE6||Ext.isIEQuirks)?"fixed-layer":"layer");d.el=d;if(b){d.dom=Ext.getDom(b)}if(!d.dom){d.dom=e.append(g,c.dh||{tag:"div",cls:a})}else{d.addCls(a);if(!d.dom.parentNode){g.appendChild(d.dom)}}if(c.preventSync){d.preventSync=true}if(c.id){d.id=d.dom.id=c.id}else{d.id=Ext.id(d.dom)}Ext.Element.addToCache(d);if(c.cls){d.addCls(c.cls)}d.constrain=c.constrain!==false;if(j){d.setVisibilityMode(Ext.Element[j.toUpperCase()]);if(d.visibilityMode==Ext.Element.ASCLASS){d.visibilityCls=c.visibilityCls}}else{if(c.useDisplay){d.setVisibilityMode(Ext.Element.DISPLAY)}else{d.setVisibilityMode(Ext.Element.VISIBILITY)}}if(c.shadow){d.shadowOffset=c.shadowOffset||4;d.shadow=new Ext.Shadow({offset:d.shadowOffset,mode:c.shadow,fixed:c.fixed});d.disableShadow()}else{d.shadowOffset=0}d.useShim=c.shim!==false&&Ext.useShims;if(c.hidden===true){d.hide()}else{d.show()}},getZIndex:function(){return parseInt((this.getShim()||this).getStyle("z-index"),10)},getShim:function(){var b=this,c,a;if(!b.useShim){return null}if(!b.shim){c=b.self.shims.shift();if(!c){c=b.createShim();c.enableDisplayMode("block");c.hide()}a=b.dom.parentNode;if(c.dom.parentNode!=a){a.insertBefore(c.dom,b.dom)}b.shim=c}return b.shim},hideShim:function(){var a=this;if(a.shim){a.shim.setDisplayed(false);a.self.shims.push(a.shim);delete a.shim}},disableShadow:function(){var a=this;if(a.shadow&&!a.shadowDisabled){a.shadowDisabled=true;a.shadow.hide();a.lastShadowOffset=a.shadowOffset;a.shadowOffset=0}},enableShadow:function(a){var b=this;if(b.shadow&&b.shadowDisabled){b.shadowDisabled=false;b.shadowOffset=b.lastShadowOffset;delete b.lastShadowOffset;if(a){b.sync(true)}}},sync:function(b){var j=this,o=j.shadow,g,d,a,c,p,l,k,n,e,m;if(j.preventSync){return}if(!j.updating&&j.isVisible()&&(o||j.useShim)){c=j.getShim();p=j[j.localXYNames.get]();l=p[0];k=p[1];n=j.dom.offsetWidth;e=j.dom.offsetHeight;if(o&&!j.shadowDisabled){if(b&&!o.isVisible()){o.show(j)}else{o.realign(l,k,n,e)}if(c){m=c.getStyle("z-index");if(m>j.zindex){j.shim.setStyle("z-index",j.zindex-2)}c.show();if(o.isVisible()){g=o.el.getXY();d=c.dom.style;a=o.el.getSize();if(Ext.supports.CSS3BoxShadow){a.height+=6;a.width+=4;g[0]-=2;g[1]-=4}d.left=(g[0])+"px";d.top=(g[1])+"px";d.width=(a.width)+"px";d.height=(a.height)+"px"}else{c.setSize(n,e);c[j.localXYNames.set](l,k)}}}else{if(c){m=c.getStyle("z-index");if(m>j.zindex){j.shim.setStyle("z-index",j.zindex-2)}c.show();c.setSize(n,e);c[j.localXYNames.set](l,k)}}}return j},remove:function(){this.hideUnders();this.callParent()},beginUpdate:function(){this.updating=true},endUpdate:function(){this.updating=false;this.sync(true)},hideUnders:function(){if(this.shadow){this.shadow.hide()}this.hideShim()},constrainXY:function(){if(this.constrain){var g=Ext.Element.getViewWidth(),b=Ext.Element.getViewHeight(),m=Ext.getDoc().getScroll(),l=this.getXY(),j=l[0],e=l[1],a=this.shadowOffset,k=this.dom.offsetWidth+a,c=this.dom.offsetHeight+a,d=false;if((j+k)>g+m.left){j=g-k-a;d=true}if((e+c)>b+m.top){e=b-c-a;d=true}if(j-1)&&(p[o] in g)){p[o]=g[p[o]]}if(o=="hidden"&&r.type=="text"){continue}if(o in s){c.dom.setAttribute(o,s[o](p[o],r,m))}else{c.dom.setAttribute(o,p[o])}}}if(r.type=="text"){m.tuneText(r,p)}r.dirtyFont=false;b=j.style;if(b){c.setStyle(b)}r.dirty=false;if(Ext.isSafari3){m.webkitRect.show();setTimeout(function(){m.webkitRect.hide()})}},setClip:function(b,g){var e=this,d=g["clip-rect"],a,c;if(d){if(b.clip){b.clip.parentNode.parentNode.removeChild(b.clip.parentNode)}a=e.createSvgElement("clipPath");c=e.createSvgElement("rect");a.id=Ext.id(null,"ext-clip-");c.setAttribute("x",d.x);c.setAttribute("y",d.y);c.setAttribute("width",d.width);c.setAttribute("height",d.height);a.appendChild(c);e.getDefs().appendChild(a);b.el.dom.setAttribute("clip-path","url(#"+a.id+")");b.clip=c}},applyZIndex:function(d){var g=this,b=g.items,a=b.indexOf(d),e=d.el,c;if(g.el.dom.childNodes[a+2]!==e.dom){if(a>0){do{c=b.getAt(--a).el}while(!c&&a>0)}e.insertAfter(c||g.bgRect)}d.zIndexDirty=false},createItem:function(a){var b=new Ext.draw.Sprite(a);b.surface=this;return b},addGradient:function(h){h=Ext.draw.Draw.parseGradient(h);var e=this,d=h.stops.length,a=h.vector,l=Ext.isSafari&&!Ext.isStrict,j,g,k,c,b;b=e.gradientsMap||{};if(!l){if(h.type=="linear"){j=e.createSvgElement("linearGradient");j.setAttribute("x1",a[0]);j.setAttribute("y1",a[1]);j.setAttribute("x2",a[2]);j.setAttribute("y2",a[3])}else{j=e.createSvgElement("radialGradient");j.setAttribute("cx",h.centerX);j.setAttribute("cy",h.centerY);j.setAttribute("r",h.radius);if(Ext.isNumber(h.focalX)&&Ext.isNumber(h.focalY)){j.setAttribute("fx",h.focalX);j.setAttribute("fy",h.focalY)}}j.id=h.id;e.getDefs().appendChild(j);for(c=0;c"},text:function(v){var s=v.attr,r=c.exec(s.font),x=(r&&r[1])||"12",q=(r&&r[3])||"Arial",w=s.text,u=(Ext.isFF3_0||Ext.isFF3_5)?2:4,p="",t;v.getBBox();p+='';p+=Ext.htmlEncode(w)+"";t=d({x:s.x,y:s.y,"font-size":x,"font-family":q,"font-weight":s["font-weight"],"text-anchor":s["text-anchor"],fill:s.fill||"#000","fill-opacity":s.opacity,transform:v.matrix.toSvg()});return""+p+""},rect:function(q){var p=q.attr,r=d({x:p.x,y:p.y,rx:p.rx,ry:p.ry,width:p.width,height:p.height,fill:p.fill||"none","fill-opacity":p.opacity,stroke:p.stroke,"stroke-opacity":p["stroke-opacity"],"stroke-width":p["stroke-width"],transform:q.matrix&&q.matrix.toSvg()});return""},circle:function(q){var p=q.attr,r=d({cx:p.x,cy:p.y,r:p.radius,fill:p.translation.fill||p.fill||"none","fill-opacity":p.opacity,stroke:p.stroke,"stroke-opacity":p["stroke-opacity"],"stroke-width":p["stroke-width"],transform:q.matrix.toSvg()});return""},image:function(q){var p=q.attr,r=d({x:p.x-(p.width/2>>0),y:p.y-(p.height/2>>0),width:p.width,height:p.height,"xlink:href":p.src,transform:q.matrix.toSvg()});return""}},a=function(){var p='';p+='';return p},m=function(){var x='',q="",I,G,w,r,H,K,A,y,u,z,C,p,L,v,F,D,J,E,t,s;w=g.items.items;G=w.length;H=function(P){var W=P.childNodes,T=W.length,S=0,Q,R,M="",N,V,O,U;for(;S0){M+=H(N)}M+=""}return M};if(g.getDefs){q=H(g.getDefs())}else{y=g.gradientsColl;if(y){u=y.keys;z=y.items;C=0;p=u.length}for(;C';var B=r.colors.replace(k,"rgb($1|$2|$3)");B=B.replace(h,"rgba($1|$2|$3|$4)");K=B.split(",");for(F=0,J=K.length;F'}q+=""}}x+=""+q+"";x+=l.rect({attr:{width:"100%",height:"100%",fill:"#fff",stroke:"none",opacity:"0"}});E=new Array(G);for(F=0;F";return x},d=function(r){var q="",p;for(p in r){if(r.hasOwnProperty(p)&&r[p]!=null){q+=p+'="'+r[p]+'" '}}return q};return{singleton:true,generate:function(p,q){q=q||{};o(p);return a()+m()}}},0,0,0,0,0,0,[Ext.draw.engine,"SvgExporter"],0));(Ext.cmd.derive("Ext.draw.engine.Vml",Ext.draw.Surface,{engine:"Vml",map:{M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},bitesRe:/([clmz]),?([^clmz]*)/gi,valRe:/-?[^,\s\-]+/g,fillUrlRe:/^url\(\s*['"]?([^\)]+?)['"]?\s*\)$/i,pathlike:/^(path|rect)$/,NonVmlPathRe:/[ahqstv]/ig,partialPathRe:/[clmz]/g,fontFamilyRe:/^['"]+|['"]+$/g,baseVmlCls:Ext.baseCSSPrefix+"vml-base",vmlGroupCls:Ext.baseCSSPrefix+"vml-group",spriteCls:Ext.baseCSSPrefix+"vml-sprite",measureSpanCls:Ext.baseCSSPrefix+"vml-measure-span",zoom:21600,coordsize:1000,coordorigin:"0 0",zIndexShift:0,orderSpritesByZIndex:false,path2vml:function(t){var n=this,u=n.NonVmlPathRe,b=n.map,e=n.valRe,s=n.zoom,d=n.bitesRe,g=Ext.Function.bind(Ext.draw.Draw.pathToAbsolute,Ext.draw.Draw),m,o,c,a,k,q,h,l;if(String(t).match(u)){g=Ext.Function.bind(Ext.draw.Draw.path2curve,Ext.draw.Draw)}else{if(!String(t).match(n.partialPathRe)){m=String(t).replace(d,function(v,x,p){var w=[],j=x.toLowerCase()=="m",r=b[x];p.replace(e,function(y){if(j&&w.length===2){r+=w+b[x=="m"?"l":"L"];w=[]}w.push(Math.round(y*s))});return r+w});return m}}o=g(t);m=[];for(k=0,q=o.length;k")}a.W=h.span.offsetWidth;a.H=h.span.offsetHeight+2;if(c["text-anchor"]=="middle"){e["v-text-align"]="center"}else{if(c["text-anchor"]=="end"){e["v-text-align"]="right";a.bbx=-Math.round(a.W/2)}else{e["v-text-align"]="left";a.bbx=Math.round(a.W/2)}}}a.X=c.x;a.Y=c.y;a.path.v=Ext.String.format("m{0},{1}l{2},{1}",Math.round(a.X*k),Math.round(a.Y*k),Math.round(a.X*k)+1);j.bbox.plain=null;j.bbox.transform=null;j.dirtyFont=false},setText:function(a,b){a.vml.textpath.string=Ext.htmlDecode(b)},hide:function(){this.el.hide()},show:function(){this.el.show()},hidePrim:function(a){a.el.addCls(Ext.baseCSSPrefix+"hide-visibility")},showPrim:function(a){a.el.removeCls(Ext.baseCSSPrefix+"hide-visibility")},setSize:function(b,a){var c=this;b=b||c.width;a=a||c.height;c.width=b;c.height=a;if(c.el){if(b!=undefined){c.el.setWidth(b)}if(a!=undefined){c.el.setHeight(a)}}c.callParent(arguments)},applyViewBox:function(){var g=this,h=g.viewBox,e=g.width,b=g.height,c,a,d;g.callParent();if(h&&(e||b)){c=g.items.items;a=c.length;for(d=0;d')}}catch(d){c.createNode=function(e){return g.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}}if(!c.el){b=g.createElement("div");c.el=Ext.get(b);c.el.addCls(c.baseVmlCls);c.span=g.createElement("span");Ext.get(c.span).addCls(c.measureSpanCls);b.appendChild(c.span);c.el.setSize(c.width||0,c.height||0);a.appendChild(b);c.el.on({scope:c,mouseup:c.onMouseUp,mousedown:c.onMouseDown,mouseover:c.onMouseOver,mouseout:c.onMouseOut,mousemove:c.onMouseMove,mouseenter:c.onMouseEnter,mouseleave:c.onMouseLeave,click:c.onClick,dblclick:c.onDblClick})}c.renderAll()},renderAll:function(){this.items.each(this.renderItem,this)},redraw:function(a){a.dirty=true;this.renderItem(a)},renderItem:function(a){if(!this.el){return}if(!a.el){this.createSpriteElement(a)}if(a.dirty){this.applyAttrs(a);if(a.dirtyTransform){this.applyTransformations(a)}}},rotationCompensation:function(d,c,a){var b=new Ext.draw.Matrix();b.rotate(-d,0.5,0.5);return{x:b.x(c,a),y:b.y(c,a)}},transform:function(x,I){var H=this,b=H.getBBox(x,true),j=b.x+b.width*0.5,h=b.y+b.height*0.5,B=new Ext.draw.Matrix(),q=x.transformations,v=q.length,C=0,o=0,d=1,c=1,n="",g=x.el,E=g.dom,z=E.style,a=H.zoom,k=x.skew,D=H.viewBoxShift,G,F,s,l,r,p,A,w,u,t,e,m;for(;C32767){m[0]=32767}else{if(m[0]<-32768){m[0]=-32768}}if(m[1]>32767){m[1]=32767}else{if(m[1]<-32768){m[1]=-32768}}k.offset=m}else{z.filter=B.toFilter();z.left=Math.min(B.x(b.x,b.y),B.x(b.x+b.width,b.y),B.x(b.x,b.y+b.height),B.x(b.x+b.width,b.y+b.height))+"px";z.top=Math.min(B.y(b.x,b.y),B.y(b.x+b.width,b.y),B.y(b.x,b.y+b.height),B.y(b.x+b.width,b.y+b.height))+"px"}},createItem:function(a){return Ext.create("Ext.draw.Sprite",a)},getRegion:function(){return this.el.getRegion()},addCls:function(a,b){if(a&&a.el){a.el.addCls(b)}},removeCls:function(a,b){if(a&&a.el){a.el.removeCls(b)}},addGradient:function(g){var d=this.gradientsColl||(this.gradientsColl=Ext.create("Ext.util.MixedCollection")),a=[],j=Ext.create("Ext.util.MixedCollection"),l,e,b,h,k,c;j.addAll(g.stops);j.sortByKey("ASC",function(n,m){n=parseInt(n,10);m=parseInt(m,10);return n>m?1:(n'],initComponent:function(){this.callParent();this.addEvents("success","failure")},beforeRender:function(){this.callParent();Ext.applyIf(this.renderData,{swfId:this.getSwfId()})},afterRender:function(){var b=this,a=Ext.apply({},b.flashParams),c=Ext.apply({},b.flashVars);b.callParent();a=Ext.apply({allowScriptAccess:"always",bgcolor:b.backgroundColor,wmode:b.wmode},a);c=Ext.apply({allowedDomain:document.location.hostname},c);new swfobject.embedSWF(b.url,b.getSwfId(),b.swfWidth,b.swfHeight,b.flashVersion,b.expressInstall?b.statics.EXPRESS_INSTALL_URL:undefined,c,a,b.flashAttributes,Ext.bind(b.swfCallback,b))},swfCallback:function(b){var a=this;if(b.success){a.swf=Ext.get(b.ref);a.onSuccess();a.fireEvent("success",a)}else{a.onFailure();a.fireEvent("failure",a)}},getSwfId:function(){return this.swfId||(this.swfId="extswf"+this.getAutoId())},onSuccess:function(){this.swf.setStyle("visibility","inherit")},onFailure:Ext.emptyFn,beforeDestroy:function(){var b=this,a=b.swf;if(a){swfobject.removeSWF(b.getSwfId());Ext.destroy(a);delete b.swf}b.callParent()},statics:{EXPRESS_INSTALL_URL:"http://swfobject.googlecode.com/svn/trunk/swfobject/expressInstall.swf"}},0,["flash"],["flash","component","box"],{flash:true,component:true,box:true},["widget.flash"],0,[Ext.flash,"Component",Ext,"FlashComponent"],0));(Ext.cmd.derive("Ext.form.action.Action",Ext.Base,{alternateClassName:"Ext.form.Action",submitEmptyText:true,constructor:function(a){if(a){Ext.apply(this,a)}var b=a.params;if(Ext.isString(b)){this.params=Ext.Object.fromQueryString(b)}},run:Ext.emptyFn,onFailure:function(a){this.response=a;this.failureType=Ext.form.action.Action.CONNECT_FAILURE;this.form.afterAction(this,false)},processResponse:function(a){this.response=a;if(!a.responseText&&!a.responseXML){return true}return(this.result=this.handleResponse(a))},getUrl:function(){return this.url||this.form.url},getMethod:function(){return(this.method||this.form.method||"POST").toUpperCase()},getParams:function(){return Ext.apply({},this.params,this.form.baseParams)},createCallback:function(){var c=this,a,b=c.form;return{success:c.onSuccess,failure:c.onFailure,scope:c,timeout:(this.timeout*1000)||(b.timeout*1000),upload:b.fileUpload?c.onSuccess:a}},statics:{CLIENT_INVALID:"client",SERVER_INVALID:"server",CONNECT_FAILURE:"connect",LOAD_FAILURE:"load"}},1,0,0,0,0,0,[Ext.form.action,"Action",Ext.form,"Action"],0));(Ext.cmd.derive("Ext.form.action.Load",Ext.form.action.Action,{alternateClassName:"Ext.form.Action.Load",type:"load",run:function(){Ext.Ajax.request(Ext.apply(this.createCallback(),{method:this.getMethod(),url:this.getUrl(),headers:this.headers,params:this.getParams()}))},onSuccess:function(b){var a=this.processResponse(b),c=this.form;if(a===true||!a.success||!a.data){this.failureType=Ext.form.action.Action.LOAD_FAILURE;c.afterAction(this,false);return}c.clearInvalid();c.setValues(a.data);c.afterAction(this,true)},handleResponse:function(c){var a=this.form.reader,b,d;if(a){b=a.read(c);d=b.records&&b.records[0]?b.records[0].data:null;return{success:b.success,data:d}}return Ext.decode(c.responseText)}},0,0,0,0,["formaction.load"],0,[Ext.form.action,"Load",Ext.form.Action,"Load"],0));(Ext.cmd.derive("Ext.form.action.Submit",Ext.form.action.Action,{alternateClassName:"Ext.form.Action.Submit",type:"submit",run:function(){var b=this,a=b.form;if(b.clientValidation===false||a.isValid()){b.doSubmit()}else{b.failureType=Ext.form.action.Action.CLIENT_INVALID;a.afterAction(b,false)}},doSubmit:function(){var e=this,b=Ext.apply(e.createCallback(),{url:e.getUrl(),method:e.getMethod(),headers:e.headers}),d=e.form,g=e.jsonSubmit||d.jsonSubmit,a=g?"jsonData":"params",c,h;if(d.hasUpload()){h=e.buildForm();b.form=h.formEl;b.isUpload=true}else{b[a]=e.getParams(g)}Ext.Ajax.request(b);if(h){e.cleanup(h)}},cleanup:function(h){var e=h.formEl,d=h.uploadEls,b=h.uploadFields,a=b.length,c,g;for(c=0;cid="{id}"
    class="{inputRowCls}">','','',"{beforeLabelTpl}",' class="{labelCls}"',' style="{labelStyle}"',' unselectable="on"',">","{beforeLabelTextTpl}",'{fieldLabel}{labelSeparator}',"{afterLabelTextTpl}","","{afterLabelTpl}","","
    ",'',"{beforeBodyEl}","","{beforeLabelTpl}",'","{afterLabelTpl}","","{beforeSubTpl}","{[values.$comp.getSubTplMarkup(values)]}","{afterSubTpl}","","{afterBodyEl}","","",'',"","",'',"{afterBodyEl}","","","",{disableFormats:true}],activeErrorsTpl:undefined,htmlActiveErrorsTpl:['','
    • {.}
    ',"
    "],plaintextActiveErrorsTpl:['','\n{.}',""],isFieldLabelable:true,formItemCls:Ext.baseCSSPrefix+"form-item",labelCls:Ext.baseCSSPrefix+"form-item-label",errorMsgCls:Ext.baseCSSPrefix+"form-error-msg",baseBodyCls:Ext.baseCSSPrefix+"form-item-body",inputRowCls:Ext.baseCSSPrefix+"form-item-input-row",fieldBodyCls:"",clearCls:Ext.baseCSSPrefix+"clear",invalidCls:Ext.baseCSSPrefix+"form-invalid",fieldLabel:undefined,labelAlign:"left",labelWidth:100,labelPad:5,labelSeparator:":",hideLabel:false,hideEmptyLabel:true,preventMark:false,autoFitErrors:true,msgTarget:"qtip",noWrap:true,labelableInsertions:["beforeBodyEl","afterBodyEl","beforeLabelTpl","afterLabelTpl","beforeSubTpl","afterSubTpl","beforeLabelTextTpl","afterLabelTextTpl","labelAttrTpl"],labelableRenderProps:["allowBlank","id","labelAlign","fieldBodyCls","extraFieldBodyCls","baseBodyCls","clearCls","labelSeparator","msgTarget","inputRowCls"],initLabelable:function(){var a=this,b=a.padding;if(b){a.padding=undefined;a.extraMargins=Ext.Element.parseBox(b)}if(!a.activeErrorsTpl){if(a.msgTarget=="title"){a.activeErrorsTpl=a.plaintextActiveErrorsTpl}else{a.activeErrorsTpl=a.htmlActiveErrorsTpl}}a.addCls(Ext.plainTableCls);a.addCls(a.formItemCls);a.lastActiveError="";a.addEvents("errorchange");a.enableBubble("errorchange")},trimLabelSeparator:function(){var c=this,d=c.labelSeparator,a=c.fieldLabel||"",b=a.substr(a.length-1);return b===d?a.slice(0,-1):a},getFieldLabel:function(){return this.trimLabelSeparator()},setFieldLabel:function(b){b=b||"";var c=this,d=c.labelSeparator,a=c.labelEl;c.fieldLabel=b;if(c.rendered){if(Ext.isEmpty(b)&&c.hideEmptyLabel){a.parent().setDisplayed("none")}else{if(d){b=c.trimLabelSeparator()+d}a.update(b);a.parent().setDisplayed("")}c.updateLayout()}},getInsertionRenderData:function(d,e){var b=e.length,a,c;while(b--){a=e[b];c=this[a];if(c){if(typeof c!="string"){if(!c.isTemplate){c=Ext.XTemplate.getTpl(this,a)}c=c.apply(d)}}d[a]=c||""}return d},getLabelableRenderData:function(){var b=this,c,d,a=b.labelAlign==="top";if(!Ext.form.Labelable.errorIconWidth){d=Ext.getBody().createChild({style:"position:absolute",cls:Ext.baseCSSPrefix+"form-invalid-icon"});Ext.form.Labelable.errorIconWidth=d.getWidth()+d.getMargin("l");d.remove()}c=Ext.copyTo({inFormLayout:b.ownerLayout&&b.ownerLayout.type==="form",inputId:b.getInputId(),labelOnLeft:!a,hideLabel:!b.hasVisibleLabel(),fieldLabel:b.getFieldLabel(),labelCellStyle:b.getLabelCellStyle(),labelCellAttrs:b.getLabelCellAttrs(),labelCls:b.getLabelCls(),labelStyle:b.getLabelStyle(),bodyColspan:b.getBodyColspan(),externalError:!b.autoFitErrors,errorMsgCls:b.getErrorMsgCls(),errorIconWidth:Ext.form.Labelable.errorIconWidth},b,b.labelableRenderProps,true);b.getInsertionRenderData(c,b.labelableInsertions);return c},xhooks:{beforeRender:function(){var a=this;a.setFieldDefaults(a.getHierarchyState().fieldDefaults);if(a.ownerLayout){a.addCls(Ext.baseCSSPrefix+a.ownerLayout.type+"-form-item")}},onRender:function(){var c=this,d,a,b={};if(c.extraMargins){d=c.el.getMargin();for(a in d){if(d.hasOwnProperty(a)){b["margin-"+a]=(d[a]+c.extraMargins[a])+"px"}}c.el.setStyle(b)}}},hasVisibleLabel:function(){if(this.hideLabel){return false}return !(this.hideEmptyLabel&&!this.getFieldLabel())},getLabelWidth:function(){var a=this;if(!a.hasVisibleLabel()){return 0}return a.labelWidth+a.labelPad},getBodyColspan:function(){var b=this,a;if(b.msgTarget==="side"&&(!b.autoFitErrors||b.hasActiveError())){a=1}else{a=2}if(b.labelAlign!=="top"&&!b.hasVisibleLabel()){a++}return a},getLabelCls:function(){var b=this.labelCls+" "+Ext.dom.Element.unselectableCls,a=this.labelClsExtra;return a?b+" "+a:b},getLabelCellStyle:function(){var b=this,a=b.hideLabel||(!b.getFieldLabel()&&b.hideEmptyLabel);return a?"display:none;":""},getErrorMsgCls:function(){var b=this,a=(b.hideLabel||(!b.fieldLabel&&b.hideEmptyLabel));return b.errorMsgCls+(!a&&b.labelAlign==="top"?" "+Ext.baseCSSPrefix+"lbl-top-err-icon":"")},getLabelCellAttrs:function(){var c=this,b=c.labelAlign,a="";if(b!=="top"){a='valign="top" halign="'+b+'" width="'+(c.labelWidth+c.labelPad)+'"'}return a+' class="'+Ext.baseCSSPrefix+'field-label-cell"'},getLabelStyle:function(){var c=this,b=c.labelPad,a="";if(c.labelAlign!=="top"){if(c.labelWidth){a="width:"+c.labelWidth+"px;"}if(b){a+="margin-right:"+b+"px;"}}return a+(c.labelStyle||"")},getSubTplMarkup:function(){return""},getInputId:function(){return""},getActiveError:function(){return this.activeError||""},hasActiveError:function(){return !!this.getActiveError()},setActiveError:function(a){this.setActiveErrors(a)},getActiveErrors:function(){return this.activeErrors||[]},setActiveErrors:function(a){a=Ext.Array.from(a);this.activeError=a[0];this.activeErrors=a;this.activeError=this.getTpl("activeErrorsTpl").apply({errors:a,listCls:Ext.plainListCls});this.renderActiveError()},unsetActiveError:function(){delete this.activeError;delete this.activeErrors;this.renderActiveError()},renderActiveError:function(){var c=this,b=c.getActiveError(),a=!!b;if(b!==c.lastActiveError){c.fireEvent("errorchange",c,b);c.lastActiveError=b}if(c.rendered&&!c.isDestroyed&&!c.preventMark){c.el[a?"addCls":"removeCls"](c.invalidCls);c.getActionEl().dom.setAttribute("aria-invalid",a);if(c.errorEl){c.errorEl.dom.innerHTML=b}}},setFieldDefaults:function(b){var a;for(a in b){if(!this.hasOwnProperty(a)){this[a]=b[a]}}}},0,0,0,0,0,0,[Ext.form,"Labelable"],0));(Ext.cmd.derive("Ext.form.field.Field",Ext.Base,{isFormField:true,disabled:false,submitValue:true,validateOnChange:true,suspendCheckChange:0,initField:function(){this.addEvents("change","validitychange","dirtychange");this.initValue()},initValue:function(){var a=this;a.value=a.transformOriginalValue(a.value);a.originalValue=a.lastValue=a.value;a.suspendCheckChange++;a.setValue(a.value);a.suspendCheckChange--},transformOriginalValue:Ext.identityFn,getName:function(){return this.name},getValue:function(){return this.value},setValue:function(b){var a=this;a.value=b;a.checkChange();return a},isEqual:function(b,a){return String(b)===String(a)},isEqualAsString:function(b,a){return String(Ext.value(b,""))===String(Ext.value(a,""))},getSubmitData:function(){var a=this,b=null;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){b={};b[a.getName()]=""+a.getValue()}return b},getModelData:function(){var a=this,b=null;if(!a.disabled&&!a.isFileUpload()){b={};b[a.getName()]=a.getValue()}return b},reset:function(){var a=this;a.beforeReset();a.setValue(a.originalValue);a.clearInvalid();delete a.wasValid},beforeReset:Ext.emptyFn,resetOriginalValue:function(){this.originalValue=this.getValue();this.checkDirty()},checkChange:function(){if(!this.suspendCheckChange){var c=this,b=c.getValue(),a=c.lastValue;if(!c.isEqual(b,a)&&!c.isDestroyed){c.lastValue=b;c.fireEvent("change",c,b,a);c.onChange(b,a)}}},onChange:function(b,a){if(this.validateOnChange){this.validate()}this.checkDirty()},isDirty:function(){var a=this;return !a.disabled&&!a.isEqual(a.getValue(),a.originalValue)},checkDirty:function(){var a=this,b=a.isDirty();if(b!==a.wasDirty){a.fireEvent("dirtychange",a,b);a.onDirtyChange(b);a.wasDirty=b}},onDirtyChange:Ext.emptyFn,getErrors:function(a){return[]},isValid:function(){var a=this;return a.disabled||Ext.isEmpty(a.getErrors())},validate:function(){var a=this,b=a.isValid();if(b!==a.wasValid){a.wasValid=b;a.fireEvent("validitychange",a,b)}return b},batchChanges:function(a){try{this.suspendCheckChange++;a()}catch(b){throw b}finally{this.suspendCheckChange--}this.checkChange()},isFileUpload:function(){return false},extractFileInput:function(){return null},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn},0,0,0,0,0,0,[Ext.form.field,"Field"],0));(Ext.cmd.derive("Ext.layout.component.field.Field",Ext.layout.component.Auto,{type:"field",naturalSizingProp:"size",beginLayout:function(c){var b=this,a=b.owner;b.callParent(arguments);c.labelStrategy=b.getLabelStrategy();c.errorStrategy=b.getErrorStrategy();c.labelContext=c.getEl("labelEl");c.bodyCellContext=c.getEl("bodyEl");c.inputContext=c.getEl("inputEl");c.errorContext=c.getEl("errorEl");if(Ext.isIE7m&&Ext.isStrict&&c.inputContext){b.ieInputWidthAdjustment=c.inputContext.getPaddingInfo().width+c.inputContext.getBorderInfo().width}c.labelStrategy.prepare(c,a);c.errorStrategy.prepare(c,a)},beginLayoutCycle:function(g){var e=this,a=e.owner,c=g.widthModel,b=a[e.naturalSizingProp],d;e.callParent(arguments);if(c.shrinkWrap){e.beginLayoutShrinkWrap(g)}else{if(c.natural){if(typeof b=="number"&&!a.inputWidth){e.beginLayoutFixed(g,(d=b*6.5+20),"px")}else{e.beginLayoutShrinkWrap(g)}g.setWidth(d,false)}else{e.beginLayoutFixed(g,"100","%")}}},beginLayoutFixed:function(c,b,e){var a=c.target,d=a.inputEl,g=a.inputWidth;a.el.setStyle("table-layout","fixed");a.bodyEl.setStyle("width",b+e);if(d){if(g){d.setStyle("width",g+"px")}else{d.setStyle("width",a.stretchInputElFixed?"100%":"")}}c.isFixed=true},beginLayoutShrinkWrap:function(b){var a=b.target,c=a.inputEl,d=a.inputWidth;if(c&&c.dom){c.dom.removeAttribute("size");if(d){c.setStyle("width",d+"px")}else{c.setStyle("width","")}}a.el.setStyle("table-layout","auto");a.bodyEl.setStyle("width","")},finishedLayout:function(b){var a=this.owner;this.callParent(arguments);b.labelStrategy.finishedLayout(b,a);b.errorStrategy.finishedLayout(b,a)},calculateOwnerHeightFromContentHeight:function(b,a){return a},measureContentHeight:function(a){return a.el.getHeight()},measureContentWidth:function(a){return a.el.getWidth()},measureLabelErrorHeight:function(a){return a.labelStrategy.getHeight(a)+a.errorStrategy.getHeight(a)},onFocus:function(){this.getErrorStrategy().onFocus(this.owner)},getLabelStrategy:function(){var b=this,c=b.labelStrategies,a=b.owner.labelAlign;return c[a]||c.base},getErrorStrategy:function(){var c=this,a=c.owner,d=c.errorStrategies,b=a.msgTarget;return !a.preventMark&&Ext.isString(b)?(d[b]||d.elementId):d.none},labelStrategies:(function(){var a={prepare:function(e,b){var c=b.labelCls+"-"+b.labelAlign,d=b.labelEl;if(d){d.addCls(c)}},getHeight:function(){return 0},finishedLayout:Ext.emptyFn};return{base:a,top:Ext.applyIf({getHeight:function(e){var c=e.labelContext,d=c.props,b=d.height;if(b===undefined){d.height=b=c.el.getHeight()}return b}},a),left:a,right:a}}()),errorStrategies:(function(){function d(h){var j=Ext.layout.component.field.Field.tip,k;if(j&&j.isVisible()){k=j.activeTarget;if(k&&k.el===h.getActionEl().dom){j.toFront(true)}}}var c=Ext.applyIf,b=Ext.emptyFn,a=Ext.baseCSSPrefix+"form-invalid-icon",g,e={prepare:function(k,h){var j=h.errorEl;if(j){j.setDisplayed(false)}},getHeight:function(){return 0},onFocus:b,finishedLayout:b};return{none:e,side:c({prepare:function(l,j){var n=j.errorEl,k=j.sideErrorCell,h=j.hasActiveError(),m;if(!g){g=(m=Ext.getBody().createChild({style:"position:absolute",cls:a})).getWidth();m.remove()}n.addCls(a);n.set({"data-errorqtip":j.getActiveError()||""});if(j.autoFitErrors){n.setDisplayed(h)}else{n.setVisible(h)}if(k&&j.autoFitErrors){k.setDisplayed(h)}j.bodyEl.dom.colSpan=j.getBodyColspan();Ext.layout.component.field.Field.initTip()},onFocus:d},e),under:c({prepare:function(k,h){var l=h.errorEl,j=Ext.baseCSSPrefix+"form-invalid-under";l.addCls(j);l.setDisplayed(h.hasActiveError())},getHeight:function(l){var h=0,j,k;if(l.target.hasActiveError()){j=l.errorContext;k=j.props;h=k.height;if(h===undefined){k.height=h=j.el.getHeight()}}return h}},e),qtip:c({prepare:function(j,h){Ext.layout.component.field.Field.initTip();h.getActionEl().dom.setAttribute("data-errorqtip",h.getActiveError()||"")},onFocus:d},e),title:c({prepare:function(j,h){h.getActionEl().dom.setAttribute("title",h.getActiveError()||"")}},e),elementId:c({prepare:function(j,h){var k=Ext.fly(h.msgTarget);if(k){k.dom.innerHTML=h.getActiveError()||"";k.setDisplayed(h.hasActiveError())}}},e)}}()),statics:{initTip:function(){var a=this.tip;if(!a){a=this.tip=Ext.create("Ext.tip.QuickTip",{ui:"form-invalid"});a.tagConfig=Ext.apply({},{attribute:"errorqtip"},a.tagConfig)}},destroyTip:function(){var a=this.tip;if(a){a.destroy();delete this.tip}}}},0,0,0,0,["layout.field"],0,[Ext.layout.component.field,"Field"],0));(Ext.cmd.derive("Ext.form.field.Base",Ext.Component,{alternateClassName:["Ext.form.Field","Ext.form.BaseField"],fieldSubTpl:[' name="{name}"
    ',' value="{[Ext.util.Format.htmlEncode(values.value)]}"',' placeholder="{placeholder}"','{%if (values.maxLength !== undefined){%} maxlength="{maxLength}"{%}%}',' readonly="readonly"',' disabled="disabled"',' tabIndex="{tabIdx}"',' style="{fieldStyle}"',' class="{fieldCls} {typeCls} {editableCls} {inputCls}" autocomplete="off"/>',{disableFormats:true}],subTplInsertions:["inputAttrTpl"],inputType:"text",invalidText:"The value in this field is invalid",fieldCls:Ext.baseCSSPrefix+"form-field",focusCls:"form-focus",dirtyCls:Ext.baseCSSPrefix+"form-dirty",checkChangeEvents:Ext.isIE&&(!document.documentMode||document.documentMode<9)?["change","propertychange","keyup"]:["change","input","textInput","keyup","dragdrop"],checkChangeBuffer:50,componentLayout:"field",readOnly:false,readOnlyCls:Ext.baseCSSPrefix+"form-readonly",validateOnBlur:true,hasFocus:false,baseCls:Ext.baseCSSPrefix+"field",maskOnDisable:false,stretchInputElFixed:true,initComponent:function(){var a=this;a.callParent();a.subTplData=a.subTplData||{};a.addEvents("specialkey","writeablechange");a.initLabelable();a.initField();if(!a.name){a.name=a.getInputId()}if(a.readOnly){a.addCls(a.readOnlyCls)}a.addCls(Ext.baseCSSPrefix+"form-type-"+a.inputType)},getInputId:function(){return this.inputId||(this.inputId=this.id+"-inputEl")},getSubTplData:function(){var c=this,b=c.inputType,a=c.getInputId(),d;d=Ext.apply({id:a,cmpId:c.id,name:c.name||a,disabled:c.disabled,readOnly:c.readOnly,value:c.getRawValue(),type:b,fieldCls:c.fieldCls,fieldStyle:c.getFieldStyle(),tabIdx:c.tabIndex,inputCls:c.inputCls,typeCls:Ext.baseCSSPrefix+"form-"+(b==="password"?"text":b)},c.subTplData);c.getInsertionRenderData(d,c.subTplInsertions);return d},applyRenderSelectors:function(){var a=this;a.callParent();a.addChildEls("inputEl");a.inputEl=a.el.getById(a.getInputId())},getSubTplMarkup:function(){return this.getTpl("fieldSubTpl").apply(this.getSubTplData())},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){return Ext.applyIf(this.callParent(),this.getLabelableRenderData())},setFieldStyle:function(a){var b=this,c=b.inputEl;if(c){c.applyStyles(a)}b.fieldStyle=a},getFieldStyle:function(){return Ext.isObject(this.fieldStyle)?Ext.DomHelper.generateStyles(this.fieldStyle):this.fieldStyle||""},onRender:function(){this.callParent(arguments);this.renderActiveError()},getFocusEl:function(){return this.inputEl},isFileUpload:function(){return this.inputType==="file"},getSubmitData:function(){var a=this,b=null,c;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){c=a.getSubmitValue();if(c!==null){b={};b[a.getName()]=c}}return b},getSubmitValue:function(){return this.processRawValue(this.getRawValue())},getRawValue:function(){var b=this,a=(b.inputEl?b.inputEl.getValue():Ext.value(b.rawValue,""));b.rawValue=a;return a},setRawValue:function(b){var a=this;b=Ext.value(a.transformRawValue(b),"");a.rawValue=b;if(a.inputEl){a.inputEl.dom.value=b}return b},transformRawValue:Ext.identityFn,valueToRaw:function(a){return""+Ext.value(a,"")},rawToValue:Ext.identityFn,processRawValue:Ext.identityFn,getValue:function(){var a=this,b=a.rawToValue(a.processRawValue(a.getRawValue()));a.value=b;return b},setValue:function(b){var a=this;a.setRawValue(a.valueToRaw(b));return a.mixins.field.setValue.call(a,b)},onBoxReady:function(){var a=this;a.callParent();if(a.setReadOnlyOnBoxReady){a.setReadOnly(a.readOnly)}},onDisable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=true;if(a.hasActiveError()){a.clearInvalid();a.needsValidateOnEnable=true}}},onEnable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=false;if(a.needsValidateOnEnable){delete a.needsValidateOnEnable;a.forceValidation=true;a.isValid();delete a.forceValidation}}},setReadOnly:function(c){var a=this,b=a.inputEl;c=!!c;a[c?"addCls":"removeCls"](a.readOnlyCls);a.readOnly=c;if(b){b.dom.readOnly=c}else{if(a.rendering){a.setReadOnlyOnBoxReady=true}}a.fireEvent("writeablechange",a,c)},fireKey:function(a){if(a.isSpecialKey()){this.fireEvent("specialkey",this,new Ext.EventObjectImpl(a))}},initEvents:function(){var g=this,j=g.inputEl,b,k,c=g.checkChangeEvents,h,a=c.length,d;if(j){g.mon(j,Ext.EventManager.getKeyEvent(),g.fireKey,g);b=new Ext.util.DelayedTask(g.checkChange,g);g.onChangeEvent=k=function(){b.delay(g.checkChangeBuffer)};for(h=0;hg.maxLength){k.push(l(g.maxLengthText,g.maxLength))}if(d){if(!h[d](m,g)){k.push(g.vtypeText||h[d+"Text"])}}if(j&&!j.test(m)){k.push(g.regexText||g.invalidText)}return k},selectText:function(j,a){var h=this,c=h.getRawValue(),d=true,g=h.inputEl.dom,e,b;if(c.length>0){j=j===e?0:j;a=a===e?c.length:a;if(g.setSelectionRange){g.setSelectionRange(j,a)}else{if(g.createTextRange){b=g.createTextRange();b.moveStart("character",j);b.moveEnd("character",a-c.length);b.select()}}d=Ext.isGecko||Ext.isOpera}if(d){h.focus()}},autoSize:function(){var a=this;if(a.grow&&a.rendered){a.autoSizing=true;a.updateLayout()}},afterComponentLayout:function(){var b=this,a;b.callParent(arguments);if(b.autoSizing){a=b.inputEl.getWidth();if(a!==b.lastInputWidth){b.fireEvent("autosize",b,a);b.lastInputWidth=a;delete b.autoSizing}}},onDestroy:function(){var a=this;a.callParent();if(a.inputFocusTask){a.inputFocusTask.cancel();a.inputFocusTask=null}}},0,["textfield"],["field","textfield","component","box"],{field:true,textfield:true,component:true,box:true},["widget.textfield"],0,[Ext.form.field,"Text",Ext.form,"TextField",Ext.form,"Text"],0));(Ext.cmd.derive("Ext.layout.component.field.TextArea",Ext.layout.component.field.Text,{type:"textareafield",canGrowWidth:false,naturalSizingProp:"cols",beginLayout:function(a){this.callParent(arguments);a.target.inputEl.setStyle("height","")},measureContentHeight:function(b){var e=this,a=e.owner,l=e.callParent(arguments),c,j,h,g,d,k;if(a.grow&&!b.state.growHandled){c=b.inputContext;j=a.inputEl;d=j.getWidth(true);h=Ext.util.Format.htmlEncode(j.dom.value)||" ";h+=a.growAppend;h=h.replace(/\n/g,"
    ");k=Ext.util.TextMetrics.measure(j,h,d).height+c.getBorderInfo().height+c.getPaddingInfo().height;k=Ext.Number.constrain(k,a.growMin,a.growMax);c.setHeight(k);b.state.growHandled=true;c.domBlock(e,"height");l=NaN}return l}},0,0,0,0,["layout.textareafield"],0,[Ext.layout.component.field,"TextArea"],0));(Ext.cmd.derive("Ext.form.field.TextArea",Ext.form.field.Text,{alternateClassName:"Ext.form.TextArea",fieldSubTpl:['",{disableFormats:true}],growMin:60,growMax:1000,growAppend:"\n-",cols:20,rows:4,enterIsSpecial:false,preventScrollbars:false,componentLayout:"textareafield",setGrowSizePolicy:Ext.emptyFn,returnRe:/\r/g,inputCls:Ext.baseCSSPrefix+"form-textarea",getSubTplData:function(){var c=this,b=c.getFieldStyle(),a=c.callParent();if(c.grow){if(c.preventScrollbars){a.fieldStyle=(b||"")+";overflow:hidden;height:"+c.growMin+"px"}}Ext.applyIf(a,{cols:c.cols,rows:c.rows});return a},afterRender:function(){var a=this;a.callParent(arguments);a.needsMaxCheck=a.enforceMaxLength&&a.maxLength!==Number.MAX_VALUE&&!Ext.supports.TextAreaMaxLength;if(a.needsMaxCheck){a.inputEl.on("paste",a.onPaste,a)}},transformRawValue:function(a){return this.stripReturns(a)},transformOriginalValue:function(a){return this.stripReturns(a)},getValue:function(){return this.stripReturns(this.callParent())},valueToRaw:function(a){a=this.stripReturns(a);return this.callParent([a])},stripReturns:function(a){if(a&&typeof a==="string"){a=a.replace(this.returnRe,"")}return a},onPaste:function(b){var a=this;if(!a.pasteTask){a.pasteTask=new Ext.util.DelayedTask(a.pasteCheck,a)}a.pasteTask.delay(1)},pasteCheck:function(){var b=this,c=b.getValue(),a=b.maxLength;if(c.length>a){c=c.substr(0,a);b.setValue(c)}},fireKey:function(d){var b=this,a=d.getKey(),c;if(d.isSpecialKey()&&(b.enterIsSpecial||(a!==d.ENTER||d.hasModifier()))){b.fireEvent("specialkey",b,d)}if(b.needsMaxCheck&&a!==d.BACKSPACE&&a!==d.DELETE&&!d.isNavKeyPress()&&!b.isCutCopyPasteSelectAll(d,a)){c=b.getValue();if(c.length>=b.maxLength){d.stopEvent()}}},isCutCopyPasteSelectAll:function(b,a){if(b.ctrlKey){return a===b.A||a===b.C||a===b.V||a===b.X}return false},autoSize:function(){var b=this,a;if(b.grow&&b.rendered){b.updateLayout();a=b.inputEl.getHeight();if(a!==b.lastInputHeight){b.fireEvent("autosize",b,a);b.lastInputHeight=a}}},initAria:function(){this.callParent(arguments);this.getActionEl().dom.setAttribute("aria-multiline",true)},beforeDestroy:function(){var a=this.pasteTask;if(a){a.cancel();this.pasteTask=null}this.callParent()}},0,["textarea","textareafield"],["field","textfield","component","textarea","box","textareafield"],{field:true,textfield:true,component:true,textarea:true,box:true,textareafield:true},["widget.textarea","widget.textareafield"],0,[Ext.form.field,"TextArea",Ext.form,"TextArea"],0));(Ext.cmd.derive("Ext.form.field.Display",Ext.form.field.Base,{alternateClassName:["Ext.form.DisplayField","Ext.form.Display"],fieldSubTpl:['
    style="{fieldStyle}"',' class="{fieldCls}">{value}
    ',{compiled:true,disableFormats:true}],readOnly:true,fieldCls:Ext.baseCSSPrefix+"form-display-field",fieldBodyCls:Ext.baseCSSPrefix+"form-display-field-body",htmlEncode:false,noWrap:false,validateOnChange:false,initEvents:Ext.emptyFn,submitValue:false,isDirty:function(){return false},isValid:function(){return true},validate:function(){return true},getRawValue:function(){return this.rawValue},setRawValue:function(b){var a=this;b=Ext.value(b,"");a.rawValue=b;if(a.rendered){a.inputEl.dom.innerHTML=a.getDisplayValue();a.updateLayout()}return b},getDisplayValue:function(){var a=this,b=this.getRawValue(),c;if(a.renderer){c=a.renderer.call(a.scope||a,b,a)}else{c=a.htmlEncode?Ext.util.Format.htmlEncode(b):b}return c},getSubTplData:function(){var a=this.callParent(arguments);a.value=this.getDisplayValue();return a}},0,["displayfield"],["displayfield","field","component","box"],{displayfield:true,field:true,component:true,box:true},["widget.displayfield"],0,[Ext.form.field,"Display",Ext.form,"DisplayField",Ext.form,"Display"],0));(Ext.cmd.derive("Ext.layout.container.Anchor",Ext.layout.container.Auto,{alternateClassName:"Ext.layout.AnchorLayout",type:"anchor",defaultAnchor:"100%",parseAnchorRE:/^(r|right|b|bottom)$/i,manageOverflow:true,beginLayoutCycle:function(c){var j=this,a=0,g,k,e,d,b,h;j.callParent(arguments);e=c.childItems;b=e.length;for(d=0;d{%this.renderContainer(out,values)%}',initComponent:function(){var a=this;a.initLabelable();a.initFieldAncestor();a.callParent();a.initMonitor()},getOverflowEl:function(){return this.containerEl},onAdd:function(a){var b=this;if(Ext.isGecko&&b.layout.type==="absolute"&&!b.hideLabel&&b.labelAlign!=="top"){a.x+=(b.labelWidth+b.labelPad)}b.callParent(arguments);if(b.combineLabels){a.oldHideLabel=a.hideLabel;a.hideLabel=true}b.updateLabel()},onRemove:function(a,b){var c=this;c.callParent(arguments);if(!b){if(c.combineLabels){a.hideLabel=a.oldHideLabel}c.updateLabel()}},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){var a=this,b=a.callParent();b.containerElCls=a.containerElCls;return Ext.applyIf(b,a.getLabelableRenderData())},getFieldLabel:function(){var a=this.fieldLabel||"";if(!a&&this.combineLabels){a=Ext.Array.map(this.query("[isFieldLabelable]"),function(b){return b.getFieldLabel()}).join(this.labelConnector)}return a},getSubTplData:function(){var a=this.initRenderData();Ext.apply(a,this.subTplData);return a},getSubTplMarkup:function(){var c=this,a=c.getTpl("fieldSubTpl"),b;if(!a.renderContent){c.setupRenderTpl(a)}b=a.apply(c.getSubTplData());return b},updateLabel:function(){var b=this,a=b.labelEl;if(a){b.setFieldLabel(b.getFieldLabel())}},onFieldErrorChange:function(e,b){if(this.combineErrors){var d=this,g=d.getActiveError(),c=Ext.Array.filter(d.query("[isFormField]"),function(h){return h.hasActiveError()}),a=d.getCombinedErrors(c);if(a){d.setActiveErrors(a)}else{d.unsetActiveError()}if(g!==d.getActiveError()){d.doComponentLayout()}}},getCombinedErrors:function(e){var l=[],c,m=e.length,j,d,k,b,g,h;for(c=0;c','','',"{% this.renderColumn(out,parent,xindex-1) %}","","",""],lastOwnerItemsGeneration:null,beginLayout:function(b){var k=this,e,d,h,a,j,g=0,m=0,l=k.autoFlex,c=k.innerCt.dom.style;k.callParent(arguments);e=k.columnNodes;b.innerCtContext=b.getEl("innerCt",k);if(!b.widthModel.shrinkWrap){d=e.length;if(k.columnsArray){for(h=0;ha){d=b-a;g=e.rowEl;for(c=0;c","{beforeBoxLabelTpl}",'","{afterBoxLabelTpl}","
    ",' tabIndex="{tabIdx}"
    ',' disabled="disabled"',' style="{fieldStyle}"',' {ariaAttrs}',' class="{fieldCls} {typeCls} {inputCls} {childElCls}" autocomplete="off" hidefocus="true" />',"","{beforeBoxLabelTpl}",'","{afterBoxLabelTpl}","",{disableFormats:true,compiled:true}],subTplInsertions:["beforeBoxLabelTpl","afterBoxLabelTpl","beforeBoxLabelTextTpl","afterBoxLabelTextTpl","boxLabelAttrTpl","inputAttrTpl"],isCheckbox:true,focusCls:"form-checkbox-focus",extraFieldBodyCls:Ext.baseCSSPrefix+"form-cb-wrap",checked:false,checkedCls:Ext.baseCSSPrefix+"form-cb-checked",boxLabelCls:Ext.baseCSSPrefix+"form-cb-label",boxLabelAlign:"after",inputValue:"on",checkChangeEvents:[],inputType:"checkbox",inputTypeAttr:"button",onRe:/^on$/i,inputCls:Ext.baseCSSPrefix+"form-cb",initComponent:function(){this.callParent(arguments);this.getManager().add(this)},initValue:function(){var b=this,a=!!b.checked;b.originalValue=b.lastValue=a;b.setValue(a)},getElConfig:function(){var a=this;if(a.isChecked(a.rawValue,a.inputValue)){a.addCls(a.checkedCls)}return a.callParent()},getFieldStyle:function(){return Ext.isObject(this.fieldStyle)?Ext.DomHelper.generateStyles(this.fieldStyle):this.fieldStyle||""},getSubTplData:function(){var a=this;return Ext.apply(a.callParent(),{disabled:a.readOnly||a.disabled,boxLabel:a.boxLabel,boxLabelCls:a.boxLabelCls,boxLabelAlign:a.boxLabelAlign,inputTypeAttr:a.inputTypeAttr})},initEvents:function(){var a=this;a.callParent();a.mon(a.inputEl,"click",a.onBoxClick,a)},setBoxLabel:function(a){var b=this;b.boxLabel=a;if(b.rendered){b.boxLabelEl.update(a)}},onBoxClick:function(b){var a=this;if(!a.disabled&&!a.readOnly){this.setValue(!this.checked)}},getRawValue:function(){return this.checked},getValue:function(){return this.checked},getSubmitValue:function(){var a=this.uncheckedValue,b=Ext.isDefined(a)?a:null;return this.checked?this.inputValue:b},isChecked:function(b,a){return(b===true||b==="true"||b==="1"||b===1||(((Ext.isString(b)||Ext.isNumber(b))&&a)?b==a:this.onRe.test(b)))},setRawValue:function(c){var b=this,d=b.inputEl,a=b.isChecked(c,b.inputValue);if(d){b[a?"addCls":"removeCls"](b.checkedCls)}b.checked=b.rawValue=a;return a},setValue:function(g){var e=this,c,b,a,d;if(Ext.isArray(g)){c=e.getManager().getByName(e.name,e.getFormId()).items;a=c.length;for(b=0;b style="{bodyStyle}">',"{%this.renderContainer(out,values);%}",""],stateEvents:["collapse","expand"],maskOnDisable:false,beforeDestroy:function(){var b=this,a=b.legend;if(a){delete a.ownerCt;a.destroy();b.legend=null}b.callParent()},initComponent:function(){var b=this,a=b.baseCls;b.initFieldAncestor();b.callParent();b.layout.managePadding=b.layout.manageOverflow=false;b.addEvents("beforeexpand","beforecollapse","expand","collapse");if(b.collapsed){b.addCls(a+"-collapsed");b.collapse()}if(b.title||b.checkboxToggle||b.collapsible){b.addTitleClasses();b.legend=Ext.widget(b.createLegendCt())}b.initMonitor()},initPadding:function(e){var c=this,a=c.getProtoBody(),d=c.padding,b;if(d!==undefined){if(Ext.isIEQuirks||Ext.isIE8m){d=c.parseBox(d);b=Ext.Element.parseBox(0);b.top=d.top;d.top=0;a.setStyle("padding",c.unitizeBox(b))}e.setStyle("padding",c.unitizeBox(d))}},getProtoBody:function(){var b=this,a=b.protoBody;if(!a){b.protoBody=a=new Ext.util.ProtoElement({styleProp:"bodyStyle",styleIsText:true})}return a},initRenderData:function(){var a=this,b=a.callParent();b.bodyTargetCls=a.bodyTargetCls;a.protoBody.writeTo(b);delete a.protoBody;return b},getState:function(){var a=this.callParent();a=this.addPropertyToState(a,"collapsed");return a},afterCollapse:Ext.emptyFn,afterExpand:Ext.emptyFn,collapsedHorizontal:function(){return true},collapsedVertical:function(){return true},createLegendCt:function(){var c=this,a=[],b={xtype:"container",baseCls:c.baseCls+"-header",id:c.id+"-legend",autoEl:"legend",items:a,ownerCt:c,shrinkWrap:true,ownerLayout:c.componentLayout};if(c.checkboxToggle){a.push(c.createCheckboxCmp())}else{if(c.collapsible){a.push(c.createToggleCmp())}}a.push(c.createTitleCmp());return b},createTitleCmp:function(){var b=this,a={xtype:"component",html:b.title,cls:b.baseCls+"-header-text",id:b.id+"-legendTitle"};if(b.collapsible&&b.toggleOnTitleClick){a.listeners={click:{element:"el",scope:b,fn:b.toggle}};a.cls+=" "+b.baseCls+"-header-text-collapsible"}return(b.titleCmp=Ext.widget(a))},createCheckboxCmp:function(){var a=this,b="-checkbox";a.checkboxCmp=Ext.widget({xtype:"checkbox",hideEmptyLabel:true,name:a.checkboxName||a.id+b,cls:a.baseCls+"-header"+b,id:a.id+"-legendChk",checked:!a.collapsed,listeners:{change:a.onCheckChange,scope:a}});return a.checkboxCmp},createToggleCmp:function(){var a=this;a.toggleCmp=Ext.widget({xtype:"tool",height:15,width:15,type:"toggle",handler:a.toggle,id:a.id+"-legendToggle",scope:a});return a.toggleCmp},doRenderLegend:function(b,e){var d=e.$comp,c=d.legend,a;if(c){c.ownerLayout.configureItem(c);a=c.getRenderTree();Ext.DomHelper.generateMarkup(a,b)}},finishRender:function(){var a=this.legend;this.callParent();if(a){a.finishRender()}},getCollapsed:function(){return this.collapsed?"top":false},getCollapsedDockedItems:function(){var a=this.legend;return a?[a]:[]},setTitle:function(d){var c=this,b=c.legend,a=c.baseCls;c.title=d;if(c.rendered){if(!b){c.legend=b=Ext.widget(c.createLegendCt());c.addTitleClasses();b.ownerLayout.configureItem(b);b.render(c.el,0)}c.titleCmp.update(d)}else{if(b){c.titleCmp.update(d)}else{c.addTitleClasses();c.legend=Ext.widget(c.createLegendCt())}}return c},addTitleClasses:function(){var b=this,c=b.title,a=b.baseCls;if(c){b.addCls(a+"-with-title")}if(c||b.checkboxToggle||b.collapsible){b.addCls(a+"-with-header")}},applyTargetCls:function(a){this.bodyTargetCls=a},getTargetEl:function(){return this.body||this.frameBody||this.el},getDefaultContentTarget:function(){return this.body},expand:function(){return this.setExpanded(true)},collapse:function(){return this.setExpanded(false)},setExpanded:function(b){var c=this,d=c.checkboxCmp,a=b?"expand":"collapse";if(!c.rendered||c.fireEvent("before"+a,c)!==false){b=!!b;if(d){d.setValue(b)}if(b){c.removeCls(c.baseCls+"-collapsed")}else{c.addCls(c.baseCls+"-collapsed")}c.collapsed=!b;if(b){delete c.getHierarchyState().collapsed}else{c.getHierarchyState().collapsed=true}if(c.rendered){c.updateLayout({isRoot:false});c.fireEvent(a,c)}}return c},getRefItems:function(a){var c=this.callParent(arguments),b=this.legend;if(b){c.unshift(b);if(a){c.unshift.apply(c,b.getRefItems(true))}}return c},toggle:function(){this.setExpanded(!!this.collapsed)},onCheckChange:function(b,a){this.setExpanded(a)},setupRenderTpl:function(a){this.callParent(arguments);a.renderLegend=this.doRenderLegend}},0,["fieldset"],["component","container","box","fieldset"],{component:true,container:true,box:true,fieldset:true},["widget.fieldset"],[["fieldAncestor",Ext.form.FieldAncestor]],[Ext.form,"FieldSet"],0));(Ext.cmd.derive("Ext.form.Label",Ext.Component,{autoEl:"label",maskOnDisable:false,getElConfig:function(){var a=this;a.html=a.text?Ext.util.Format.htmlEncode(a.text):(a.html||"");return Ext.apply(a.callParent(),{htmlFor:a.forId||""})},setText:function(c,b){var a=this;b=b!==false;if(b){a.text=c;delete a.html}else{a.html=c;delete a.text}if(a.rendered){a.el.dom.innerHTML=b!==false?Ext.util.Format.htmlEncode(c):c;a.updateLayout()}return a}},0,["label"],["component","label","box"],{component:true,label:true,box:true},["widget.label"],0,[Ext.form,"Label"],0));(Ext.cmd.derive("Ext.form.Panel",Ext.panel.Panel,{alternateClassName:["Ext.FormPanel","Ext.form.FormPanel"],layout:"anchor",ariaRole:"form",basicFormConfigs:["api","baseParams","errorReader","jsonSubmit","method","paramOrder","paramsAsHash","reader","standardSubmit","timeout","trackResetOnLoad","url","waitMsgTarget","waitTitle"],initComponent:function(){var a=this;if(a.frame){a.border=false}a.initFieldAncestor();a.callParent();a.relayEvents(a.form,["beforeaction","actionfailed","actioncomplete","validitychange","dirtychange"]);if(a.pollForChanges){a.startPolling(a.pollInterval||500)}},initItems:function(){this.callParent();this.initMonitor();this.form=this.createForm()},afterFirstLayout:function(){this.callParent(arguments);this.form.initialize()},createForm:function(){var b={},d=this.basicFormConfigs,a=d.length,c=0,e;for(;c'+d+""+c.getTriggerMarkup()+""},getSubTplData:function(){var b=this,c=b.callParent(),d=b.readOnly===true,a=b.editable!==false;return Ext.apply(c,{editableCls:(d||!a)?" "+b.triggerNoEditCls:"",readOnly:!a||d})},getLabelableRenderData:function(){var b=this,c=b.triggerWrapCls,a=b.callParent(arguments);return Ext.applyIf(a,{triggerWrapCls:c,triggerMarkup:b.getTriggerMarkup()})},getTriggerMarkup:function(){var e=this,c=0,j=(e.readOnly||e.hideTrigger),a,g=e.triggerBaseCls,h=[],d=Ext.dom.Element.unselectableCls,b="width:"+e.triggerWidth+"px;"+(j?"display:none;":""),k=e.extraTriggerCls+" "+Ext.baseCSSPrefix+"trigger-cell "+d;if(!e.trigger1Cls){e.trigger1Cls=e.triggerCls}for(c=0;(a=e["trigger"+(c+1)+"Cls"])||c<1;c++){h.push({tag:"td",valign:"top",cls:k,style:b,cn:{cls:[Ext.baseCSSPrefix+"trigger-index-"+c,g,a].join(" "),role:"button"}})}h[0].cn.cls+=" "+g+"-first";return Ext.DomHelper.markup(h)},disableCheck:function(){return !this.disabled},beforeRender:function(){var a=this,b=a.triggerBaseCls,c;if(!a.triggerWidth){c=Ext.getBody().createChild({style:"position: absolute;",cls:Ext.baseCSSPrefix+"form-trigger"});Ext.form.field.Trigger.prototype.triggerWidth=c.getWidth();c.remove()}a.callParent();if(b!=Ext.baseCSSPrefix+"form-trigger"){a.addChildEls({name:"triggerEl",select:"."+b})}a.lastTriggerStateFlags=a.getTriggerStateFlags()},onRender:function(){var a=this;a.callParent(arguments);a.doc=Ext.getDoc();a.initTrigger()},getTriggerWidth:function(){var b=this,a=0;if(b.triggerWrap&&!b.hideTrigger&&!b.readOnly){a=b.triggerEl.getCount()*b.triggerWidth}return a},setHideTrigger:function(a){if(a!=this.hideTrigger){this.hideTrigger=a;this.updateLayout()}},setEditable:function(a){if(a!=this.editable){this.editable=a;this.updateLayout()}},setReadOnly:function(c){var b=this,a=b.readOnly;b.callParent(arguments);if(c!=a){b.updateLayout()}},initTrigger:function(){var h=this,j=h.triggerWrap,l=h.triggerEl,a=h.disableCheck,d,c,b,g,k;if(h.repeatTriggerClick){h.triggerRepeater=new Ext.util.ClickRepeater(j,{preventDefault:true,handler:h.onTriggerWrapClick,listeners:{mouseup:h.onTriggerWrapMouseup,scope:h},scope:h})}else{h.mon(j,{click:h.onTriggerWrapClick,mouseup:h.onTriggerWrapMouseup,scope:h})}l.setVisibilityMode(Ext.Element.DISPLAY);l.addClsOnOver(h.triggerBaseCls+"-over",a,h);d=l.elements;c=d.length;for(g=0;g1){b=[];for(j=0;j=c){h.deselectRange(h.lastFocused,c-1)}else{if(k!==d){h.selectRange(k,d,g.ctrlKey)}}}h.lastSelected=d;h.setLastFocused(d)}else{if(g.ctrlKey&&b){h.setLastFocused(d)}else{if(g.ctrlKey){h.setLastFocused(d)}else{h.doSelect(d,false)}}}}break;case"SIMPLE":if(b){h.doDeselect(d)}else{h.doSelect(d,true)}break;case"SINGLE":if(m){if(b){h.doDeselect(d);h.setLastFocused(d)}else{h.doSelect(d)}}else{if(g.ctrlKey){h.setLastFocused(d)}else{if(h.allowDeselect&&b){h.doDeselect(d)}else{h.doSelect(d,false)}}}break}if(!g.shiftKey){if(h.isSelected(d)){h.selectionStart=d}}},selectRange:function(m,d,n){var j=this,l=j.store,c=j.selected.items,o,g,h,e,a,k,b;if(j.isLocked()){return}o=j.normalizeRowRange(m,d);m=o[0];d=o[1];e=[];for(g=m;g<=d;g++){if(!j.isSelected(l.getAt(g))){e.push(l.getAt(g))}}if(!n){a=[];j.suspendChanges();for(g=0,h=c.length;gd){a.push(b)}}for(g=0,h=a.length;gb){d=b;b=c;c=d}return[c,b]},onModelIdChanged:function(a,d,e,c,b){this.selected.updateKey(b,c)},select:function(b,c,a){if(Ext.isDefined(b)){this.doSelect(b,c,a)}},deselect:function(b,a){this.doDeselect(b,a)},doSelect:function(c,e,b){var d=this,a;if(d.locked||!d.store){return}if(typeof c==="number"){a=d.store.getAt(c);if(!a){return}c=[a]}if(d.selectionMode=="SINGLE"&&c){a=c.length?c[0]:c;d.doSingleSelect(a,b)}else{d.doMultiSelect(c,e,b)}},doMultiSelect:function(a,l,k){var h=this,b=h.selected,j=false,m,d,g,e,c;if(h.locked){return}a=!Ext.isArray(a)?[a]:a;g=a.length;if(!l&&b.getCount()>0){m=h.deselectDuringSelect(a,b.getRange(),k);if(m[0]){h.maybeFireSelectionChange(m[1]>0&&!k);return}}c=function(){b.add(e);j=true};for(d=0;d0&&!k);return g===l},doSingleSelect:function(a,b){var d=this,g=false,c=d.selected,e;if(d.locked){return}if(d.isSelected(a)){return}if(c.getCount()){d.suspendChanges();if(!d.doDeselect(d.lastSelected,b)){d.resumeChanges();return}d.resumeChanges()}e=function(){c.add(a);d.lastSelected=a;g=true};d.onSelectChange(a,true,b,e);if(g){if(!b&&!d.preventFocus){d.setLastFocused(a)}d.maybeFireSelectionChange(!b)}},setLastFocused:function(c,b){var d=this,a=d.lastFocused;if(c!==a){d.lastFocused=c;d.onLastFocusChanged(a,c,b)}},isFocused:function(a){return a===this.getLastFocused()},maybeFireSelectionChange:function(a){var b=this;if(a&&!b.suspendChange){b.fireEvent("selectionchange",b,b.getSelection())}},getLastSelected:function(){return this.lastSelected},getLastFocused:function(){return this.lastFocused},getSelection:function(){return this.selected.getRange()},getSelectionMode:function(){return this.selectionMode},setSelectionMode:function(a){a=a?a.toUpperCase():"SINGLE";this.selectionMode=this.modes[a]?a:"SINGLE"},isLocked:function(){return this.locked},setLocked:function(a){this.locked=!!a},isRangeSelected:function(d,c){var g=this,b=g.store,e,a;a=g.normalizeRowRange(d,c);d=a[0];c=a[1];for(e=d;e<=c;e++){if(!g.isSelected(b.getAt(e))){return false}}return true},isSelected:function(a){a=Ext.isNumber(a)?this.store.getAt(a):a;return this.selected.contains(a)},hasSelection:function(){return this.selected.getCount()>0},getSelectionId:function(a){return a.internalId},pruneIf:function(){var g=this,d=g.selected,c=[],a=d.length,b,e;if(g.pruneRemoved){for(b=0;b0){this.clearSelections();this.maybeFireSelectionChange(true)}},onStoreRemove:function(c,b,d,a){var e=this;if(e.selectionStart&&Ext.Array.contains(b,e.selectionStart)){e.selectionStart=null}if(a||e.locked||!e.pruneRemoved){return}e.deselectDeletedRecords(b)},deselectDeletedRecords:function(b){var g=this,d=g.selected,c,e=b.length,h=0,a;for(c=0;c=c){a=0}}e.select(a)},onSelectChange:function(b,e,d,h){var g=this,a=g.view,c=e?"select":"deselect";if((d||g.fireEvent("before"+c,g,b))!==false&&h()!==false){if(a){if(e){a.onItemSelect(b)}else{a.onItemDeselect(b)}}if(!d){g.fireEvent(c,g,b)}}},onLastFocusChanged:function(d,b,c){var a=this.view;if(a&&!c&&b){a.focusNode(b);this.fireEvent("focuschange",this,d,b)}},destroy:function(){Ext.destroy(this.keyNav);this.callParent()}},1,0,0,0,0,0,[Ext.selection,"DataViewModel"],0));(Ext.cmd.derive("Ext.view.AbstractView",Ext.Component,{inheritableStatics:{getRecord:function(a){return this.getBoundView(a).getRecord(a)},getBoundView:function(a){return Ext.getCmp(a.boundView)}},deferInitialRefresh:true,itemCls:Ext.baseCSSPrefix+"dataview-item",loadingText:"Loading...",loadMask:true,loadingUseMsg:true,selectedItemCls:Ext.baseCSSPrefix+"item-selected",emptyText:"",deferEmptyText:true,trackOver:false,blockRefresh:false,preserveScrollOnRefresh:false,last:false,triggerEvent:"itemclick",triggerCtEvent:"containerclick",addCmpEvents:function(){},initComponent:function(){var c=this,a=Ext.isDefined,d=c.itemTpl,b={};if(d){if(Ext.isArray(d)){d=d.join("")}else{if(Ext.isObject(d)){b=Ext.apply(b,d.initialConfig);d=d.html}}if(!c.itemSelector){c.itemSelector="."+c.itemCls}d=Ext.String.format('
    {1}
    ',c.itemCls,d);c.tpl=new Ext.XTemplate(d,b)}c.callParent();c.tpl=c.getTpl("tpl");if(c.overItemCls){c.trackOver=true}c.addEvents("beforerefresh","refresh","viewready","itemupdate","itemadd","itemremove");c.addCmpEvents();c.store=Ext.data.StoreManager.lookup(c.store||"ext-empty-store");if(!c.dataSource){c.dataSource=c.store}c.bindStore(c.dataSource,true,"dataSource");if(!c.all){c.all=new Ext.CompositeElementLite()}c.scrollState={top:0,left:0};c.on({scroll:c.onViewScroll,element:"el",scope:c})},onRender:function(){var d=this,b=d.loadMask,c=d.getMaskStore(),a={target:d,msg:d.loadingText,msgCls:d.loadingCls,useMsg:d.loadingUseMsg,store:c};d.callParent(arguments);if(b&&!c.proxy.isSynchronous){if(Ext.isObject(b)){a=Ext.apply(a,b)}d.loadMask=new Ext.LoadMask(a);d.loadMask.on({scope:d,beforeshow:d.onMaskBeforeShow,hide:d.onMaskHide})}},finishRender:function(){var a=this;a.callParent(arguments);if(!a.up("[collapsed],[hidden]")){a.doFirstRefresh(a.dataSource)}},onBoxReady:function(){var a=this;a.callParent(arguments);if(!a.firstRefreshDone){a.doFirstRefresh(a.dataSource)}},getMaskStore:function(){return this.store},onMaskBeforeShow:function(){var b=this,a=b.loadingHeight;if(a&&a>b.getHeight()){b.hasLoadingHeight=true;b.oldMinHeight=b.minHeight;b.minHeight=a;b.updateLayout()}},onMaskHide:function(){var a=this;if(!a.destroying&&a.hasLoadingHeight){a.minHeight=a.oldMinHeight;a.updateLayout();delete a.hasLoadingHeight}},beforeRender:function(){this.callParent(arguments);this.getSelectionModel().beforeViewRender(this)},afterRender:function(){this.callParent(arguments);this.getSelectionModel().bindComponent(this)},getSelectionModel:function(){var a=this,b="SINGLE";if(a.simpleSelect){b="SIMPLE"}else{if(a.multiSelect){b="MULTI"}}if(!a.selModel||!a.selModel.events){a.selModel=new Ext.selection.DataViewModel(Ext.apply({allowDeselect:a.allowDeselect,mode:b},a.selModel))}if(!a.selModel.hasRelaySetup){a.relayEvents(a.selModel,["selectionchange","beforeselect","beforedeselect","select","deselect","focuschange"]);a.selModel.hasRelaySetup=true}if(a.disableSelection){a.selModel.locked=true}return a.selModel},refresh:function(){var c=this,h,b,e,d,g,a;if(!c.rendered||c.isDestroyed){return}if(!c.hasListeners.beforerefresh||c.fireEvent("beforerefresh",c)!==false){h=c.getTargetEl();a=c.getViewRange();g=h.dom;if(!c.preserveScrollOnRefresh){b=g.parentNode;e=g.style.display;g.style.display="none";d=g.nextSibling;b.removeChild(g)}if(c.refreshCounter){c.clearViewEl()}else{c.fixedNodes=h.dom.childNodes.length;c.refreshCounter=1}c.tpl.append(h,c.collectData(a,c.all.startIndex));if(a.length<1){if(!this.store.loading&&(!c.deferEmptyText||c.hasFirstRefresh)){Ext.core.DomHelper.insertHtml("beforeEnd",h.dom,c.emptyText)}c.all.clear()}else{c.collectNodes(h.dom);c.updateIndexes(0)}if(c.hasFirstRefresh){if(c.refreshSelmodelOnRefresh!==false){c.selModel.refresh()}else{c.selModel.pruneIf()}}c.hasFirstRefresh=true;if(!c.preserveScrollOnRefresh){b.insertBefore(g,d);g.style.display=e}this.refreshSize();c.fireEvent("refresh",c);if(!c.viewReady){c.viewReady=true;c.fireEvent("viewready",c)}}},collectNodes:function(a){this.all.fill(Ext.query(this.getItemSelector(),Ext.getDom(a)),this.all.startIndex)},getViewRange:function(){return this.dataSource.getRange()},refreshSize:function(){var a=this.getSizeModel();if(a.height.shrinkWrap||a.width.shrinkWrap){this.updateLayout()}},clearViewEl:function(){var b=this,a=b.getTargetEl();if(b.fixedNodes){while(a.dom.childNodes[b.fixedNodes]){a.dom.removeChild(a.dom.childNodes[b.fixedNodes])}}else{a.update("")}b.refreshCounter++},onViewScroll:Ext.emptyFn,onIdChanged:Ext.emptyFn,saveScrollState:function(){if(this.rendered){var b=this.el.dom,a=this.scrollState;a.left=b.scrollLeft;a.top=b.scrollTop}},restoreScrollState:function(){if(this.rendered){var b=this.el.dom,a=this.scrollState;b.scrollLeft=a.left;b.scrollTop=a.top}},prepareData:function(e,d,c){var b,a,g;if(c){b=c.getAssociatedData();for(a in b){if(b.hasOwnProperty(a)){if(!g){e=Ext.Object.chain(e);g=true}e[a]=b[a]}}}return e},collectData:function(c,g){var e=[],d=0,a=c.length,b;for(;d-1){c=d.bufferRender([a],b)[0];if(d.getNode(a)){d.all.replaceElement(b,c,true);d.updateIndexes(b,b);d.selModel.onUpdate(a);if(d.hasListeners.itemupdate){d.fireEvent("itemupdate",a,b,c)}return c}}}},onAdd:function(c,b,d){var e=this,a;if(e.rendered){if(e.all.getCount()===0){e.refresh();a=e.all.slice()}else{a=e.doAdd(b,d);if(e.refreshSelmodelOnRefresh!==false){e.selModel.refresh()}e.updateIndexes(d);e.refreshSize()}if(e.hasListeners.itemadd){e.fireEvent("itemadd",b,d,a)}}},doAdd:function(c,d){var j=this,b=j.bufferRender(c,d,true),g=j.all,h=g.getCount(),e,a;if(h===0){for(e=0,a=b.length;e=0;--e){g.fireEvent("itemremove",b[e],d[e])}}g.refresh()}else{for(e=d.length-1;e>=0;--e){a=b[e];c=d[e];g.doRemove(a,c);if(h){g.fireEvent("itemremove",a,c)}}g.updateIndexes(d[0])}this.refreshSize()}},doRemove:function(a,b){this.all.removeElement(b,true)},refreshNode:function(a){this.onUpdate(this.dataSource,this.dataSource.getAt(a))},updateIndexes:function(e,d){var b=this.all.elements,a=this.getViewRange(),c;e=e||0;d=d||((d===0)?0:(b.length-1));for(c=e;c<=d;c++){b[c].viewIndex=c;b[c].viewRecordId=a[c].internalId;if(!b[c].boundView){b[c].boundView=this.id}}},getStore:function(){return this.store},bindStore:function(a,b,d){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);if(!b){c.getSelectionModel().bindStore(a)}if(c.componentLayoutCounter){c.doFirstRefresh(a)}},doFirstRefresh:function(a){var b=this;b.firstRefreshDone=true;if(a&&!a.loading){if(b.deferInitialRefresh){b.applyFirstRefresh()}else{b.refresh()}}},applyFirstRefresh:function(){var a=this;if(a.isDestroyed){return}if(a.up("[isCollapsingOrExpanding]")){Ext.Function.defer(a.applyFirstRefresh,100,a)}else{Ext.Function.defer(function(){if(!a.isDestroyed){a.refresh()}},1)}},onUnbindStore:function(a){this.setMaskBind(null)},onBindStore:function(a,b,c){this.setMaskBind(a);if(!b&&c==="store"){this.bindStore(a,false,"dataSource")}},setMaskBind:function(b){var a=this.loadMask;if(a&&a.bindStore){a.bindStore(b)}},getStoreListeners:function(){var a=this;return{idchanged:a.onIdChanged,refresh:a.onDataRefresh,add:a.onAdd,bulkremove:a.onRemove,update:a.onUpdate,clear:a.refresh}},onDataRefresh:function(){this.refreshView()},refreshView:function(){var a=this,b=!a.firstRefreshDone&&(!a.rendered||a.up("[collapsed],[isCollapsingOrExpanding],[hidden]"));if(b){a.deferInitialRefresh=false}else{if(a.blockRefresh!==true){a.firstRefreshDone=true;a.refresh()}}},findItemByChild:function(a){return Ext.fly(a).findParent(this.getItemSelector(),this.getTargetEl())},findTargetByEvent:function(a){return a.getTarget(this.getItemSelector(),this.getTargetEl())},getSelectedNodes:function(){var b=[],a=this.selModel.getSelection(),d=a.length,c=0;for(;ch.bottom){a=c.bottom-h.bottom}}if(c.lefth.right){b=c.right-h.right}}if(b||a){g.scrollBy(b,a,false)}d.focus()}}},0,["dataview"],["component","box","dataview"],{component:true,box:true,dataview:true},["widget.dataview"],0,[Ext.view,"View",Ext,"DataView"],0));(Ext.cmd.derive("Ext.layout.component.BoundList",Ext.layout.component.Auto,{type:"component",beginLayout:function(d){var c=this,a=c.owner,b=a.pagingToolbar;c.callParent(arguments);if(a.floating){d.savedXY=a.getXY();a.setXY([0,-9999])}if(b){d.toolbarContext=d.context.getCmp(b)}d.listContext=d.getEl("listEl")},beginLayoutCycle:function(b){var a=this.owner;this.callParent(arguments);if(b.heightModel.auto){a.el.setHeight("auto");a.listEl.setHeight("auto")}},getLayoutItems:function(){var a=this.owner.pagingToolbar;return a?[a]:[]},isValidParent:function(){return true},finishedLayout:function(a){var b=a.savedXY;this.callParent(arguments);if(b){this.owner.setXY(b)}},measureContentWidth:function(a){return this.owner.listEl.getWidth()},measureContentHeight:function(a){return this.owner.listEl.getHeight()},publishInnerHeight:function(c,a){var b=c.toolbarContext,d=0;if(b){d=b.getProp("height")}if(d===undefined){this.done=false}else{c.listContext.setHeight(a-c.getFrameInfo().height-d)}},calculateOwnerHeightFromContentHeight:function(c){var a=this.callParent(arguments),b=c.toolbarContext;if(b){a+=b.getProp("height")}return a}},0,0,0,0,["layout.boundlist"],0,[Ext.layout.component,"BoundList"],0));(Ext.cmd.derive("Ext.toolbar.TextItem",Ext.toolbar.Item,{alternateClassName:"Ext.Toolbar.TextItem",text:"",renderTpl:"{text}",baseCls:Ext.baseCSSPrefix+"toolbar-text",beforeRender:function(){var a=this;a.callParent();Ext.apply(a.renderData,{text:a.text})},setText:function(b){var a=this;a.text=b;if(a.rendered){a.el.update(b);a.updateLayout()}}},0,["tbtext"],["tbitem","component","box","tbtext"],{tbitem:true,component:true,box:true,tbtext:true},["widget.tbtext"],0,[Ext.toolbar,"TextItem",Ext.Toolbar,"TextItem"],0));(Ext.cmd.derive("Ext.form.field.Spinner",Ext.form.field.Trigger,{alternateClassName:"Ext.form.Spinner",trigger1Cls:Ext.baseCSSPrefix+"form-spinner-up",trigger2Cls:Ext.baseCSSPrefix+"form-spinner-down",spinUpEnabled:true,spinDownEnabled:true,keyNavEnabled:true,mouseWheelEnabled:true,repeatTriggerClick:true,onSpinUp:Ext.emptyFn,onSpinDown:Ext.emptyFn,triggerTpl:'
    ',initComponent:function(){this.callParent();this.addEvents("spin","spinup","spindown")},onRender:function(){var b=this,a;b.callParent(arguments);a=b.triggerEl;b.spinUpEl=a.item(0);b.spinDownEl=a.item(1);b.triggerCell=b.spinUpEl.parent();if(b.keyNavEnabled){b.spinnerKeyNav=new Ext.util.KeyNav(b.inputEl,{scope:b,up:b.spinUp,down:b.spinDown})}if(b.mouseWheelEnabled){b.mon(b.bodyEl,"mousewheel",b.onMouseWheel,b)}},getSubTplMarkup:function(b){var c=this,a=b.childElCls,d=Ext.form.field.Base.prototype.getSubTplMarkup.apply(c,arguments);return'"+c.getTriggerMarkup()+"
    '+d+"
    "},getTriggerMarkup:function(){return this.getTpl("triggerTpl").apply(this.getTriggerData())},getTriggerData:function(){var a=this,b=(a.readOnly||a.hideTrigger);return{triggerCls:Ext.baseCSSPrefix+"trigger-cell",triggerStyle:b?"display:none":"",spinnerUpCls:!a.spinUpEnabled?a.trigger1Cls+"-disabled":"",spinnerDownCls:!a.spinDownEnabled?a.trigger2Cls+"-disabled":""}},getTriggerWidth:function(){var b=this,a=0;if(b.triggerWrap&&!b.hideTrigger&&!b.readOnly){a=b.triggerWidth}return a},onTrigger1Click:function(){this.spinUp()},onTrigger2Click:function(){this.spinDown()},onTriggerWrapMouseup:function(){this.inputEl.focus()},spinUp:function(){var a=this;if(a.spinUpEnabled&&!a.disabled){a.fireEvent("spin",a,"up");a.fireEvent("spinup",a);a.onSpinUp()}},spinDown:function(){var a=this;if(a.spinDownEnabled&&!a.disabled){a.fireEvent("spin",a,"down");a.fireEvent("spindown",a);a.onSpinDown()}},setSpinUpEnabled:function(a){var b=this,c=b.spinUpEnabled;b.spinUpEnabled=a;if(c!==a&&b.rendered){b.spinUpEl[a?"removeCls":"addCls"](b.trigger1Cls+"-disabled")}},setSpinDownEnabled:function(a){var b=this,c=b.spinDownEnabled;b.spinDownEnabled=a;if(c!==a&&b.rendered){b.spinDownEl[a?"removeCls":"addCls"](b.trigger2Cls+"-disabled")}},onMouseWheel:function(b){var a=this,c;if(a.hasFocus){c=b.getWheelDelta();if(c>0){a.spinUp()}else{if(c<0){a.spinDown()}}b.stopEvent()}},onDestroy:function(){Ext.destroyMembers(this,"spinnerKeyNav","spinUpEl","spinDownEl");this.callParent()}},0,["spinnerfield"],["field","trigger","textfield","component","box","spinnerfield","triggerfield"],{field:true,trigger:true,textfield:true,component:true,box:true,spinnerfield:true,triggerfield:true},["widget.spinnerfield"],0,[Ext.form.field,"Spinner",Ext.form,"Spinner"],0));(Ext.cmd.derive("Ext.form.field.Number",Ext.form.field.Spinner,{alternateClassName:["Ext.form.NumberField","Ext.form.Number"],allowExponential:true,allowDecimals:true,decimalSeparator:".",submitLocaleSeparator:true,decimalPrecision:2,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,step:1,minText:"The minimum value for this field is {0}",maxText:"The maximum value for this field is {0}",nanText:"{0} is not a valid number",negativeText:"The value cannot be negative",baseChars:"0123456789",autoStripChars:false,initComponent:function(){var a=this;a.callParent();a.setMinValue(a.minValue);a.setMaxValue(a.maxValue)},getErrors:function(c){var b=this,e=b.callParent(arguments),d=Ext.String.format,a;c=Ext.isDefined(c)?c:this.processRawValue(this.getRawValue());if(c.length<1){return e}c=String(c).replace(b.decimalSeparator,".");if(isNaN(c)){e.push(d(b.nanText,c))}a=b.parseValue(c);if(b.minValue===0&&a<0){e.push(this.negativeText)}else{if(ab.maxValue){e.push(d(b.maxText,b.maxValue))}return e},rawToValue:function(b){var a=this.fixPrecision(this.parseValue(b));if(a===null){a=b||null}return a},valueToRaw:function(c){var b=this,a=b.decimalSeparator;c=b.parseValue(c);c=b.fixPrecision(c);c=Ext.isNumber(c)?c:parseFloat(String(c).replace(a,"."));c=isNaN(c)?"":String(c).replace(".",a);return c},getSubmitValue:function(){var a=this,b=a.callParent();if(!a.submitLocaleSeparator){b=b.replace(a.decimalSeparator,".")}return b},onChange:function(){this.toggleSpinners();this.callParent(arguments)},toggleSpinners:function(){var c=this,d=c.getValue(),b=d===null,a;if(c.spinUpEnabled||c.spinUpDisabledByToggle){a=b||dc.minValue;c.setSpinDownEnabled(a,true)}},setMinValue:function(b){var a=this,c;a.minValue=Ext.Number.from(b,Number.NEGATIVE_INFINITY);a.toggleSpinners();if(a.disableKeyFilter!==true){c=a.baseChars+"";if(a.allowExponential){c+=a.decimalSeparator+"e+-"}else{if(a.allowDecimals){c+=a.decimalSeparator}if(a.minValue<0){c+="-"}}c=Ext.String.escapeRegex(c);a.maskRe=new RegExp("["+c+"]");if(a.autoStripChars){a.stripCharsRe=new RegExp("[^"+c+"]","gi")}}},setMaxValue:function(a){this.maxValue=Ext.Number.from(a,Number.MAX_VALUE);this.toggleSpinners()},parseValue:function(a){a=parseFloat(String(a).replace(this.decimalSeparator,"."));return isNaN(a)?null:a},fixPrecision:function(d){var c=this,b=isNaN(d),a=c.decimalPrecision;if(b||!d){return b?"":d}else{if(!c.allowDecimals||a<=0){a=0}}return parseFloat(Ext.Number.toFixed(parseFloat(d),a))},beforeBlur:function(){var b=this,a=b.parseValue(b.getRawValue());if(!Ext.isEmpty(a)){b.setValue(a)}},setSpinUpEnabled:function(b,a){this.callParent(arguments);if(!a){delete this.spinUpDisabledByToggle}else{this.spinUpDisabledByToggle=!b}},onSpinUp:function(){var a=this;if(!a.readOnly){a.setSpinValue(Ext.Number.constrain(a.getValue()+a.step,a.minValue,a.maxValue))}},setSpinDownEnabled:function(b,a){this.callParent(arguments);if(!a){delete this.spinDownDisabledByToggle}else{this.spinDownDisabledByToggle=!b}},onSpinDown:function(){var a=this;if(!a.readOnly){a.setSpinValue(Ext.Number.constrain(a.getValue()-a.step,a.minValue,a.maxValue))}},setSpinValue:function(c){var b=this,a;if(b.enforceMaxLength){if(b.fixPrecision(c).toString().length>b.maxLength){return}}b.setValue(c)}},0,["numberfield"],["field","trigger","textfield","component","box","numberfield","spinnerfield","triggerfield"],{field:true,trigger:true,textfield:true,component:true,box:true,numberfield:true,spinnerfield:true,triggerfield:true},["widget.numberfield"],0,[Ext.form.field,"Number",Ext.form,"NumberField",Ext.form,"Number"],0));(Ext.cmd.derive("Ext.toolbar.Paging",Ext.toolbar.Toolbar,{alternateClassName:"Ext.PagingToolbar",displayInfo:false,prependButtons:false,displayMsg:"Displaying {0} - {1} of {2}",emptyMsg:"No data to display",beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",inputItemWidth:30,getPagingItems:function(){var a=this;return[{itemId:"first",tooltip:a.firstText,overflowText:a.firstText,iconCls:Ext.baseCSSPrefix+"tbar-page-first",disabled:true,handler:a.moveFirst,scope:a},{itemId:"prev",tooltip:a.prevText,overflowText:a.prevText,iconCls:Ext.baseCSSPrefix+"tbar-page-prev",disabled:true,handler:a.movePrevious,scope:a},"-",a.beforePageText,{xtype:"numberfield",itemId:"inputItem",name:"inputItem",cls:Ext.baseCSSPrefix+"tbar-page-number",allowDecimals:false,minValue:1,hideTrigger:true,enableKeyEvents:true,keyNavEnabled:false,selectOnFocus:true,submitValue:false,isFormField:false,width:a.inputItemWidth,margins:"-1 2 3 2",listeners:{scope:a,keydown:a.onPagingKeyDown,blur:a.onPagingBlur}},{xtype:"tbtext",itemId:"afterTextItem",text:Ext.String.format(a.afterPageText,1)},"-",{itemId:"next",tooltip:a.nextText,overflowText:a.nextText,iconCls:Ext.baseCSSPrefix+"tbar-page-next",disabled:true,handler:a.moveNext,scope:a},{itemId:"last",tooltip:a.lastText,overflowText:a.lastText,iconCls:Ext.baseCSSPrefix+"tbar-page-last",disabled:true,handler:a.moveLast,scope:a},"-",{itemId:"refresh",tooltip:a.refreshText,overflowText:a.refreshText,iconCls:Ext.baseCSSPrefix+"tbar-loading",handler:a.doRefresh,scope:a}]},initComponent:function(){var b=this,c=b.getPagingItems(),a=b.items||b.buttons||[];if(b.prependButtons){b.items=a.concat(c)}else{b.items=c.concat(a)}delete b.buttons;if(b.displayInfo){b.items.push("->");b.items.push({xtype:"tbtext",itemId:"displayItem"})}b.callParent();b.addEvents("change","beforechange");b.on("beforerender",b.onLoad,b,{single:true});b.bindStore(b.store||"ext-empty-store",true)},updateInfo:function(){var e=this,c=e.child("#displayItem"),a=e.store,b=e.getPageData(),d,g;if(c){d=a.getCount();if(d===0){g=e.emptyMsg}else{g=Ext.String.format(e.displayMsg,b.fromRecord,b.toRecord,b.total)}c.setText(g)}},onLoad:function(){var h=this,d,b,c,a,g,j,e;g=h.store.getCount();j=g===0;if(!j){d=h.getPageData();b=d.currentPage;c=d.pageCount;a=Ext.String.format(h.afterPageText,isNaN(c)?1:c)}else{b=0;c=0;a=Ext.String.format(h.afterPageText,0)}Ext.suspendLayouts();e=h.child("#afterTextItem");if(e){e.setText(a)}e=h.getInputItem();if(e){e.setDisabled(j).setValue(b)}h.setChildDisabled("#first",b===1||j);h.setChildDisabled("#prev",b===1||j);h.setChildDisabled("#next",b===c||j);h.setChildDisabled("#last",b===c||j);h.setChildDisabled("#refresh",false);h.updateInfo();Ext.resumeLayouts(true);if(h.rendered){h.fireEvent("change",h,d)}},setChildDisabled:function(a,b){var c=this.child(a);if(c){c.setDisabled(b)}},getPageData:function(){var b=this.store,a=b.getTotalCount();return{total:a,currentPage:b.currentPage,pageCount:Math.ceil(a/b.pageSize),fromRecord:((b.currentPage-1)*b.pageSize)+1,toRecord:Math.min(b.currentPage*b.pageSize,a)}},onLoadError:function(){if(!this.rendered){return}this.setChildDisabled("#refresh",false)},getInputItem:function(){return this.child("#inputItem")},readPageFromInput:function(b){var c=this.getInputItem(),d=false,a;if(c){a=c.getValue();d=parseInt(a,10);if(!a||isNaN(d)){c.setValue(b.currentPage);return false}}return d},onPagingFocus:function(){var a=this.getInputItem();if(a){a.select()}},onPagingBlur:function(c){var b=this.getInputItem(),a;if(b){a=this.getPageData().currentPage;b.setValue(a)}},onPagingKeyDown:function(j,h){var d=this,b=h.getKey(),c=d.getPageData(),a=h.shiftKey?10:1,g;if(b==h.RETURN){h.stopEvent();g=d.readPageFromInput(c);if(g!==false){g=Math.min(Math.max(1,g),c.pageCount);if(d.fireEvent("beforechange",d,g)!==false){d.store.loadPage(g)}}}else{if(b==h.HOME||b==h.END){h.stopEvent();g=b==h.HOME?1:c.pageCount;j.setValue(g)}else{if(b==h.UP||b==h.PAGE_UP||b==h.DOWN||b==h.PAGE_DOWN){h.stopEvent();g=d.readPageFromInput(c);if(g){if(b==h.DOWN||b==h.PAGE_DOWN){a*=-1}g+=a;if(g>=1&&g<=c.pageCount){j.setValue(g)}}}}}},beforeLoad:function(){if(this.rendered){this.setChildDisabled("#refresh",true)}},moveFirst:function(){if(this.fireEvent("beforechange",this,1)!==false){this.store.loadPage(1)}},movePrevious:function(){var b=this,a=b.store.currentPage-1;if(a>0){if(b.fireEvent("beforechange",b,a)!==false){b.store.previousPage()}}},moveNext:function(){var c=this,b=c.getPageData().pageCount,a=c.store.currentPage+1;if(a<=b){if(c.fireEvent("beforechange",c,a)!==false){c.store.nextPage()}}},moveLast:function(){var b=this,a=b.getPageData().pageCount;if(b.fireEvent("beforechange",b,a)!==false){b.store.loadPage(a)}},doRefresh:function(){var a=this,b=a.store.currentPage;if(a.fireEvent("beforechange",a,b)!==false){a.store.loadPage(b)}},getStoreListeners:function(){return{beforeload:this.beforeLoad,load:this.onLoad,exception:this.onLoadError}},unbind:function(a){this.bindStore(null)},bind:function(a){this.bindStore(a)},onDestroy:function(){this.unbind();this.callParent()}},0,["pagingtoolbar"],["toolbar","component","container","pagingtoolbar","box"],{toolbar:true,component:true,container:true,pagingtoolbar:true,box:true},["widget.pagingtoolbar"],[["bindable",Ext.util.Bindable]],[Ext.toolbar,"Paging",Ext,"PagingToolbar"],0));(Ext.cmd.derive("Ext.view.BoundList",Ext.view.View,{alternateClassName:"Ext.BoundList",pageSize:0,baseCls:Ext.baseCSSPrefix+"boundlist",itemCls:Ext.baseCSSPrefix+"boundlist-item",listItemCls:"",shadow:false,trackOver:true,refreshed:0,deferInitialRefresh:false,componentLayout:"boundlist",childEls:["listEl"],renderTpl:['
    ',"{%","var me=values.$comp, pagingToolbar=me.pagingToolbar;","if (pagingToolbar) {","pagingToolbar.ownerLayout = me.componentLayout;","Ext.DomHelper.generateMarkup(pagingToolbar.getRenderTree(), out);","}","%}",{disableFormats:true}],initComponent:function(){var b=this,a=b.baseCls,c=b.itemCls;b.selectedItemCls=a+"-selected";if(b.trackOver){b.overItemCls=a+"-item-over"}b.itemSelector="."+c;if(b.floating){b.addCls(a+"-floating")}if(!b.tpl){b.tpl=new Ext.XTemplate('
      ','
    • '+b.getInnerTpl(b.displayField)+"
    • ","
    ")}else{if(!b.tpl.isTemplate){b.tpl=new Ext.XTemplate(b.tpl)}}if(b.pageSize){b.pagingToolbar=b.createPagingToolbar()}b.callParent()},beforeRender:function(){var a=this;a.callParent(arguments);if(a.up("menu")){a.addCls(Ext.baseCSSPrefix+"menu")}},getRefOwner:function(){return this.pickerField||this.callParent()},getRefItems:function(){return this.pagingToolbar?[this.pagingToolbar]:[]},createPagingToolbar:function(){return Ext.widget("pagingtoolbar",{id:this.id+"-paging-toolbar",pageSize:this.pageSize,store:this.dataSource,border:false,ownerCt:this,ownerLayout:this.getComponentLayout()})},finishRenderChildren:function(){var a=this.pagingToolbar;this.callParent(arguments);if(a){a.finishRender()}},refresh:function(){var c=this,a=c.tpl,b=c.pagingToolbar,d=c.rendered;a.field=c.pickerField;a.store=c.store;c.callParent();a.field=a.store=null;if(d&&b&&b.rendered&&!c.preserveScrollOnRefresh){c.el.appendChild(b.el)}if(d&&Ext.isIE6&&Ext.isStrict){c.listEl.repaint()}},bindStore:function(a,b){var c=this.pagingToolbar;this.callParent(arguments);if(c){c.bindStore(a,b)}},getTargetEl:function(){return this.listEl||this.el},getInnerTpl:function(a){return"{"+a+"}"},onDestroy:function(){Ext.destroyMembers(this,"pagingToolbar","listEl");this.callParent()}},0,["boundlist"],["component","boundlist","box","dataview"],{component:true,boundlist:true,box:true,dataview:true},["widget.boundlist"],[["queryable",Ext.Queryable]],[Ext.view,"BoundList",Ext,"BoundList"],0));(Ext.cmd.derive("Ext.view.BoundListKeyNav",Ext.util.KeyNav,{constructor:function(b,a){var c=this;c.boundList=a.boundList;c.callParent([b,Ext.apply({},a,c.defaultHandlers)])},defaultHandlers:{up:function(){var e=this,b=e.boundList,d=b.all,g=b.highlightedItem,c=g?b.indexOf(g):-1,a=c>0?c-1:d.getCount()-1;e.highlightAt(a)},down:function(){var e=this,b=e.boundList,d=b.all,g=b.highlightedItem,c=g?b.indexOf(g):-1,a=cc){c=g;k=m}}a=Math.max(h.callParent(arguments),b.inputEl.getTextWidth(k+b.growAppend));if(!h.startingWidth||b.removingRecords){h.startingWidth=a;if(a',' value="{[Ext.util.Format.htmlEncode(values.value)]}"',' name="{name}"',' placeholder="{placeholder}"',' size="{size}"',' maxlength="{maxLength}"',' readonly="readonly"',' disabled="disabled"',' tabIndex="{tabIdx}"',' style="{fieldStyle}"',"/>",{compiled:true,disableFormats:true}],getSubTplData:function(){var a=this;Ext.applyIf(a.subTplData,{hiddenDataCls:a.hiddenDataCls});return a.callParent(arguments)},afterRender:function(){var a=this;a.callParent(arguments);a.setHiddenValue(a.value)},multiSelect:false,delimiter:", ",displayField:"text",triggerAction:"all",allQuery:"",queryParam:"query",queryMode:"remote",queryCaching:true,pageSize:0,anyMatch:false,caseSensitive:false,autoSelect:true,typeAhead:false,typeAheadDelay:250,selectOnTab:true,forceSelection:false,growToLongestValue:true,defaultListConfig:{loadingHeight:70,minWidth:70,maxHeight:300,shadow:"sides"},ignoreSelection:0,removingRecords:null,resizeComboToGrow:function(){var a=this;return a.grow&&a.growToLongestValue},initComponent:function(){var e=this,c=Ext.isDefined,b=e.store,d=e.transform,a,g;Ext.applyIf(e.renderSelectors,{hiddenDataEl:"."+e.hiddenDataCls.split(" ").join(".")});this.addEvents("beforequery","select","beforeselect","beforedeselect");if(d){a=Ext.getDom(d);if(a){if(!e.store){b=Ext.Array.map(Ext.Array.from(a.options),function(h){return[h.value,h.text]})}if(!e.name){e.name=a.name}if(!("value" in e)){e.value=a.value}}}e.bindStore(b||"ext-empty-store",true);b=e.store;if(b.autoCreated){e.queryMode="local";e.valueField=e.displayField="field1";if(!b.expanded){e.displayField="field2"}}if(!c(e.valueField)){e.valueField=e.displayField}g=e.queryMode==="local";if(!c(e.queryDelay)){e.queryDelay=g?10:500}if(!c(e.minChars)){e.minChars=g?0:4}if(!e.displayTpl){e.displayTpl=new Ext.XTemplate('{[typeof values === "string" ? values : values["'+e.displayField+'"]]}'+e.delimiter+"")}else{if(Ext.isString(e.displayTpl)){e.displayTpl=new Ext.XTemplate(e.displayTpl)}}e.callParent();e.doQueryTask=new Ext.util.DelayedTask(e.doRawQuery,e);if(e.store.getCount()>0){e.setValue(e.value)}if(a){e.render(a.parentNode,a);Ext.removeNode(a);delete e.renderTo}},getStore:function(){return this.store},beforeBlur:function(){this.doQueryTask.cancel();this.assertValue()},assertValue:function(){var b=this,c=b.getRawValue(),d,a;if(b.forceSelection){if(b.multiSelect){if(c!==b.getDisplayValue()){b.setValue(b.lastSelection)}}else{d=b.findRecordByDisplay(c);if(d){a=b.value;if(!b.findRecordByValue(a)){b.select(d,true)}}else{b.setValue(b.lastSelection)}}}b.collapse()},onTypeAhead:function(){var e=this,d=e.displayField,b=e.store.findRecord(d,e.getRawValue()),c=e.getPicker(),g,a,h;if(b){g=b.get(d);a=g.length;h=e.getRawValue().length;c.highlightItem(c.getNode(b));if(h!==0&&h!==a){e.setRawValue(g);e.selectText(h,g.length)}}},resetToDefault:Ext.emptyFn,beforeReset:function(){this.callParent();if(this.queryFilter&&!this.queryFilter.disabled){this.queryFilter.disabled=true;this.store.filter()}},onUnbindStore:function(a){var c=this,b=c.picker;if(c.queryFilter){c.store.removeFilter(c.queryFilter)}if(!a&&b){b.bindStore(null)}},onBindStore:function(a,c){var b=this.picker;if(!c){this.resetToDefault()}if(b){b.bindStore(a)}},getStoreListeners:function(){var a=this;return{beforeload:a.onBeforeLoad,clear:a.onClear,datachanged:a.onDataChanged,load:a.onLoad,exception:a.onException,remove:a.onRemove}},onBeforeLoad:function(){++this.ignoreSelection},onDataChanged:function(){var a=this;if(a.resizeComboToGrow()){a.updateLayout()}},onClear:function(){var a=this;if(a.resizeComboToGrow()){a.removingRecords=true;a.onDataChanged()}},onRemove:function(){var a=this;if(a.resizeComboToGrow()){a.removingRecords=true}},onException:function(){if(this.ignoreSelection>0){--this.ignoreSelection}this.collapse()},onLoad:function(b,a,d){var c=this;if(c.ignoreSelection>0){--c.ignoreSelection}if(d&&!b.lastOptions.rawQuery){if(c.value==null){if(c.store.getCount()){c.doAutoSelect()}else{c.setValue(c.value)}}else{c.setValue(c.value)}}},doRawQuery:function(){this.doQuery(this.getRawValue(),false,true)},doQuery:function(e,b,d){var c=this,a=c.beforeQuery({query:e||"",rawQuery:d,forceAll:b,combo:c,cancel:false});if(a===false||a.cancel){return false}if(c.queryCaching&&a.query===c.lastQuery){c.expand()}else{c.lastQuery=a.query;if(c.queryMode==="local"){c.doLocalQuery(a)}else{c.doRemoteQuery(a)}}return true},beforeQuery:function(a){var b=this;if(b.fireEvent("beforequery",a)===false){a.cancel=true}else{if(!a.cancel){if(a.query.length0){c=a.getSelectionModel().lastSelected;d=a.getNode(c||0);if(d){a.highlightItem(d);a.listEl.scrollChildIntoView(d,false)}}},doTypeAhead:function(){if(!this.typeAheadTask){this.typeAheadTask=new Ext.util.DelayedTask(this.onTypeAhead,this)}if(this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.typeAheadTask.delay(this.typeAheadDelay)}},onTriggerClick:function(){var a=this;if(!a.readOnly&&!a.disabled){if(a.isExpanded){a.collapse()}else{a.onFocus({});if(a.triggerAction==="all"){a.doQuery(a.allQuery,true)}else{if(a.triggerAction==="last"){a.doQuery(a.lastQuery,true)}else{a.doQuery(a.getRawValue(),false,true)}}}a.inputEl.focus()}},onPaste:function(){var a=this;if(!a.readOnly&&!a.disabled&&a.editable){a.doQueryTask.delay(a.queryDelay)}},onKeyUp:function(d,b){var c=this,a=d.getKey();if(!c.readOnly&&!c.disabled&&c.editable){c.lastKey=a;if(!d.isSpecialKey()||a==d.BACKSPACE||a==d.DELETE){c.doQueryTask.delay(c.queryDelay)}}if(c.enableKeyEvents){c.callParent(arguments)}},initEvents:function(){var a=this;a.callParent();if(!a.enableKeyEvents){a.mon(a.inputEl,"keyup",a.onKeyUp,a)}a.mon(a.inputEl,"paste",a.onPaste,a)},onDestroy:function(){Ext.destroy(this.listKeyNav);this.bindStore(null);this.callParent()},onAdded:function(){var a=this;a.callParent(arguments);if(a.picker){a.picker.ownerCt=a.up("[floating]");a.picker.registerWithOwnerCt()}},createPicker:function(){var c=this,b,a=Ext.apply({xtype:"boundlist",pickerField:c,selModel:{mode:c.multiSelect?"SIMPLE":"SINGLE"},floating:true,hidden:true,store:c.store,displayField:c.displayField,focusOnToFront:false,pageSize:c.pageSize,tpl:c.tpl},c.listConfig,c.defaultListConfig);b=c.picker=Ext.widget(a);if(c.pageSize){b.pagingToolbar.on("beforechange",c.onPageChange,c)}c.mon(b,{itemclick:c.onItemClick,refresh:c.onListRefresh,scope:c});c.mon(b.getSelectionModel(),{beforeselect:c.onBeforeSelect,beforedeselect:c.onBeforeDeselect,selectionchange:c.onListSelectionChange,scope:c});return b},alignPicker:function(){var b=this,a=b.getPicker(),e=b.getPosition()[1]-Ext.getBody().getScroll().top,d=Ext.Element.getViewHeight()-e-b.getHeight(),c=Math.max(e,d);if(a.height){delete a.height;a.updateLayout()}if(a.getHeight()>c-5){a.setHeight(c-5)}b.callParent()},onListRefresh:function(){if(!this.expanding){this.alignPicker()}this.syncSelection()},onItemClick:function(c,a){var e=this,d=e.picker.getSelectionModel().getSelection(),b=e.valueField;if(!e.multiSelect&&d.length){if(a.get(b)===d[0].get(b)){e.displayTplData=[a.data];e.setRawValue(e.getDisplayValue());e.collapse()}}},onBeforeSelect:function(b,a){return this.fireEvent("beforeselect",this,a,a.index)},onBeforeDeselect:function(b,a){return this.fireEvent("beforedeselect",this,a,a.index)},onListSelectionChange:function(b,d){var a=this,e=a.multiSelect,c=d.length>0;if(!a.ignoreSelection&&a.isExpanded){if(!e){Ext.defer(a.collapse,1,a)}if(e||c){a.setValue(d,false)}if(c){a.fireEvent("select",a,d)}a.inputEl.focus()}},onExpand:function(){var d=this,a=d.listKeyNav,c=d.selectOnTab,b=d.getPicker();if(a){a.enable()}else{a=d.listKeyNav=new Ext.view.BoundListKeyNav(this.inputEl,{boundList:b,forceKeyDown:true,tab:function(g){if(c){this.selectHighlighted(g);d.triggerBlur()}return true},enter:function(j){var g=b.getSelectionModel(),h=g.getCount();this.selectHighlighted(j);if(!d.multiSelect&&h===g.getCount()){d.collapse()}}})}if(c){d.ignoreMonitorTab=true}Ext.defer(a.enable,1,a);d.inputEl.focus()},onCollapse:function(){var b=this,a=b.listKeyNav;if(a){a.disable();b.ignoreMonitorTab=false}},select:function(e,b){var d=this,c=d.picker,a=true,g;if(e&&e.isModel&&b===true&&c){g=!c.getSelectionModel().isSelected(e)}d.setValue(e,true);if(g){d.fireEvent("select",d,e)}},findRecord:function(d,c){var b=this.store,a=b.findExact(d,c);return a!==-1?b.getAt(a):false},findRecordByValue:function(a){return this.findRecord(this.valueField,a)},findRecordByDisplay:function(a){return this.findRecord(this.displayField,a)},setValue:function(m,e){var k=this,c=k.valueNotFoundText,n=k.inputEl,g,j,h,a,l=[],b=[],d=[];if(k.store.loading){k.value=m;k.setHiddenValue(k.value);return k}m=Ext.Array.from(m);for(g=0,j=m.length;g0){e.hiddenDataEl.update(Ext.DomHelper.markup({tag:"input",type:"hidden",name:a}));c=1;h=b.firstChild}while(c>g){b.removeChild(k[0]);--c}while(c=0){g.push(j)}}h.ignoreSelection++;c=d.getSelectionModel();c.deselectAll();if(g.length){c.select(g,undefined,true)}h.ignoreSelection--}},onEditorTab:function(b){var a=this.listKeyNav;if(this.selectOnTab&&a){a.selectHighlighted(b)}}},0,["combobox","combo"],["field","trigger","combobox","textfield","pickerfield","component","combo","box","triggerfield"],{field:true,trigger:true,combobox:true,textfield:true,pickerfield:true,component:true,combo:true,box:true,triggerfield:true},["widget.combo","widget.combobox"],[["bindable",Ext.util.Bindable]],[Ext.form.field,"ComboBox",Ext.form,"ComboBox"],0));(Ext.cmd.derive("Ext.picker.Month",Ext.Component,{alternateClassName:"Ext.MonthPicker",childEls:["bodyEl","prevEl","nextEl","buttonsEl","monthEl","yearEl"],renderTpl:['
    ','
    ','','
    ','{.}',"
    ","
    ","
    ",'
    ','
    ','
    ','',"
    ",'
    ','',"
    ","
    ",'','
    ','{.}',"
    ","
    ","
    ",'
    ',"
    ",'','
    {%',"var me=values.$comp, okBtn=me.okBtn, cancelBtn=me.cancelBtn;","okBtn.ownerLayout = cancelBtn.ownerLayout = me.componentLayout;","okBtn.ownerCt = cancelBtn.ownerCt = me;","Ext.DomHelper.generateMarkup(okBtn.getRenderTree(), out);","Ext.DomHelper.generateMarkup(cancelBtn.getRenderTree(), out);","%}
    ","
    "],okText:"OK",cancelText:"Cancel",baseCls:Ext.baseCSSPrefix+"monthpicker",showButtons:true,measureWidth:35,measureMaxHeight:20,smallCls:Ext.baseCSSPrefix+"monthpicker-small",totalYears:10,yearOffset:5,monthOffset:6,initComponent:function(){var a=this;a.selectedCls=a.baseCls+"-selected";a.addEvents("cancelclick","monthclick","monthdblclick","okclick","select","yearclick","yeardblclick");if(a.small){a.addCls(a.smallCls)}a.setValue(a.value);a.activeYear=a.getYear(new Date().getFullYear()-4,-4);if(a.showButtons){a.okBtn=new Ext.button.Button({text:a.okText,handler:a.onOkClick,scope:a});a.cancelBtn=new Ext.button.Button({text:a.cancelText,handler:a.onCancelClick,scope:a})}this.callParent()},beforeRender:function(){var g=this,c=0,b=[],a=Ext.Date.getShortMonthName,e=g.monthOffset,h=g.monthMargin,d="";g.callParent();for(;cd.measureMaxHeight){--c;a.setStyle("margin","0 "+c+"px")}return c},getLargest:function(a){var b=0;this.months.each(function(d){var c=d.getHeight();if(c>b){b=c}});return b},setValue:function(d){var c=this,e=c.activeYear,g=c.monthOffset,b,a;if(!d){c.value=[null,null]}else{if(Ext.isDate(d)){c.value=[d.getMonth(),d.getFullYear()]}else{c.value=[d[0],d[1]]}}if(c.rendered){b=c.value[1];if(b!==null){if((be+c.yearOffset)){c.activeYear=b-c.yearOffset+1}}c.updateBody()}return c},getValue:function(){return this.value},hasSelection:function(){var a=this.value;return a[0]!==null&&a[1]!==null},getYears:function(){var d=this,e=d.yearOffset,g=d.activeYear,a=g+e,c=g,b=[];for(;c','",'','','','","","",'','',"{#:this.isEndOfWeek}",'","","","
    ','
    {.:this.firstInitial}
    ',"
    ','',"
    ",'','',"","",{firstInitial:function(a){return Ext.picker.Date.prototype.getDayInitial(a)},isEndOfWeek:function(b){b--;var a=b%7===0&&b!==0;return a?'':""},renderTodayBtn:function(a,b){Ext.DomHelper.generateMarkup(a.$comp.todayBtn.getRenderTree(),b)},renderMonthBtn:function(a,b){Ext.DomHelper.generateMarkup(a.$comp.monthBtn.getRenderTree(),b)}}],todayText:"Today",ariaTitle:"Date Picker: {0}",ariaTitleDateFormat:"F d, Y",todayTip:"{0} (Spacebar)",minText:"This date is before the minimum date",maxText:"This date is after the maximum date",disabledDaysText:"Disabled",disabledDatesText:"Disabled",nextText:"Next Month (Control+Right)",prevText:"Previous Month (Control+Left)",monthYearText:"Choose a month (Control+Up/Down to move years)",monthYearFormat:"F Y",startDay:0,showToday:true,disableAnim:false,baseCls:Ext.baseCSSPrefix+"datepicker",longDayFormat:"F d, Y",focusOnShow:false,focusOnSelect:true,initHour:12,numDays:42,initComponent:function(){var b=this,a=Ext.Date.clearTime;b.selectedCls=b.baseCls+"-selected";b.disabledCellCls=b.baseCls+"-disabled";b.prevCls=b.baseCls+"-prevday";b.activeCls=b.baseCls+"-active";b.cellCls=b.baseCls+"-cell";b.nextCls=b.baseCls+"-prevday";b.todayCls=b.baseCls+"-today";if(!b.format){b.format=Ext.Date.defaultFormat}if(!b.dayNames){b.dayNames=Ext.Date.dayNames}b.dayNames=b.dayNames.slice(b.startDay).concat(b.dayNames.slice(0,b.startDay));b.callParent();b.value=b.value?a(b.value,true):a(new Date());b.addEvents("select");b.initDisabledDays()},beforeRender:function(){var b=this,c=new Array(b.numDays),a=Ext.Date.format(new Date(),b.format);if(b.up("menu")){b.addCls(Ext.baseCSSPrefix+"menu")}b.monthBtn=new Ext.button.Split({ownerCt:b,ownerLayout:b.getComponentLayout(),text:"",tooltip:b.monthYearText,listeners:{click:b.showMonthPicker,arrowclick:b.showMonthPicker,scope:b}});if(b.showToday){b.todayBtn=new Ext.button.Button({ownerCt:b,ownerLayout:b.getComponentLayout(),text:Ext.String.format(b.todayText,a),tooltip:Ext.String.format(b.todayTip,a),tooltipType:"title",handler:b.selectToday,scope:b})}b.callParent();Ext.applyIf(b,{renderData:{}});Ext.apply(b.renderData,{dayNames:b.dayNames,showToday:b.showToday,prevText:b.prevText,nextText:b.nextText,days:c});b.protoEl.unselectable()},finishRenderChildren:function(){var a=this;a.callParent();a.monthBtn.finishRender();if(a.showToday){a.todayBtn.finishRender()}},onRender:function(b,a){var c=this;c.callParent(arguments);c.cells=c.eventEl.select("tbody td");c.textNodes=c.eventEl.query("tbody td a");c.mon(c.eventEl,{scope:c,mousewheel:c.handleMouseWheel,click:{fn:c.handleDateClick,delegate:"a."+c.baseCls+"-date"}})},initEvents:function(){var c=this,a=Ext.Date,b=a.DAY;c.callParent();c.prevRepeater=new Ext.util.ClickRepeater(c.prevEl,{handler:c.showPrevMonth,scope:c,preventDefault:true,stopDefault:true});c.nextRepeater=new Ext.util.ClickRepeater(c.nextEl,{handler:c.showNextMonth,scope:c,preventDefault:true,stopDefault:true});c.keyNav=new Ext.util.KeyNav(c.eventEl,Ext.apply({scope:c,left:function(d){if(d.ctrlKey){c.showPrevMonth()}else{c.update(a.add(c.activeDate,b,-1))}},right:function(d){if(d.ctrlKey){c.showNextMonth()}else{c.update(a.add(c.activeDate,b,1))}},up:function(d){if(d.ctrlKey){c.showNextYear()}else{c.update(a.add(c.activeDate,b,-7))}},down:function(d){if(d.ctrlKey){c.showPrevYear()}else{c.update(a.add(c.activeDate,b,7))}},pageUp:function(d){if(d.altKey){c.showPrevYear()}else{c.showPrevMonth()}},pageDown:function(d){if(d.altKey){c.showNextYear()}else{c.showNextMonth()}},tab:function(d){c.doCancelFieldFocus=true;c.handleTabClick(d);delete c.doCancelFieldFocus;return true},enter:function(d){d.stopPropagation();return true},home:function(d){c.update(a.getFirstDateOfMonth(c.activeDate))},end:function(d){c.update(a.getLastDateOfMonth(c.activeDate))}},c.keyNavConfig));if(c.showToday){c.todayKeyListener=c.eventEl.addKeyListener(Ext.EventObject.SPACE,c.selectToday,c)}c.update(c.value)},handleTabClick:function(d){var c=this,a=c.getSelectedDate(c.activeDate),b=c.handler;if(!c.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasCls(c.disabledCellCls)){c.doCancelFocus=c.focusOnSelect===false;c.setValue(new Date(a.dateValue));delete c.doCancelFocus;c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}},getSelectedDate:function(a){var d=this,j=a.getTime(),k=d.cells,l=d.selectedCls,g=k.elements,b,e=g.length,h;k.removeCls(l);for(b=0;b0){this.showPrevMonth()}else{if(b<0){this.showNextMonth()}}}},handleDateClick:function(d,a){var c=this,b=c.handler;d.stopEvent();if(!c.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasCls(c.disabledCellCls)){c.doCancelFocus=c.focusOnSelect===false;c.setValue(new Date(a.dateValue));delete c.doCancelFocus;c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}},onSelect:function(){if(this.hideOnSelect){this.hide()}},selectToday:function(){var c=this,a=c.todayBtn,b=c.handler;if(a&&!a.disabled){c.setValue(Ext.Date.clearTime(new Date()));c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}return c},selectedUpdate:function(a){var d=this,j=a.getTime(),k=d.cells,l=d.selectedCls,g=k.elements,b,e=g.length,h;k.removeCls(l);for(b=0;bv||(C&&x&&C.test(o.dateFormat(F,x)))||(H&&H.indexOf(F.getDay())!=-1));if(!E.disabled){E.todayBtn.setDisabled(a);E.todayKeyListener.setDisabled(a)}}n=function(I,J){s=+o.clearTime(r,true);I.title=o.format(r,b);I.firstChild.dateValue=s;if(s==z){J+=" "+E.todayCls;I.title=E.todayText;E.todayElSpan=Ext.DomHelper.append(I.firstChild,{tag:"span",cls:Ext.baseCSSPrefix+"hide-clip",html:E.todayText},true)}if(s==m){J+=" "+E.selectedCls;E.fireEvent("highlightitem",E,I);if(e&&E.floating){Ext.fly(I.firstChild).focus(50)}}if(sv){J+=" "+G;I.title=E.maxText}else{if(H&&H.indexOf(r.getDay())!==-1){I.title=B;J+=" "+G}else{if(C&&x){j=o.dateFormat(r,x);if(C.test(j)){I.title=t.replace("%0",j);J+=" "+G}}}}}I.className=J+" "+E.cellCls};for(;w=l){p=(++D);c=E.nextCls}else{p=w-h+1;c=E.activeCls}}d[w].innerHTML=p;r.setDate(r.getDate()+1);n(g[w],c)}E.monthBtn.setText(Ext.Date.format(A,E.monthYearFormat))},update:function(a,d){var b=this,c=b.activeDate;if(b.rendered){b.activeDate=a;if(!d&&c&&b.el&&c.getMonth()==a.getMonth()&&c.getFullYear()==a.getFullYear()){b.selectedUpdate(a,c)}else{b.fullUpdate(a,c)}}return b},beforeDestroy:function(){var a=this;if(a.rendered){Ext.destroy(a.todayKeyListener,a.keyNav,a.monthPicker,a.monthBtn,a.nextRepeater,a.prevRepeater,a.todayBtn);delete a.textNodes;delete a.cells.elements}a.callParent()},onShow:function(){this.callParent(arguments);if(this.focusOnShow){this.focus()}}},0,["datepicker"],["datepicker","component","box"],{datepicker:true,component:true,box:true},["widget.datepicker"],0,[Ext.picker,"Date",Ext,"DatePicker"],0));(Ext.cmd.derive("Ext.form.field.Date",Ext.form.field.Picker,{alternateClassName:["Ext.form.DateField","Ext.form.Date"],format:"m/d/Y",altFormats:"m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d|n-j|n/j",disabledDaysText:"Disabled",disabledDatesText:"Disabled",minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerCls:Ext.baseCSSPrefix+"form-date-trigger",showToday:true,useStrict:undefined,initTime:"12",initTimeFormat:"H",matchFieldWidth:false,startDay:0,initComponent:function(){var d=this,b=Ext.isString,c,a;c=d.minValue;a=d.maxValue;if(b(c)){d.minValue=d.parseDate(c)}if(b(a)){d.maxValue=d.parseDate(a)}d.disabledDatesRE=null;d.initDisabledDays();d.callParent()},initValue:function(){var a=this,b=a.value;if(Ext.isString(b)){a.value=a.rawToValue(b)}a.callParent()},initDisabledDays:function(){if(this.disabledDates){var b=this.disabledDates,a=b.length-1,g="(?:",h,e=b.length,c;for(h=0;hk(h).getTime()){o.push(p(j.maxText,j.formatDate(h)))}if(n){l=q.getDay();for(;e {splitCls}','{childElCls}" unselectable="on">','','',"{text}","",'background-image:url({iconUrl});','font-family:{glyphFontFamily};">','&#{glyph}; ',"","","",''],getTemplateArgs:function(){var a=this.callParent();a.inputCls=this.inputCls;a.inputName=this.inputName;return a},afterRender:function(){var a=this;a.callParent(arguments);a.fileInputEl.on("change",a.fireChange,a)},fireChange:function(a){this.fireEvent("change",this,a,this.fileInputEl.dom.value)},createFileInput:function(a){var b=this;b.fileInputEl=b.el.createChild({name:b.inputName,id:!a?b.id+"-fileInputEl":undefined,cls:b.inputCls,tag:"input",type:"file",size:1});b.fileInputEl.on("change",b.fireChange,b)},reset:function(a){if(a){this.fileInputEl.remove()}this.createFileInput(!a)},restoreInput:function(a){this.fileInputEl.remove();a=Ext.get(a);this.el.appendChild(a);this.fileInputEl=a},onDisable:function(){this.callParent();this.fileInputEl.dom.disabled=true},onEnable:function(){this.callParent();this.fileInputEl.dom.disabled=false}},0,["filebutton"],["filebutton","button","component","box"],{filebutton:true,button:true,component:true,box:true},["widget.filebutton"],0,[Ext.form.field,"FileButton"],0));(Ext.cmd.derive("Ext.form.field.File",Ext.form.field.Trigger,{alternateClassName:["Ext.form.FileUploadField","Ext.ux.form.FileUploadField","Ext.form.File"],buttonText:"Browse...",buttonOnly:false,buttonMargin:3,clearOnSubmit:true,extraFieldBodyCls:Ext.baseCSSPrefix+"form-file-wrap",readOnly:true,triggerNoEditCls:"",componentLayout:"triggerfield",childEls:["browseButtonWrap"],onRender:function(){var a=this,c=a.id,b;a.callParent(arguments);b=a.inputEl;b.dom.name="";a.button=new Ext.form.field.FileButton(Ext.apply({renderTo:c+"-browseButtonWrap",ownerCt:a,ownerLayout:a.componentLayout,id:c+"-button",ui:a.ui,disabled:a.disabled,text:a.buttonText,style:a.buttonOnly?"":a.getButtonMarginProp()+a.buttonMargin+"px",inputName:a.getName(),listeners:{scope:a,change:a.onFileChange}},a.buttonConfig));a.fileInputEl=a.button.fileInputEl;if(a.buttonOnly){a.inputCell.setDisplayed(false)}a.browseButtonWrap.dom.style.width=(a.browseButtonWrap.dom.lastChild.offsetWidth+a.button.getEl().getMargin("lr"))+"px";if(Ext.isIE){a.button.getEl().repaint()}},getTriggerMarkup:function(){return''},onFileChange:function(a,c,b){this.lastValue=null;Ext.form.field.File.superclass.setValue.call(this,b)},setValue:Ext.emptyFn,reset:function(){var b=this,a=b.clearOnSubmit;if(b.rendered){b.button.reset(a);b.fileInputEl=b.button.fileInputEl;if(a){b.inputEl.dom.value=""}}b.callParent()},onShow:function(){this.callParent();this.button.updateLayout()},onDisable:function(){this.callParent();this.button.disable()},onEnable:function(){this.callParent();this.button.enable()},isFileUpload:function(){return true},extractFileInput:function(){var a=this.button.fileInputEl.dom;this.reset();return a},restoreInput:function(b){var a=this.button;a.restoreInput(b);this.fileInputEl=a.fileInputEl},onDestroy:function(){Ext.destroyMembers(this,"button");delete this.fileInputEl;this.callParent()},getButtonMarginProp:function(){return"margin-left:"}},0,["fileuploadfield","filefield"],["field","trigger","textfield","component","fileuploadfield","filefield","box","triggerfield"],{field:true,trigger:true,textfield:true,component:true,fileuploadfield:true,filefield:true,box:true,triggerfield:true},["widget.filefield","widget.fileuploadfield"],0,[Ext.form.field,"File",Ext.form,"FileUploadField",Ext.ux.form,"FileUploadField",Ext.form,"File"],0));(Ext.cmd.derive("Ext.form.field.Hidden",Ext.form.field.Base,{alternateClassName:"Ext.form.Hidden",inputType:"hidden",hideLabel:true,hidden:true,initComponent:function(){this.formItemCls+="-hidden";this.callParent()},isEqual:function(b,a){return this.isEqualAsString(b,a)},initEvents:Ext.emptyFn,setSize:Ext.emptyFn,setWidth:Ext.emptyFn,setHeight:Ext.emptyFn,setPosition:Ext.emptyFn,setPagePosition:Ext.emptyFn,markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn},0,["hidden","hiddenfield"],["field","component","hidden","hiddenfield","box"],{field:true,component:true,hidden:true,hiddenfield:true,box:true},["widget.hidden","widget.hiddenfield"],0,[Ext.form.field,"Hidden",Ext.form,"Hidden"],0));(Ext.cmd.derive("Ext.picker.Color",Ext.Component,{alternateClassName:"Ext.ColorPalette",componentCls:Ext.baseCSSPrefix+"color-picker",selectedCls:Ext.baseCSSPrefix+"color-picker-selected",itemCls:Ext.baseCSSPrefix+"color-picker-item",value:null,clickEvent:"click",allowReselect:false,colors:["000000","993300","333300","003300","003366","000080","333399","333333","800000","FF6600","808000","008000","008080","0000FF","666699","808080","FF0000","FF9900","99CC00","339966","33CCCC","3366FF","800080","969696","FF00FF","FFCC00","FFFF00","00FF00","00FFFF","00CCFF","993366","C0C0C0","FF99CC","FFCC99","FFFF99","CCFFCC","CCFFFF","99CCFF","CC99FF","FFFFFF"],colorRe:/(?:^|\s)color-(.{6})(?:\s|$)/,renderTpl:['','',' ',"",""],initComponent:function(){var a=this;a.callParent(arguments);a.addEvents("select");if(a.handler){a.on("select",a.handler,a.scope,true)}},initRenderData:function(){var a=this;return Ext.apply(a.callParent(),{itemCls:a.itemCls,colors:a.colors})},onRender:function(){var b=this,a=b.clickEvent;b.callParent(arguments);b.mon(b.el,a,b.handleClick,b,{delegate:"a"});if(a!="click"){b.mon(b.el,"click",Ext.emptyFn,b,{delegate:"a",stopEvent:true})}},afterRender:function(){var a=this,b;a.callParent(arguments);if(a.value){b=a.value;a.value=null;a.select(b,true)}},handleClick:function(c,d){var b=this,a;c.stopEvent();if(!b.disabled){a=d.className.match(b.colorRe)[1];b.select(a.toUpperCase())}},select:function(b,a){var d=this,g=d.selectedCls,e=d.value,c;b=b.replace("#","");if(!d.rendered){d.value=b;return}if(b!=e||d.allowReselect){c=d.el;if(d.value){c.down("a.color-"+e).removeCls(g)}c.down("a.color-"+b).addCls(g);d.value=b;if(a!==true){d.fireEvent("select",d,b)}}},clear:function(){var b=this,c=b.value,a;if(c&&b.rendered){a=b.el.down("a.color-"+c);a.removeCls(b.selectedCls)}b.value=null},getValue:function(){return this.value||null}},0,["colorpicker"],["component","box","colorpicker"],{component:true,box:true,colorpicker:true},["widget.colorpicker"],0,[Ext.picker,"Color",Ext,"ColorPalette"],0));(Ext.cmd.derive("Ext.layout.component.field.HtmlEditor",Ext.layout.component.field.FieldContainer,{type:"htmleditor",naturalHeight:150,naturalWidth:300,beginLayout:function(b){var a=this.owner,c;if(Ext.isGecko){c=a.textareaEl.dom;this.lastValue=c.value;c.value=""}this.callParent(arguments);b.toolbarContext=b.context.getCmp(a.toolbar);b.inputCmpContext=b.context.getCmp(a.inputCmp);b.textAreaContext=b.getEl("textareaEl");b.iframeContext=b.getEl("iframeEl")},beginLayoutCycle:function(h){var g=this,c=h.widthModel,b=h.heightModel,a=g.owner,e=a.iframeEl,d=a.textareaEl;g.callParent(arguments);if(c.shrinkWrap){e.setStyle("width","");d.setStyle("width","")}else{if(c.natural){h.bodyCellContext.setWidth(g.naturalWidth)}}if(b.natural||b.shrinkWrap){e.setHeight(g.naturalHeight);d.setHeight(g.naturalHeight)}},finishedLayout:function(){var a=this.owner;this.callParent(arguments);if(Ext.isIE9m&&Ext.isIEQuirks){a.el.repaint()}if(Ext.isGecko){a.textareaEl.dom.value=this.lastValue}},publishOwnerWidth:function(b,a){this.callParent(arguments);a-=b.inputCmpContext.getBorderInfo().width;b.textAreaContext.setWidth(a);b.iframeContext.setWidth(a)},publishInnerWidth:function(e,c){var b=e.inputCmpContext.getBorderInfo().width,d=Ext.isStrict&&Ext.isIE8m,a=e.widthModel.natural;this.callParent(arguments);c=e.bodyCellContext.props.width-b;if(a){if(d){c-=2}e.textAreaContext.setWidth(c);e.iframeContext.setWidth(c)}else{if(d){e.textAreaContext.setWidth(c)}}},publishInnerHeight:function(c,a){var d=c.toolbarContext.getProp("height"),b=this.owner.sourceEditMode;this.callParent(arguments);a=c.bodyCellContext.props.height;if(d!==undefined){a-=d+c.inputCmpContext.getFrameInfo().height;if(Ext.isIE8&&Ext.isStrict){a-=2}else{if(Ext.isIEQuirks&&(Ext.isIE8||Ext.isIE9)){a-=4}}c.iframeContext.setHeight(a);c.textAreaContext.setHeight(a)}else{this.done=false}}},0,0,0,0,["layout.htmleditor"],0,[Ext.layout.component.field,"HtmlEditor"],0));(Ext.cmd.derive("Ext.form.field.HtmlEditor",Ext.form.FieldContainer,{alternateClassName:"Ext.form.HtmlEditor",componentLayout:"htmleditor",componentTpl:["{beforeTextAreaTpl}",'","{afterTextAreaTpl}","{beforeIFrameTpl}",'',"{afterIFrameTpl}",{disableFormats:true}],stretchInputElFixed:true,subTplInsertions:["beforeTextAreaTpl","afterTextAreaTpl","beforeIFrameTpl","afterIFrameTpl","iframeAttrTpl","inputAttrTpl"],enableFormat:true,enableFontSize:true,enableColors:true,enableAlignments:true,enableLists:true,enableSourceEdit:true,enableLinks:true,enableFont:true,createLinkText:"Please enter the URL for the link:",defaultLinkValue:"http://",fontFamilies:["Arial","Courier New","Tahoma","Times New Roman","Verdana"],defaultValue:(Ext.isOpera||Ext.isIE6)?" ":"​",extraFieldBodyCls:Ext.baseCSSPrefix+"html-editor-wrap",initialized:false,activated:false,sourceEditMode:false,iframePad:3,hideMode:"offsets",maskOnDisable:true,containerElCls:Ext.baseCSSPrefix+"html-editor-container",initComponent:function(){var a=this;a.addEvents("initialize","activate","beforesync","beforepush","sync","push","editmodechange");a.items=[a.createToolbar(),a.createInputCmp()];a.layout={type:"vbox",align:"stretch"};a.callParent(arguments);a.initField()},createInputCmp:function(){this.inputCmp=Ext.widget(this.getInputCmpCfg());return this.inputCmp},getInputCmpCfg:function(){var a=this,c=a.id+"-inputCmp",b={id:c,name:a.name,textareaCls:Ext.baseCSSPrefix+"hidden",value:a.value,iframeName:Ext.id(),iframeSrc:Ext.SSL_SECURE_URL,iframeCls:Ext.baseCSSPrefix+"htmleditor-iframe"};a.getInsertionRenderData(b,a.subTplInsertions);return{flex:1,xtype:"component",tpl:a.getTpl("componentTpl"),childEls:["iframeEl","textareaEl"],id:c,cls:Ext.baseCSSPrefix+"html-editor-input",data:b}},createToolbar:function(){this.toolbar=Ext.widget(this.getToolbarCfg());return this.toolbar},getToolbarCfg:function(){var h=this,b=[],e,a=Ext.quickTipsActive&&Ext.tip.QuickTipManager.isEnabled(),d=Ext.baseCSSPrefix,j,g;function c(m,k,l){return{itemId:m,cls:d+"btn-icon",iconCls:d+"edit-"+m,enableToggle:k!==false,scope:h,handler:l||h.relayBtnCmd,clickEvent:"mousedown",tooltip:a?h.buttonTips[m]||g:g,overflowText:h.buttonTips[m].title||g,tabIndex:-1}}if(h.enableFont&&!Ext.isSafari2){j=Ext.widget("component",{itemId:"fontSelect",renderTpl:['"],childEls:["selectEl"],afterRender:function(){h.fontSelect=this.selectEl;Ext.Component.prototype.afterRender.apply(this,arguments)},onDisable:function(){var k=this.selectEl;if(k){k.dom.disabled=true}Ext.Component.prototype.onDisable.apply(this,arguments)},onEnable:function(){var k=this.selectEl;if(k){k.dom.disabled=false}Ext.Component.prototype.onEnable.apply(this,arguments)},listeners:{change:function(){h.win.focus();h.relayCmd("fontName",h.fontSelect.dom.value);h.deferFocus()},element:"selectEl"}});b.push(j,"-")}if(h.enableFormat){b.push(c("bold"),c("italic"),c("underline"))}if(h.enableFontSize){b.push("-",c("increasefontsize",false,h.adjustFont),c("decreasefontsize",false,h.adjustFont))}if(h.enableColors){b.push("-",{itemId:"forecolor",cls:d+"btn-icon",iconCls:d+"edit-forecolor",overflowText:h.buttonTips.forecolor.title,tooltip:a?h.buttonTips.forecolor||g:g,tabIndex:-1,menu:Ext.widget("menu",{plain:true,items:[{xtype:"colorpicker",allowReselect:true,focus:Ext.emptyFn,value:"000000",plain:true,clickEvent:"mousedown",handler:function(l,k){h.relayCmd("forecolor",Ext.isWebKit||Ext.isIE?"#"+k:k);this.up("menu").hide()}}]})},{itemId:"backcolor",cls:d+"btn-icon",iconCls:d+"edit-backcolor",overflowText:h.buttonTips.backcolor.title,tooltip:a?h.buttonTips.backcolor||g:g,tabIndex:-1,menu:Ext.widget("menu",{plain:true,items:[{xtype:"colorpicker",focus:Ext.emptyFn,value:"FFFFFF",plain:true,allowReselect:true,clickEvent:"mousedown",handler:function(l,k){if(Ext.isGecko){h.execCmd("useCSS",false);h.execCmd("hilitecolor","#"+k);h.execCmd("useCSS",true);h.deferFocus()}else{h.relayCmd(Ext.isOpera?"hilitecolor":"backcolor",Ext.isWebKit||Ext.isIE||Ext.isOpera?"#"+k:k)}this.up("menu").hide()}}]})})}if(h.enableAlignments){b.push("-",c("justifyleft"),c("justifycenter"),c("justifyright"))}if(!Ext.isSafari2){if(h.enableLinks){b.push("-",c("createlink",false,h.createLink))}if(h.enableLists){b.push("-",c("insertorderedlist"),c("insertunorderedlist"))}if(h.enableSourceEdit){b.push("-",c("sourceedit",true,function(k){h.toggleSourceEdit(!h.sourceEditMode)}))}}for(e=0;e")+'",b.iframePad,a,b.defaultFont)},getEditorBody:function(){var a=this.getDoc();return a.body||a.documentElement},getDoc:function(){return(!Ext.isIE&&this.iframeEl.dom.contentDocument)||this.getWin().document},getWin:function(){return Ext.isIE?this.iframeEl.dom.contentWindow:window.frames[this.iframeEl.dom.name]},initDefaultFont:function(){var h=this,a=0,j,b,k,e,d,g,c;if(!h.defaultFont){b=h.textareaEl.getStyle("font-family");b=Ext.String.capitalize(b.split(",")[0]);j=Ext.Array.clone(h.fontFamilies);Ext.Array.include(j,b);j.sort();h.defaultFont=b;k=h.down("#fontSelect").selectEl.dom;for(d=0,g=j.length;d'+d+""}}d=g.cleanHtml(d);if(g.fireEvent("beforesync",g,d)!==false){if(Ext.isGecko&&e.value===""&&d==="
    "){d=""}if(e.value!==d){e.value=d;h=true}g.fireEvent("sync",g,d);if(h){g.checkChange()}}}},getValue:function(){var a=this,b;if(!a.sourceEditMode){a.syncValue()}b=a.rendered?a.textareaEl.dom.value:a.value;a.value=b;return b},pushValue:function(){var b=this,a;if(b.initialized){a=b.textareaEl.dom.value||"";if(!b.activated&&a.length<1){a=b.defaultValue}if(b.fireEvent("beforepush",b,a)!==false){b.getEditorBody().innerHTML=a;if(Ext.isGecko){b.setDesignMode(false);b.setDesignMode(true)}b.fireEvent("push",b,a)}}},deferFocus:function(){this.focus(false,true)},getFocusEl:function(){var a=this,b=a.win;return b&&!a.sourceEditMode?b:a.textareaEl},focus:function(d,b){var c=this,e,a;if(b){if(!c.focusTask){c.focusTask=new Ext.util.DelayedTask(c.focus)}c.focusTask.delay(Ext.isNumber(b)?b:10,null,c,[d,false])}else{if(d){if(c.textareaEl&&c.textareaEl.dom){e=c.textareaEl.dom.value}if(e&&e.length){c.execCmd("selectall",true)}}a=c.getFocusEl();if(a&&a.focus){a.focus()}}return c},initEditor:function(){try{var g=this,d=g.getEditorBody(),b=g.textareaEl.getStyles("font-size","font-family","background-image","background-repeat","background-color","color"),j,c;b["background-attachment"]="fixed";d.bgProperties="fixed";Ext.DomHelper.applyStyles(d,b);j=g.getDoc();if(j){try{Ext.EventManager.removeAll(j)}catch(h){}}c=Ext.Function.bind(g.onEditorEvent,g);Ext.EventManager.on(j,{mousedown:c,dblclick:c,click:c,keyup:c,buffer:100});c=g.onRelayedEvent;Ext.EventManager.on(j,{mousedown:c,mousemove:c,mouseup:c,click:c,dblclick:c,scope:g});if(Ext.isGecko){Ext.EventManager.on(j,"keypress",g.applyCommand,g)}if(g.fixKeys){Ext.EventManager.on(j,"keydown",g.fixKeys,g)}if(g.fixKeysAfter){Ext.EventManager.on(j,"keyup",g.fixKeysAfter,g)}if(Ext.isIE9&&Ext.isStrict){Ext.EventManager.on(j.documentElement,"focus",g.focus,g)}if(Ext.isIE8m||(Ext.isIE9&&!Ext.isStrict)){Ext.EventManager.on(j,"focusout",function(){g.savedSelection=j.selection.type!=="None"?j.selection.createRange():null},g);Ext.EventManager.on(j,"focusin",function(){if(g.savedSelection){g.savedSelection.select()}},g)}Ext.EventManager.onWindowUnload(g.beforeDestroy,g);j.editorInitialized=true;g.initialized=true;g.pushValue();g.setReadOnly(g.readOnly);g.fireEvent("initialize",g)}catch(a){}},beforeDestroy:function(){var a=this,d=a.monitorTask,c,g;if(d){Ext.TaskManager.stop(d)}if(a.rendered){Ext.EventManager.removeUnloadListener(a.beforeDestroy,a);try{c=a.getDoc();if(c){Ext.EventManager.removeAll(Ext.fly(c));for(g in c){if(c.hasOwnProperty&&c.hasOwnProperty(g)){delete c[g]}}}}catch(b){}delete a.iframeEl;delete a.textareaEl;delete a.toolbar;delete a.inputCmp}a.callParent()},onRelayedEvent:function(c){var b=this.iframeEl,d=Ext.Element.getTrueXY(b),e=c.getXY(),a=Ext.EventManager.getPageXY(c.browserEvent);c.xy=[d[0]+a[0],d[1]+a[1]];c.injectEvent(b);c.xy=e},onFirstFocus:function(){var c=this,b,a;c.activated=true;c.disableItems(c.readOnly);if(Ext.isGecko){c.win.focus();b=c.win.getSelection();if(!b.focusNode||b.focusNode.nodeType!==3){a=b.getRangeAt(0);a.selectNodeContents(c.getEditorBody());a.collapse(true);c.deferFocus()}try{c.execCmd("useCSS",true);c.execCmd("styleWithCSS",false)}catch(d){}}c.fireEvent("activate",c)},adjustFont:function(d){var e=d.getItemId()==="increasefontsize"?1:-1,c=this.getDoc().queryCommandValue("FontSize")||"2",a=Ext.isString(c)&&c.indexOf("px")!==-1,b;c=parseInt(c,10);if(a){if(c<=10){c=1+e}else{if(c<=13){c=2+e}else{if(c<=16){c=3+e}else{if(c<=18){c=4+e}else{if(c<=24){c=5+e}else{c=6+e}}}}}c=Ext.Number.constrain(c,1,6)}else{b=Ext.isSafari;if(b){e*=2}c=Math.max(1,c+e)+(b?"px":0)}this.relayCmd("FontSize",c)},onEditorEvent:function(a){this.updateToolbar()},updateToolbar:function(){var j=this,e,c,d,k,b,g,a,h;if(j.readOnly){return}if(!j.activated){j.onFirstFocus();return}d=j.getToolbar().items.map;k=j.getDoc();if(j.enableFont&&!Ext.isSafari2){g=k.queryCommandValue("fontName");b=(g?g.split(",")[0].replace(/^'/,"").replace(/'$/,""):j.defaultFont).toLowerCase();a=j.fontSelect.dom;if(b!==a.value||b!=g){a.value=b}}function m(){var l;for(e=0,c=arguments.length,b;e0){g=String.fromCharCode(g);switch(g){case"b":b="bold";break;case"i":b="italic";break;case"u":b="underline";break}if(b){a.win.focus();a.execCmd(b);a.deferFocus();d.preventDefault()}}}},insertAtCursor:function(c){var b=this,a;if(b.activated){b.win.focus();if(Ext.isIE){a=b.getDoc().selection.createRange();if(a){a.pasteHTML(c);b.syncValue();b.deferFocus()}}else{b.execCmd("InsertHTML",c);b.deferFocus()}}},fixKeys:(function(){if(Ext.isIE){return function(h){var c=this,b=h.getKey(),g=c.getDoc(),j=c.readOnly,a,d;if(b===h.TAB){h.stopEvent();if(!j){a=g.selection.createRange();if(a){if(a.collapse){a.collapse(true);a.pasteHTML("    ")}c.deferFocus()}}}else{if(b===h.ENTER){if(!j){a=g.selection.createRange();if(a){d=a.parentElement();if(!d||d.tagName.toLowerCase()!=="li"){h.stopEvent();a.pasteHTML("
    ");a.collapse(false);a.select()}}}}}}}if(Ext.isOpera){return function(c){var b=this,a=c.getKey(),d=b.readOnly;if(a===c.TAB){c.stopEvent();if(!d){b.win.focus();b.execCmd("InsertHTML","    ");b.deferFocus()}}}}return null}()),fixKeysAfter:(function(){if(Ext.isIE){return function(d){var b=this,a=d.getKey(),c=b.getDoc(),h=b.readOnly,g;if(!h&&(a===d.BACKSPACE||a===d.DELETE)){g=c.body.innerHTML;if(g==="

     

    "||g==="

     

    "){c.body.innerHTML=""}}}}return null}()),getToolbar:function(){return this.toolbar},buttonTips:{bold:{title:"Bold (Ctrl+B)",text:"Make the selected text bold.",cls:Ext.baseCSSPrefix+"html-editor-tip"},italic:{title:"Italic (Ctrl+I)",text:"Make the selected text italic.",cls:Ext.baseCSSPrefix+"html-editor-tip"},underline:{title:"Underline (Ctrl+U)",text:"Underline the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},increasefontsize:{title:"Grow Text",text:"Increase the font size.",cls:Ext.baseCSSPrefix+"html-editor-tip"},decreasefontsize:{title:"Shrink Text",text:"Decrease the font size.",cls:Ext.baseCSSPrefix+"html-editor-tip"},backcolor:{title:"Text Highlight Color",text:"Change the background color of the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},forecolor:{title:"Font Color",text:"Change the color of the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyleft:{title:"Align Text Left",text:"Align text to the left.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifycenter:{title:"Center Text",text:"Center text in the editor.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyright:{title:"Align Text Right",text:"Align text to the right.",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertunorderedlist:{title:"Bullet List",text:"Start a bulleted list.",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertorderedlist:{title:"Numbered List",text:"Start a numbered list.",cls:Ext.baseCSSPrefix+"html-editor-tip"},createlink:{title:"Hyperlink",text:"Make the selected text a hyperlink.",cls:Ext.baseCSSPrefix+"html-editor-tip"},sourceedit:{title:"Source Edit",text:"Switch to source editing mode.",cls:Ext.baseCSSPrefix+"html-editor-tip"}}},0,["htmleditor"],["htmleditor","component","container","fieldcontainer","box"],{htmleditor:true,component:true,container:true,fieldcontainer:true,box:true},["widget.htmleditor"],[["field",Ext.form.field.Field]],[Ext.form.field,"HtmlEditor",Ext.form,"HtmlEditor"],0));(Ext.cmd.derive("Ext.picker.Time",Ext.view.BoundList,{increment:15,format:"g:i A",displayField:"disp",initDate:[2008,0,1],componentCls:Ext.baseCSSPrefix+"timepicker",loadMask:false,initComponent:function(){var c=this,a=Ext.Date,b=a.clearTime,d=c.initDate;c.absMin=b(new Date(d[0],d[1],d[2]));c.absMax=a.add(b(new Date(d[0],d[1],d[2])),"mi",(24*60)-1);c.store=c.createStore();c.store.addFilter(c.rangeFilter=new Ext.util.Filter({id:"time-picker-filter"}),false);c.updateList();c.callParent()},setMinValue:function(a){this.minValue=a;this.updateList()},setMaxValue:function(a){this.maxValue=a;this.updateList()},normalizeDate:function(a){var b=this.initDate;a.setFullYear(b[0],b[1],b[2]);return a},updateList:function(){var c=this,b=c.normalizeDate(c.minValue||c.absMin),a=c.normalizeDate(c.maxValue||c.absMax);c.rangeFilter.setFilterFn(function(d){var e=d.get("date");return e>=b&&e<=a});c.store.filter()},createStore:function(){var d=this,c=Ext.Date,e=[],b=d.absMin,a=d.absMax;while(b<=a){e.push({disp:c.dateFormat(b,d.format),date:b});b=c.add(b,"mi",d.increment)}return new Ext.data.Store({fields:["disp","date"],data:e})},focusNode:function(a){return false}},0,["timepicker"],["timepicker","component","boundlist","box","dataview"],{timepicker:true,component:true,boundlist:true,box:true,dataview:true},["widget.timepicker"],0,[Ext.picker,"Time"],0));(Ext.cmd.derive("Ext.form.field.Time",Ext.form.field.ComboBox,{alternateClassName:["Ext.form.TimeField","Ext.form.Time"],triggerCls:Ext.baseCSSPrefix+"form-time-trigger",minText:"The time in this field must be equal to or after {0}",maxText:"The time in this field must be equal to or before {0}",invalidText:"{0} is not a valid time",format:"g:i A",altFormats:"g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H|gi a|hi a|giA|hiA|gi A|hi A",increment:15,pickerMaxHeight:300,selectOnTab:true,snapToIncrement:false,initDate:"1/1/2008",initDateFormat:"j/n/Y",ignoreSelection:0,queryMode:"local",displayField:"disp",valueField:"date",initComponent:function(){var c=this,b=c.minValue,a=c.maxValue;if(b){c.setMinValue(b)}if(a){c.setMaxValue(a)}c.displayTpl=new Ext.XTemplate('{[typeof values === "string" ? values : this.formatDate(values["'+c.displayField+'"])]}'+c.delimiter+"",{formatDate:Ext.Function.bind(c.formatDate,c)});this.callParent()},transformOriginalValue:function(a){if(Ext.isString(a)){return this.rawToValue(a)}return a},isEqual:function(b,a){return Ext.Date.isEqual(b,a)},setMinValue:function(c){var b=this,a=b.picker;b.setLimit(c,true);if(a){a.setMinValue(b.minValue)}},setMaxValue:function(c){var b=this,a=b.picker;b.setLimit(c,false);if(a){a.setMaxValue(b.maxValue)}},setLimit:function(b,g){var a=this,e,c;if(Ext.isString(b)){e=a.parseDate(b)}else{if(Ext.isDate(b)){e=b}}if(e){c=Ext.Date.clearTime(new Date(a.initDate));c.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())}else{c=null}a[g?"minValue":"maxValue"]=c},rawToValue:function(a){return this.parseDate(a)||a||null},valueToRaw:function(a){return this.formatDate(this.parseDate(a))},getErrors:function(d){var b=this,g=Ext.String.format,h=b.callParent(arguments),c=b.minValue,e=b.maxValue,a;d=b.formatDate(d||b.processRawValue(b.getRawValue()));if(d===null||d.length<1){return h}a=b.parseDate(d);if(!a){h.push(g(b.invalidText,d,Ext.Date.unescapeFormat(b.format)));return h}if(c&&ae){h.push(g(b.maxText,b.formatDate(e)))}return h},formatDate:function(){return Ext.form.field.Date.prototype.formatDate.apply(this,arguments)},parseDate:function(e){var d=this,h=e,b=d.altFormats,g=d.altFormatsArray,c=0,a;if(e&&!Ext.isDate(e)){h=d.safeParse(e,d.format);if(!h&&b){g=g||b.split("|");a=g.length;for(;c0){c=c[0];if(c&&Ext.Date.isEqual(a.get("date"),c.get("date"))){d.collapse()}}},onListSelectionChange:function(b,d){if(d.length){var a=this,c=d[0].get("date");if(!a.ignoreSelection){a.skipSync=true;a.setValue(c);a.skipSync=false;a.fireEvent("select",a,c);a.picker.clearHighlight();a.collapse();a.inputEl.focus()}}},syncSelection:function(){var k=this,h=k.picker,c,g,l,b,j,e,a;if(h&&!k.skipSync){h.clearHighlight();l=k.getValue();g=h.getSelectionModel();k.ignoreSelection++;if(l===null){g.deselectAll()}else{if(Ext.isDate(l)){b=h.store.data.items;e=b.length;for(j=0;j0){l=Math.floor(c/2);j=c-l;d.titleContext.setProp("padding-top",l);d.titleContext.setProp("padding-bottom",j)}}}else{e=b.titleEl.getHeight();d.setProp("innerHeight",a-e,false)}if((Ext.isIE6||Ext.isIEQuirks)&&d.triggerContext){d.triggerContext.setHeight(e)}},measureContentHeight:function(a){return a.el.dom.offsetHeight},publishOwnerHeight:function(b,a){this.callParent(arguments);if((Ext.isIE6||Ext.isIEQuirks)&&b.triggerContext){b.triggerContext.setHeight(a)}},publishInnerWidth:function(a,b){if(!a.hasRawContent){a.setProp("innerWidth",b-a.getBorderInfo().width,false)}},calculateOwnerHeightFromContentHeight:function(c,b){var a=this.callParent(arguments);if(!c.hasRawContent){if(this.owner.noWrap||c.hasDomProp("width")){return b+this.owner.titleEl.getHeight()+c.getBorderInfo().height}return null}return a},calculateOwnerWidthFromContentWidth:function(g,b){var a=this.owner,e=Math.max(b,a.textEl.getWidth()+g.titleContext.getPaddingInfo().width),d=g.getPaddingInfo().width,c=this.getTriggerOffset(a,g);return e+d+c},getTriggerOffset:function(a,c){var b=0;if(c.widthModel.shrinkWrap&&!a.menuDisabled){if(a.query(">:not([hidden])").length===0){b=a.self.triggerElWidth}}return b}},0,0,0,0,["layout.columncomponent"],0,[Ext.grid,"ColumnComponentLayout"],0));(Ext.cmd.derive("Ext.grid.ColumnLayout",Ext.layout.container.HBox,{type:"gridcolumn",reserveOffset:false,firstHeaderCls:Ext.baseCSSPrefix+"column-header-first",lastHeaderCls:Ext.baseCSSPrefix+"column-header-last",initLayout:function(){if(!this.scrollbarWidth){this.self.prototype.scrollbarWidth=Ext.getScrollbarSize().width}this.grid=this.owner.up("[scrollerOwner]");this.callParent()},beginLayout:function(c){var j=this,b=j.owner,a=j.grid,k=a.view,h=j.getVisibleItems(),g=h.length,d=j.firstHeaderCls,m=j.lastHeaderCls,e,l;if(a.lockable){if(b.up("tablepanel")===k.normalGrid){k=k.normalGrid.getView()}else{k=null}}for(e=0;eb){a.width-=Ext.getScrollbarSize().width;e.state.parallelDone=false;c.invalidate()}}}}return a},getColumnContainerSize:function(g){var j=g.paddingContext.getPaddingInfo(),b=0,e=0,h,d,c,a;if(!g.widthModel.shrinkWrap){++e;c=g.getProp("innerWidth");h=(typeof c=="number");if(h){++b;c-=j.width;if(c<0){c=0}}}if(!g.heightModel.shrinkWrap){++e;a=g.getProp("innerHeight");d=(typeof a=="number");if(d){++b;a-=j.height;if(a<0){a=0}}}return{width:c,height:a,needed:e,got:b,gotAll:b==e,gotWidth:h,gotHeight:d}},publishInnerCtSize:function(e){var d=this,c=e.state.boxPlan.targetSize,b=e.peek("contentWidth"),a;d.owner.tooNarrow=e.state.boxPlan.tooNarrow;if((b!=null)&&!d.owner.isColumn){c.width=b;a=d.owner.ownerCt.view;if(a.scrollFlags.y){c.width+=Ext.getScrollbarSize().width}}return d.callParent(arguments)}},0,0,0,0,["layout.gridcolumn"],0,[Ext.grid,"ColumnLayout"],0));(Ext.cmd.derive("Ext.grid.ColumnManager",Ext.Base,{alternateClassName:["Ext.grid.ColumnModel"],columns:null,constructor:function(b,a){this.headerCt=b;if(a){this.secondHeaderCt=a}},getColumns:function(){if(!this.columns){this.cacheColumns()}return this.columns},getHeaderIndex:function(a){if(a.isGroupHeader){a=a.down(":not([isGroupHeader])")}return Ext.Array.indexOf(this.getColumns(),a)},getHeaderAtIndex:function(a){var b=this.getColumns();return b.length?b[a]:null},getHeaderById:function(e){var c=this.getColumns(),a=c.length,b,d;for(b=0;b'+a.view.emptyText+""}a.view.getComponentLayout().headerCt=a.headerCt;a.mon(a.view,{uievent:a.processEvent,scope:a});b.view=a.view;a.headerCt.view=a.view}return a.view},setAutoScroll:Ext.emptyFn,processEvent:function(h,k,l,a,j,d,c,m){var g=this,b;if(j!==-1){b=g.columnManager.getColumns()[j];return b.processEvent.apply(b,arguments)}},determineScrollbars:function(){},invalidateScroller:function(){},scrollByDeltaY:function(b,a){this.getView().scrollBy(0,b,a)},scrollByDeltaX:function(b,a){this.getView().scrollBy(b,0,a)},afterCollapse:function(){var a=this;a.saveScrollPos();a.saveScrollPos();a.callParent(arguments)},afterExpand:function(){var a=this;a.callParent(arguments);a.restoreScrollPos();a.restoreScrollPos()},saveScrollPos:Ext.emptyFn,restoreScrollPos:Ext.emptyFn,onHeaderResize:function(){this.delayScroll()},onHeaderMove:function(e,g,a,b,d){var c=this;if(c.optimizedColumnMove===false){c.view.refresh()}else{c.view.moveColumn(b,d,a)}c.delayScroll()},onHeaderHide:function(a,b){this.view.refresh();this.delayScroll()},onHeaderShow:function(a,b){this.view.refresh();this.delayScroll()},delayScroll:function(){var a=this.getScrollTarget().el;if(a){this.scrollTask.delay(10,null,null,[a.dom.scrollLeft])}},onViewReady:function(){this.fireEvent("viewready",this)},onRestoreHorzScroll:function(){var a=this.scrollLeftPos;if(a){this.syncHorizontalScroll(a,true)}},getScrollerOwner:function(){var a=this;if(!this.scrollerOwner){a=this.up("[scrollerOwner]")}return a},getLhsMarker:function(){var a=this;return a.lhsMarker||(a.lhsMarker=Ext.DomHelper.append(a.el,{cls:a.resizeMarkerCls},true))},getRhsMarker:function(){var a=this;return a.rhsMarker||(a.rhsMarker=Ext.DomHelper.append(a.el,{cls:a.resizeMarkerCls},true))},getSelectionModel:function(){var c=this,a=c.selModel,e,d,b;if(!a){a={};e=true}if(!a.events){b=a.selType||c.selType;e=!a.mode;a=c.selModel=Ext.create("selection."+b,a)}if(c.simpleSelect){d="SIMPLE"}else{if(c.multiSelect){d="MULTI"}}Ext.applyIf(a,{allowDeselect:c.allowDeselect});if(d&&e){a.setSelectionMode(d)}if(!a.hasRelaySetup){c.relayEvents(a,["selectionchange","beforeselect","beforedeselect","select","deselect"]);a.hasRelaySetup=true}if(c.disableSelection){a.locked=true}return a},getScrollTarget:function(){var a=this.getScrollerOwner(),b=a.query("tableview");return b[1]||b[0]},onHorizontalScroll:function(a,b){this.syncHorizontalScroll(b.scrollLeft)},syncHorizontalScroll:function(d,b){var c=this,a;b=b===true;if(c.rendered&&(b||d!==c.scrollLeftPos)){if(b){a=c.getScrollTarget();a.el.dom.scrollLeft=d}c.headerCt.el.dom.scrollLeft=d;c.scrollLeftPos=d}},onStoreLoad:Ext.emptyFn,getEditorParent:function(){return this.body},bindStore:function(b,c){var d=this,a=d.getView(),e=b&&b.buffered,g;d.store=b;g=d.findPlugin("bufferedrenderer");if(g){d.verticalScroller=g;if(g.store){g.bindStore(b)}}else{if(e){d.verticalScroller=g=d.addPlugin(Ext.apply({ptype:"bufferedrenderer"},d.initialConfig.verticalScroller))}}if(a.store!==b){if(c){a.bindStore(b,false,"dataSource")}else{a.bindStore(b,false)}}d.mon(b,{load:d.onStoreLoad,scope:d});d.storeRelayers=d.relayEvents(b,["filterchange"]);if(g){d.invalidateScrollerOnRefresh=false}if(d.invalidateScrollerOnRefresh!==undefined){a.preserveScrollOnRefresh=!d.invalidateScrollerOnRefresh}},unbindStore:function(){var b=this,a=b.store;if(a){b.store=null;b.mun(a,{load:b.onStoreLoad,scope:b});Ext.destroy(b.storeRelayers)}},reconfigure:function(b,e){var g=this,a=g.getView(),d,j=g.store,h=g.headerCt,c=h?h.items.getRange():g.columns;if(e){e=Ext.Array.slice(e)}g.fireEvent("beforereconfigure",g,b,e,j,c);if(g.lockable){g.reconfigureLockable(b,e)}else{Ext.suspendLayouts();if(e){delete g.scrollLeftPos;h.removeAll();h.add(e)}if(b&&(b=Ext.StoreManager.lookup(b))!==j){if(g.store){g.unbindStore()}d=a.deferInitialRefresh;a.deferInitialRefresh=false;g.bindStore(b);a.deferInitialRefresh=d}else{g.getView().refresh()}h.setSortState();Ext.resumeLayouts(true)}g.fireEvent("reconfigure",g,b,e,j,c)},beforeDestroy:function(){var a=this.scrollTask;if(a){a.cancel();this.scrollTask=null}this.callParent()},onDestroy:function(){if(this.lockable){this.destroyLockable()}this.callParent()}},0,["tablepanel"],["panel","component","tablepanel","container","box"],{panel:true,component:true,tablepanel:true,container:true,box:true},["widget.tablepanel"],0,[Ext.panel,"Table"],0));(Ext.cmd.derive("Ext.util.CSS",Ext.Base,function(){var c,e=null,d=document,b=/(-[a-z])/gi,a=function(g,h){return h.charAt(1).toUpperCase()};return{singleton:true,rules:e,initialized:false,constructor:function(){c=this},createStyleSheet:function(j,m){var h,g=d.getElementsByTagName("head")[0],l=d.createElement("style");l.setAttribute("type","text/css");if(m){l.setAttribute("id",m)}if(Ext.isIE){g.appendChild(l);h=l.styleSheet;h.cssText=j}else{try{l.appendChild(d.createTextNode(j))}catch(k){l.cssText=j}g.appendChild(l);h=l.styleSheet?l.styleSheet:(l.sheet||d.styleSheets[d.styleSheets.length-1])}c.cacheStyleSheet(h);return h},removeStyleSheet:function(h){var g=d.getElementById(h);if(g){g.parentNode.removeChild(g)}},swapStyleSheet:function(j,g){var h;c.removeStyleSheet(j);h=d.createElement("link");h.setAttribute("rel","stylesheet");h.setAttribute("type","text/css");h.setAttribute("id",j);h.setAttribute("href",g);d.getElementsByTagName("head")[0].appendChild(h)},refreshCache:function(){return c.getRules(true)},cacheStyleSheet:function(m){if(!e){e=c.rules={}}try{var p=m.cssRules||m.rules,l=p.length-1,h=m.imports,g=h?h.length:0,o,k;for(k=0;k=0;--l){o=p[l];if(o.styleSheet){c.cacheStyleSheet(o.styleSheet)}c.cacheRule(o,m)}}catch(n){}},cacheRule:function(h,m){if(h.styleSheet){return c.cacheStyleSheet(h.styleSheet)}var l=h.selectorText,k,g;if(l){l=l.split(",");k=l.length;for(g=0;g=g+a;c--){e[c]=e[c-a];e[c].setAttribute("data-recordIndex",c)}}d.endIndex=d.endIndex+a}else{d.startIndex=g;d.endIndex=g+a-1}for(c=0;c-1){c=Ext.getDom(c);if(a){d=e[b];d.parentNode.insertBefore(c,d);Ext.removeNode(d);c.setAttribute("data-recordIndex",b)}this.elements[b]=c}return this},indexOf:function(b){var c=this.elements,a;b=Ext.getDom(b);for(a=this.startIndex;a<=this.endIndex;a++){if(c[a]===b){return a}}return -1},removeRange:function(b,g,d){var j=this,a=j.elements,e,h,c,k;if(g===undefined){g=j.count}else{g=Math.min(j.endIndex+1,g+1)}if(!b){b=0}c=g-b;for(h=b,k=g;h=h.startIndex&&k<=h.endIndex){m[m.length]=k}}Ext.Array.sort(m);e=m.length}else{if(mh.endIndex){return}e=1;m=[m]}for(g=j=m[0],b=0;g<=h.endIndex;g++,j++){if(b=h.startIndex){d=a[g]=a[j];d.setAttribute("data-recordIndex",g)}else{delete a[g]}}h.endIndex-=e;h.count-=e},scroll:function(e,l,c){var k=this,a=k.elements,n=e.length,h,d,b,g,j=k.view.getNodeContainer(),m=document.createDocumentFragment();if(l==-1){for(h=(k.endIndex-c)+1;h<=k.endIndex;h++){d=a[h];delete a[h];d.parentNode.removeChild(d)}k.endIndex-=c;g=k.view.bufferRender(e,k.startIndex-=n);for(h=0;h',"{[view.renderColumnSizer(out)]}","{[view.renderTHead(values, out)]}","{[view.renderTFoot(values, out)]}",'',"{%","view.renderRows(values.rows, values.viewStartIndex, out);","%}","","",{priority:0}],rowTpl:["{%",'var dataRowCls = values.recordIndex === -1 ? "" : " '+Ext.baseCSSPrefix+'grid-data-row";',"%}",'','{%',"parent.view.renderCell(values, parent.record, parent.recordIndex, xindex - 1, out, parent)","%}","","",{priority:0}],cellTpl:['','
    {style}">{value}
    ',"",{priority:0}],refreshSelmodelOnRefresh:false,tableValues:{},rowValues:{itemClasses:[],rowClasses:[]},cellValues:{classes:[Ext.baseCSSPrefix+"grid-cell "+Ext.baseCSSPrefix+"grid-td"]},renderBuffer:document.createElement("div"),constructor:function(a){if(a.grid.isTree){a.baseCls=Ext.baseCSSPrefix+"tree-view"}this.callParent([a])},initComponent:function(){var b=this,a=b.scroll;this.addEvents("beforecellclick","cellclick","beforecelldblclick","celldblclick","beforecellcontextmenu","cellcontextmenu","beforecellmousedown","cellmousedown","beforecellmouseup","cellmouseup","beforecellkeydown","cellkeydown");b.body=new Ext.dom.Element.Fly();b.body.id=b.id+"gridBody";b.autoScroll=undefined;if(!b.trackOver){b.overItemCls=null;b.beforeOverItemCls=null}if(a===true||a==="both"){b.autoScroll=true}else{if(a==="horizontal"){b.overflowX="auto"}else{if(a==="vertical"){b.overflowY="auto"}}}b.selModel.view=b;b.headerCt.view=b;b.grid.view=b;b.initFeatures(b.grid);delete b.grid;b.tpl=b.getTpl("tpl");b.itemSelector=b.getItemSelector();b.all=new Ext.view.NodeCache(b);b.callParent()},moveColumn:function(a,o,d){var n=this,l=(d>1)?document.createDocumentFragment():undefined,c=o,p=n.getGridColumns().length,h=p-1,b=(n.firstCls||n.lastCls)&&(o===0||o==p||a===0||a==h),g,e,s,k,m,r,q;if(n.rendered&&o!==a){s=n.el.query(n.getDataRowSelector());if(o>a&&l){c-=d}for(g=0,k=s.length;g-1){return this.store.data.getAt(a)}}return this.dataSource.data.get(b.getAttribute("data-recordId"))}},indexOf:function(a){a=this.getNode(a,false);if(!a&&a!==0){return -1}return this.all.indexOf(a)},indexInStore:function(b){b=this.getNode(b,true);if(!b&&b!==0){return -1}var a=b.getAttribute("data-recordIndex");if(a){return parseInt(a,10)}return this.dataSource.indexOf(this.getRecord(b))},renderRows:function(e,d,b){var g=this.rowValues,a=e.length,c;g.view=this;g.columns=this.ownerCt.columnManager.getColumns();for(c=0;c')}},renderRow:function(g,a,e){var j=this,d=a===-1,h=j.selModel,m=j.rowValues,c=m.itemClasses,b=m.rowClasses,l,k=j.rowTpl;m.record=g;m.recordId=g.internalId;m.recordIndex=a;m.rowId=j.getRowId(g);m.itemCls=m.rowCls="";if(!m.columns){m.columns=j.ownerCt.columnManager.getColumns()}c.length=b.length=0;if(!d){c[0]=Ext.baseCSSPrefix+"grid-row";if(h&&h.isRowSelected){if(h.isRowSelected(a+1)){c.push(j.beforeSelectedItemCls)}if(h.isRowSelected(g)){c.push(j.selectedItemCls)}}if(j.stripeRows&&a%2!==0){b.push(j.altRowCls)}if(j.getRowClass){l=j.getRowClass(g,a,null,j.dataSource);if(l){b.push(l)}}}if(e){k.applyOut(m,e)}else{return k.apply(m)}},renderCell:function(c,g,e,j,d){var l=this,h=l.selModel,k=l.cellValues,b=k.classes,a=g.data[c.dataIndex],n=l.cellTpl,o,m;k.record=g;k.column=c;k.recordIndex=e;k.columnIndex=j;k.cellIndex=j;k.align=c.align;k.tdCls=c.tdCls;k.innerCls=c.innerCls;k.style=k.tdAttr="";k.unselectableAttr=l.enableTextSelection?"":'unselectable="on"';if(c.renderer&&c.renderer.call){o=c.renderer.call(c.scope||l.ownerCt,a,k,g,e,j,l.dataSource,l);if(k.css){g.cssWarning=true;k.tdCls+=" "+k.css;delete k.css}}else{o=a}k.value=(o==null||o==="")?" ":o;b[1]=Ext.baseCSSPrefix+"grid-cell-"+c.getItemId();m=2;if(c.tdCls){b[m++]=c.tdCls}if(l.markDirty&&g.isModified(c.dataIndex)){b[m++]=l.dirtyCls}if(c.isFirstVisible){b[m++]=l.firstCls}if(c.isLastVisible){b[m++]=l.lastCls}if(!l.enableTextSelection){b[m++]=Ext.baseCSSPrefix+"unselectable"}b[m++]=k.tdCls;if(h&&h.isCellSelected&&h.isCellSelected(l,e,j)){b[m++]=(l.selectedCellCls)}b.length=m;k.tdCls=b.join(" ");n.applyOut(k,d);k.column=null},getNode:function(c,b){var d,a=this.callParent(arguments);if(a&&a.tagName){if(b){if(!(d=Ext.fly(a)).is(this.dataRowSelector)){return d.down(this.dataRowSelector,true)}}else{if(b===false){if(!(d=Ext.fly(a)).is(this.itemSelector)){return d.up(this.itemSelector,null,true)}}}}return a},getRowId:function(a){return this.id+"-record-"+a.internalId},constructRowId:function(a){return this.id+"-record-"+a},getNodeById:function(b,a){b=this.constructRowId(b);return this.retrieveNode(b,a)},getNodeByRecord:function(a,b){var c=this.getRowId(a);return this.retrieveNode(c,b)},retrieveNode:function(e,c){var a=this.el.getById(e,true),b=this.itemSelector,d;if(c===false&&a){if(!(d=Ext.fly(a)).is(b)){return d.up(b,null,true)}}return a},updateIndexes:Ext.emptyFn,bodySelector:"table",nodeContainerSelector:"tbody",itemSelector:"tr."+Ext.baseCSSPrefix+"grid-row",dataRowSelector:"tr."+Ext.baseCSSPrefix+"grid-data-row",cellSelector:"td."+Ext.baseCSSPrefix+"grid-cell",sizerSelector:"col."+Ext.baseCSSPrefix+"grid-cell",innerSelector:"div."+Ext.baseCSSPrefix+"grid-cell-inner",getNodeContainer:function(){return this.el.down(this.nodeContainerSelector,true)},getBodySelector:function(){return this.bodySelector+"."+Ext.baseCSSPrefix+this.id+"-table"},getNodeContainerSelector:function(){return this.nodeContainerSelector},getColumnSizerSelector:function(a){return this.sizerSelector+"-"+a.getItemId()},getItemSelector:function(){return this.itemSelector},getDataRowSelector:function(){return this.dataRowSelector},getCellSelector:function(b){var a=this.cellSelector;if(b){a+="-"+b.getItemId()}return a},getCellInnerSelector:function(a){return this.getCellSelector(a)+" "+this.innerSelector},addRowCls:function(b,a){var c=this.getNode(b,false);if(c){Ext.fly(c).addCls(a)}},removeRowCls:function(b,a){var c=this.getNode(b,false);if(c){Ext.fly(c).removeCls(a)}},setHighlightedItem:function(c){var b=this,a=b.highlightedItem;if(a&&b.el.isAncestor(a)&&b.isRowStyleFirst(a)){b.getRowStyleTableEl(a).removeCls(b.tableOverFirstCls)}if(c&&b.isRowStyleFirst(c)){b.getRowStyleTableEl(c).addCls(b.tableOverFirstCls)}b.callParent(arguments)},onRowSelect:function(b){var a=this;a.addRowCls(b,a.selectedItemCls);if(a.isRowStyleFirst(b)){a.getRowStyleTableEl(b).addCls(a.tableSelectedFirstCls)}else{a.addRowCls(b-1,a.beforeSelectedItemCls)}},onRowDeselect:function(b){var a=this;a.removeRowCls(b,[a.selectedItemCls,a.focusedItemCls]);if(a.isRowStyleFirst(b)){a.getRowStyleTableEl(b).removeCls([a.tableFocusedFirstCls,a.tableSelectedFirstCls])}else{a.removeRowCls(b-1,[a.beforeFocusedItemCls,a.beforeSelectedItemCls])}},onCellSelect:function(b){var a=this.getCellByPosition(b);if(a){a.addCls(this.selectedCellCls);this.scrollCellIntoView(a)}},onCellDeselect:function(b){var a=this.getCellByPosition(b,true);if(a){Ext.fly(a).removeCls(this.selectedCellCls)}},getCellByPosition:function(a,b){if(a){var c=this.getNode(a.row,true),d=this.ownerCt.columnManager.getHeaderAtIndex(a.column);if(d&&c){return Ext.fly(c).down(this.getCellSelector(d),b)}}return false},getFocusEl:function(){var b=this,a;if(b.refreshCounter){a=b.focusedRow;if(!(a&&b.el.contains(a))){if(b.all.getCount()&&(a=b.getNode(b.all.item(0).dom,true))){b.focusRow(a)}else{a=b.body}}}else{return b.el}return Ext.get(a)},onRowFocus:function(d,b,a){var c=this;if(b){c.addRowCls(d,c.focusedItemCls);if(c.isRowStyleFirst(d)){c.getRowStyleTableEl(d).addCls(c.tableFocusedFirstCls)}else{c.addRowCls(d-1,c.beforeFocusedItemCls)}if(!a){c.focusRow(d)}}else{c.removeRowCls(d,c.focusedItemCls);if(c.isRowStyleFirst(d)){c.getRowStyleTableEl(d).removeCls(c.tableFocusedFirstCls)}else{c.removeRowCls(d-1,c.beforeFocusedItemCls)}}if((Ext.isIE6||Ext.isIE7)&&!c.ownerCt.rowLines){c.repaintRow(d)}},focus:function(d,b){var c=this,a=Ext.isIE&&!b,e;if(a){e=c.el.dom.scrollLeft}this.callParent(arguments);if(a){c.el.dom.scrollLeft=e}},focusRow:function(g,b){var d=this,c,e=d.ownerCt&&d.ownerCt.collapsed,a;if(d.isVisible(true)&&!e&&(g=d.getNode(g,true))){d.scrollRowIntoView(g);a=d.getRecord(g);c=d.indexInStore(g);d.selModel.setLastFocused(a);d.focusedRow=g;d.focus(false,b,function(){d.fireEvent("rowfocus",a,g,c)})}},scrollRowIntoView:function(a){a=this.getNode(a,true);if(a){Ext.fly(a).scrollIntoView(this.el,false)}},focusCell:function(b){var d=this,a=d.getCellByPosition(b),c=d.getRecord(b.row);d.focusRow(c);if(a){d.scrollCellIntoView(a);d.fireEvent("cellfocus",c,a,b)}},scrollCellIntoView:function(a){if(a.row!=null&&a.column!=null){a=this.getCellByPosition(a)}if(a){Ext.fly(a).scrollIntoView(this.el,true)}},scrollByDelta:function(c,b){b=b||"scrollTop";var a=this.el.dom;a[b]=(a[b]+=c)},isDataRow:function(a){return Ext.fly(a).hasCls(Ext.baseCSSPrefix+"grid-data-row")},syncRowHeights:function(g,a){g=Ext.get(g);a=Ext.get(a);g.dom.style.height=a.dom.style.height="";var d=this,e=d.rowTpl,b=g.dom.offsetHeight,c=a.dom.offsetHeight;if(b!==c){while(e){if(e.syncRowHeights){if(e.syncRowHeights(g,a)===false){break}}e=e.nextTpl}b=g.dom.offsetHeight;c=a.dom.offsetHeight;if(b!==c){g=g.down("[data-recordId]")||g;a=a.down("[data-recordId]")||a;if(g&&a){g.dom.style.height=a.dom.style.height="";b=g.dom.offsetHeight;c=a.dom.offsetHeight;if(b>c){g.setHeight(b);a.setHeight(b)}else{if(c>b){g.setHeight(c);a.setHeight(c)}}}}}},onIdChanged:function(a,h,g,c,b){var e=this,d;if(e.viewReady){d=e.getNodeById(b);if(d){d.setAttribute("data-recordId",h.internalId);d.id=e.getRowId(h)}}},onUpdate:function(g,c,m,r){var v=this,o=v.rowTpl,j,s,b,l,n,t,u,e,p,q,k,d,w,h,a;if(v.viewReady){b=v.getNodeByRecord(c,false);if(b){p=v.overItemCls;q=v.overItemCls;k=v.focusedItemCls;d=v.beforeFocusedItemCls;w=v.selectedItemCls;h=v.beforeSelectedItemCls;j=v.indexInStore(c);s=Ext.fly(b,"_internal");l=v.createRowElement(c,j);if(s.hasCls(p)){Ext.fly(l).addCls(p)}if(s.hasCls(q)){Ext.fly(l).addCls(q)}if(s.hasCls(k)){Ext.fly(l).addCls(k)}if(s.hasCls(d)){Ext.fly(l).addCls(d)}if(s.hasCls(w)){Ext.fly(l).addCls(w)}if(s.hasCls(h)){Ext.fly(l).addCls(h)}a=v.ownerCt.columnManager.getColumns();if(Ext.isIE9m&&b.mergeAttributes){b.mergeAttributes(l,true)}else{n=l.attributes;t=n.length;for(e=0;e0){l=g.getCellPaddingAfter(m[0])}a.setWidth(1);j=d.textEl.dom.offsetWidth+d.titleEl.getPadding("lr");for(;c=c:k<=0){return l||c}k+=g;if((b=Ext.fly(d.getNode(k,true)))&&b.isVisible(true)){e+=g;l=k}}while(e!==a);return k},walkRecs:function(b,a){var h=this,j=0,m=b,c,l=(h.store.buffered?h.store.getTotalCount():h.store.getCount())-1,e=(a<0)?0:l,k=e?1:-1,g=h.store.indexOf(b),d;do{if(e?g>=e:g<=0){return m}g+=k;d=h.store.getAt(g);if((c=Ext.fly(h.getNodeByRecord(d,true)))&&c.isVisible(true)){j+=k;m=d}}while(j!==a);return m},getFirstVisibleRowIndex:function(){var c=this,b=(c.dataSource.buffered?c.dataSource.getTotalCount():c.dataSource.getCount()),a=c.indexOf(c.all.first())-1;do{a+=1;if(a===b){return}}while(!Ext.fly(c.getNode(a,true)).isVisible(true));return a},getLastVisibleRowIndex:function(){var b=this,a=b.indexOf(b.all.last());do{a-=1;if(a===-1){return}}while(!Ext.fly(b.getNode(a,true)).isVisible(true));return a},getHeaderCt:function(){return this.headerCt},getPosition:function(a,b){return new Ext.grid.CellContext(this).setPosition(a,b)},beforeDestroy:function(){var a=this;if(a.rendered){a.el.removeAllListeners()}a.callParent(arguments)},onDestroy:function(){var d=this,c=d.featuresMC,a,b;if(c){for(b=0,a=c.getCount();bg.viewSize){if(ce.startIndex){d.refreshView()}else{g.stretchView(d,g.getScrollHeight())}}else{d.callParent([b,a,c])}},onRemove:function(b,a,d){var c=this,e=c.bufferedRenderer;c.callParent([b,a,d]);if(c.rendered&&e){if(c.dataSource.getCount()>e.viewSize){c.refreshView()}else{e.stretchView(c,e.getScrollHeight())}}},onDataRefresh:function(){var a=this;if(a.bufferedRenderer){a.all.clear();a.bufferedRenderer.onStoreClear()}a.callParent()}});(Ext.cmd.derive("Ext.grid.RowEditorButtons",Ext.container.Container,{frame:true,shrinkWrap:true,position:"bottom",constructor:function(b){var d=this,a=b.rowEditor,e=Ext.baseCSSPrefix,c=a.editingPlugin;b=Ext.apply({baseCls:e+"grid-row-editor-buttons",defaults:{xtype:"button",ui:a.buttonUI,scope:c,flex:1,minWidth:Ext.panel.Panel.prototype.minButtonWidth},items:[{cls:e+"row-editor-update-button",itemId:"update",handler:c.completeEdit,text:a.saveBtnText,disabled:a.updateButtonDisabled},{cls:e+"row-editor-cancel-button",handler:c.cancelEdit,text:a.cancelBtnText}]},b);d.callParent([b]);d.addClsWithUI(d.position)},setButtonPosition:function(a){var b=this;b.removeClsWithUI(b.position);b.position=a;b.addClsWithUI(a)},getFramingInfoCls:function(){return this.baseCls+"-"+this.ui+"-"+this.position},getFrameInfo:function(){var a=this.callParent();a.top=true;return a}},1,["roweditorbuttons"],["component","container","box","roweditorbuttons"],{component:true,container:true,box:true,roweditorbuttons:true},["widget.roweditorbuttons"],0,[Ext.grid,"RowEditorButtons"],0));(Ext.cmd.derive("Ext.grid.RowEditor",Ext.form.Panel,{saveBtnText:"Update",cancelBtnText:"Cancel",errorsText:"Errors",dirtyText:"You need to commit or cancel your changes",lastScrollLeft:0,lastScrollTop:0,border:false,buttonUI:"default",hideMode:"offsets",initComponent:function(){var c=this,b=c.editingPlugin.grid,a=Ext.container.Container;c.cls=Ext.baseCSSPrefix+"grid-editor "+Ext.baseCSSPrefix+"grid-row-editor";c.layout={type:"hbox",align:"middle"};c.lockable=b.lockable;if(c.lockable){c.items=[c.lockedColumnContainer=new a({id:b.id+"-locked-editor-cells",layout:{type:"hbox",align:"middle"},margin:"0 1 0 0"}),c.normalColumnContainer=new a({flex:1,id:b.id+"-normal-editor-cells",layout:{type:"hbox",align:"middle"}})]}else{c.lockedColumnContainer=c.normalColumnContainer=c}c.callParent(arguments);if(c.fields){c.addFieldsForColumn(c.fields,true);c.insertColumnEditor(c.fields);delete c.fields}c.mon(c.hierarchyEventSource,{scope:c,show:c.repositionIfVisible});c.getForm().trackResetOnLoad=true},onGridResize:function(){var c=this,e=c.getClientWidth(),a=c.editingPlugin.grid,d=a.body,b=c.getFloatingButtons();c.setLocalX(d.getOffsetsTo(a)[0]+d.getBorderWidth("l")-a.el.getBorderWidth("l"));c.setWidth(e);b.setLocalX((e-b.getWidth())/2)},onFieldRender:function(c){var b=this,a=c.column;if(a.isVisible()){b.syncFieldWidth(a)}else{if(!a.rendered){b.view.headerCt.on({afterlayout:Ext.Function.bind(b.syncFieldWidth,b,[a]),single:true})}}},syncFieldWidth:function(b){var c=b.getEditor(),a;c._marginWidth=(c._marginWidth||c.el.getMargin("lr"));a=b.getWidth()-c._marginWidth;c.setWidth(a);if(c.xtype==="displayfield"){c.inputWidth=a}},onFieldChange:function(){var c=this,b=c.getForm(),a=b.isValid();if(c.errorSummary&&c.isVisible()){c[a?"hideToolTip":"showToolTip"]()}c.updateButton(a);c.isValid=a},updateButton:function(b){var a=this.floatingButtons;if(a){a.child("#update").setDisabled(!b)}else{this.updateButtonDisabled=!b}},afterRender:function(){var d=this,c=d.editingPlugin,b=c.grid,a=b.lockable?b.normalGrid.view:b.view,e;d.callParent(arguments);d.scrollingView=a;d.scrollingViewEl=a.el;a.mon(d.scrollingViewEl,"scroll",d.onViewScroll,d);d.mon(d.el,{click:Ext.emptyFn,stopPropagation:true});d.mon(b,{resize:d.onGridResize,scope:d});d.el.swallowEvent(["keypress","keydown"]);d.fieldScroller=d.normalColumnContainer.layout.innerCt;d.fieldScroller.dom.style.overflow="hidden";d.fieldScroller.on({scroll:d.onFieldContainerScroll,scope:d});d.keyNav=new Ext.util.KeyNav(d.el,{enter:c.completeEdit,esc:c.onEscKey,scope:c});d.mon(c.view,{beforerefresh:d.onBeforeViewRefresh,refresh:d.onViewRefresh,itemremove:d.onViewItemRemove,scope:d});d.preventReposition=true;Ext.Array.each(d.query("[isFormField]"),function(g){if(g.column.isVisible()){d.onColumnShow(g.column)}},d);delete d.preventReposition},onBeforeViewRefresh:function(b){var c=this,a=b.el.dom;if(c.el.dom.parentNode===a){a.removeChild(c.el.dom)}},onViewRefresh:function(a){var c=this,b=c.context,d;if(b&&(d=a.getNode(b.record,true))){b.row=d;c.reposition();if(c.tooltip&&c.tooltip.isVisible()){c.tooltip.setTarget(b.row)}}else{c.editingPlugin.cancelEdit()}},onViewItemRemove:function(a,b){var c=this.context;if(c&&a===c.record){this.editingPlugin.cancelEdit()}},onViewScroll:function(){var c=this,b=c.editingPlugin.view.el,d=c.scrollingViewEl,e=d.dom.scrollTop,j=d.getScrollLeft(),h=j!==c.lastScrollLeft,a=e!==c.lastScrollTop,g;c.lastScrollTop=e;c.lastScrollLeft=j;if(c.isVisible()){g=Ext.getDom(c.context.row.id);if(g&&b.contains(g)){if(a){c.context.row=g;c.reposition(null,true);if((c.tooltip&&c.tooltip.isVisible())||c.hiddenTip){c.repositionTip()}c.syncEditorClip()}}else{c.setLocalY(-400)}}if(c.rendered&&h){c.syncFieldsHorizontalScroll()}},syncFieldsHorizontalScroll:function(){this.fieldScroller.setScrollLeft(this.lastScrollLeft)},onFieldContainerScroll:function(){this.scrollingViewEl.setScrollLeft(this.fieldScroller.getScrollLeft())},onColumnResize:function(b,a){var c=this;if(c.rendered){c.onGridResize();c.onViewScroll();if(!b.isGroupHeader){c.syncFieldWidth(b);c.repositionIfVisible()}}},onColumnHide:function(a){if(!a.isGroupHeader){a.getEditor().hide();this.repositionIfVisible()}},onColumnShow:function(a){var b=this;if(b.rendered&&!a.isGroupHeader){a.getEditor().show();b.syncFieldWidth(a);if(!b.preventReposition){this.repositionIfVisible()}}},onColumnMove:function(c,a,k){var h=this,d,b=1,g,j,l,e=c.isLocked()?h.lockedColumnContainer:h.normalColumnContainer;if(c.isGroupHeader){Ext.suspendLayouts();c=c.getGridColumns();if(k>a){k--;b=0}this.addFieldsForColumn(c);for(d=0,g=c.length;da){k--}this.addFieldsForColumn(c);j=c.getEditor();l=e.items.indexOf(j);if(l===-1){e.insert(k,j)}else{if(l!=k){e.move(a,k)}}}},onColumnAdd:function(a){if(a.isGroupHeader){a=a.getGridColumns()}this.addFieldsForColumn(a);this.insertColumnEditor(a);this.preventReposition=false},insertColumnEditor:function(c){var d=this,e,a,b;if(Ext.isArray(c)){for(b=0,a=c.length;b0){a=Math.max(a+e.getHeight()+e.floatingButtons.getHeight()-d.clientHeight-b.getBorderWidth("b"),0)}}return a},calculateLocalRowTop:function(b){var a=this.editingPlugin.grid;return Ext.fly(b).getOffsetsTo(a)[1]-a.el.getBorderWidth("t")+this.lastScrollTop},calculateEditorTop:function(a){return a-this.body.getBorderPadding().beforeY-this.lastScrollTop},getClientWidth:function(){var c=this,b=c.editingPlugin.grid,a;if(c.lockable){a=b.lockedGrid.getWidth()+b.normalGrid.view.el.dom.clientWidth-1}else{a=b.view.el.dom.clientWidth}return a},getEditor:function(a){var b=this;if(Ext.isNumber(a)){return b.query("[isFormField]")[a]}else{if(a.isHeader&&!a.isGroupHeader){return a.getEditor()}}},addFieldsForColumn:function(c,a){var e=this,b,d,g;if(Ext.isArray(c)){for(b=0,d=c.length;bdisplayfield");b=g.length;for(c=0;c0){if(!b._buttonsOnTop){a.setButtonPosition("top");b._buttonsOnTop=true}d=0}else{if(b._buttonsOnTop){a.setButtonPosition("bottom");b._buttonsOnTop=false}}return d},syncEditorClip:function(){var b=this,c=b.getScrollDelta(),a;if(c){b.isOverflowing=true;a=b.floatingButtons.getHeight();if(c>0){b.clipBottom(Math.max(b.getHeight()-c+a,-a))}else{if(c<0){c=Math.abs(c);b.clipTop(Math.max(c,0))}}}else{if(b.isOverflowing){b.clearClip();b.isOverflowing=false}}},focusContextCell:function(){var a=this.getEditor(this.context.column);if(a&&a.focus){a.focus()}},cancelEdit:function(){var g=this,e=g.getForm(),a=e.getFields(),b=a.items,d=b.length,c;g.hide();e.clearInvalid();for(c=0;cg&&a[isFormField]"),c=a.length,b;for(b=0;b'+e.join("")+""},createErrorListItem:function(a){return'
  • '+a+"
  • "},beforeDestroy:function(){Ext.destroy(this.floatingButtons,this.tooltip);this.callParent()},clipBottom:function(a){this.el.setStyle("clip","rect(-1000px auto "+a+"px auto)")},clipTop:function(a){this.el.setStyle("clip","rect("+a+"px auto 1000px auto)")},clearClip:function(a){this.el.setStyle("clip",Ext.isIE8m||Ext.isIEQuirks?"rect(-1000px auto 1000px auto)":"auto")}},0,["roweditor"],["panel","form","component","container","roweditor","box"],{panel:true,form:true,component:true,container:true,roweditor:true,box:true},["widget.roweditor"],0,[Ext.grid,"RowEditor"],0));(Ext.cmd.derive("Ext.view.DropZone",Ext.dd.DropZone,{indicatorHtml:'
    ',indicatorCls:Ext.baseCSSPrefix+"grid-drop-indicator",constructor:function(a){var b=this;Ext.apply(b,a);if(!b.ddGroup){b.ddGroup="view-dd-zone-"+b.view.id}b.callParent([b.view.el])},fireViewEvent:function(){var b=this,a;b.lock();a=b.view.fireEvent.apply(b.view,arguments);b.unlock();return a},getTargetFromEvent:function(k){var j=k.getTarget(this.view.getItemSelector()),d,c,b,g,a,h;if(!j){d=k.getPageY();for(g=0,c=this.view.getNodes(),a=c.length;g=(b.bottom-b.top)/2){d="before"}else{d="after"}return d},containsRecordAtOffset:function(d,b,g){if(!b){return false}var a=this.view,c=a.indexOf(b),e=a.getNode(c+g,true),h=e?a.getRecord(e):null;return h&&Ext.Array.contains(d,h)},positionIndicator:function(b,c,d){var g=this,j=g.view,h=g.getPosition(d,b),l=j.getRecord(b),a=c.records,k;if(!Ext.Array.contains(a,l)&&(h=="before"&&!g.containsRecordAtOffset(a,l,-1)||h=="after"&&!g.containsRecordAtOffset(a,l,1))){g.valid=true;if(g.overRecord!=l||g.currentPosition!=h){k=Ext.fly(b).getY()-j.el.getY()-1;if(h=="after"){k+=Ext.fly(b).getHeight()}g.getIndicator().setWidth(Ext.fly(j.el).getWidth()).showAt(0,k);g.overRecord=l;g.currentPosition=h}}else{g.invalidateDrop()}},invalidateDrop:function(){if(this.valid){this.valid=false;this.getIndicator().hide()}},onNodeOver:function(c,a,g,d){var b=this;if(!Ext.Array.contains(d.records,b.view.getRecord(c))){b.positionIndicator(c,d,g)}return b.valid?b.dropAllowed:b.dropNotAllowed},notifyOut:function(c,a,g,d){var b=this;b.callParent(arguments);b.overRecord=b.currentPosition=null;b.valid=false;if(b.indicator){b.indicator.hide()}},onContainerOver:function(a,h,g){var d=this,b=d.view,c=b.dataSource.getCount();if(c){d.positionIndicator(b.all.last(),g,h)}else{d.overRecord=d.currentPosition=null;d.getIndicator().setWidth(Ext.fly(b.el).getWidth()).showAt(0,0);d.valid=true}return d.dropAllowed},onContainerDrop:function(a,c,b){return this.onNodeDrop(a,null,c,b)},onNodeDrop:function(j,a,h,g){var d=this,c=false,b={wait:false,processDrop:function(){d.invalidateDrop();d.handleNodeDrop(g,d.overRecord,d.currentPosition);c=true;d.fireViewEvent("drop",j,g,d.overRecord,d.currentPosition)},cancelDrop:function(){d.invalidateDrop();c=true}},k=false;if(d.valid){k=d.fireViewEvent("beforedrop",j,g,d.overRecord,d.currentPosition,b);if(b.wait){return}if(k!==false){if(!c){b.processDrop()}}}return k},destroy:function(){Ext.destroy(this.indicator);delete this.indicator;this.callParent()}},1,0,0,0,0,0,[Ext.view,"DropZone"],0));(Ext.cmd.derive("Ext.grid.ViewDropZone",Ext.view.DropZone,{indicatorHtml:'
    ',indicatorCls:Ext.baseCSSPrefix+"grid-drop-indicator",handleNodeDrop:function(b,d,e){var j=this.view,k=j.getStore(),h,a,c,g;if(b.copy){a=b.records;b.records=[];for(c=0,g=a.length;cn){q-=1}}Ext.suspendLayouts();if(l){a.move(n,q)}else{u.remove(r,false);a.insert(q,r)}if(a.isGroupHeader){if(!l){r.savedFlex=r.flex;delete r.flex;r.width=g}}else{if(r.savedFlex){r.flex=r.savedFlex;delete r.width}}k.purgeCache();Ext.resumeLayouts(true);k.onHeaderMoved(r,o,b,t)}}}}},1,0,0,0,0,0,[Ext.grid.header,"DropZone"],0));(Ext.cmd.derive("Ext.grid.plugin.HeaderReorderer",Ext.AbstractPlugin,{init:function(a){this.headerCt=a;a.on({render:this.onHeaderCtRender,single:true,scope:this})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},onHeaderCtRender:function(){var a=this;a.dragZone=new Ext.grid.header.DragZone(a.headerCt);a.dropZone=new Ext.grid.header.DropZone(a.headerCt);if(a.disabled){a.dragZone.disable()}},enable:function(){this.disabled=false;if(this.dragZone){this.dragZone.enable()}},disable:function(){this.disabled=true;if(this.dragZone){this.dragZone.disable()}}},0,0,0,0,["plugin.gridheaderreorderer"],0,[Ext.grid.plugin,"HeaderReorderer"],0));(Ext.cmd.derive("Ext.grid.header.Container",Ext.container.Container,{border:true,baseCls:Ext.baseCSSPrefix+"grid-header-ct",dock:"top",weight:100,defaultType:"gridcolumn",detachOnRemove:false,defaultWidth:100,sortAscText:"Sort Ascending",sortDescText:"Sort Descending",sortClearText:"Clear Sort",columnsText:"Columns",headerOpenCls:Ext.baseCSSPrefix+"column-header-open",menuSortAscCls:Ext.baseCSSPrefix+"hmenu-sort-asc",menuSortDescCls:Ext.baseCSSPrefix+"hmenu-sort-desc",menuColsIcon:Ext.baseCSSPrefix+"cols-icon",triStateSort:false,ddLock:false,dragging:false,sortable:true,enableColumnHide:true,initComponent:function(){var a=this;a.headerCounter=0;a.plugins=a.plugins||[];if(!a.isColumn){if(a.enableColumnResize){a.resizer=new Ext.grid.plugin.HeaderResizer();a.plugins.push(a.resizer)}if(a.enableColumnMove){a.reorderer=new Ext.grid.plugin.HeaderReorderer();a.plugins.push(a.reorderer)}}if(a.isColumn&&(!a.items||a.items.length===0)){a.isContainer=false;a.layout={type:"container",calculate:Ext.emptyFn}}else{a.layout=Ext.apply({type:"gridcolumn",align:"stretch"},a.initialConfig.layout);if(a.isRootHeader){a.grid.columnManager=a.columnManager=new Ext.grid.ColumnManager(a)}}a.defaults=a.defaults||{};Ext.applyIf(a.defaults,{triStateSort:a.triStateSort,sortable:a.sortable});a.menuTask=new Ext.util.DelayedTask(a.updateMenuDisabledState,a);a.callParent();a.addEvents("columnresize","headerclick","headercontextmenu","headertriggerclick","columnmove","columnhide","columnshow","columnschanged","sortchange","menucreate")},isLayoutRoot:function(){if(this.hiddenHeaders){return false}return this.callParent()},getOwnerHeaderCt:function(){var a=this;return a.isRootHeader?a:a.up("[isRootHeader]")},onDestroy:function(){var a=this;if(a.menu){a.menu.un("hide",a.onMenuHide,a)}a.menuTask.cancel();Ext.destroy(a.resizer,a.reorderer);a.callParent()},applyColumnsState:function(e){if(!e||!e.length){return}var m=this,k=m.items.items,j=k.length,g=0,b=e.length,l,d,a,h;for(l=0;lgridcolumn[hideable]"),h=a.length,d;for(;b{text}
    {%this.renderContainer(out,values)%}',dataIndex:null,text:" ",menuText:null,emptyCellText:" ",sortable:true,resizable:true,hideable:true,menuDisabled:false,renderer:false,editRenderer:false,align:"left",draggable:true,tooltipType:"qtip",initDraggable:Ext.emptyFn,tdCls:"",isHeader:true,isColumn:true,ascSortCls:Ext.baseCSSPrefix+"column-header-sort-ASC",descSortCls:Ext.baseCSSPrefix+"column-header-sort-DESC",componentLayout:"columncomponent",groupSubHeaderCls:Ext.baseCSSPrefix+"group-sub-header",groupHeaderCls:Ext.baseCSSPrefix+"group-header",clickTargetName:"titleEl",detachOnRemove:true,initResizable:Ext.emptyFn,initComponent:function(){var b=this,c,a;if(b.header!=null){b.text=b.header;b.header=null}if(!b.triStateSort){b.possibleSortStates.length=2}if(b.columns!=null){b.isGroupHeader=true;b.items=b.columns;b.columns=b.flex=b.width=null;b.cls=(b.cls||"")+" "+b.groupHeaderCls;b.sortable=b.resizable=false;b.align="center"}else{if(b.flex){b.minWidth=b.minWidth||Ext.grid.plugin.HeaderResizer.prototype.minColWidth}}b.addCls(Ext.baseCSSPrefix+"column-header-align-"+b.align);c=b.renderer;if(c){if(typeof c=="string"){b.renderer=Ext.util.Format[c]}b.hasCustomRenderer=true}else{if(b.defaultRenderer){b.scope=b;b.renderer=b.defaultRenderer}}b.callParent(arguments);a={element:b.clickTargetName,click:b.onTitleElClick,contextmenu:b.onTitleElContextMenu,mouseenter:b.onTitleMouseOver,mouseleave:b.onTitleMouseOut,scope:b};if(b.resizable){a.dblclick=b.onTitleElDblClick}b.on(a)},onAdd:function(a){if(a.isColumn){a.isSubHeader=true;a.addCls(this.groupSubHeaderCls)}if(this.hidden){a.hide()}this.callParent(arguments)},onRemove:function(a){if(a.isSubHeader){a.isSubHeader=false;a.removeCls(this.groupSubHeaderCls)}this.callParent(arguments)},initRenderData:function(){var b=this,d="",c=b.tooltip,a=b.tooltipType=="qtip"?"data-qtip":"title";if(!Ext.isEmpty(c)){d=a+'="'+c+'" '}return Ext.applyIf(b.callParent(arguments),{text:b.text,menuDisabled:b.menuDisabled,tipMarkup:d})},applyColumnState:function(b){var a=this;a.applyColumnsState(b.columns);if(b.hidden!=null){a.hidden=b.hidden}if(b.locked!=null){a.locked=b.locked}if(b.sortable!=null){a.sortable=b.sortable}if(b.width!=null){a.flex=null;a.width=b.width}else{if(b.flex!=null){a.width=null;a.flex=b.flex}}},getColumnState:function(){var e=this,b=e.items.items,a=b?b.length:0,d,c=[],g={id:e.getStateId()};e.savePropsToState(["hidden","sortable","locked","flex","width"],g);if(e.isGroupHeader){for(d=0;d:not([hidden]):not([menuDisabled])");c=b.length;if(Ext.Array.contains(b,a.hideCandidate)){c--}if(c){return false}a.hideCandidate=this},isLockable:function(){var a={result:this.lockable!==false};if(a.result){this.ownerCt.bubble(this.hasMultipleVisibleChildren,null,[a])}return a.result},isLocked:function(){return this.locked||!!this.up("[isColumn][locked]","[isRootHeader]")},hasMultipleVisibleChildren:function(a){if(!this.isXType("headercontainer")){a.result=false;return false}if(this.query(">:not([hidden])").length>1){return false}},hide:function(c){var j=this,e=j.getOwnerHeaderCt(),b=j.ownerCt,a,k,h,g,d;if(!j.isVisible()){return j}if(!e){j.callParent();return j}if(e.forceFit){j.visibleSiblingCount=e.getVisibleGridColumns().length-1;if(j.flex){j.savedWidth=j.getWidth();j.flex=null}}a=b.isGroupHeader;if(a&&!c){h=b.query(">:not([hidden])");if(h.length===1&&h[0]==j){j.ownerCt.hide();return}}Ext.suspendLayouts();if(j.isGroupHeader){h=j.items.items;for(d=0,g=h.length;dk.view.el.dom.clientHeight?Ext.getScrollbarSize().width:0);if(k.forceFit){m=Ext.ComponentQuery.query(":not([flex])",k.getVisibleGridColumns());if(m.length){n.width=n.savedWidth||n.width||p}else{m=k.getVisibleGridColumns();l=m.length;c=n.visibleSiblingCount;b=(n.savedWidth||n.width||p);b=Math.min(b*(c/l),p,Math.max(a-(l*p),p));n.width=null;n.flex=b;a-=b;e=0;for(j=0;jActions",sortable:false,innerCls:Ext.baseCSSPrefix+"grid-cell-inner-action-col",constructor:function(d){var g=this,b=Ext.apply({},d),c=b.items||g.items||[g],h,e,a;g.origRenderer=b.renderer||g.renderer;g.origScope=b.scope||g.scope;g.renderer=g.scope=b.renderer=b.scope=null;b.items=null;g.callParent([b]);g.items=c;for(e=0,a=c.length;e"}return j},enableAction:function(b,a){var c=this;if(!b){b=0}else{if(!Ext.isNumber(b)){b=Ext.Array.indexOf(c.items,b)}}c.items[b].disabled=false;c.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"action-col-"+b).removeCls(c.disabledCls);if(!a){c.fireEvent("enable",c)}},disableAction:function(b,a){var c=this;if(!b){b=0}else{if(!Ext.isNumber(b)){b=Ext.Array.indexOf(c.items,b)}}c.items[b].disabled=true;c.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"action-col-"+b).addCls(c.disabledCls);if(!a){c.fireEvent("disable",c)}},destroy:function(){delete this.items;delete this.renderer;return this.callParent(arguments)},processEvent:function(k,n,p,b,l,h,d,r){var j=this,g=h.getTarget(),c,q,m,o=k=="keydown"&&h.getKey(),a;if(o&&!Ext.fly(g).findParent(n.getCellSelector())){g=Ext.fly(p).down("."+Ext.baseCSSPrefix+"action-col-icon",true)}if(g&&(c=g.className.match(j.actionIdRe))){q=j.items[parseInt(c[1],10)];a=q.disabled||(q.isDisabled?q.isDisabled.call(q.scope||j.origScope||j,n,b,l,q,d):false);if(q&&!a){if(k=="click"||(o==h.ENTER||o==h.SPACE)){m=q.handler||j.handler;if(m){m.call(q.scope||j.origScope||j,n,b,l,q,h,d,r)}}else{if(k=="mousedown"&&q.stopSelection!==false){return false}}}}return j.callParent(arguments)},cascade:function(b,a){b.call(a||this,this)},getRefItems:function(){return[]}},1,["actioncolumn"],["component","gridcolumn","container","actioncolumn","box","headercontainer"],{component:true,gridcolumn:true,container:true,actioncolumn:true,box:true,headercontainer:true},["widget.actioncolumn"],0,[Ext.grid.column,"Action",Ext.grid,"ActionColumn"],0));(Ext.cmd.derive("Ext.grid.column.Boolean",Ext.grid.column.Column,{alternateClassName:"Ext.grid.BooleanColumn",trueText:"true",falseText:"false",undefinedText:" ",defaultRenderer:function(a){if(a===undefined){return this.undefinedText}if(!a||a==="false"){return this.falseText}return this.trueText}},0,["booleancolumn"],["booleancolumn","component","gridcolumn","container","box","headercontainer"],{booleancolumn:true,component:true,gridcolumn:true,container:true,box:true,headercontainer:true},["widget.booleancolumn"],0,[Ext.grid.column,"Boolean",Ext.grid,"BooleanColumn"],0));(Ext.cmd.derive("Ext.grid.column.CheckColumn",Ext.grid.column.Column,{alternateClassName:"Ext.ux.CheckColumn",align:"center",stopSelection:true,tdCls:Ext.baseCSSPrefix+"grid-cell-checkcolumn",innerCls:Ext.baseCSSPrefix+"grid-cell-inner-checkcolumn",clickTargetName:"el",constructor:function(){this.addEvents("beforecheckchange","checkchange");this.scope=this;this.callParent(arguments)},processEvent:function(h,k,o,b,j,d,c,p){var g=this,n=h==="keydown"&&d.getKey(),a=h=="mousedown";if(!g.disabled&&(a||(n==d.ENTER||n==d.SPACE))){var l=g.dataIndex,m=!c.get(l);if(g.fireEvent("beforecheckchange",g,b,m)!==false){c.set(l,m);g.fireEvent("checkchange",g,b,m);if(a){d.stopEvent()}if(!g.stopSelection){k.selModel.selectByPosition({row:b,column:j})}return false}else{return !g.stopSelection}}else{return g.callParent(arguments)}},onEnable:function(a){var b=this;b.callParent(arguments);b.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"grid-cell-"+b.id).removeCls(b.disabledCls);if(!a){b.fireEvent("enable",b)}},onDisable:function(a){var b=this;b.callParent(arguments);b.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"grid-cell-"+b.id).addCls(b.disabledCls);if(!a){b.fireEvent("disable",b)}},renderer:function(b,c){var d=Ext.baseCSSPrefix,a=[d+"grid-checkcolumn"];if(this.disabled){c.tdCls+=" "+this.disabledCls}if(b){a.push(d+"grid-checkcolumn-checked")}return''}},1,["checkcolumn"],["checkcolumn","component","gridcolumn","container","box","headercontainer"],{checkcolumn:true,component:true,gridcolumn:true,container:true,box:true,headercontainer:true},["widget.checkcolumn"],0,[Ext.grid.column,"CheckColumn",Ext.ux,"CheckColumn"],0));(Ext.cmd.derive("Ext.grid.column.Date",Ext.grid.column.Column,{alternateClassName:"Ext.grid.DateColumn",initComponent:function(){if(!this.format){this.format=Ext.Date.defaultFormat}this.callParent(arguments)},defaultRenderer:function(a){return Ext.util.Format.date(a,this.format)}},0,["datecolumn"],["component","gridcolumn","container","datecolumn","box","headercontainer"],{component:true,gridcolumn:true,container:true,datecolumn:true,box:true,headercontainer:true},["widget.datecolumn"],0,[Ext.grid.column,"Date",Ext.grid,"DateColumn"],0));(Ext.cmd.derive("Ext.grid.column.Number",Ext.grid.column.Column,{alternateClassName:"Ext.grid.NumberColumn",format:"0,000.00",defaultRenderer:function(a){return Ext.util.Format.number(a,this.format)}},0,["numbercolumn"],["component","gridcolumn","container","box","headercontainer","numbercolumn"],{component:true,gridcolumn:true,container:true,box:true,headercontainer:true,numbercolumn:true},["widget.numbercolumn"],0,[Ext.grid.column,"Number",Ext.grid,"NumberColumn"],0));(Ext.cmd.derive("Ext.grid.column.RowNumberer",Ext.grid.column.Column,{alternateClassName:"Ext.grid.RowNumberer",text:" ",width:23,sortable:false,draggable:false,autoLock:true,lockable:false,align:"right",constructor:function(a){var b=this;b.width=b.width;b.callParent(arguments);b.scope=b},resizable:false,hideable:false,menuDisabled:true,dataIndex:"",cls:Ext.baseCSSPrefix+"row-numberer",tdCls:Ext.baseCSSPrefix+"grid-cell-row-numberer "+Ext.baseCSSPrefix+"grid-cell-special",innerCls:Ext.baseCSSPrefix+"grid-cell-inner-row-numberer",rowspan:undefined,renderer:function(h,a,e,b,d,j){var c=this.rowspan,g=j.currentPage,k=e.index;if(c){a.tdAttr='rowspan="'+c+'"'}if(k==null){k=b;if(g>1){k+=(g-1)*j.pageSize}}return k+1}},1,["rownumberer"],["rownumberer","component","gridcolumn","container","box","headercontainer"],{rownumberer:true,component:true,gridcolumn:true,container:true,box:true,headercontainer:true},["widget.rownumberer"],0,[Ext.grid.column,"RowNumberer",Ext.grid,"RowNumberer"],0));(Ext.cmd.derive("Ext.grid.column.Template",Ext.grid.column.Column,{alternateClassName:"Ext.grid.TemplateColumn",initComponent:function(){var a=this;a.tpl=(!Ext.isPrimitive(a.tpl)&&a.tpl.compile)?a.tpl:new Ext.XTemplate(a.tpl);a.hasCustomRenderer=true;a.callParent(arguments)},defaultRenderer:function(c,d,a){var b=Ext.apply({},a.data,a.getAssociatedData());return this.tpl.apply(b)}},0,["templatecolumn"],["templatecolumn","component","gridcolumn","container","box","headercontainer"],{templatecolumn:true,component:true,gridcolumn:true,container:true,box:true,headercontainer:true},["widget.templatecolumn"],0,[Ext.grid.column,"Template",Ext.grid,"TemplateColumn"],0));(Ext.cmd.derive("Ext.grid.feature.Feature",Ext.util.Observable,{wrapsItem:false,isFeature:true,disabled:false,hasFeatureEvent:true,eventPrefix:null,eventSelector:null,view:null,grid:null,constructor:function(a){this.initialConfig=a;this.callParent(arguments)},clone:function(){return new this.self(this.initialConfig)},init:Ext.emptyFn,destroy:function(){this.clearListeners()},getFireEventArgs:function(b,a,c,d){return[b,a,c,d]},vetoEvent:Ext.emptyFn,enable:function(){this.disabled=false},disable:function(){this.disabled=true}},1,0,0,0,["feature.feature"],0,[Ext.grid.feature,"Feature"],0));(Ext.cmd.derive("Ext.grid.feature.AbstractSummary",Ext.grid.feature.Feature,{summaryRowCls:Ext.baseCSSPrefix+"grid-row-summary",summaryTableCls:Ext.plainTableCls+" "+Ext.baseCSSPrefix+"grid-table",summaryRowSelector:"."+Ext.baseCSSPrefix+"grid-row-summary",summaryRowTpl:{before:function(a,b){if(a.record.isSummary){this.summaryFeature.outputSummaryRecord(a.record,a,b);return false}},priority:1000},showSummaryRow:true,init:function(){var a=this;a.view.summaryFeature=a;a.rowTpl=a.view.self.prototype.rowTpl;a.view.addRowTpl(a.summaryRowTpl).summaryFeature=a},toggleSummaryRow:function(a){this.showSummaryRow=!!a},outputSummaryRecord:function(g,l,d){var h=l.view,a=h.rowValues,c=l.columns||h.headerCt.getVisibleGridColumns(),k=c.length,e,b,j={view:h,record:g,rowStyle:"",rowClasses:[this.summaryRowCls],itemClasses:[],recordIndex:-1,rowId:h.getRowId(g),columns:c};for(e=0;e',' '+Ext.baseCSSPrefix+'grid-group-row">','','',"{%",'var groupTitleStyle = (!values.view.lockingPartner || (values.view.ownerCt === values.view.ownerCt.ownerLockable.lockedGrid) || (values.view.lockingPartner.headerCt.getVisibleGridColumns().length === 0)) ? "" : "visibility:hidden";',"%}",'
    ','
    ','{[values.groupHeaderTpl.apply(values.groupInfo, parent) || " "]}',"
    ","
    ","
    ",'',' ',Ext.baseCSSPrefix,'grid-table-summary"','border="0" cellspacing="0" cellpadding="0" style="width:100%">',"{[values.view.renderColumnSizer(out)]}",'',"{%","values.itemClasses.length = 0;","this.nextTpl.applyOut(values, out, parent);","%}","",'',"{%me.outputSummaryRecord(values.summaryRecord, values, out);%}","","
    ","
    ","","","","{%this.nextTpl.applyOut(values, out, parent);%}","",{priority:200,syncRowHeights:function(d,k){d=Ext.fly(d,"syncDest");k=Ext.fly(k,"sycSrc");var b=this.owner,e=d.down(b.eventSelector,true),g,h=d.down(b.summaryRowSelector,true),c,a,j;if(e&&(g=k.down(b.eventSelector,true))){e.style.height=g.style.height="";if((a=e.offsetHeight)>(j=g.offsetHeight)){Ext.fly(g).setHeight(a)}else{if(j>a){Ext.fly(e).setHeight(j)}}}if(h&&(c=k.down(b.summaryRowSelector,true))){h.style.height=c.style.height="";if((a=h.offsetHeight)>(j=c.offsetHeight)){Ext.fly(c).setHeight(a)}else{if(j>a){Ext.fly(h).setHeight(j)}}}},syncContent:function(b,h){b=Ext.fly(b,"syncDest");h=Ext.fly(h,"sycSrc");var a=this.owner,d=b.down(a.eventSelector,true),c=h.down(a.eventSelector,true),g=b.down(a.summaryRowSelector,true),e=h.down(a.summaryRowSelector,true);if(d&&c){Ext.fly(d).syncContent(c)}if(g&&e){Ext.fly(g).syncContent(e)}}}],constructor:function(){this.groupCache={};this.callParent(arguments)},init:function(b){var c=this,a=c.view;a.isGrouping=true;if(c.lockingPartner&&c.lockingPartner.groupCache){c.groupCache=c.lockingPartner.groupCache}c.mixins.summary.init.call(c);c.callParent(arguments);a.headerCt.on({columnhide:c.onColumnHideShow,columnshow:c.onColumnHideShow,columnmove:c.onColumnMove,scope:c});a.addTableTpl(c.tableTpl).groupingFeature=c;a.addRowTpl(Ext.XTemplate.getTpl(c,"groupTpl")).groupingFeature=c;a.preserveScrollOnRefresh=true;if(a.store.buffered){c.collapsible=false}else{if(this.lockingPartner&&this.lockingPartner.dataSource){c.dataSource=a.dataSource=this.lockingPartner.dataSource}else{c.dataSource=a.dataSource=new Ext.grid.feature.GroupStore(c,a.store)}}c.grid.on({reconfigure:c.onReconfigure});a.on({afterrender:c.afterViewRender,scope:c,single:true})},clearGroupCache:function(){var b=this,a=b.groupCache={};if(b.lockingPartner){b.lockingPartner.groupCache=a}return a},vetoEvent:function(a,c,d,b){if(b.type!=="mouseover"&&b.type!=="mouseout"&&b.type!=="mouseenter"&&b.type!=="mouseleave"&&b.getTarget(this.eventSelector)){return false}},enable:function(){var c=this,a=c.view,b=a.store,d;c.lastGroupField=c.getGroupField();a.isGrouping=true;if(c.lastGroupIndex){c.block();b.group(c.lastGroupIndex);c.unblock()}c.callParent();d=c.view.headerCt.getMenu().down("#groupToggleMenuItem");if(d){d.setChecked(true,true)}c.refreshIf()},disable:function(){var d=this,a=d.view,b=a.store,e,c;a.isGrouping=false;c=b.groupers.first();if(c){d.lastGroupIndex=c.property;d.block();b.clearGrouping();d.unblock()}d.callParent();e=d.view.headerCt.getMenu().down("#groupToggleMenuItem");if(e){e.setChecked(false,true)}d.refreshIf()},refreshIf:function(){var b=this.grid.ownerCt,a=this.view;if(!a.store.remoteGroup&&!this.blockRefresh){if(b&&b.lockable){b.view.refresh()}else{a.refresh()}}},afterViewRender:function(){var b=this,a=b.view;a.on({scope:b,groupclick:b.onGroupClick});if(b.enableGroupingMenu){b.injectGroupingMenu()}b.pruneGroupedHeader();b.lastGroupField=b.getGroupField();b.block();b.onGroupChange();b.unblock()},injectGroupingMenu:function(){var a=this,b=a.view.headerCt;b.showMenuBy=a.showMenuBy;b.getMenuItems=a.getMenuItems()},onColumnHideShow:function(c,g){var k=this.view,b=k.headerCt,a=b.getMenu(),e=a.down("#groupMenuItem"),l=b.getGridColumns().length,j,h,d;if(e){if(b.getVisibleGridColumns().length>1){e.enable()}else{e.disable()}}if(k.rendered){j=k.el.query("."+this.ctCls);for(d=0,h=j.length;d','','
    {rowBody}
    ',"","",{priority:100,syncRowHeights:function(g,c){var a=this.owner,b=Ext.fly(g).down(a.eventSelector,true),h,d,e;if(b&&(h=Ext.fly(c).down(a.eventSelector,true))){if((d=b.offsetHeight)>(e=h.offsetHeight)){Ext.fly(h).setHeight(d)}else{if(e>d){Ext.fly(b).setHeight(e)}}}},syncContent:function(b,e){var a=this.owner,c=Ext.fly(b).down(a.eventSelector,true),d;if(c&&(d=Ext.fly(e).down(a.eventSelector,true))){Ext.fly(c).syncContent(d)}}}],init:function(b){var c=this,a=c.view;a.rowBodyFeature=c;if(!a.findFeature("rowwrap")){b.mon(a,{element:"el",mousedown:c.onMouseDown,scope:c});c.mon(b.getStore(),"remove",c.onStoreRemove,c)}a.headerCt.on({columnschanged:c.onColumnsChanged,scope:c});a.addTableTpl(c.tableTpl).rowBody=c;a.addRowTpl(Ext.XTemplate.getTpl(this,"extraRowTpl"));c.callParent(arguments)},onStoreRemove:function(b,d,c){var a=this.view,e;if(a.rendered){e=a.getNode(c);if(e){e=Ext.fly(e).next(this.eventSelector);if(e){e.remove()}}}},onMouseDown:function(c){var b=this,a=c.getTarget(b.eventSelector);if(a&&Ext.fly(a=a.previousSibling).is(b.view.getItemSelector())){c.target=a;b.view.handleEvent(c)}},getSelectedRow:function(a,c){var b=a.getNode(c,false);if(b){return Ext.fly(b).down(this.eventSelector)}return null},onColumnsChanged:function(d){var b=this.view.el.query(this.rowBodyTdSelector),e=d.getVisibleGridColumns().length,a=b.length,c;for(c=0;c','','',"{[values.view.renderColumnSizer(out)]}","{%","values.itemClasses.length = 0;","this.nextTpl.applyOut(values, out, parent)","%}","
    ","","",{priority:200}],init:function(a){var b=this;b.view.addTableTpl(b.tableTpl);b.view.addRowTpl(Ext.XTemplate.getTpl(b,"wrapTpl"));b.view.headerCt.on({columnhide:b.onColumnHideShow,columnshow:b.onColumnHideShow,scope:b})},onColumnHideShow:function(){var b=this.view,c=b.el.query(this.rowWrapTd),e=b.headerCt.getVisibleGridColumns().length,a=c.length,d;for(d=0;d','','',"
    ",""],style:"overflow:hidden",itemId:"summaryBar",cls:[c.dockedSummaryCls,c.dockedSummaryCls+"-"+c.dock],xtype:"component",dock:c.dock,weight:10000000})[0]},afterrender:function(){b.body.addCls(c.panelBodyCls+c.dock);a.mon(a.el,{scroll:c.onViewScroll,scope:c});c.onStoreUpdate()},single:true});b.headerCt.afterComponentLayout=Ext.Function.createSequence(b.headerCt.afterComponentLayout,function(){c.summaryBar.innerCt.setWidth(this.getFullWidth()+Ext.getScrollbarSize().width)})}else{c.view.addFooterFn(c.renderTFoot)}b.on({columnmove:c.onStoreUpdate,scope:c});a.mon(a.store,{update:c.onStoreUpdate,datachanged:c.onStoreUpdate,scope:c})},renderTFoot:function(b,c){var a=b.view,d=a.findFeature("summary");if(d.showSummaryRow){c.push("");d.outputSummaryRecord(d.createSummaryRecord(a),b,c);c.push("")}},vetoEvent:function(a,c,d,b){return !b.getTarget(this.summaryRowSelector)},onViewScroll:function(){this.summaryBar.el.dom.scrollLeft=this.view.el.dom.scrollLeft},createSummaryRecord:function(a){var d=a.headerCt.getVisibleGridColumns(),h={records:a.store.getRange()},g=d.length,c,e,b=this.summaryRecord||(this.summaryRecord=new a.store.model(null,a.id+"-summary-record"));b.beginEdit();for(c=0;c>#normalHeaderCt",items:j},g={itemId:"normalHeaderCt",stretchMaxPartner:"^^>>#lockedHeaderCt",items:d},l={lockedWidth:0,locked:a,normal:g};if(Ext.isObject(c)){Ext.applyIf(a,c);Ext.applyIf(g,c);Ext.apply(k,c);c=c.items}for(e=0,h=c.length;ea.clientWidth){d=0}b.el.dom.style.borderBottomWidth=d+"px";if(!Ext.isBorderBox){b.el.setHeight(b.lastBox.height)}},onLockedViewMouseWheel:function(j){var d=this,h=-d.scrollDelta,a=h*j.getWheelDeltas().y,b=d.lockedGrid.getView().el.dom,c,g;if(!d.ignoreMousewheel){if(b){c=b.scrollTop!==b.scrollHeight-b.clientHeight;g=b.scrollTop!==0}if((a<0&&g)||(a>0&&c)){j.stopEvent();b.scrollTop+=a;d.normalGrid.getView().el.dom.scrollTop=b.scrollTop;d.onNormalViewScroll()}}},onLockedViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),h=c.el.dom,g=d.el.dom,a,b;if(h.scrollTop!==g.scrollTop){h.scrollTop=g.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);a.style.position="absolute";a.style.top=b.style.top}}},onNormalViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),h=c.el.dom,g=d.el.dom,a,b;if(h.scrollTop!==g.scrollTop){g.scrollTop=h.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);b.style.position="absolute";b.style.top=a.style.top}}},syncRowHeights:function(){var e=this,a,d=e.lockedGrid.getView(),b=e.normalGrid.getView(),g=d.all.slice(),j=b.all.slice(),c=g.length,h;if(j.length===c){for(a=0;a','
    ','',h.join(""),"
    ","
    ",""].join("")},"after");return{record:a,node:e,el:d,expanding:false,collapsing:false,animating:false,animateEl:d.down("div"),targetEl:d.down("tbody")}},getAnimWrap:function(d,a){if(!this.animate){return null}var b=this.animWraps,c=b[d.internalId];if(a!==false){while(!c&&d){d=d.parentNode;if(d){c=b[d.internalId]}}}return c},doAdd:function(c,h){var j=this,a=j.bufferRender(c,h,true),e=c[0],k=e.parentNode,l=j.all,n,d=j.getAnimWrap(k),m,b,g;if(!d||!d.expanding){return j.callParent(arguments)}k=d.record;m=d.targetEl;b=m.dom.childNodes;g=b.length;n=h-j.indexInStore(k)-1;if(!g||n>=g){m.appendChild(a)}else{Ext.fly(b[n]).insertSibling(a,"before",true)}l.insert(h,a);if(d.isAnimating){j.onExpand(k)}},onRemove:function(g,a,b){var d=this,e,c;if(d.viewReady){e=d.store.getCount()===0;if(e){d.refresh()}else{for(c=b.length-1;c>=0;--c){d.doRemove(a[c],b[c])}}if(d.hasListeners.itemremove){for(c=b.length-1;c>=0;--c){d.fireEvent("itemremove",a[c],b[c])}}}},doRemove:function(a,c){var h=this,d=h.all,b=h.getAnimWrap(a),g=d.item(c),e=g?g.dom:null;if(!e||!b||!b.collapsing){return h.callParent(arguments)}b.targetEl.dom.insertBefore(e,b.targetEl.dom.firstChild);d.removeElement(c)},onBeforeExpand:function(d,b,c){var e=this,a;if(e.rendered&&e.all.getCount()&&e.animate){if(e.getNode(d)){a=e.getAnimWrap(d,false);if(!a){a=e.animWraps[d.internalId]=e.createAnimWrap(d);a.animateEl.setHeight(0)}else{if(a.collapsing){a.targetEl.select(e.itemSelector).remove()}}a.expanding=true;a.collapsing=false}}},onExpand:function(k){var j=this,g=j.animQueue,a=k.getId(),c=j.getNode(k),h=c?j.indexOf(c):-1,e,b,l,d=Ext.isIEQuirks?1:0;if(j.singleExpand){j.ensureSingleExpand(k)}if(h===-1){return}e=j.getAnimWrap(k,false);if(!e){k.isExpandingOrCollapsing=false;j.fireEvent("afteritemexpand",k,h,c);j.refreshSize();return}b=e.animateEl;l=e.targetEl;b.stopAnimation();g[a]=true;b.dom.style.height=d+"px";b.animate({from:{height:d},to:{height:l.getHeight()},duration:j.expandDuration,listeners:{afteranimate:function(){var m=l.query(j.itemSelector);if(m.length){e.el.insertSibling(m,"before",true)}e.el.remove();j.refreshSize();delete j.animWraps[e.record.internalId];delete g[a]}},callback:function(){k.isExpandingOrCollapsing=false;j.fireEvent("afteritemexpand",k,h,c)}});e.isAnimating=true},onBeforeCollapse:function(e,b,c,h,d){var g=this,a;if(g.rendered&&g.all.getCount()){if(g.animate){if(Ext.Array.contains(e.stores,g.store)){a=g.getAnimWrap(e);if(!a){a=g.animWraps[e.internalId]=g.createAnimWrap(e,c)}else{if(a.expanding){a.targetEl.select(this.itemSelector).remove()}}a.expanding=false;a.collapsing=true;a.callback=h;a.scope=d}}else{g.onCollapseCallback=h;g.onCollapseScope=d}}},onCollapse:function(d){var g=this,a=g.animQueue,j=d.getId(),e=g.getNode(d),c=e?g.indexOf(e):-1,b=g.getAnimWrap(d),h;if(!g.all.getCount()||!Ext.Array.contains(d.stores,g.store)){return}if(!b){d.isExpandingOrCollapsing=false;g.fireEvent("afteritemcollapse",d,c,e);g.refreshSize();Ext.callback(g.onCollapseCallback,g.onCollapseScope);g.onCollapseCallback=g.onCollapseScope=null;return}h=b.animateEl;a[j]=true;h.stopAnimation();h.animate({to:{height:Ext.isIEQuirks?1:0},duration:g.collapseDuration,listeners:{afteranimate:function(){b.el.remove();g.refreshSize();delete g.animWraps[b.record.internalId];delete a[j]}},callback:function(){d.isExpandingOrCollapsing=false;g.fireEvent("afteritemcollapse",d,c,e);Ext.callback(b.callback,b.scope);b.callback=b.scope=null}});b.isAnimating=true},isAnimating:function(a){return !!this.animQueue[a.getId()]},expand:function(d,c,h,e){var g=this,b=!!g.animate,a;if(!b||!d.isExpandingOrCollapsing){if(!d.isLeaf()){d.isExpandingOrCollapsing=b}Ext.suspendLayouts();a=d.expand(c,h,e);Ext.resumeLayouts(true);return a}},collapse:function(c,b,g,d){var e=this,a=!!e.animate;if(!a||!c.isExpandingOrCollapsing){if(!c.isLeaf()){c.isExpandingOrCollapsing=a}return c.collapse(b,g,d)}},toggle:function(b,a,d,c){if(b.isExpanded()){this.collapse(b,a,d,c)}else{this.expand(b,a,d,c)}},onItemDblClick:function(a,e,c){var d=this,b=d.editingPlugin;d.callParent(arguments);if(d.toggleOnDblClick&&a.isExpandable()&&!(b&&b.clicksToEdit===2)){d.toggle(a)}},onBeforeItemMouseDown:function(a,c,b,d){if(d.getTarget(this.expanderSelector,c)){return false}return this.callParent(arguments)},onItemClick:function(a,c,b,d){if(d.getTarget(this.expanderSelector,c)&&a.isExpandable()){this.toggle(a,d.ctrlKey);return false}return this.callParent(arguments)},onExpanderMouseOver:function(b,a){b.getTarget(this.cellSelector,10,true).addCls(this.expanderIconOverCls)},onExpanderMouseOut:function(b,a){b.getTarget(this.cellSelector,10,true).removeCls(this.expanderIconOverCls)},getStoreListeners:function(){var b=this,a=b.callParent(arguments);return Ext.apply(a,{beforeexpand:b.onBeforeExpand,expand:b.onExpand,beforecollapse:b.onBeforeCollapse,collapse:b.onCollapse,write:b.onStoreWrite,datachanged:b.onStoreDataChanged})},onBindStore:function(){var a=this,b=a.getTreeStore();a.callParent(arguments);a.mon(b,{scope:a,beforefill:a.onBeforeFill,fillcomplete:a.onFillComplete});if(!b.remoteSort){a.mon(b,{scope:a,beforesort:a.onBeforeSort,sort:a.onSort})}},onUnbindStore:function(){var a=this,b=a.getTreeStore();a.callParent(arguments);a.mun(b,{scope:a,beforefill:a.onBeforeFill,fillcomplete:a.onFillComplete});if(!b.remoteSort){a.mun(b,{scope:a,beforesort:a.onBeforeSort,sort:a.onSort})}},getTreeStore:function(){return this.panel.store},ensureSingleExpand:function(b){var a=b.parentNode;if(a){a.eachChild(function(c){if(c!==b&&c.isExpanded()){c.collapse()}})}},shouldUpdateCell:function(b,e,d){if(d){var c=0,a=d.length;for(;c0?1:-1;if(Math.abs(c)>=20||(a!==g.lastScrollDirection)){g.lastScrollDirection=a;g.handleViewScroll(g.lastScrollDirection);h=true}}if(!h){if(g.lockingPartner&&g.lockingPartner.scrollTop!==b){g.lockingPartner.view.el.dom.scrollTop=b}}},handleViewScroll:function(h){var e=this,g=e.view.all,b=e.store,j=e.viewSize,a=(b.buffered?b.getTotalCount():b.getCount()),d,c;if(h==-1){if(g.startIndex){if((e.getFirstVisibleRowIndex()-g.startIndex)o.endIndex||eo.endIndex){a=Math.max(b-o.startIndex,0);if(k.variableRowHeight){n=o.item(o.startIndex+a,true).offsetTop}o.scroll(Ext.Array.slice(h,o.endIndex+1-b),1,a,b,e);if(k.variableRowHeight){l=k.bodyTop+n}else{l=g}}else{a=Math.max(o.endIndex-e,0);d=o.startIndex;o.scroll(Ext.Array.slice(h,0,o.startIndex-b),-1,a,b,e);if(k.variableRowHeight){l=k.bodyTop-o.item(d,true).offsetTop}else{l=g}}}k.position=k.scrollTop;if(m.positionBody){k.setBodyTop(l,g)}if(j&&!j.disabled&&!c){j.onRangeFetched(h,b,e,true);if(j.scrollTop!==k.scrollTop){j.view.el.dom.scrollTop=k.scrollTop}}},setBodyTop:function(d,g){var e=this,b=e.view,c=e.store,a=b.body.dom,h;d=Math.floor(d);if(g!==undefined){h=d-g;d=g}a.style.position="absolute";a.style.top=(e.bodyTop=d)+"px";if(h){e.scrollTop=e.position=b.el.dom.scrollTop-=h}if(b.all.endIndex===(c.buffered?c.getTotalCount():c.getCount())-1){e.stretchView(b,e.bodyTop+a.offsetHeight)}},getFirstVisibleRowIndex:function(k,c,b,g){var h=this,j=h.view,m=j.all,a=m.elements,d=j.el.dom.clientHeight,e,l;if(m.getCount()&&h.variableRowHeight){if(!arguments.length){k=m.startIndex;c=m.endIndex;b=h.scrollTop;g=b+d;if(h.bodyTop>g||h.bodyTop+j.body.getHeight()g||j.bodyTop+k.body.getHeight()g){return j.getLastVisibleRowIndex(l,e-1,b,g)}h=m+a[e].offsetHeight;if(h>=g){return e}else{if(e!==c){return j.getLastVisibleRowIndex(e+1,c,b,g)}}}return j.getFirstVisibleRowIndex()+Math.ceil(d/j.rowHeight)},getScrollHeight:function(){var d=this,a=d.view,b=d.store,c=!d.hasOwnProperty("rowHeight"),e=d.store.getCount();if(!e){return 0}if(c){if(a.all.getCount()){d.rowHeight=Math.floor(a.body.getHeight()/a.all.getCount())}}return this.scrollHeight=Math.floor((b.buffered?b.getTotalCount():b.getCount())*d.rowHeight)},attemptLoad:function(c,a){var b=this;if(b.scrollToLoadBuffer){if(!b.loadTask){b.loadTask=new Ext.util.DelayedTask(b.doAttemptLoad,b,[])}b.loadTask.delay(b.scrollToLoadBuffer,b.doAttemptLoad,b,[c,a])}else{b.store.getRange(c,a,{callback:b.onRangeFetched,scope:b,fireEvent:false})}},cancelLoad:function(){if(this.loadTask){this.loadTask.cancel()}},doAttemptLoad:function(b,a){this.store.getRange(b,a,{callback:this.onRangeFetched,scope:this,fireEvent:false})},destroy:function(){var b=this,a=b.view;if(a&&a.el){a.el.un("scroll",b.onViewScroll,b)}Ext.destroy(b.viewListeners,b.storeListeners,b.gridListeners)}},0,0,0,0,["plugin.bufferedrenderer"],0,[Ext.grid.plugin,"BufferedRenderer"],0));(Ext.cmd.derive("Ext.grid.plugin.Editing",Ext.AbstractPlugin,{clicksToEdit:2,triggerEvent:undefined,relayedEvents:["beforeedit","edit","validateedit","canceledit"],defaultFieldXType:"textfield",editStyle:"",constructor:function(a){var b=this;b.addEvents("beforeedit","edit","validateedit","canceledit");b.callParent(arguments);b.mixins.observable.constructor.call(b);b.on("edit",function(c,d){b.fireEvent("afteredit",c,d)})},init:function(a){var b=this;b.grid=a;b.view=a.view;b.initEvents();b.mon(a,{reconfigure:b.onReconfigure,scope:b,beforerender:{fn:b.onReconfigure,single:true,scope:b}});a.relayEvents(b,b.relayedEvents);if(b.grid.ownerLockable){b.grid.ownerLockable.relayEvents(b,b.relayedEvents)}a.isEditable=true;a.editingPlugin=a.view.editingPlugin=b},onReconfigure:function(){var a=this.grid;a=a.ownerLockable?a.ownerLockable:a;this.initFieldAccessors(a.getView().getGridColumns())},destroy:function(){var b=this,a=b.grid;Ext.destroy(b.keyNav);b.clearListeners();if(a){b.removeFieldAccessors(a.columnManager.getColumns());a.editingPlugin=a.view.editingPlugin=b.grid=b.view=b.editor=b.keyNav=null}},getEditStyle:function(){return this.editStyle},initFieldAccessors:function(a){if(a.isGroupHeader){a=a.getGridColumns()}else{if(!Ext.isArray(a)){a=[a]}}var d=this,g,e=a.length,b;for(g=0;g',"{%","values.view.renderRows(values.rows, values.viewStartIndex, out);","%}","",{priority:0}],rowTpl:["{%",'var dataRowCls = values.recordIndex === -1 ? "" : " '+Ext.baseCSSPrefix+'grid-data-row";',"%}",'
    ",'{%',"parent.view.renderCell(values, parent.record, parent.recordIndex, xindex - 1, out, parent)","%}","","
    ",{priority:0}],cellTpl:['
    ','
    {style}">{value}
    ',"
    ",{priority:0}],selectors:{bodySelector:"div",nodeContainerSelector:"div",itemSelector:"dl."+Ext.baseCSSPrefix+"grid-row",dataRowSelector:"dl."+Ext.baseCSSPrefix+"grid-data-row",cellSelector:"dt."+Ext.baseCSSPrefix+"grid-cell",innerSelector:"div."+Ext.baseCSSPrefix+"grid-cell-inner",getNodeContainerSelector:function(){return this.getBodySelector()},getNodeContainer:function(){return this.el.getById(this.id+"-table",true)}},init:function(b){var a=b.getView();a.tableTpl=Ext.XTemplate.getTpl(this,"tableTpl");a.rowTpl=Ext.XTemplate.getTpl(this,"rowTpl");a.cellTpl=Ext.XTemplate.getTpl(this,"cellTpl");Ext.apply(a,this.selectors)}},0,0,0,0,["plugin.divrenderer"],0,[Ext.grid.plugin,"DivRenderer"],0));(Ext.cmd.derive("Ext.grid.plugin.DragDrop",Ext.AbstractPlugin,{dragText:"{0} selected row{1}",ddGroup:"GridDD",enableDrop:true,enableDrag:true,containerScroll:false,init:function(a){a.on("render",this.onViewRender,this,{single:true})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},enable:function(){var a=this;if(a.dragZone){a.dragZone.unlock()}if(a.dropZone){a.dropZone.unlock()}a.callParent()},disable:function(){var a=this;if(a.dragZone){a.dragZone.lock()}if(a.dropZone){a.dropZone.lock()}a.callParent()},onViewRender:function(a){var b=this,c;if(b.enableDrag){if(b.containerScroll){c=a.getEl()}b.dragZone=new Ext.view.DragZone({view:a,ddGroup:b.dragGroup||b.ddGroup,dragText:b.dragText,containerScroll:b.containerScroll,scrollEl:c})}if(b.enableDrop){b.dropZone=new Ext.grid.ViewDropZone({view:a,ddGroup:b.dropGroup||b.ddGroup})}}},0,0,0,0,["plugin.gridviewdragdrop"],0,[Ext.grid.plugin,"DragDrop"],0));(Ext.cmd.derive("Ext.grid.plugin.RowEditing",Ext.grid.plugin.Editing,{lockableScope:"top",editStyle:"row",autoCancel:true,errorSummary:true,constructor:function(){var a=this;a.callParent(arguments);if(!a.clicksToMoveEditor){a.clicksToMoveEditor=a.clicksToEdit}a.autoCancel=!!a.autoCancel},destroy:function(){Ext.destroy(this.editor);this.callParent(arguments)},startEdit:function(a,e){var d=this,c=d.getEditor(),b;if(c.beforeEdit()!==false){b=d.callParent(arguments);if(b){d.context=b;if(d.lockingPartner){d.lockingPartner.cancelEdit()}c.startEdit(b.record,b.column,b);return true}}return false},cancelEdit:function(){var a=this;if(a.editing){a.getEditor().cancelEdit();a.callParent(arguments);return}return true},completeEdit:function(){var a=this;if(a.editing&&a.validateEdit()){a.editing=false;a.fireEvent("edit",a,a.context)}},validateEdit:function(){var l=this,h=l.editor,b=l.context,g=b.record,n={},d={},k=h.query(">[isFormField]"),j,c=k.length,a,m;for(j=0;jg){d.style.height=b+"px"}else{if(g>b){c.style.height=g+"px"}}}}},getHeaderConfig:function(){var a=this;return{width:24,lockable:false,sortable:false,resizable:false,draggable:false,hideable:false,menuDisabled:true,tdCls:Ext.baseCSSPrefix+"grid-cell-special",innerCls:Ext.baseCSSPrefix+"grid-cell-inner-row-expander",renderer:function(c,b){if(!a.grid.ownerLockable){b.tdAttr+=' rowspan="2"'}return'
    '},processEvent:function(h,d,b,k,g,j,c){if(h=="mousedown"&&j.getTarget(".x-grid-row-expander")){a.toggleRow(k,c);return a.selectRowOnExpand}}}}},0,0,0,0,["plugin.rowexpander"],0,[Ext.grid.plugin,"RowExpander"],0));(Ext.cmd.derive("Ext.grid.property.Grid",Ext.grid.Panel,{alternateClassName:"Ext.grid.PropertyGrid",valueField:"value",nameField:"name",inferTypes:true,enableColumnMove:false,columnLines:true,stripeRows:false,trackMouseOver:false,clicksToEdit:1,enableHdMenu:false,gridCls:Ext.baseCSSPrefix+"property-grid",initComponent:function(){var a=this;a.source=a.source||{};a.addCls(a.gridCls);a.plugins=a.plugins||[];a.plugins.push(new Ext.grid.plugin.CellEditing({clicksToEdit:a.clicksToEdit,startEdit:function(b,c){return this.self.prototype.startEdit.call(this,b,a.headerCt.child("#"+a.valueField))}}));a.selModel={selType:"cellmodel",onCellSelect:function(b){if(b.column!=1){b.column=1}return this.self.prototype.onCellSelect.call(this,b)}};a.sourceConfig=Ext.apply({},a.sourceConfig);if(!a.store){a.propStore=a.store=new Ext.grid.property.Store(a,a.source)}a.configure(a.sourceConfig);if(a.sortableColumns){a.store.sort("name","ASC")}a.columns=new Ext.grid.property.HeaderContainer(a,a.store);a.addEvents("beforepropertychange","propertychange");a.callParent();a.getView().walkCells=this.walkCells;a.editors={date:new Ext.grid.CellEditor({field:new Ext.form.field.Date({selectOnFocus:true})}),string:new Ext.grid.CellEditor({field:new Ext.form.field.Text({selectOnFocus:true})}),number:new Ext.grid.CellEditor({field:new Ext.form.field.Number({selectOnFocus:true})}),"boolean":new Ext.grid.CellEditor({field:new Ext.form.field.ComboBox({editable:false,store:[[true,a.headerCt.trueText],[false,a.headerCt.falseText]]})})};a.store.on("update",a.onUpdate,a)},configure:function(b){var h=this,k=h.store,d=0,e=h.store.getCount(),l=h.nameField,m=h.valueField,a,j,c,g;h.configureLegacy(b);if(h.inferTypes){for(;d0);if(j){t.widthModel=t.heightModel=null;b=v.getSizeModel(l&&l.widthModel.pairsByHeightOrdinal[l.heightModel.ordinal]);if(h){t.sizeModel=b}t.widthModel=b.width;t.heightModel=b.height;if(l&&!t.isComponentChild){l.remainingChildDimensions+=2}}else{if(a){t.recoverProp("x",a,d);t.recoverProp("y",a,d);if(t.widthModel.calculated){t.recoverProp("width",a,d)}else{if("width" in a){++s}}if(t.heightModel.calculated){t.recoverProp("height",a,d)}else{if("height" in a){++s}}if(l&&!t.isComponentChild){l.remainingChildDimensions+=s}}}if(a&&p&&p.manageMargins){t.recoverProp("margin-top",a,d);t.recoverProp("margin-right",a,d);t.recoverProp("margin-bottom",a,d);t.recoverProp("margin-left",a,d)}if(c){k=c.heightModel;r=c.widthModel;if(r&&k&&g&&w){if(g.shrinkWrap&&w.shrinkWrap){if(r.constrainedMax&&k.constrainedMin){k=null}}}if(r){t.widthModel=r}if(k){t.heightModel=k}if(c.state){Ext.apply(t.state,c.state)}}return u},initContinue:function(e){var g=this,d=g.ownerCtContext,a=g.target,c=g.widthModel,h=a.getHierarchyState(),b;if(c.fixed){h.inShrinkWrapTable=false}else{delete h.inShrinkWrapTable}if(e){if(d&&c.shrinkWrap){b=d.isBoxParent?d:d.boxParent;if(b){b.addBoxChild(g)}}else{if(c.natural){g.boxParent=d}}}return e},initDone:function(d){var b=this,a=b.props,c=b.state;if(b.remainingChildDimensions===0){a.containerChildrenSizeDone=true}if(d){a.containerLayoutDone=true}if(b.boxChildren&&b.boxChildren.length&&b.widthModel.shrinkWrap){b.el.setWidth(10000);c.blocks=(c.blocks||0)+1}},initAnimation:function(){var b=this,c=b.target,a=b.ownerCtContext;if(a&&a.isTopLevel){b.animatePolicy=c.ownerLayout.getAnimatePolicy(b)}else{if(!a&&c.isCollapsingOrExpanding&&c.animCollapse){b.animatePolicy=c.componentLayout.getAnimatePolicy(b)}}if(b.animatePolicy){b.context.queueAnimation(b)}},addCls:function(a){this.getClassList().addMany(a)},removeCls:function(a){this.getClassList().removeMany(a)},addBlock:function(b,d,e){var c=this,g=c[b]||(c[b]={}),a=g[e]||(g[e]={});if(!a[d.id]){a[d.id]=d;++d.blockCount;++c.context.blockCount}},addBoxChild:function(d){var c=this,b,a=d.widthModel;d.boxParent=this;d.measuresBox=a.shrinkWrap?d.hasRawContent:a.natural;if(d.measuresBox){b=c.boxChildren;if(b){b.push(d)}else{c.boxChildren=[d]}}},addPositionStyles:function(d,b){var a=b.x,e=b.y,c=0;if(a!==undefined){d.left=a+"px";++c}if(e!==undefined){d.top=e+"px";++c}return c},addTrigger:function(g,h){var e=this,a=h?"domTriggers":"triggers",j=e[a]||(e[a]={}),b=e.context,d=b.currentLayout,c=j[g]||(j[g]={});if(!c[d.id]){c[d.id]=d;++d.triggerCount;c=b.triggers[h?"dom":"data"];(c[d.id]||(c[d.id]=[])).push({item:this,prop:g});if(e.props[g]!==undefined){if(!h||!(e.dirty&&(g in e.dirty))){++d.firedTriggers}}}},boxChildMeasured:function(){var b=this,c=b.state,a=(c.boxesMeasured=(c.boxesMeasured||0)+1);if(a==b.boxChildren.length){c.clearBoxWidth=1;++b.context.progressCount;b.markDirty()}},borderNames:["border-top-width","border-right-width","border-bottom-width","border-left-width"],marginNames:["margin-top","margin-right","margin-bottom","margin-left"],paddingNames:["padding-top","padding-right","padding-bottom","padding-left"],trblNames:["top","right","bottom","left"],cacheMissHandlers:{borderInfo:function(a){var b=a.getStyles(a.borderNames,a.trblNames);b.width=b.left+b.right;b.height=b.top+b.bottom;return b},marginInfo:function(a){var b=a.getStyles(a.marginNames,a.trblNames);b.width=b.left+b.right;b.height=b.top+b.bottom;return b},paddingInfo:function(b){var a=b.frameBodyContext||b,c=a.getStyles(b.paddingNames,b.trblNames);c.width=c.left+c.right;c.height=c.top+c.bottom;return c}},checkCache:function(a){return this.cacheMissHandlers[a](this)},clearAllBlocks:function(a){var c=this[a],b;if(c){for(b in c){this.clearBlocks(a,b)}}},clearBlocks:function(c,g){var h=this[c],b=h&&h[g],d,e,a;if(b){delete h[g];d=this.context;for(a in b){e=b[a];--d.blockCount;if(!--e.blockCount&&!e.pending&&!e.done){d.queueLayout(e)}}}},block:function(a,b){this.addBlock("blocks",a,b)},domBlock:function(a,b){this.addBlock("domBlocks",a,b)},fireTriggers:function(b,g){var h=this[b],d=h&&h[g],c=this.context,e,a;if(d){for(a in d){e=d[a];++e.firedTriggers;if(!e.done&&!e.blockCount&&!e.pending){c.queueLayout(e)}}}},flush:function(){var b=this,a=b.dirty,c=b.state,d=b.el;b.dirtyCount=0;if(b.classList&&b.classList.dirty){b.classList.flush()}if("attributes" in b){d.set(b.attributes);delete b.attributes}if("innerHTML" in b){d.innerHTML=b.innerHTML;delete b.innerHTML}if(c&&c.clearBoxWidth){c.clearBoxWidth=0;b.el.setStyle("width",null);if(!--c.blocks){b.context.queueItemLayouts(b)}}if(a){delete b.dirty;b.writeProps(a,true)}},flushAnimations:function(){var p=this,c=p.previousSize,m,o,e,h,g,d,k,n,l,a,b;if(c){m=p.target;o=m.layout&&m.layout.animate;if(o){e=Ext.isNumber(o)?o:o.duration}h=Ext.Object.getKeys(p.animatePolicy);g=Ext.apply({},{from:{},to:{},duration:e||Ext.fx.Anim.prototype.duration},o);for(d=0,k=0,n=h.length;k0||m>0)){if(!x.frameBodyContext){u=x.paddingInfo.width;l=x.paddingInfo.height}if(q){q=s(parseInt(q,10)-(x.borderInfo.width+u),0);j.width=q+"px";++h}if(m){m=s(parseInt(m,10)-(x.borderInfo.height+l),0);j.height=m+"px";++h}}if(x.wrapsComponent&&Ext.isIE9&&Ext.isStrict){if((g=q!==undefined&&x.hasOverflowY)||(a=m!==undefined&&x.hasOverflowX)){p=x.isAbsolute;if(p===undefined){p=false;n=x.target.getTargetEl();t=n.getStyle("position");if(t=="absolute"){t=n.getStyle("box-sizing");p=(t=="border-box")}x.isAbsolute=p}if(p){r=Ext.getScrollbarSize();if(g){q=parseInt(q,10)+r.width;j.width=q+"px";++h}if(a){m=parseInt(m,10)+r.height;j.height=m+"px";++h}}}}if(h){c.setStyle(j)}}},1,0,0,0,0,0,[Ext.layout,"ContextItem"],function(){var c={dom:true,parseInt:true,suffix:"px"},b={dom:true},a={dom:false};this.prototype.styleInfo={containerChildrenSizeDone:a,containerLayoutDone:a,displayed:a,done:a,x:a,y:a,columnWidthsDone:a,left:c,top:c,right:c,bottom:c,width:c,height:c,"border-top-width":c,"border-right-width":c,"border-bottom-width":c,"border-left-width":c,"margin-top":c,"margin-right":c,"margin-bottom":c,"margin-left":c,"padding-top":c,"padding-right":c,"padding-bottom":c,"padding-left":c,"line-height":b,display:b}}));(Ext.cmd.derive("Ext.layout.Context",Ext.Base,{remainingLayouts:0,state:0,constructor:function(a){var b=this;Ext.apply(b,a);b.items={};b.layouts={};b.blockCount=0;b.cycleCount=0;b.flushCount=0;b.calcCount=0;b.animateQueue=b.newQueue();b.completionQueue=b.newQueue();b.finalizeQueue=b.newQueue();b.finishQueue=b.newQueue();b.flushQueue=b.newQueue();b.invalidateData={};b.layoutQueue=b.newQueue();b.invalidQueue=[];b.triggers={data:{},dom:{}}},callLayout:function(b,a){this.currentLayout=b;b[a](this.getCmp(b.owner))},cancelComponent:function(j,a,m){var p=this,h=j,l=!j.isComponent,b=l?h.length:1,d,c,o,n,g,s,q,r,t,e;for(d=0;d0},runLayout:function(b){var a=this,c=a.getCmp(b.owner);b.pending=false;if(c.state.blocks){return}b.done=true;++b.calcCount;++a.calcCount;b.calculate(c);if(b.done){a.layoutDone(b);if(b.completeLayout){a.queueCompletion(b)}if(b.finalizeLayout){a.queueFinalize(b)}}else{if(!b.pending&&!b.invalid&&!(b.blockCount+b.triggerCount-b.firedTriggers)){a.queueLayout(b)}}},setItemSize:function(h,g,b){var d=h,a=1,c,e;if(h.isComposite){d=h.elements;a=d.length;h=d[0]}else{if(!h.dom&&!h.el){a=d.length;h=d[0]}}for(e=0;e0){b.insert(0,l)}}}}},getItemsRenderTree:function(a){this.beforeRenderItems(a);return this.callParent(arguments)},renderItems:function(a,b){this.beforeRenderItems(a);this.callParent(arguments)},configureItem:function(a){this.callParent(arguments);a.animCollapse=a.border=false;if(this.fill){a.flex=1}},beginLayout:function(a){this.callParent(arguments);this.updatePanelClasses(a)},updatePanelClasses:function(e){var c=e.visibleItems,d=c.length,a=true,b,h,g;for(b=0;b','
     ',"
    ",""],baseCls:Ext.baseCSSPrefix+"splitter",collapsedClsInternal:Ext.baseCSSPrefix+"splitter-collapsed",canResize:true,collapsible:false,collapseOnDblClick:true,defaultSplitMin:40,defaultSplitMax:1000,collapseTarget:"next",horizontal:false,vertical:false,size:5,getTrackerConfig:function(){return{xclass:"Ext.resizer.SplitterTracker",el:this.el,splitter:this}},beforeRender:function(){var a=this,b=a.getCollapseTarget();a.callParent();if(b.collapsed){a.addCls(a.collapsedClsInternal)}if(!a.canResize){a.addCls(a.baseCls+"-noresize")}Ext.applyIf(a.renderData,{collapseDir:a.getCollapseDirection(),collapsible:a.collapsible||b.collapsible});a.protoEl.unselectable()},onRender:function(){var b=this,a;b.callParent(arguments);if(b.performCollapse!==false){if(b.renderData.collapsible){b.mon(b.collapseEl,"click",b.toggleTargetCmp,b)}if(b.collapseOnDblClick){b.mon(b.el,"dblclick",b.toggleTargetCmp,b)}}b.mon(b.getCollapseTarget(),{collapse:b.onTargetCollapse,expand:b.onTargetExpand,beforeexpand:b.onBeforeTargetExpand,beforecollapse:b.onBeforeTargetCollapse,scope:b});if(b.canResize){b.tracker=Ext.create(b.getTrackerConfig());b.relayEvents(b.tracker,["beforedragstart","dragstart","dragend"])}a=b.collapseEl;if(a){a.lastCollapseDirCls=b.collapseDirProps[b.collapseDirection].cls}},getCollapseDirection:function(){var g=this,c=g.collapseDirection,e,a,b,d;if(!c){e=g.collapseTarget;if(e.isComponent){c=e.collapseDirection}if(!c){d=g.ownerCt.layout.type;if(e.isComponent){b=g.ownerCt.items;a=Number(b.indexOf(e)===b.indexOf(g)-1)<<1|Number(d==="hbox")}else{a=Number(g.collapseTarget==="prev")<<1|Number(d==="hbox")}c=["bottom","right","top","left"][a]}g.collapseDirection=c}g.setOrientation((c==="top"||c==="bottom")?"horizontal":"vertical");return c},getCollapseTarget:function(){var a=this;return a.collapseTarget.isComponent?a.collapseTarget:a.collapseTarget==="prev"?a.previousSibling():a.nextSibling()},setCollapseEl:function(b){var a=this.collapseEl;if(a){a.setDisplayed(b)}},onBeforeTargetExpand:function(a){this.setCollapseEl("none")},onBeforeTargetCollapse:function(){this.setCollapseEl("none")},onTargetCollapse:function(a){this.el.addCls([this.collapsedClsInternal,this.collapsedCls]);this.setCollapseEl("")},onTargetExpand:function(a){this.el.removeCls([this.collapsedClsInternal,this.collapsedCls]);this.setCollapseEl("")},collapseDirProps:{top:{cls:Ext.baseCSSPrefix+"layout-split-top"},right:{cls:Ext.baseCSSPrefix+"layout-split-right"},bottom:{cls:Ext.baseCSSPrefix+"layout-split-bottom"},left:{cls:Ext.baseCSSPrefix+"layout-split-left"}},orientationProps:{horizontal:{opposite:"vertical",fixedAxis:"height",stretchedAxis:"width"},vertical:{opposite:"horizontal",fixedAxis:"width",stretchedAxis:"height"}},applyCollapseDirection:function(){var c=this,b=c.collapseEl,d=c.collapseDirProps[c.collapseDirection],a;if(b){a=b.lastCollapseDirCls;if(a){b.removeCls(a)}b.addCls(b.lastCollapseDirCls=d.cls)}},applyOrientation:function(){var e=this,c=e.orientation,d=e.orientationProps[c],g=e.size,b=d.fixedAxis,h=d.stretchedAxis,a=e.baseCls+"-";e[c]=true;e[d.opposite]=false;if(!e.hasOwnProperty(b)||e[b]==="100%"){e[b]=g}if(!e.hasOwnProperty(h)||e[h]===g){e[h]="100%"}e.removeCls(a+d.opposite);e.addCls(a+c)},setOrientation:function(a){var b=this;if(b.orientation!==a){b.orientation=a;b.applyOrientation()}},updateOrientation:function(){delete this.collapseDirection;this.getCollapseDirection();this.applyCollapseDirection()},toggleTargetCmp:function(d,b){var c=this.getCollapseTarget(),g=c.placeholder,a;if(Ext.isFunction(c.expand)&&Ext.isFunction(c.collapse)){if(g&&!g.hidden){a=true}else{a=!c.hidden}if(a){if(c.collapsed){c.expand()}else{if(c.collapseDirection){c.collapse()}else{c.collapse(this.renderData.collapseDir)}}}}},setSize:function(){var a=this;a.callParent(arguments);if(Ext.isIE&&a.el){a.el.repaint()}},beforeDestroy:function(){Ext.destroy(this.tracker);this.callParent()}},0,["splitter"],["component","box","splitter"],{component:true,box:true,splitter:true},["widget.splitter"],0,[Ext.resizer,"Splitter"],0));(Ext.cmd.derive("Ext.resizer.BorderSplitter",Ext.resizer.Splitter,{collapseTarget:null,getTrackerConfig:function(){var a=this.callParent();a.xclass="Ext.resizer.BorderSplitterTracker";return a}},0,["bordersplitter"],["bordersplitter","component","box","splitter"],{bordersplitter:true,component:true,box:true,splitter:true},["widget.bordersplitter"],0,[Ext.resizer,"BorderSplitter"],0));(Ext.cmd.derive("Ext.layout.container.Border",Ext.layout.container.Container,{alternateClassName:"Ext.layout.BorderLayout",targetCls:Ext.baseCSSPrefix+"border-layout-ct",itemCls:[Ext.baseCSSPrefix+"border-item",Ext.baseCSSPrefix+"box-item"],type:"border",isBorderLayout:true,padding:undefined,percentageRe:/(\d+)%/,horzMarginProp:"left",padOnContainerProp:"left",padNotOnContainerProp:"right",axisProps:{horz:{borderBegin:"west",borderEnd:"east",horizontal:true,posProp:"x",sizeProp:"width",sizePropCap:"Width"},vert:{borderBegin:"north",borderEnd:"south",horizontal:false,posProp:"y",sizeProp:"height",sizePropCap:"Height"}},centerRegion:null,manageMargins:true,panelCollapseAnimate:true,panelCollapseMode:"placeholder",regionWeights:{north:20,south:10,center:0,west:-10,east:-20},beginAxis:function(m,b,w){var u=this,c=u.axisProps[w],r=!c.horizontal,l=c.sizeProp,p=0,a=m.childItems,g=a.length,t,q,o,h,s,e,k,n,d,v,j;for(q=0;q',renderTpl:['',"{%this.renderBody(out,values)%}","
    ","{%this.renderPadder(out,values)%}"],getRenderData:function(){var a=this.callParent();a.tableCls=this.tableCls;return a},calculate:function(g){var e=this,j=e.getContainerSize(g,true),a,h,b=0,d,c=g.sizeModel.height.shrinkWrap;if(c){if(g.hasDomProp("containerChildrenSizeDone")){g.setProp("contentHeight",e.formTable.dom.offsetHeight+g.targetContext.getPaddingInfo().height)}else{e.done=false}}if(j.gotWidth){a=e.formTable.dom.offsetWidth;h=g.childItems;for(d=h.length;b');c.scrollRangeFlags=e}}},getContainerSize:function(d,j,b){var e=d.targetContext,h=e.getFrameInfo(),m=e.getPaddingInfo(),l=0,n=0,a=b?null:d.state.overflowAdjust,g,k,c,o;if(!d.widthModel.shrinkWrap){++n;c=j?e.getDomProp("width"):e.getProp("width");g=(typeof c=="number");if(g){++l;c-=h.width+m.width;if(a){c-=a.width}}}if(!d.heightModel.shrinkWrap){++n;o=j?e.getDomProp("height"):e.getProp("height");k=(typeof o=="number");if(k){++l;o-=h.height+m.height;if(a){o-=a.height}}}return{width:c,height:o,needed:n,got:l,gotAll:l==n,gotWidth:g,gotHeight:k}},getOverflowXStyle:function(b){var a=this;return a.overflowXStyle||(a.overflowXStyle=a.owner.scrollFlags.overflowX||b.targetContext.getStyle("overflow-x"))},getOverflowYStyle:function(b){var a=this;return a.overflowYStyle||(a.overflowYStyle=a.owner.scrollFlags.overflowY||b.targetContext.getStyle("overflow-y"))},getScrollRangeFlags:(function(){var a=-1;return function(){if(a<0){var g=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"border-box",style:{width:"100px",height:"100px",padding:"10px",overflow:"auto"},children:[{style:{border:"1px solid red",width:"150px",height:"150px",margin:"0 5px 5px 0"}}]}),d=g.dom.scrollHeight,c=g.dom.scrollWidth,e={175:0,165:1,170:2,160:3},b={175:0,165:4,170:8,160:12};a=(e[d]||0)|(b[c]||0);g.remove()}return a}}()),initLayout:function(){var b=this,a=Ext.getScrollbarSize().width;b.callParent();if(a&&b.manageOverflow&&!b.hasOwnProperty("lastOverflowAdjust")){if(b.owner.scrollFlags.y||b.reserveScrollbar){b.lastOverflowAdjust={width:a,height:0}}}},setupRenderTpl:function(a){this.callParent(arguments);a.renderPadder=this.doRenderPadder}},0,0,0,0,["layout.form"],0,[Ext.layout.container,"Form",Ext.layout,"FormLayout"],0));(Ext.cmd.derive("Ext.menu.Item",Ext.Component,{alternateClassName:"Ext.menu.TextItem",activeCls:Ext.baseCSSPrefix+"menu-item-active",ariaRole:"menuitem",canActivate:true,clickHideDelay:0,destroyMenu:true,disabledCls:Ext.baseCSSPrefix+"menu-item-disabled",hideOnClick:true,isMenuItem:true,menuAlign:"tl-tr?",menuExpandDelay:200,menuHideDelay:200,tooltipType:"qtip",arrowCls:Ext.baseCSSPrefix+"menu-item-arrow",childEls:["itemEl","iconEl","textEl","arrowEl"],renderTpl:['',"{text}","",' target="{hrefTarget}"',' hidefocus="true"',' unselectable="on"','',' tabIndex="{tabIndex}"',"",">",'",'{text}','',"",""],maskOnDisable:false,activate:function(){var a=this;if(!a.activated&&a.canActivate&&a.rendered&&!a.isDisabled()&&a.isVisible()){a.el.addCls(a.activeCls);a.focus();a.activated=true;a.fireEvent("activate",a)}},getFocusEl:function(){return this.itemEl},deactivate:function(){var a=this;if(a.activated){a.el.removeCls(a.activeCls);a.blur();a.hideMenu();a.activated=false;a.fireEvent("deactivate",a)}},deferHideMenu:function(){if(this.menu.isVisible()){this.menu.hide()}},cancelDeferHide:function(){clearTimeout(this.hideMenuTimer)},deferHideParentMenus:function(){var a;Ext.menu.Manager.hideAll();if(!Ext.Element.getActiveElement()){a=this.up(":not([hidden])");if(a){a.focus()}}},expandMenu:function(a){var b=this;if(b.menu){b.cancelDeferHide();if(a===0){b.doExpandMenu()}else{clearTimeout(b.expandMenuTimer);b.expandMenuTimer=Ext.defer(b.doExpandMenu,Ext.isNumber(a)?a:b.menuExpandDelay,b)}}},doExpandMenu:function(){var a=this,b=a.menu;if(a.activated&&(!b.rendered||!b.isVisible())){a.parentMenu.activeChild=b;b.parentItem=a;b.parentMenu=a.parentMenu;b.showBy(a,a.menuAlign)}},getRefItems:function(a){var c=this.menu,b;if(c){b=c.getRefItems(a);b.unshift(c)}return b||[]},hideMenu:function(a){var b=this;if(b.menu){clearTimeout(b.expandMenuTimer);b.hideMenuTimer=Ext.defer(b.deferHideMenu,Ext.isNumber(a)?a:b.menuHideDelay,b)}},initComponent:function(){var b=this,c=Ext.baseCSSPrefix,a=[c+"menu-item"],d;b.addEvents("activate","click","deactivate","textchange","iconchange");if(b.plain){a.push(c+"menu-item-plain")}if(b.cls){a.push(b.cls)}b.cls=a.join(" ");if(b.menu){d=b.menu;delete b.menu;b.setMenu(d)}b.callParent(arguments)},onClick:function(c){var b=this,a=b.clickHideDelay;if(!b.href){c.stopEvent()}if(b.disabled){return}if(b.hideOnClick){if(!a){b.deferHideParentMenus()}else{b.deferHideParentMenusTimer=Ext.defer(b.deferHideParentMenus,a,b)}}Ext.callback(b.handler,b.scope||b,[b,c]);b.fireEvent("click",b,c);if(!b.hideOnClick){b.focus()}},onRemoved:function(){var a=this;if(a.activated&&a.parentMenu.activeItem===a){a.parentMenu.deactivateActiveItem()}a.callParent(arguments);a.parentMenu=a.ownerButton=null},beforeDestroy:function(){var a=this;if(a.rendered){a.clearTip()}a.callParent()},onDestroy:function(){var a=this;clearTimeout(a.expandMenuTimer);a.cancelDeferHide();clearTimeout(a.deferHideParentMenusTimer);a.setMenu(null);a.callParent(arguments)},beforeRender:function(){var d=this,h=Ext.BLANK_IMAGE_URL,c=d.glyph,g=Ext._glyphFontFamily,b,a,e;d.callParent();if(d.iconAlign==="right"){a=d.checkChangeDisabled?d.disabledCls:"";e=Ext.baseCSSPrefix+"menu-item-icon-right "+d.iconCls}else{a=(d.iconCls||"")+(d.checkChangeDisabled?" "+d.disabledCls:"");e=d.menu?d.arrowCls:""}if(typeof c==="string"){b=c.split("@");c=b[0];g=b[1]}Ext.applyIf(d.renderData,{href:d.href||"#",hrefTarget:d.hrefTarget,icon:d.icon,iconCls:a,glyph:c,glyphCls:c?Ext.baseCSSPrefix+"menu-item-glyph":undefined,glyphFontFamily:g,hasIcon:!!(d.icon||d.iconCls||c),iconAlign:d.iconAlign,plain:d.plain,text:d.text,arrowCls:e,blank:h,tabIndex:d.tabIndex})},onRender:function(){var a=this;a.callParent(arguments);if(a.tooltip){a.setTooltip(a.tooltip,true)}},setMenu:function(e,d){var c=this,b=c.menu,a=c.arrowEl;if(b){delete b.parentItem;delete b.parentMenu;delete b.ownerItem;if(d===true||(d!==false&&c.destroyMenu)){Ext.destroy(b)}}if(e){c.menu=Ext.menu.Manager.get(e);c.menu.ownerItem=c}else{c.menu=null}if(c.rendered&&!c.destroying&&a){a[c.menu?"addCls":"removeCls"](c.arrowCls)}},setHandler:function(b,a){this.handler=b||null;this.scope=a},setIcon:function(b){var a=this.iconEl,c=this.icon;if(a){a.src=b||Ext.BLANK_IMAGE_URL}this.icon=b;this.fireEvent("iconchange",this,c,b)},setIconCls:function(b){var d=this,a=d.iconEl,c=d.iconCls;if(a){if(d.iconCls){a.removeCls(d.iconCls)}if(b){a.addCls(b)}}d.iconCls=b;d.fireEvent("iconchange",d,c,b)},setText:function(d){var c=this,b=c.textEl||c.el,a=c.text;c.text=d;if(c.rendered){b.update(d||"");c.ownerCt.updateLayout()}c.fireEvent("textchange",c,a,d)},getTipAttr:function(){return this.tooltipType=="qtip"?"data-qtip":"title"},clearTip:function(){if(Ext.quickTipsActive&&Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.itemEl)}},setTooltip:function(c,a){var b=this;if(b.rendered){if(!a){b.clearTip()}if(Ext.quickTipsActive&&Ext.isObject(c)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.itemEl.id},c));b.tooltip=c}else{b.itemEl.dom.setAttribute(b.getTipAttr(),c)}}else{b.tooltip=c}return b}},0,["menuitem"],["component","menuitem","box"],{component:true,menuitem:true,box:true},["widget.menuitem"],[["queryable",Ext.Queryable]],[Ext.menu,"Item",Ext.menu,"TextItem"],0));(Ext.cmd.derive("Ext.menu.CheckItem",Ext.menu.Item,{checkedCls:Ext.baseCSSPrefix+"menu-item-checked",uncheckedCls:Ext.baseCSSPrefix+"menu-item-unchecked",groupCls:Ext.baseCSSPrefix+"menu-group-icon",hideOnClick:false,checkChangeDisabled:false,childEls:["itemEl","iconEl","textEl","checkEl"],showCheckbox:true,renderTpl:['',"{text}","","{%var showCheckbox = values.showCheckbox,",' rightCheckbox = showCheckbox && values.hasIcon && (values.iconAlign !== "left"), textCls = rightCheckbox ? "'+Ext.baseCSSPrefix+'right-check-item-text" : "";%}','target="{hrefTarget}" hidefocus="true" unselectable="on"','',' tabIndex="{tabIndex}"',"",">",'{%if (values.hasIcon && (values.iconAlign !== "left")) {%}','","{%} else if (showCheckbox){%}",'',"{%}%}",'style="margin-right: 17px;" >{text}',"{%if (rightCheckbox) {%}",'',"{%} else if (values.arrowCls) {%}",'',"{%}%}","",""],initComponent:function(){var a=this;a.checked=!!a.checked;a.addEvents("beforecheckchange","checkchange");a.callParent(arguments);Ext.menu.Manager.registerCheckable(a);if(a.group){a.showCheckbox=false;if(!(a.iconCls||a.icon||a.glyph)){a.iconCls=a.groupCls}if(a.initialConfig.hideOnClick!==false){a.hideOnClick=true}}},beforeRender:function(){this.callParent();this.renderData.showCheckbox=this.showCheckbox},afterRender:function(){var a=this;a.callParent();a.checked=!a.checked;a.setChecked(!a.checked,true);if(a.checkChangeDisabled){a.disableCheckChange()}},disableCheckChange:function(){var b=this,a=b.checkEl;if(a){a.addCls(b.disabledCls)}if(!(Ext.isIE10p||(Ext.isIE9&&Ext.isStrict))&&b.rendered){b.el.repaint()}b.checkChangeDisabled=true},enableCheckChange:function(){var b=this,a=b.checkEl;if(a){a.removeCls(b.disabledCls)}b.checkChangeDisabled=false},onClick:function(b){var a=this;if(!a.disabled&&!a.checkChangeDisabled&&!(a.checked&&a.group)){a.setChecked(!a.checked)}this.callParent([b])},onDestroy:function(){Ext.menu.Manager.unregisterCheckable(this);this.callParent(arguments)},setChecked:function(c,a){var b=this;if(b.checked!==c&&(a||b.fireEvent("beforecheckchange",b,c)!==false)){if(b.el){b.el[c?"addCls":"removeCls"](b.checkedCls)[!c?"addCls":"removeCls"](b.uncheckedCls)}b.checked=c;Ext.menu.Manager.onCheckChange(b,c);if(!a){Ext.callback(b.checkHandler,b.scope,[b,c]);b.fireEvent("checkchange",b,c)}}}},0,["menucheckitem"],["component","menucheckitem","menuitem","box"],{component:true,menucheckitem:true,menuitem:true,box:true},["widget.menucheckitem"],0,[Ext.menu,"CheckItem"],0));(Ext.cmd.derive("Ext.menu.KeyNav",Ext.util.KeyNav,{constructor:function(a){var b=this;b.menu=a.target;b.callParent([Ext.apply({down:b.down,enter:b.enter,esc:b.escape,left:b.left,right:b.right,space:b.enter,tab:b.tab,up:b.up},a)])},down:function(b){var a=this,c=a.menu.focusedItem;if(c&&b.getKey()==Ext.EventObject.DOWN&&a.isWhitelisted(c)){return true}a.focusNextItem(1)},enter:function(b){var c=this.menu,a=c.focusedItem;if(c.activeItem){c.onClick(b)}else{if(a&&a.isFormField){return true}}},escape:function(a){Ext.menu.Manager.hideAll()},focusNextItem:function(b){var a=this.menu,e=a.items,h=a.focusedItem,g=h?e.indexOf(h):-1,j=g+b,d=e.length,c=0,k;while(c=d){j=0}}k=e.getAt(j);if(a.canActivateItem(k)){a.setActiveItem(k);break}j+=b;++c}},isWhitelisted:function(a){return Ext.FocusManager.isWhitelisted(a)},left:function(a){var b=this.menu,c=b.focusedItem;if(c&&this.isWhitelisted(c)){return true}b.hide();if(b.parentMenu){b.parentMenu.focus()}},right:function(c){var d=this.menu,g=d.focusedItem,a=d.activeItem,b;if(g&&this.isWhitelisted(g)){return true}if(a){b=d.activeItem.menu;if(b){a.expandMenu(0);b.setActiveItem(b.child(":focusable"))}}},tab:function(b){var a=this;if(b.shiftKey){a.up(b)}else{a.down(b)}},up:function(b){var a=this,c=a.menu.focusedItem;if(c&&b.getKey()==Ext.EventObject.UP&&a.isWhitelisted(c)){return true}a.focusNextItem(-1)}},1,0,0,0,0,0,[Ext.menu,"KeyNav"],0));(Ext.cmd.derive("Ext.menu.Separator",Ext.menu.Item,{canActivate:false,focusable:false,hideOnClick:false,plain:true,separatorCls:Ext.baseCSSPrefix+"menu-item-separator",text:" ",beforeRender:function(a,c){var b=this;b.callParent();b.addCls(b.separatorCls)}},0,["menuseparator"],["component","menuseparator","menuitem","box"],{component:true,menuseparator:true,menuitem:true,box:true},["widget.menuseparator"],0,[Ext.menu,"Separator"],0));(Ext.cmd.derive("Ext.menu.Menu",Ext.panel.Panel,{enableKeyNav:true,allowOtherMenus:false,ariaRole:"menu",floating:true,constrain:true,hidden:true,hideMode:"visibility",ignoreParentClicks:false,isMenu:true,showSeparator:true,minWidth:undefined,defaultMinWidth:120,initComponent:function(){var b=this,d=Ext.baseCSSPrefix,a=[d+"menu"],c=b.bodyCls?[b.bodyCls]:[],e=b.floating!==false;b.addEvents("click","mouseenter","mouseleave","mouseover");Ext.menu.Manager.register(b);if(b.plain){a.push(d+"menu-plain")}b.cls=a.join(" ");c.push(d+"menu-body",Ext.dom.Element.unselectableCls);b.bodyCls=c.join(" ");if(!b.layout){b.layout={type:"vbox",align:"stretchmax",overflowHandler:"Scroller"}}if(e){if(b.minWidth===undefined){b.minWidth=b.defaultMinWidth}}else{b.hidden=!!b.initialConfig.hidden;b.constrain=false}b.callParent(arguments)},registerWithOwnerCt:function(){if(this.floating){this.ownerCt=null;Ext.WindowManager.register(this)}},initHierarchyEvents:Ext.emptyFn,isVisible:function(){return this.callParent()},getHierarchyState:function(){var a=this.callParent();a.hidden=this.hidden;return a},beforeRender:function(){this.callParent(arguments);if(!this.getSizeModel().width.shrinkWrap){this.layout.align="stretch"}},onBoxReady:function(){var a=this;a.callParent(arguments);if(a.showSeparator){a.iconSepEl=a.layout.getElementTarget().insertFirst({cls:Ext.baseCSSPrefix+"menu-icon-separator",html:" "})}a.mon(a.el,{click:a.onClick,mouseover:a.onMouseOver,scope:a});a.mouseMonitor=a.el.monitorMouseLeave(100,a.onMouseLeave,a);if(a.enableKeyNav){a.keyNav=new Ext.menu.KeyNav({target:a,keyMap:a.getKeyMap()})}},getRefOwner:function(){return this.parentMenu||this.ownerButton||this.callParent(arguments)},canActivateItem:function(a){return a&&!a.isDisabled()&&a.isVisible()&&(a.canActivate||a.getXTypes().indexOf("menuitem")<0)},deactivateActiveItem:function(b){var c=this,d=c.activeItem,a=c.focusedItem;if(d){d.deactivate();if(!d.activated){delete c.activeItem}}if(a&&b){a.blur();delete c.focusedItem}},getFocusEl:function(){return this.focusedItem||this.el},hide:function(){this.deactivateActiveItem(true);this.callParent(arguments)},getItemFromEvent:function(a){return this.getChildByElement(a.getTarget())},lookupComponent:function(b){var a=this;if(typeof b=="string"){b=a.lookupItemFromString(b)}else{if(Ext.isObject(b)){b=a.lookupItemFromObject(b)}}b.minWidth=b.minWidth||a.minWidth;return b},lookupItemFromObject:function(c){var b=this,d=Ext.baseCSSPrefix,a;if(!c.isComponent){if(!c.xtype){c=Ext.create("Ext.menu."+(Ext.isBoolean(c.checked)?"Check":"")+"Item",c)}else{c=Ext.ComponentManager.create(c,c.xtype)}}if(c.isMenuItem){c.parentMenu=b}if(!c.isMenuItem&&!c.dock){a=[d+"menu-item-cmp"];if(!b.plain&&(c.indent!==false||c.iconCls==="no-icon")){a.push(d+"menu-item-indent")}if(c.rendered){c.el.addCls(a)}else{c.cls=(c.cls||"")+" "+a.join(" ")}}return c},lookupItemFromString:function(a){return(a=="separator"||a=="-")?new Ext.menu.Separator():new Ext.menu.Item({canActivate:false,hideOnClick:false,plain:true,text:a})},onClick:function(c){var b=this,a;if(b.disabled){c.stopEvent();return}a=(c.type==="click")?b.getItemFromEvent(c):b.activeItem;if(a&&a.isMenuItem){if(!a.menu||!b.ignoreParentClicks){a.onClick(c)}else{c.stopEvent()}}if(!a||a.disabled){a=undefined}b.fireEvent("click",b,a,c)},onDestroy:function(){var a=this;Ext.menu.Manager.unregister(a);a.parentMenu=a.ownerButton=null;if(a.rendered){a.el.un(a.mouseMonitor);Ext.destroy(a.keyNav);a.keyNav=null}a.callParent(arguments)},onMouseLeave:function(b){var a=this;a.deactivateActiveItem();if(a.disabled){return}a.fireEvent("mouseleave",a,b)},onMouseOver:function(h){var g=this,j=h.getRelatedTarget(),b=!g.el.contains(j),d=g.getItemFromEvent(h),c=g.parentMenu,a=g.parentItem;if(b&&c){c.setActiveItem(a);a.cancelDeferHide();c.mouseMonitor.mouseenter()}if(g.disabled){return}if(d&&!d.activated){g.setActiveItem(d);if(d.activated&&d.expandMenu){d.expandMenu()}}if(b){g.fireEvent("mouseenter",g,h)}g.fireEvent("mouseover",g,d,h)},setActiveItem:function(b){var a=this;if(b&&(b!=a.activeItem)){a.deactivateActiveItem();if(a.canActivateItem(b)){if(b.activate){b.activate();if(b.activated){a.activeItem=b;a.focusedItem=b;a.focus()}}else{b.focus();a.focusedItem=b}}b.el.scrollIntoView(a.layout.getRenderTarget())}},showBy:function(b,d,c){var a=this;a.callParent(arguments);if(!a.hidden){a.setVerticalPosition()}return a},beforeShow:function(){var b=this,a;if(b.floating){b.savedMaxHeight=b.maxHeight;a=b.container.getViewSize().height;b.maxHeight=Math.min(b.maxHeight||a,a)}b.callParent(arguments)},afterShow:function(){var a=this;a.callParent(arguments);if(a.floating){a.maxHeight=a.savedMaxHeight}},setVerticalPosition:function(){var d=this,g,e=d.getY(),h=e,k=d.getHeight(),b=Ext.Element.getViewportHeight().height,c=d.el.parent(),a=c.getViewSize().height,j=e-c.getScroll().top;c=null;if(d.floating){g=d.maxHeight?d.maxHeight:a-j;if(k>a){h=e-j}else{if(gb){h=b-k}}}}d.setY(h)}},0,["menu"],["panel","component","container","menu","box"],{panel:true,component:true,container:true,menu:true,box:true},["widget.menu"],0,[Ext.menu,"Menu"],0));(Ext.cmd.derive("Ext.menu.ColorPicker",Ext.menu.Menu,{hideOnClick:true,pickerId:null,initComponent:function(){var b=this,a=Ext.apply({},b.initialConfig);delete a.listeners;Ext.apply(b,{plain:true,showSeparator:false,items:Ext.applyIf({cls:Ext.baseCSSPrefix+"menu-color-item",id:b.pickerId,xtype:"colorpicker"},a)});b.callParent(arguments);b.picker=b.down("colorpicker");b.relayEvents(b.picker,["select"]);if(b.hideOnClick){b.on("select",b.hidePickerOnSelect,b)}},hidePickerOnSelect:function(){Ext.menu.Manager.hideAll()}},0,["colormenu"],["panel","component","container","menu","colormenu","box"],{panel:true,component:true,container:true,menu:true,colormenu:true,box:true},["widget.colormenu"],0,[Ext.menu,"ColorPicker"],0));(Ext.cmd.derive("Ext.menu.DatePicker",Ext.menu.Menu,{hideOnClick:true,pickerId:null,initComponent:function(){var b=this,a=Ext.apply({},b.initialConfig);delete a.listeners;Ext.apply(b,{showSeparator:false,plain:true,border:false,bodyPadding:0,items:Ext.applyIf({cls:Ext.baseCSSPrefix+"menu-date-item",id:b.pickerId,xtype:"datepicker"},a)});b.callParent(arguments);b.picker=b.down("datepicker");b.relayEvents(b.picker,["select"]);if(b.hideOnClick){b.on("select",b.hidePickerOnSelect,b)}},hidePickerOnSelect:function(){Ext.menu.Manager.hideAll()}},0,["datemenu"],["panel","datemenu","component","container","menu","box"],{panel:true,datemenu:true,component:true,container:true,menu:true,box:true},["widget.datemenu"],0,[Ext.menu,"DatePicker"],0));(Ext.cmd.derive("Ext.panel.Tool",Ext.Component,{isTool:true,baseCls:Ext.baseCSSPrefix+"tool",disabledCls:Ext.baseCSSPrefix+"tool-disabled",toolPressedCls:Ext.baseCSSPrefix+"tool-pressed",toolOverCls:Ext.baseCSSPrefix+"tool-over",ariaRole:"button",childEls:["toolEl"],renderTpl:[''],toolOwner:null,tooltipType:"qtip",stopEvent:true,height:15,width:15,initComponent:function(){var a=this;a.addEvents("click");a.type=a.type||a.id;Ext.applyIf(a.renderData,{baseCls:a.baseCls,blank:Ext.BLANK_IMAGE_URL,type:a.type});a.tooltip=a.tooltip||a.qtip;a.callParent()},afterRender:function(){var b=this,a;b.callParent(arguments);b.el.on({click:b.onClick,mousedown:b.onMouseDown,mouseover:b.onMouseOver,mouseout:b.onMouseOut,scope:b});if(b.tooltip){if(Ext.quickTipsActive&&Ext.isObject(b.tooltip)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.id},b.tooltip))}else{a=b.tooltipType=="qtip"?"data-qtip":"title";b.el.dom.setAttribute(a,b.tooltip)}}},getFocusEl:function(){return this.el},setType:function(a){var b=this,c=b.type;b.type=a;if(b.rendered){if(c){b.toolEl.removeCls(b.baseCls+"-"+c)}b.toolEl.addCls(b.baseCls+"-"+a)}else{b.renderData.type=a}return b},onClick:function(c,b){var a=this;if(a.disabled){return false}a.el.removeCls(a.toolPressedCls);a.el.removeCls(a.toolOverCls);if(a.stopEvent!==false){c.stopEvent()}if(a.handler){Ext.callback(a.handler,a.scope||a,[c,b,a.ownerCt,a])}else{if(a.callback){Ext.callback(a.callback,a.scope||a,[a.toolOwner||a.ownerCt,a,c])}}a.fireEvent("click",a,c);return true},onDestroy:function(){if(Ext.quickTipsActive&&Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.id)}this.callParent()},onMouseDown:function(){if(this.disabled){return false}this.el.addCls(this.toolPressedCls)},onMouseOver:function(){if(this.disabled){return false}this.el.addCls(this.toolOverCls)},onMouseOut:function(){this.el.removeCls(this.toolOverCls)}},0,["tool"],["component","tool","box"],{component:true,tool:true,box:true},["widget.tool"],0,[Ext.panel,"Tool"],0));(Ext.cmd.derive("Ext.resizer.SplitterTracker",Ext.dd.DragTracker,{enabled:true,overlayCls:Ext.baseCSSPrefix+"resizable-overlay",createDragOverlay:function(){var a;a=this.overlay=Ext.getBody().createChild({cls:this.overlayCls,html:" "});a.unselectable();a.setSize(Ext.Element.getViewWidth(true),Ext.Element.getViewHeight(true));a.show()},getPrevCmp:function(){var a=this.getSplitter();return a.previousSibling(":not([hidden])")},getNextCmp:function(){var a=this.getSplitter();return a.nextSibling(":not([hidden])")},onBeforeStart:function(j){var d=this,g=d.getPrevCmp(),a=d.getNextCmp(),c=d.getSplitter().collapseEl,h=j.getTarget(),b;if(!g||!a){return false}if(c&&h===d.getSplitter().collapseEl.dom){return false}if(a.collapsed||g.collapsed){return false}d.prevBox=g.getEl().getBox();d.nextBox=a.getEl().getBox();d.constrainTo=b=d.calculateConstrainRegion();if(!b){return false}return b},onStart:function(b){var a=this.getSplitter();this.createDragOverlay();a.addCls(a.baseCls+"-active")},calculateConstrainRegion:function(){var h=this,a=h.getSplitter(),j=a.getWidth(),k=a.defaultSplitMin,b=a.orientation,e=h.prevBox,l=h.getPrevCmp(),c=h.nextBox,g=h.getNextCmp(),n,m,d;if(b==="vertical"){d={prevCmp:l,nextCmp:g,prevBox:e,nextBox:c,defaultMin:k,splitWidth:j};n=new Ext.util.Region(e.y,h.getVertPrevConstrainRight(d),e.bottom,h.getVertPrevConstrainLeft(d));m=new Ext.util.Region(c.y,h.getVertNextConstrainRight(d),c.bottom,h.getVertNextConstrainLeft(d))}else{n=new Ext.util.Region(e.y+(l.minHeight||k),e.right,(l.maxHeight?e.y+l.maxHeight:c.bottom-(g.minHeight||k))+j,e.x);m=new Ext.util.Region((g.maxHeight?c.bottom-g.maxHeight:e.y+(l.minHeight||k))-j,c.right,c.bottom-(g.minHeight||k),c.x)}return n.intersect(m)},performResize:function(n,h){var p=this,a=p.getSplitter(),j=a.orientation,q=p.getPrevCmp(),o=p.getNextCmp(),b=a.ownerCt,l=b.query(">[flex]"),m=l.length,c=j==="vertical",k=0,g=c?"width":"height",d=0,r,s;for(;kq){v=q}}if(v-m<2){return null}n=new Ext.util.Region(p,x,k,g);y.constraintAdjusters[y.getCollapseDirection()](n,m,v,a);y.dragInfo={minRange:m,maxRange:v,targetSize:b};return n},constraintAdjusters:{left:function(c,a,b,d){c[0]=c.x=c.left=c.right+a;c.right+=b+d.getWidth()},top:function(c,a,b,d){c[1]=c.y=c.top=c.bottom+a;c.bottom+=b+d.getHeight()},bottom:function(c,a,b,d){c.bottom=c.top-a;c.top-=b+d.getHeight()},right:function(c,a,b,d){c.right=c.left-a;c[0]=c.x=c.left=c.x-b+d.getWidth()}},onBeforeStart:function(h){var k=this,b=k.splitter,a=b.collapseTarget,m=b.neighbors,d=k.getSplitter().collapseEl,j=h.getTarget(),c=m.length,g,l;if(d&&j===b.collapseEl.dom){return false}if(a.collapsed){return false}for(g=0;gc){d.minWidth=d.el.getWidth()*a}else{d.minHeight=d.el.getHeight()*c}}if(d.throttle){e=Ext.Function.createThrottled(function(){Ext.resizer.ResizeTracker.prototype.resize.apply(d,arguments)},d.throttle);d.resize=function(h,j,g){if(g){Ext.resizer.ResizeTracker.prototype.resize.apply(d,arguments)}else{e.apply(null,arguments)}}}},onBeforeStart:function(a){this.startBox=this.target.getBox()},getDynamicTarget:function(){var a=this,b=a.target;if(a.dynamic){return b}else{if(!a.proxy){a.proxy=a.createProxy(b)}}a.proxy.show();return a.proxy},createProxy:function(c){var b,a=this.proxyCls;if(c.isComponent){b=c.getProxy().addCls(a)}else{b=c.createProxy({tag:"div",cls:a,id:c.id+"-rzproxy"},Ext.getBody())}b.removeCls(Ext.baseCSSPrefix+"proxy-el");return b},onStart:function(a){this.activeResizeHandle=Ext.get(this.getDragTarget().id);if(!this.dynamic){this.resize(this.startBox,{horizontal:"none",vertical:"none"})}},onDrag:function(a){if(this.dynamic||this.proxy){this.updateDimensions(a)}},updateDimensions:function(t,n){var u=this,c=u.activeResizeHandle.region,g=u.getOffset(u.constrainTo?"dragTarget":null),l=u.startBox,h,q=0,v=0,k,r,a=0,x=0,w,o=g[0]<0?"right":"left",s=g[1]<0?"down":"up",j,b,d,p,m;c=u.convertRegionName(c);switch(c){case"south":v=g[1];b=2;break;case"north":v=-g[1];x=-v;b=2;break;case"east":q=g[0];b=1;break;case"west":q=-g[0];a=-q;b=1;break;case"northeast":v=-g[1];x=-v;q=g[0];j=[l.x,l.y+l.height];b=3;break;case"southeast":v=g[1];q=g[0];j=[l.x,l.y];b=3;break;case"southwest":q=-g[0];a=-q;v=g[1];j=[l.x+l.width,l.y];b=3;break;case"northwest":v=-g[1];x=-v;q=-g[0];a=-q;j=[l.x+l.width,l.y+l.height];b=3;break}d={width:l.width+q,height:l.height+v,x:l.x+a,y:l.y+x};k=Ext.Number.snap(d.width,u.widthIncrement);r=Ext.Number.snap(d.height,u.heightIncrement);if(k!=d.width||r!=d.height){switch(c){case"northeast":d.y-=r-d.height;break;case"north":d.y-=r-d.height;break;case"southwest":d.x-=k-d.width;break;case"west":d.x-=k-d.width;break;case"northwest":d.x-=k-d.width;d.y-=r-d.height}d.width=k;d.height=r}if(d.widthu.maxWidth){d.width=Ext.Number.constrain(d.width,u.minWidth,u.maxWidth);if(a){d.x=l.x+(l.width-d.width)}}else{u.lastX=d.x}if(d.heightu.maxHeight){d.height=Ext.Number.constrain(d.height,u.minHeight,u.maxHeight);if(x){d.y=l.y+(l.height-d.height)}}else{u.lastY=d.y}if(u.preserveRatio||t.shiftKey){h=u.startBox.width/u.startBox.height;p=Math.min(Math.max(u.minHeight,d.width/h),u.maxHeight);m=Math.min(Math.max(u.minWidth,d.height*h),u.maxWidth);if(b==1){d.height=p}else{if(b==2){d.width=m}else{w=Math.abs(j[0]-this.lastXY[0])/Math.abs(j[1]-this.lastXY[1]);if(w>h){d.height=p}else{d.width=m}if(c=="northeast"){d.y=l.y-(d.height-l.height)}else{if(c=="northwest"){d.y=l.y-(d.height-l.height);d.x=l.x-(d.width-l.width)}else{if(c=="southwest"){d.x=l.x-(d.width-l.width)}}}}}}if(v===0){s="none"}if(q===0){o="none"}u.resize(d,{horizontal:o,vertical:s},n)},getResizeTarget:function(a){return a?this.target:this.getDynamicTarget()},resize:function(c,e,a){var b=this,d=b.getResizeTarget(a);d.setBox(c);if(b.originalTarget&&(b.dynamic||a)){b.originalTarget.setBox(c)}},onEnd:function(a){this.updateDimensions(a,true);if(this.proxy){this.proxy.hide()}},convertRegionName:function(a){return a}},1,0,0,0,0,0,[Ext.resizer,"ResizeTracker"],0));(Ext.cmd.derive("Ext.resizer.Resizer",Ext.Base,{alternateClassName:"Ext.Resizable",handleCls:Ext.baseCSSPrefix+"resizable-handle",pinnedCls:Ext.baseCSSPrefix+"resizable-pinned",overCls:Ext.baseCSSPrefix+"resizable-over",wrapCls:Ext.baseCSSPrefix+"resizable-wrap",delimiterRe:/(?:\s*[,;]\s*)|\s+/,dynamic:true,handles:"s e se",height:null,width:null,heightIncrement:0,widthIncrement:0,minHeight:20,minWidth:20,maxHeight:10000,maxWidth:10000,pinned:false,preserveRatio:false,transparent:false,possiblePositions:{n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"},constructor:function(b){var m=this,j,q,s,r=m.handles,c,p,g,d=0,o,n=[],h,a,e,l,k=Ext.dom.Element.unselectableCls;m.addEvents("beforeresize","resizedrag","resize");if(Ext.isString(b)||Ext.isElement(b)||b.dom){j=b;b=arguments[1]||{};b.target=j}m.mixins.observable.constructor.call(m,b);j=m.target;if(j){if(j.isComponent){j.addClsWithUI("resizable");m.el=j.getEl();if(j.minWidth){m.minWidth=j.minWidth}if(j.minHeight){m.minHeight=j.minHeight}if(j.maxWidth){m.maxWidth=j.maxWidth}if(j.maxHeight){m.maxHeight=j.maxHeight}if(j.floating){if(!m.hasOwnProperty("handles")){m.handles="n ne e se s sw w nw"}}}else{m.el=m.target=Ext.get(j)}}else{m.target=m.el=Ext.get(m.el)}s=m.el.dom.tagName.toUpperCase();if(s=="TEXTAREA"||s=="IMG"||s=="TABLE"){m.originalTarget=m.target;q=m.el;e=q.getBox();m.target=m.el=m.el.wrap({cls:m.wrapCls,id:m.el.id+"-rzwrap",style:q.getStyles("margin-top","margin-bottom")});m.el.setPositioning(q.getPositioning());q.clearPositioning();m.el.setBox(e);q.setStyle("position","absolute")}m.el.position();if(m.pinned){m.el.addCls(m.pinnedCls)}m.resizeTracker=new Ext.resizer.ResizeTracker({disabled:m.disabled,target:m.target,constrainTo:m.constrainTo,overCls:m.overCls,throttle:m.throttle,originalTarget:m.originalTarget,delegate:"."+m.handleCls,dynamic:m.dynamic,preserveRatio:m.preserveRatio,heightIncrement:m.heightIncrement,widthIncrement:m.widthIncrement,minHeight:m.minHeight,maxHeight:m.maxHeight,minWidth:m.minWidth,maxWidth:m.maxWidth});m.resizeTracker.on({mousedown:m.onBeforeResize,drag:m.onResize,dragend:m.onResizeEnd,scope:m});if(m.handles=="all"){m.handles="n s e w ne nw se sw"}r=m.handles=m.handles.split(m.delimiterRe);p=m.possiblePositions;g=r.length;c=m.handleCls+" "+m.handleCls+"-{0}";if(m.target.isComponent){l=m.target.baseCls;c+=" "+l+"-handle "+l+"-handle-{0}";if(Ext.supports.CSS3BorderRadius){c+=" "+l+"-handle-{0}-br"}}h=Ext.isIE6?' style="height:'+m.el.getHeight()+'px"':"";for(;d")}}Ext.DomHelper.append(m.el,n.join(""));for(d=0;dj.row){return}for(c=0;c-1){this.doSelect(a.record,false,b)}},onCellDeselect:function(a,b){if(a&&a.row!==undefined){this.doDeselect(a.record,b)}},onSelectChange:function(b,e,d,h){var g=this,j,c,a;if(e){j=g.nextSelection;c="select"}else{j=g.lastSelection||g.noSelection;c="deselect"}a=j.view||g.primaryView;if((d||g.fireEvent("before"+c,g,b,j.row,j.column))!==false&&h()!==false){if(e){a.focusRow(b,true);a.onCellSelect(j)}else{a.onCellDeselect(j);delete g.selection}if(!d){g.fireEvent(c,g,b,j.row,j.column)}}},onKeyTab:function(d,b){var c=this,g=c.getCurrentPosition(),a;if(g){a=g.view.editingPlugin;if(a&&c.wasEditing){c.onEditorTab(a,d)}else{c.move(d.shiftKey?"left":"right",d)}}},onEditorTab:function(b,g){var c=this,d=g.shiftKey?"left":"right",a=c.move(d,g);if(a){if(b.startEdit(a.record,a.columnHeader)){c.wasEditing=false}else{c.wasEditing=true}}},refresh:function(){var b=this.getCurrentPosition(),a;if(b&&(a=this.store.indexOf(this.selected.last()))!==-1){b.row=a}},onColumnMove:function(d,e,b,c){var a=d.up("tablepanel");if(a){this.onViewRefresh(a.view)}},onUpdate:function(a){var b=this,c;if(b.isSelected(a)){c=b.selecting?b.nextSelection:b.selection;b.view.onCellSelect(c)}},onViewRefresh:function(b){var c=this,g=c.getCurrentPosition(),e=b.headerCt,a,d;if(g&&g.view===b){a=g.record;d=g.columnHeader;if(!d.isDescendantOf(e)){d=e.queryById(d.id)||e.down('[text="'+d.text+'"]')||e.down('[dataIndex="'+d.dataIndex+'"]')}if(d&&(b.store.indexOfId(a.getId())!==-1)){c.setCurrentPosition({row:a,column:d,view:b})}}},selectByPosition:function(a,b){this.setCurrentPosition(a,b)}},1,0,0,0,["selection.cellmodel"],0,[Ext.selection,"CellModel"],0));(Ext.cmd.derive("Ext.selection.RowModel",Ext.selection.Model,{deltaScroll:5,enableKeyNav:true,ignoreRightMouseSelection:false,constructor:function(){this.addEvents("beforedeselect","beforeselect","deselect","select");this.views=[];this.callParent(arguments)},bindComponent:function(a){var b=this;a.on({itemmousedown:b.onRowMouseDown,itemclick:b.onRowClick,scope:b});if(b.enableKeyNav){b.initKeyNav(a)}},initKeyNav:function(a){var b=this;if(!a.rendered){a.on("render",Ext.Function.bind(b.initKeyNav,b,[a],0),b,{single:true});return}a.el.set({tabIndex:-1});b.keyNav=new Ext.util.KeyNav({target:a,ignoreInputFields:true,eventName:"itemkeydown",processEvent:function(d,c,h,e,g){g.record=c;g.recordIndex=e;return g},up:b.onKeyUp,down:b.onKeyDown,right:b.onKeyRight,left:b.onKeyLeft,pageDown:b.onKeyPageDown,pageUp:b.onKeyPageUp,home:b.onKeyHome,end:b.onKeyEnd,space:b.onKeySpace,enter:b.onKeyEnter,scope:b})},onUpdate:function(b){var d=this,a=d.view,c;if(a&&d.isSelected(b)){c=a.indexOf(b);a.onRowSelect(c);if(b===d.lastFocused){a.onRowFocus(c,true)}}},getRowsVisible:function(){var e=false,a=this.views[0],d=a.all.first(),b,c;if(d){b=d.getHeight();c=a.el.getHeight();e=Math.floor(c/b)}return e},onKeyEnd:function(c){var b=this,a=b.views[0];if(a.bufferedRenderer){a.bufferedRenderer.scrollTo(b.store.getCount()-1,false,function(e,d){b.afterKeyNavigate(c,d)})}else{b.afterKeyNavigate(c,a.getRecord(a.all.getCount()-1))}},onKeyHome:function(c){var b=this,a=b.views[0];if(a.bufferedRenderer){a.bufferedRenderer.scrollTo(0,false,function(e,d){b.afterKeyNavigate(c,d)})}else{b.afterKeyNavigate(c,a.getRecord(0))}},onKeyPageUp:function(g){var d=this,a=d.views[0],h=d.getRowsVisible(),c,b;if(h){if(a.bufferedRenderer){c=Math.max(g.recordIndex-h,0);(d.lastKeyEvent||(d.lastKeyEvent=new Ext.EventObjectImpl())).setEvent(g.browserEvent);a.bufferedRenderer.scrollTo(c,false,d.afterBufferedScrollTo,d)}else{b=a.walkRecs(g.record,-h);d.afterKeyNavigate(g,b)}}},onKeyPageDown:function(g){var d=this,a=d.views[0],h=d.getRowsVisible(),c,b;if(h){if(a.bufferedRenderer){c=Math.min(g.recordIndex+h,d.store.getCount()-1);(d.lastKeyEvent||(d.lastKeyEvent=new Ext.EventObjectImpl())).setEvent(g.browserEvent);a.bufferedRenderer.scrollTo(c,false,d.afterBufferedScrollTo,d)}else{b=a.walkRecs(g.record,h);d.afterKeyNavigate(g,b)}}},onKeySpace:function(b){var a=this.lastFocused;if(a){this.afterKeyNavigate(b,a)}},onKeyEnter:Ext.emptyFn,onKeyUp:function(b){var a=this.views[0].walkRecs(b.record,-1);if(a){this.afterKeyNavigate(b,a)}},onKeyDown:function(b){var a=this.views[0].walkRecs(b.record,1);if(a){this.afterKeyNavigate(b,a)}},afterBufferedScrollTo:function(b,a){this.afterKeyNavigate(this.lastKeyEvent,a)},scrollByDeltaX:function(d){var a=this.views[0],c=a.up(),b=c.horizontalScroller;if(b){b.scrollByDeltaX(d)}},onKeyLeft:function(a){this.scrollByDeltaX(-this.deltaScroll)},onKeyRight:function(a){this.scrollByDeltaX(this.deltaScroll)},onRowMouseDown:function(b,a,g,c,h){var d=this;if(c!==-1){if(!d.allowRightMouseSelection(h)){return}if(!d.isSelected(a)){d.mousedownAction=true;d.processSelection(b,a,g,c,h)}else{d.mousedownAction=false}}},onVetoUIEvent:function(g,c,a,j,d,h,b){if(g=="mousedown"){this.mousedownAction=!this.isSelected(b)}},onRowClick:function(b,a,d,c,g){if(this.mousedownAction){this.mousedownAction=false}else{this.processSelection(b,a,d,c,g)}},processSelection:function(b,a,d,c,g){this.selectWithEvent(a,g)},allowRightMouseSelection:function(a){var b=this.ignoreRightMouseSelection&&a.button!==0;if(b){b=this.hasSelection()}return !b},onSelectChange:function(g,c,k,a){var j=this,l=j.views,d=l.length,b=l[0].indexOf(g),h=c?"select":"deselect",e=0;if((k||j.fireEvent("before"+h,j,g,b))!==false&&a()!==false){for(;e=a.value){g=a.value}}c.setValue(b,g,false);c.fireEvent("drag",c,h,d)}},getValueFromTracker:function(){var a=this.slider,b=a.getTrackpoint(this.tracker.getXY());if(b!==undefined){return a.reversePixelValue(b)}},onDragEnd:function(d){var b=this,a=b.slider,c=b.value;a.onDragEnd(b,d);b.el.removeCls(Ext.baseCSSPrefix+"slider-thumb-drag");b.dragging=a.dragging=false;a.fireEvent("dragend",a,d);if(b.dragStartValue!=c){a.fireEvent("changecomplete",a,c,b)}},destroy:function(){Ext.destroy(this.tracker)}},1,0,0,0,0,0,[Ext.slider,"Thumb"],0));(Ext.cmd.derive("Ext.slider.Tip",Ext.tip.Tip,{minWidth:10,offsets:null,align:null,position:"",defaultVerticalPosition:"left",defaultHorizontalPosition:"top",isSliderTip:true,init:function(c){var b=this,d,a;if(!b.position){b.position=c.vertical?b.defaultVerticalPosition:b.defaultHorizontalPosition}switch(b.position){case"top":a=[0,-10];d="b-t?";break;case"bottom":a=[0,10];d="t-b?";break;case"left":a=[-10,0];d="r-l?";break;case"right":a=[10,0];d="l-r?"}if(!b.align){b.align=d}if(!b.offsets){b.offsets=a}c.on({scope:b,dragstart:b.onSlide,drag:b.onSlide,dragend:b.hide,destroy:b.destroy})},onSlide:function(c,d,a){var b=this;b.show();b.update(b.getText(a));b.el.alignTo(a.el,b.align,b.offsets)},getText:function(a){return String(a.value)}},0,["slidertip"],["panel","component","container","slidertip","box"],{panel:true,component:true,container:true,slidertip:true,box:true},["widget.slidertip"],0,[Ext.slider,"Tip"],0));(Ext.cmd.derive("Ext.slider.Multi",Ext.form.field.Base,{alternateClassName:"Ext.slider.MultiSlider",childEls:["endEl","innerEl"],fieldSubTpl:['
    ','","
    ",{renderThumbs:function(g,e){var j=e.$comp,h=0,c=j.thumbs,b=c.length,d,a;for(;hg){e.setValue(d,g,false)}}e.syncThumbs()},setValue:function(e,k,b,d){var j=this,h=j.thumbs,a,g,c,l;if(Ext.isArray(e)){l=e;b=k;for(c=0,g=l.length;c0)?a.changedTouches[0]:a;return new this(a.pageX,a.pageY)}},constructor:function(a,b){this.callParent([b,a,b,a])},toString:function(){return"Point["+this.x+","+this.y+"]"},equals:function(a){return(this.x==a.x&&this.y==a.y)},isWithin:function(b,a){if(!Ext.isObject(a)){a={x:a,y:a}}return(this.x<=b.x+a.x&&this.x>=b.x-a.x&&this.y<=b.y+a.y&&this.y>=b.y-a.y)},isContainedBy:function(a){if(!(a instanceof Ext.util.Region)){a=Ext.get(a.el||a).getRegion()}return a.contains(this)},roundedEquals:function(a){return(Math.round(this.x)==Math.round(a.x)&&Math.round(this.y)==Math.round(a.y))}},3,0,0,0,0,0,[Ext.util,"Point"],function(){this.prototype.translate=Ext.util.Region.prototype.translateBy}));(Ext.cmd.derive("Ext.tab.Bar",Ext.panel.Header,{baseCls:Ext.baseCSSPrefix+"tab-bar",isTabBar:true,defaultType:"tab",plain:false,childEls:["body","strip"],renderTpl:['
    {baseCls}-body-{ui} {parent.baseCls}-body-{parent.ui}-{.}" style="{bodyStyle}">',"{%this.renderContainer(out,values)%}","
    ",'
    {baseCls}-strip-{ui}',' {parent.baseCls}-strip-{parent.ui}-{.}','">',"
    "],_reverseDockNames:{left:"right",right:"left"},initComponent:function(){var a=this;if(a.plain){a.addCls(a.baseCls+"-plain")}a.addClsWithUI(a.orientation);a.addEvents("change");a.callParent(arguments);Ext.merge(a.layout,a.initialConfig.layout);a.layout.align=(a.orientation=="vertical")?"left":"top";a.layout.overflowHandler=new Ext.layout.container.boxOverflow.Scroller(a.layout);a.remove(a.titleCmp);delete a.titleCmp;Ext.apply(a.renderData,{bodyCls:a.bodyCls,dock:a.dock})},onRender:function(){var a=this;a.callParent();if(a.orientation==="vertical"&&(Ext.isIE8||Ext.isIE9)&&Ext.isStrict){a.el.on({mousemove:a.onMouseMove,scope:a})}},afterRender:function(){var a=this.layout;this.callParent();if(Ext.isIE9&&Ext.isStrict&&this.orientation==="vertical"){a.innerCt.on("scroll",function(){a.innerCt.dom.scrollLeft=0})}},afterLayout:function(){this.adjustTabPositions();this.callParent(arguments)},adjustTabPositions:function(){var a=this.items.items,b=a.length,c;if(!Ext.isIE9m){if(this.dock==="right"){while(b--){c=a[b];if(c.isVisible()){c.el.setStyle("left",c.lastBox.width+"px")}}}else{if(this.dock==="left"){while(b--){c=a[b];if(c.isVisible()){c.el.setStyle("left",-c.lastBox.height+"px")}}}}}},getLayout:function(){var a=this;a.layout.type=(a.orientation==="horizontal")?"hbox":"vbox";return a.callParent(arguments)},onAdd:function(a){a.position=this.dock;this.callParent(arguments)},onRemove:function(a){var b=this;if(a===b.previousTab){b.previousTab=null}b.callParent(arguments)},afterComponentLayout:function(b){var c=this,a=c.needsScroll;c.callParent(arguments);if(a){c.layout.overflowHandler.scrollToItem(c.activeTab)}delete c.needsScroll},onClick:function(h,g){var d=this,k=d.tabPanel,j,c,b,a;if(h.getTarget("."+Ext.baseCSSPrefix+"box-scroller")){return}if(d.orientation==="vertical"&&(Ext.isIE8||Ext.isIE9)&&Ext.isStrict){a=d.getTabInfoFromPoint(h.getXY());c=a.tab;b=a.close}else{j=h.getTarget("."+Ext.tab.Tab.prototype.baseCls);c=j&&Ext.getCmp(j.id);b=c&&c.closeEl&&(g===c.closeEl.dom)}if(b){h.preventDefault()}if(c&&c.isDisabled&&!c.isDisabled()){if(c.closable&&b){c.onCloseClick()}else{if(k){k.setActiveTab(c.card)}else{d.setActiveTab(c)}c.focus()}}},onMouseMove:function(g){var d=this,b=d._overTab,a,c;if(g.getTarget("."+Ext.baseCSSPrefix+"box-scroller")){return}a=d.getTabInfoFromPoint(g.getXY());c=a.tab;if(c!==b){if(b&&b.rendered){b.onMouseLeave(g);d._overTab=null}if(c){c.onMouseEnter(g);d._overTab=c;if(!c.disabled){d.el.setStyle("cursor","pointer")}}else{d.el.setStyle("cursor","default")}}},onMouseLeave:function(b){var a=this._overTab;if(a&&a.rendered){a.onMouseLeave(b)}},getTabInfoFromPoint:function(g){var A=this,w=A.items.items,e=w.length,o=A.layout.innerCt,u=o.getXY(),t=new Ext.util.Point(g[0],g[1]),v=0,x,b,a,p,y,j,h,d,r,l,k,n,m,s,q,z,c;for(;v1){return(b.previousTab&&b.previousTab!==a&&!b.previousTab.disabled)?b.previousTab:(a.next("tab[disabled=false]")||a.prev("tab[disabled=false]"))}},setActiveTab:function(b,a){var c=this;if(!b.disabled&&b!==c.activeTab){if(c.activeTab){if(c.activeTab.isDestroyed){c.previousTab=null}else{c.previousTab=c.activeTab;c.activeTab.deactivate()}}b.activate();c.activeTab=b;c.needsScroll=true;if(!a){c.fireEvent("change",c,b,b.card);c.updateLayout()}}}},0,["tabbar"],["component","tabbar","container","box","header"],{component:true,tabbar:true,container:true,box:true,header:true},["widget.tabbar"],0,[Ext.tab,"Bar"],0));(Ext.cmd.derive("Ext.tree.Column",Ext.grid.column.Column,{tdCls:Ext.baseCSSPrefix+"grid-cell-treecolumn",autoLock:true,lockable:false,draggable:false,hideable:false,iconCls:Ext.baseCSSPrefix+"tree-icon",checkboxCls:Ext.baseCSSPrefix+"tree-checkbox",elbowCls:Ext.baseCSSPrefix+"tree-elbow",expanderCls:Ext.baseCSSPrefix+"tree-expander",textCls:Ext.baseCSSPrefix+"tree-node-text",innerCls:Ext.baseCSSPrefix+"grid-cell-inner-treecolumn",isTreeColumn:true,cellTpl:['','lineempty"/>',"",'-end-plus {expanderCls}"/>','','aria-checked="true" ','class="{childCls} {checkboxCls} {checkboxCls}-checked"/>',"",'leafparent {iconCls}"','style="background-image:url({icon})"/>','','{value}',"",'{value}',""],initComponent:function(){var a=this;a.origRenderer=a.renderer;a.origScope=a.scope||window;a.renderer=a.treeRenderer;a.scope=a;a.callParent()},treeRenderer:function(m,a,e,b,d,n,k){var j=this,p=e.get("cls"),h=j.origRenderer,c=e.data,l=e.parentNode,o=k.rootVisible,q=[],g;if(p){a.tdCls+=" "+p}while(l&&(o||l.data.depth>0)){g=l.data;q[o?g.depth:g.depth-1]=g.isLast?0:1;l=l.parentNode}return j.getTpl("cellTpl").apply({record:e,baseIconCls:j.iconCls,iconCls:c.iconCls,icon:c.icon,checkboxCls:j.checkboxCls,checked:c.checked,elbowCls:j.elbowCls,expanderCls:j.expanderCls,textCls:j.textCls,leaf:c.leaf,expandable:e.isExpandable(),isLast:c.isLast,blankUrl:Ext.BLANK_IMAGE_URL,href:c.href,hrefTarget:c.hrefTarget,lines:q,metaData:a,childCls:j.getChildCls?j.getChildCls()+" ":"",value:h?h.apply(j.origScope,arguments):m})}},0,["treecolumn"],["component","gridcolumn","container","treecolumn","box","headercontainer"],{component:true,gridcolumn:true,container:true,treecolumn:true,box:true,headercontainer:true},["widget.treecolumn"],0,[Ext.tree,"Column"],0));(Ext.cmd.derive("Ext.selection.CheckboxModel",Ext.selection.RowModel,{mode:"MULTI",injectCheckbox:0,checkOnly:false,showHeaderCheckbox:undefined,checkSelector:"."+Ext.baseCSSPrefix+"grid-row-checker",headerWidth:24,checkerOnCls:Ext.baseCSSPrefix+"grid-hd-checker-on",constructor:function(){var a=this;a.callParent(arguments);if(a.mode==="SINGLE"&&a.showHeaderCheckbox!==true){a.showHeaderCheckbox=false}},beforeViewRender:function(b){var c=this,a;c.callParent(arguments);if(!c.hasLockedHeader()||b.headerCt.lockedCt){if(c.showHeaderCheckbox!==false){b.headerCt.on("headerclick",c.onHeaderClick,c)}c.addCheckbox(b,true);a=b.ownerCt;if(b.headerCt.lockedCt){a=a.ownerCt}c.mon(a,"reconfigure",c.onReconfigure,c)}},bindComponent:function(a){var b=this;b.sortable=false;b.callParent(arguments)},hasLockedHeader:function(){var a=this.views,c=a.length,b;for(b=0;b '},processSelection:function(b,a,h,d,j){var g=this,c=j.getTarget(g.checkSelector),k;if(g.checkOnly&&!c){return}if(c){k=g.getSelectionMode();if(k!=="SINGLE"){g.setSelectionMode("SIMPLE")}g.selectWithEvent(a,j);g.setSelectionMode(k)}else{g.selectWithEvent(a,j)}},onSelectChange:function(){this.callParent(arguments);if(!this.suspendChange){this.updateHeaderState()}},onStoreLoad:function(){this.callParent(arguments);this.updateHeaderState()},onStoreAdd:function(){this.callParent(arguments);this.updateHeaderState()},onStoreRemove:function(){this.callParent(arguments);this.updateHeaderState()},onStoreRefresh:function(){this.callParent(arguments);this.updateHeaderState()},maybeFireSelectionChange:function(a){if(a&&!this.suspendChange){this.updateHeaderState()}this.callParent(arguments)},resumeChanges:function(){this.callParent();if(!this.suspendChange){this.updateHeaderState()}},updateHeaderState:function(){var g=this,h=g.store,e=h.getCount(),j=g.views,k=false,a=0,b,d,c;if(!h.buffered&&e>0){b=g.selected;k=true;for(c=0,d=b.getCount();c1){b.expandPath(h.join(a),d,a,function(n,m){var l=m;if(n&&m){m=m.findChild(d,e);if(m){b.getSelectionModel().select(m);Ext.callback(g,j||b,[true,m]);return}}Ext.callback(g,j||b,[false,l])},b)}else{c=b.getRootNode();if(c.getId()===e){b.getSelectionModel().select(c);Ext.callback(g,j||b,[true,c])}else{Ext.callback(g,j||b,[false,null])}}}},1,["treepanel"],["panel","component","tablepanel","container","box","treepanel"],{panel:true,component:true,tablepanel:true,container:true,box:true,treepanel:true},["widget.treepanel"],0,[Ext.tree,"Panel",Ext.tree,"TreePanel",Ext,"TreePanel"],0));(Ext.cmd.derive("Ext.view.DragZone",Ext.dd.DragZone,{containerScroll:false,constructor:function(b){var e=this,a,d,c;Ext.apply(e,b);if(!e.ddGroup){e.ddGroup="view-dd-zone-"+e.view.id}a=e.view;d=a.ownerCt;if(d){c=d.getTargetEl().dom}else{c=a.el.dom.parentNode}e.callParent([c]);e.ddel=Ext.get(document.createElement("div"));e.ddel.addCls(Ext.baseCSSPrefix+"grid-dd-wrap")},init:function(c,a,b){this.initTarget(c,a,b);this.view.mon(this.view,{itemmousedown:this.onItemMouseDown,scope:this})},onValidDrop:function(b,a,c){this.callParent();b.el.focus()},onItemMouseDown:function(b,a,d,c,g){if(!this.isPreventDrag(g,a,d,c)){if(b.focusRow){b.focusRow(a)}this.handleMouseDown(g)}},isPreventDrag:function(a){return false},getDragData:function(c){var a=this.view,b=c.getTarget(a.getItemSelector());if(b){return{copy:a.copy||(a.allowCopy&&c.ctrlKey),event:new Ext.EventObjectImpl(c),view:a,ddel:this.ddel,item:b,records:a.getSelectionModel().getSelection(),fromPosition:Ext.fly(b).getXY()}}},onInitDrag:function(b,h){var e=this,g=e.dragData,d=g.view,a=d.getSelectionModel(),c=d.getRecord(g.item);if(!a.isSelected(c)){a.select(c,true)}g.records=a.getSelection();e.ddel.update(e.getDragText());e.proxy.update(e.ddel.dom);e.onStartDrag(b,h);return true},getDragText:function(){var a=this.dragData.records.length;return Ext.String.format(this.dragText,a,a==1?"":"s")},getRepairXY:function(b,a){return a?a.fromPosition:false}},1,0,0,0,0,0,[Ext.view,"DragZone"],0));(Ext.cmd.derive("Ext.tree.ViewDragZone",Ext.view.DragZone,{isPreventDrag:function(b,a){return(a.get("allowDrag")===false)||!!b.getTarget(this.view.expanderSelector)},getDragText:function(){var a=this.dragData.records,b=a.length,d=a[0].get(this.displayField),c="s";if(b===1&&d){return d}else{if(!d){c=""}}return Ext.String.format(this.dragText,b,c)},afterRepair:function(){var h=this,a=h.view,j=a.selectedItemCls,b=h.dragData.records,g,e=b.length,c=Ext.fly,d;if(Ext.enableFx&&h.repairHighlight){for(g=0;g=j.top&&h<(j.top+d)){return"before"}else{if(!a&&(l||(h>=(j.bottom-d)&&h<=j.bottom))){return"after"}else{return"append"}}},isValidDropPoint:function(b,j,n,k,g){if(!b||!g.item){return false}var o=this.view,l=o.getRecord(b),d=g.records,a=d.length,m=d.length,c,h;if(!(l&&j&&a)){return false}for(c=0;c2)?a[2]:null,h=(j>3)?a[3]:"/",d=(j>4)?a[4]:null,g=(j>5)?a[5]:false;document.cookie=c+"="+escape(e)+((b===null)?"":("; expires="+b.toGMTString()))+((h===null)?"":("; path="+h))+((d===null)?"":("; domain="+d))+((g===true)?"; secure":"")},get:function(d){var b=d+"=",g=b.length,a=document.cookie.length,e=0,c=0;while(e=0?a.substr(b+1):null},setHash:function(d){var a=this,c=a.useTopWindow?window.top:window;try{c.location.hash=d}catch(b){}},doSave:function(){this.hiddenField.value=this.currentToken},handleStateChange:function(a){this.currentToken=a;this.fireEvent("change",a)},updateIFrame:function(b){var a='
    '+Ext.util.Format.htmlEncode(b)+"
    ",d;try{d=this.iframe.contentWindow.document;d.open();d.write(a);d.close();return true}catch(c){return false}},checkIFrame:function(){var d=this,b=d.iframe.contentWindow,e,c,a,g;if(!b||!b.document){Ext.Function.defer(this.checkIFrame,10,this);return}e=b.document;c=e.getElementById("state");a=c?c.innerText:null;g=d.getHash();Ext.TaskManager.start({run:function(){var l=b.document,k=l.getElementById("state"),h=k?k.innerText:null,j=d.getHash();if(h!==a){a=h;d.handleStateChange(h);d.setHash(h);g=h;d.doSave()}else{if(j!==g){g=j;d.updateIFrame(j)}}},interval:50,scope:d});d.ready=true;d.fireEvent("ready",d)},startUp:function(){var a=this,b;a.currentToken=a.hiddenField.value||this.getHash();if(a.oldIEMode){a.checkIFrame()}else{b=a.getHash();Ext.TaskManager.start({run:function(){var c=a.getHash();if(c!==b){b=c;a.handleStateChange(b);a.doSave()}},interval:50,scope:a});a.ready=true;a.fireEvent("ready",a)}},init:function(d,b){var c=this,a=Ext.DomHelper;if(c.ready){Ext.callback(d,b,[c]);return}if(!Ext.isReady){Ext.onReady(function(){c.init(d,b)});return}c.hiddenField=Ext.getDom(c.fieldId);if(!c.hiddenField){c.hiddenField=Ext.getBody().createChild({id:Ext.id(),tag:"form",cls:Ext.baseCSSPrefix+"hide-display",children:[{tag:"input",type:"hidden",id:c.fieldId}]},false,true).firstChild}if(c.oldIEMode){c.iframe=Ext.getDom(c.iframeId);if(!c.iframe){c.iframe=a.append(c.hiddenField.parentNode,{tag:"iframe",id:c.iframeId,src:Ext.SSL_SECURE_URL})}}c.addEvents("ready","change");if(d){c.on("ready",d,b,{single:true})}c.startUp()},add:function(a,c){var b=this;if(c!==false){if(b.getToken()===a){return true}}if(b.oldIEMode){return b.updateIFrame(a)}else{b.setHash(a);return true}},back:function(){window.history.go(-1)},forward:function(){window.history.go(1)},getToken:function(){return this.ready?this.currentToken:this.getHash()}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.util,"History",Ext,"History"],0)); \ No newline at end of file diff --git a/static/ext-4.2.1.883/ext-theme-access.js b/static/ext-4.2.1.883/ext-theme-access.js new file mode 100644 index 0000000..e69de29 diff --git a/static/ext-4.2.1.883/ext-theme-classic-sandbox.js b/static/ext-4.2.1.883/ext-theme-classic-sandbox.js new file mode 100644 index 0000000..e69de29 diff --git a/static/ext-4.2.1.883/ext-theme-classic.js b/static/ext-4.2.1.883/ext-theme-classic.js new file mode 100644 index 0000000..e69de29 diff --git a/static/ext-4.2.1.883/ext-theme-gray.js b/static/ext-4.2.1.883/ext-theme-gray.js new file mode 100644 index 0000000..e69de29 diff --git a/static/ext-4.2.1.883/ext-theme-neptune.js b/static/ext-4.2.1.883/ext-theme-neptune.js new file mode 100644 index 0000000..17de87b --- /dev/null +++ b/static/ext-4.2.1.883/ext-theme-neptune.js @@ -0,0 +1 @@ +Ext.define("ExtThemeNeptune.Component",{override:"Ext.Component",initComponent:function(){this.callParent();if(this.dock&&this.border===undefined){this.border=false}},initStyles:function(){var b=this,a=b.border;if(b.dock){b.border=null}b.callParent(arguments);b.border=a}});Ext.define("ExtThemeNeptune.panel.Panel",{override:"Ext.panel.Panel",border:false,bodyBorder:false,initBorderProps:Ext.emptyFn,initBodyBorder:function(){if(this.bodyBorder!==true){this.callParent()}}});Ext.define("ExtThemeNeptune.layout.component.Dock",{override:"Ext.layout.component.Dock",noBorderClassTable:[0,Ext.baseCSSPrefix+"noborder-l",Ext.baseCSSPrefix+"noborder-b",Ext.baseCSSPrefix+"noborder-bl",Ext.baseCSSPrefix+"noborder-r",Ext.baseCSSPrefix+"noborder-rl",Ext.baseCSSPrefix+"noborder-rb",Ext.baseCSSPrefix+"noborder-rbl",Ext.baseCSSPrefix+"noborder-t",Ext.baseCSSPrefix+"noborder-tl",Ext.baseCSSPrefix+"noborder-tb",Ext.baseCSSPrefix+"noborder-tbl",Ext.baseCSSPrefix+"noborder-tr",Ext.baseCSSPrefix+"noborder-trl",Ext.baseCSSPrefix+"noborder-trb",Ext.baseCSSPrefix+"noborder-trbl"],edgeMasks:{top:8,right:4,bottom:2,left:1},handleItemBorders:function(){var y=this,f=0,z=8,A=4,l=2,e=1,a=y.owner,s=a.bodyBorder,n=a.border,j=y.collapsed,p=y.edgeMasks,k=y.noBorderClassTable,x=a.dockedItems.generation,w,d,v,h,r,m,u,o,g,q,t,c;if(y.initializedBorders===x){return}t=[];c=[];d=y.getBorderCollapseTable();k=y.getBorderClassTable?y.getBorderClassTable():k;y.initializedBorders=x;y.collapsed=false;v=y.getDockedItems();y.collapsed=j;for(r=0,m=v.length;r