diff --git a/fas/dev.cfg b/fas/dev.cfg index 9cf0337..5818aa6 100644 --- a/fas/dev.cfg +++ b/fas/dev.cfg @@ -4,8 +4,9 @@ # (such as template engine, encodings, etc.) all go in # fas/config/app.cfg mail.on = True -mail.server = 'bastion.fedora.phx.redhat.com' -base_url_filter.base_url = "http://192.168.2.101:8080" +#mail.server = 'bastion.fedora.phx.redhat.com' +#base_url_filter.base_url = "http://192.168.2.101:8080" +mail.server = 'localhost' base_url_filter.use_x_forwarded_host = True # DATABASE diff --git a/fas/fas/controllers.py b/fas/fas/controllers.py index ffff527..cc5c22e 100644 --- a/fas/fas/controllers.py +++ b/fas/fas/controllers.py @@ -21,7 +21,23 @@ class knownUser(validators.FancyValidator): def validate_python(self, value, state): p = Person.byUserName(value) if p.cn: - raise validators.Invalid("'%s' already axists" % value, value, state) + raise validators.Invalid("'%s' already exists" % value, value, state) + +class unknownUser(validators.FancyValidator): + def _to_python(self, value, state): + return value.strip() + def validate_python(self, value, state): + p = Person.byUserName(value) + if not p.cn: + raise validators.Invalid("'%s' does not exist" % value, value, state) + +class unknownGroup(validators.FancyValidator): + def _to_python(self, value, state): + return value.strip() + def validate_python(self, value, state): + g = Groups.groups(groupName) + if not g: + raise validators.Invalid("'%s' does not exist" % value, value, state) class newPerson(widgets.WidgetsList): @@ -32,14 +48,38 @@ class newPerson(widgets.WidgetsList): telephoneNumber = widgets.TextField(label='Telephone Number', validator=validators.PhoneNumber(not_empty=True)) postalAddress = widgets.TextArea(label='Postal Address', validator=validators.NotEmpty) -newPersonForm = widgets.TableForm(fields=newPerson(), submit_text='Sign Up') +newPersonForm = widgets.ListForm(fields=newPerson(), submit_text='Sign Up') + +class editPerson(widgets.WidgetsList): +# cn = widgets.TextField(label='Username', validator=validators.PlainText(not_empty=True, max=10)) + userName = widgets.HiddenField(validator=validators.All(unknownUser(not_empty=True, max=10), validators.String(max=32, min=3))) + givenName = widgets.TextField(label='Full Name', validator=validators.String(not_empty=True, max=42)) + mail = widgets.TextField(label='Email', validator=validators.Email(not_empty=True, strip=True)) + fedoraPersonBugzillaMail = widgets.TextField(label='Bugzilla Email', validator=validators.Email(not_empty=True, strip=True)) + fedoraPersonIrcNick = widgets.TextField(label='IRC Nick') + fedoraPersonKeyId = widgets.TextField(label='PGP Key') + telephoneNumber = widgets.TextField(label='Telephone Number', validator=validators.PhoneNumber(not_empty=True)) + postalAddress = widgets.TextArea(label='Postal Address', validator=validators.NotEmpty) + description = widgets.TextArea(label='Description') + +editPersonForm = widgets.ListForm(fields=editPerson(), submit_text='Update') + +class editGroup(widgets.WidgetsList): + groupName = widgets.HiddenField(validator=validators.All(unknownGroup(not_empty=True, max=10), validators.String(max=32, min=3))) + fedoraGroupDesc = widgets.TextField(label='Description', validator=validators.NotEmpty) + fedoraGroupOwner = widgets.TextField(label='Group Owner', validator=validators.All(knownUser(not_empty=True, max=10), validators.String(max=32, min=3))) + fedoraGroupNeedsSponsor = widgets.CheckBox(label='Needs Sponsor') + fedoraGroupUserCanRemove = widgets.CheckBox(label='Self Removal') + fedoraGroupJoinMsg = widgets.TextField(label='Group Join Message') + +editGroupForm = widgets.ListForm(fields=editPerson(), submit_text='Update') class findUser(widgets.WidgetsList): userName = widgets.AutoCompleteField(label='Username', search_controller='search', search_param='userName', result_name='people') action = widgets.HiddenField(label='action', default='apply', validator=validators.String(not_empty=True)) groupName = widgets.HiddenField(label='groupName', validator=validators.String(not_empty=True)) -searchUserForm = widgets.TableForm(fields=findUser(), submit_text='Invite') +searchUserForm = widgets.ListForm(fields=findUser(), submit_text='Invite') class Root(controllers.RootController): @@ -75,6 +115,7 @@ class Root(controllers.RootController): if not identity.current.anonymous \ and identity.was_login_attempted() \ and not identity.get_identity_errors(): + turbogears.flash('Welcome, %s' % Person.byUserName(turbogears.identity.current.user_name).givenName) raise redirect(forward_url) forward_url=None @@ -98,35 +139,67 @@ class Root(controllers.RootController): @expose() def logout(self): identity.current.logout() + turbogears.flash('You have successfully logged out.') raise redirect("/") + @expose(template="fas.templates.viewAccount") + @identity.require(identity.not_anonymous()) + def viewAccount(self,userName=None, action=None): + if not userName: + userName = turbogears.identity.current.user_name + if turbogears.identity.current.user_name == userName: + personal = True + else: + personal = False + try: + Groups.byUserName(turbogears.identity.current.user_name)['accounts'].cn + admin = True + except KeyError: + admin = False + user = Person.byUserName(userName) + groups = Groups.byUserName(userName) + groupsPending = Groups.byUserName(userName, unapprovedOnly=True) + groupdata={} + for g in groups: + groupdata[g] = Groups.groups(g)[g] + for g in groupsPending: + groupdata[g] = Groups.groups(g)[g] + try: + groups['cla_done'] + claDone=True + except KeyError: + claDone=None + return dict(user=user, groups=groups, groupsPending=groupsPending, action=action, groupdata=groupdata, claDone=claDone, personal=personal, admin=admin) + @expose(template="fas.templates.editAccount") @identity.require(identity.not_anonymous()) - def editAccount(self,userName=None, action=None): + def editAccount(self, userName=None, action=None): if userName: try: Groups.byUserName(turbogears.identity.current.user_name)['accounts'].cn if not userName: userName = turbogears.identity.current.user_name except KeyError: - turbogears.flash('You cannot view %s' % userName ) + turbogears.flash('You cannot edit %s' % userName ) userName = turbogears.identity.current.user_name else: userName = turbogears.identity.current.user_name user = Person.byUserName(userName) - groups = Groups.byUserName(userName) - groupsPending = Groups.byUserName(userName, unapprovedOnly=True) - try: - groups['cla_done'] - claDone=True - except KeyError: - claDone=None - return dict(user=user, groups=groups, groupsPending=groupsPending, action=action, claDone=claDone) + value = {'userName' : userName, + 'givenName' : user.givenName, + 'mail' : user.mail, + 'fedoraPersonBugzillaMail' : user.fedoraPersonBugzillaMail, + 'fedoraPersonIrcNick' : user.fedoraPersonIrcNick, + 'fedoraPersonKeyId' : user.fedoraPersonKeyId, + 'telephoneNumber' : user.telephoneNumber, + 'postalAddress' : user.postalAddress, + 'description' : user.description, } + return dict(form=editPersonForm, value=value) - @expose(template="fas.templates.editGroup") + @expose(template="fas.templates.viewGroup") @exception_handler(errorMessage,rules="isinstance(tg_exceptions,ValueError)") @identity.require(identity.not_anonymous()) - def editGroup(self, groupName): + def viewGroup(self, groupName): try: groups = Groups.byGroupName(groupName, includeUnapproved=True) except KeyError, e: @@ -152,6 +225,32 @@ class Root(controllers.RootController): value = {'groupName' : group.cn} return dict(groups=groups, group=group, me=me, searchUserForm=searchUserForm, value=value) + @expose(template="fas.templates.editGroup") + @identity.require(identity.not_anonymous()) + def editGroup(self, groupName, action=None): + pass + userName = turbogears.identity.current.user_name + try: + Groups.byUserName(userName)['accounts'].cn + except KeyError: + try: + Groups.byUserName(userName)[groupName] + if Groups.byUserName(userName)[groupName].fedoraRoleType.lower() != 'administrator': + raise KeyError + except KeyError: + turbogears.flash('You cannot edit %s' % groupName) + turbogears.redirect('viewGroup?groupName=%s' % groupName) + group = Groups.groups(groupName)[groupName] + #value = {'givenName' : user.givenName, + # 'mail' : user.mail, + # 'fedoraPersonBugzillaMail' : user.fedoraPersonBugzillaMail, + # 'fedoraPersonIrcNick' : user.fedoraPersonIrcNick, + # 'fedoraPersonKeyId' : user.fedoraPersonKeyId, + # 'telephoneNumber' : user.telephoneNumber, + # 'postalAddress' : user.postalAddress, + # 'description' : user.description, } + return dict(form=editGroupForm, value=value) + @expose(template="fas.templates.groupList") @exception_handler(errorMessage,rules="isinstance(tg_exceptions,ValueError)") @identity.require(identity.not_anonymous()) @@ -208,7 +307,7 @@ class Root(controllers.RootController): if turbogears.identity.current.user_name: turbogears.flash("Password Changed") - turbogears.redirect("editAccount") + turbogears.redirect("viewAccount") else: turbogears.flash('Your password has been emailed to you') return dict() @@ -223,34 +322,18 @@ class Root(controllers.RootController): except: turbogears.flash("No users found matching '%s'" % search) users = [] - return dict(printList=users, search=search) + cla_done = Groups.byGroupName('cla_done') + claDone = {} + for u in users: + try: + cla_done[u] + claDone[u] = True + except KeyError: + claDone[u] = False + return dict(users=users, claDone=claDone, search=search) listUsers = listUser - @expose(template='fas.templates.edit') - @exception_handler(errorMessage,rules="isinstance(tg_exceptions,ValueError)") - @identity.require(identity.not_anonymous()) - def editUserAttribute(self, attribute, value, userName=None): - try: - Groups.byUserName(turbogears.identity.current.user_name)['accounts'].cn - if not userName: - userName = turbogears.identity.current.user_name - except KeyError: - turbogears.flash('You cannot view %s' % userName ) - userName = turbogears.identity.current.user_name - - attribute = attribute.encode('utf8') - value = value.encode('utf8') - if attribute and value: - p = Person.byUserName(userName) - p.__setattr__(attribute, value) - turbogears.flash("'%s' Updated to %s" % (attribute, value)) - if userName == turbogears.identity.current.user_name: - turbogears.redirect('editAccount') - else: - turbogears.redirect('editAccount?userName=%s' % userName) - return dict(userName=userName, attribute=attribute, value=value) - # @expose(template='fas.templates.apply') # @exception_handler(errorMessage, rules="isinstance(tg_exceptions,ValueError)") # @identity.require(identity.not_anonymous()) @@ -258,9 +341,9 @@ class Root(controllers.RootController): # # This doesn't work # turbogears.identity.current.user_name=userName # turbogears.flash('Sudoed to %s' % userName) -# turbogears.recirect('editAccount') +# turbogears.recirect('viewAccount') -# @error_handler(editGroup) +# @error_handler(viewGroup) # @validate(form=newPersonForm) @expose(template='fas.templates.apply') @identity.require(identity.not_anonymous()) @@ -276,14 +359,14 @@ class Root(controllers.RootController): group = Groups.groups(groupName)[groupName] except KeyError, e: turbogears.flash('Group Error: %s does not exist - %s' % (groupName, e)) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) try: p = Person.byUserName(userName) if not p.cn: raise KeyError, 'User %s, just not there' % userName except KeyError, e: turbogears.flash('User Error: %s does not exist - %s' % (userName, e)) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) g = Groups.byGroupName(groupName, includeUnapproved=True) @@ -293,14 +376,14 @@ class Root(controllers.RootController): Groups.apply(groupName, userName) except ldap.ALREADY_EXISTS: turbogears.flash('%s Already in group!' % p.cn) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) else: turbogears.flash('%s Applied!' % p.cn) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) # Some error checking for the sponsors if g[userName].fedoraRoleType.lower() == 'administrator' and g[sponsor].fedoraRoleType.lower() == 'sponsor': - raise ValueError, 'Sponsors cannot alter administrators. End of story' + raise ValueError, 'Sponsors cannot alter administrators. End of story.' try: userGroup = Groups.byGroupName(groupName)[userName] @@ -315,10 +398,10 @@ class Root(controllers.RootController): Groups.remove(group.cn, p.cn) except TypeError: turbogears.flash('%s could not be removed from %s!' % (p.cn, group.cn)) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) else: turbogears.flash('%s removed from %s!' % (p.cn, group.cn)) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) return dict() # Upgrade user in a group @@ -329,9 +412,9 @@ class Root(controllers.RootController): p.upgrade(groupName) except TypeError, e: turbogears.flash('Cannot upgrade %s - %s!' % (p.cn, e)) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) turbogears.flash('%s Upgraded!' % p.cn) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) # Downgrade user in a group @@ -342,18 +425,18 @@ class Root(controllers.RootController): p.downgrade(groupName) except TypeError, e: turbogears.flash('Cannot downgrade %s - %s!' % (p.cn, e)) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) turbogears.flash('%s Downgraded!' % p.cn) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) # Sponsor / Approve User elif action == 'sponsor' or action == 'apply': p.sponsor(groupName, sponsor) turbogears.flash('%s has been sponsored!' % p.cn) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) turbogears.flash('Invalid action: %s' % action) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) return dict() @expose(template='fas.templates.inviteMember') @@ -380,27 +463,27 @@ class Root(controllers.RootController): turbogears.flash('Application sent for %s' % user.cn) except ldap.ALREADY_EXISTS, e: turbogears.flash('Application Denied: %s' % e[0]['desc']) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) if action == 'Remove' and group.fedoraGroupUserCanRemove == 'TRUE': try: Groups.remove(group.cn, user.cn) except TypeError: turbogears.flash('%s could not be removed from %s!' % (user.cn, group.cn)) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) else: turbogears.flash('%s removed from %s!' % (user.cn, group.cn)) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) else: turbogears.flash('%s does not allow self removal' % group.cn) - turbogears.redirect('editGroup?groupName=%s' % group.cn) + turbogears.redirect('viewGroup?groupName=%s' % group.cn) return dict() @expose(template='fas.templates.signUp') def signUp(self): if turbogears.identity.not_anonymous(): turbogears.flash('No need to sign up, You have an account!') - turbogears.redirect('editAccount') + turbogears.redirect('viewAccount') return dict(form=newPersonForm) @validate(form=newPersonForm) @@ -424,38 +507,41 @@ class Root(controllers.RootController): turbogears.redirect('signUp') return dict() + @validate(form=editPersonForm) + @error_handler(editAccount) + @expose(template='fas.templates.editAccount') + def editAccountSubmit(self, givenName, mail, fedoraPersonBugzillaMail, telephoneNumber, postalAddress, userName=None, fedoraPersonIrcNick='', fedoraPersonKeyId='', description=''): + if userName: + try: + Groups.byUserName(turbogears.identity.current.user_name)['accounts'].cn + if not userName: + userName = turbogears.identity.current.user_name + except KeyError: + turbogears.flash('You cannot view %s' % userName) + userName = turbogears.identity.current.user_name + turbogears.redirect("editAccount") + return dict() + else: + userName = turbogears.identity.current.user_name + user = Person.byUserName(userName) + user.__setattr__('givenName', givenName.encode('utf8')) + user.__setattr__('mail', mail.encode('utf8')) + user.__setattr__('fedoraPersonBugzillaMail', fedoraPersonBugzillaMail.encode('utf8')) + user.__setattr__('fedoraPersonIrcNick', fedoraPersonIrcNick.encode('utf8')) + user.__setattr__('fedoraPersonKeyId', fedoraPersonKeyId.encode('utf8')) + user.__setattr__('telephoneNumber', telephoneNumber.encode('utf8')) + user.__setattr__('postalAddress', postalAddress.encode('utf8')) + user.__setattr__('description', description.encode('utf8')) + turbogears.flash('Your account has been updated.') + turbogears.redirect("viewAccount?userName=%s" % userName) + return dict() + @expose(format="json") def search(self, userName=None, groupName=None): people = Person.users('%s*' % userName) return dict(people= filter(lambda item: userName in item.lower(), people)) - @expose(format="json") - def help(self, helpID='Unknown'): - messages = { - 'Unknown' : ''' Unknown: If you know what help should be here, please email accounts@fedoraproject.org and tell them.''', - 'postalAddress' : ''' Postal Address: Your local mailing address. It could be a work address or a home address.''', - 'cn' : ''' Account Name: A unique identifier for each user. This is your 'username' for many parts of fedora. This will also be your @fedoraproject.org email alias.''', - 'givenName' : ''' Real Name: This is your full name, often Firstname Lastname.''', - 'mail' : ''' Email Address: This is your primary email address. Notifications, aliases, password resets all get sent to this address. Other email addresses can be added (like bugzilla address)''', - 'fedoraPersonBugzillaMail' : ''' Bugzilla Email: For most this is the same address as as their primary email address.''', - 'fedoraPersonIrcNick' : ''' IRC Nick: Many fedora developers can be found on freenode.net. Make sure your nick is registered so no one else takes it. After you have registered, let the rest of fedora know what your nick is.''', - 'fedoraPersonKeyId' : ''' PGP Key: PGP key's are required to verify your identity to others and to encrypt messages. It is required in order to sign the CLA and, as such, is required to be a contributor. In order to create and upload your key please see our howto at: http://fedoraproject.org/wiki/DocsProject/UsingGpg/CreatingKeys ''', - 'telephoneNumber' : ''' Telephone Number: Please include a country code if outside of the united states. ''', - 'description' : ''' Description: Just a brief comment on yourself. Could include your website or blog. ''', - 'password' : ''' Password: Used to access fedora resources. Resources that don't require your password may require ssh keys ''', - 'accountStatus' : ''' Account Status: Some accounts may be disabled because of misconduct or password expiration. If your account is not active and you are not sure why, please contact irc.freenode.net ''', - 'cla' : ''' Contributor License Agreement: This agreement is required in order to be a Fedora contributor. The CLA can be found at: http://fedoraproject.org/wiki/Legal/Licenses/CLA ''', - 'inviteToGroup' : ''' This will add a user to the following group. They will initially be unapproved, just as if they had applied themselves. An email notification will be sent. ''' - } - try: - messages[helpID] - except KeyError: - helpID='Unknown' - return dict(help=messages[helpID]) - #filter(lambda item: userName in item.lower(), people)) - - @expose(template='fas.templates.invite') @exception_handler(errorMessage,rules="isinstance(tg_exceptions,ValueError)") diff --git a/fas/fas/fasLDAP.py b/fas/fas/fasLDAP.py index b0b3e8c..5aa0e56 100644 --- a/fas/fas/fasLDAP.py +++ b/fas/fas/fasLDAP.py @@ -20,8 +20,9 @@ class Group: __filter = '' __cn = '' - def __init__(self, cn, fedoraGroupOwner, fedoraGroupType, fedoraGroupNeedsSponsor, fedoraGroupUserCanRemove, fedoraGroupJoinMsg): + def __init__(self, cn, fedoraGroupDesc, fedoraGroupOwner, fedoraGroupType, fedoraGroupNeedsSponsor, fedoraGroupUserCanRemove, fedoraGroupJoinMsg): self.cn = cn + self.fedoraGroupDesc = fedoraGroupDesc self.fedoraGroupOwner = fedoraGroupOwner self.fedoraGroupType = fedoraGroupType self.fedoraGroupNeedsSponsor = fedoraGroupNeedsSponsor @@ -59,10 +60,11 @@ class Group: # modify(base, attr, value, self.__getattr__(attr)) @classmethod - def newGroup(self, cn, fedoraGroupOwner, fedoraGroupNeedsSponsor, fedoraGroupUserCanRemove, fedoraGroupJoinMsg): + def newGroup(self, cn, fedoraGroupDesc, fedoraGroupOwner, fedoraGroupNeedsSponsor, fedoraGroupUserCanRemove, fedoraGroupJoinMsg): ''' Create a new group ''' attributes = { 'cn' : cn, 'objectClass' : ('fedoraGroup'), + 'fedoraGroupDesc' : fedoraGroupDesc, 'fedoraGroupOwner' : fedoraGroupOwner, 'fedoraGroupType' : '1', 'fedoraGroupNeedsSponsor' : fedoraGroupNeedsSponsor, @@ -151,6 +153,7 @@ class Groups: print group groups[name] = Group( cn = group[0][1]['cn'][0], + fedoraGroupDesc = group[0][1]['fedoraGroupDesc'][0], fedoraGroupOwner = group[0][1]['fedoraGroupOwner'][0], fedoraGroupType = group[0][1]['fedoraGroupType'][0], fedoraGroupNeedsSponsor = group[0][1]['fedoraGroupNeedsSponsor'][0], @@ -452,7 +455,7 @@ def delete(base, ldapServer=None): s = Server() ldapServer = s.ldapConn - ldapServer.simple_bind_s('cn=directory manager', 'test') + ldapServer.simple_bind_s('cn=directory manager', 'fedoraproject') print "Deleteing %s " % base ldapServer.delete_s(base) @@ -463,7 +466,7 @@ def add(base, attributes, ldapServer=None): ldapServer = s.ldapConn attributes=[ (k,v) for k,v in attributes.items() ] - ldapServer.simple_bind_s('cn=directory manager', 'test') + ldapServer.simple_bind_s('cn=directory manager', 'fedoraproject') ldapServer.add_s(base, attributes) def modify(base, attribute, new, old=None, ldapServer=None): @@ -476,7 +479,7 @@ def modify(base, attribute, new, old=None, ldapServer=None): ldapServer = s.ldapConn from ldap import modlist - ldapServer.simple_bind_s('cn=directory manager', 'test') + ldapServer.simple_bind_s('cn=directory manager', 'fedoraproject') if old == None: old = 'None' @@ -500,7 +503,7 @@ def search(base, filter, attributes=None, ldapServer=None): scope = ldap.SCOPE_SUBTREE count = 0 timeout = 2 - ldapServer.simple_bind_s('cn=directory manager', 'test') + ldapServer.simple_bind_s('cn=directory manager', 'fedoraproject') result_set = [] try: result_id = ldapServer.search(base, scope, filter, attributes) diff --git a/fas/fas/feeds.py b/fas/fas/feeds.py index 93a64c8..f758bdb 100644 --- a/fas/fas/feeds.py +++ b/fas/fas/feeds.py @@ -3,7 +3,7 @@ from xml.dom import minidom class Koji: - def __init__(self, userName, url='http://publictest8/koji/recentbuilds?user='): + def __init__(self, userName, url='http://publictest8.fedora.redhat.com/koji/recentbuilds?user='): buildFeed = minidom.parse(urllib.urlopen(url + userName)) try: self.userLink = buildFeed.getElementsByTagName('link')[0].childNodes[0].data diff --git a/fas/fas/static/css/draggable.css b/fas/fas/static/css/draggable.css deleted file mode 100644 index 2627b5c..0000000 --- a/fas/fas/static/css/draggable.css +++ /dev/null @@ -1,28 +0,0 @@ -h1 { - font-size: 2em; - color: #4B4545; - text-align: center; -} - -.draggable -{ - color: white; - cursor: move; - font-size: 20px; -// height: 100px; -// line-height: 100px; - position: absolute; - text-align: center; - top: 200px; - width: 100px; -} - -.blue { background: blue; } -.green { background: green; } -.red { background: red; } -.white -{ - background: white; - border: 1px solid black; - color: black; -} diff --git a/fas/fas/static/css/fas.css b/fas/fas/static/css/fas.css deleted file mode 100644 index 9fd029b..0000000 --- a/fas/fas/static/css/fas.css +++ /dev/null @@ -1,354 +0,0 @@ -* -{ - margin: 0; - padding: 0; -} - -body -{ - font-size: 76%; -} - -a -{ - text-decoration: none; -} - -#wrapper -{ - font: normal 2ex/1.5 sans-serif; -} - -#head -{ - overflow: hidden; - margin-top: 35px; - height: 70px; - line-height: 70px; - background: url(images/head.png) 0 0 repeat-x; -} - -#head h1 -{ - width: 250px; - float: left; - text-indent: -9999px; - overflow: hidden; - background: url(images/logo.png) 1ex 50% no-repeat; -} - -#searchbox -{ - width: 36ex; - float: right; - text-align: right; - margin-right: 2ex; -} - -#searchbox label -{ - display: none; -} - -#searchbox input -{ - display: inline; - border: 1px solid #CCCCCC; -} - -#searchbox #q -{ - width: 20ex; -} - -#topnav -{ - height: 30px; - line-height: 30px; - background: url(images/topnav.png) 0 0 repeat-x; - font-size: 1.6ex; -} - -#topnav ul -{ - list-style: none; - text-align: center; -} - -#topnav ul li -{ - display: inline; - background: url(images/topnav-separator.png) 0 50% no-repeat; - padding-left: 3px; -} - -#topnav ul li.first -{ - background: none; -} - -#topnav a -{ - color: #445566; - margin: 0 2ex; -} - -#topnav a:hover -{ - color: #000000; -} - -#infobar -{ - position: absolute; - top: 0; - left: 0; - right: 0; - height: 35px; - line-height: 35px; - background: url(images/infobar.png) 0 0 repeat-x; - font-size: 1.6ex; -} - -#authstatus -{ - width: 40ex; - float: left; - color: #FFFFFF; - padding-left: 1.5ex; -} - -#authstatus strong -{ - color: #DED6A1; -} - -#control -{ - width: 40ex; - float: right; - margin-right: 1ex; -} - -#control ul -{ - list-style: none; - text-align: right; -} - -#control ul li -{ - display: inline; - background: url(images/control-separator.png) 0 50% no-repeat; -} - -#control a -{ - color: #DED6A1; - margin: 0 1.5ex; -} - -#main -{ - background: url(images/shadow.png) 0 0 repeat-x; -} - -#sidebar -{ - width: 22ex; - float: left; - background: #335F9D url(images/sidebar.png) 0 0 repeat-x; - border: 1px solid #112233; -} - -#sidebar ul -{ - list-style: none; -} - -#sidebar li -{ - border-top: 1px solid #CCCCCC; -} - -#sidebar li.first -{ - border-top: none; -} - -#sidebar a -{ - display: block; - text-align: center; - color: #FFFFFF; - padding: 0.5ex 0; -} - -#sidebar a:hover -{ - background: #082C59; -} - -#content -{ - margin-left: 22ex; - padding: 2ex 4ex; -} - -#content h2 -{ - /* header icon */ -} - -#content a -{ - color: #0C6ED0; -} - -.userbox -{ -} - -.userbox dt -{ - width: 23ex; - float: left; - text-align: right; -} - -.userbox dd -{ - margin-left: 25ex; -} - -.account -{ - padding-left: 30px; - background: url(images/account.png) 0 68% no-repeat; -} - -.approved -{ - padding-left: 20px; - background: url(images/approved.png) 0 68% no-repeat; -} - -.unapproved -{ - padding-left: 20px; - background: url(images/unapproved.png) 0 68% no-repeat; -} - -.attn -{ - padding-left: 20px; - background: url(images/attn.png) 0 68% no-repeat; -} - -.roleslist -{ - list-style: none; -} - -.roleslist li -{ - margin-left: 0.5ex; -} - -.actions -{ - margin-top: 1.5ex; - list-style: none; -} - -.actions li -{ - display: inline; -} - -#rolespanel -{ - list-style: none; -} - -#rolespanel li.role -{ - border-top: 2px solid #EEEEEE; - margin-top: 1ex; - padding-top: 1ex; - padding-left: 22px; - background: url(images/arrow.png) 0 1.6ex no-repeat; -} - -#rolespanel h4 -{ - display: inline; -} - -#rolespanel dt -{ - width: 10ex; - float: left; - text-align: right; - margin-bottom: 1ex; -} - -#rolespanel dd -{ - margin-left: 12ex; - margin-bottom: 1ex; -} - -#rolespanel .tools, #rolespanel .queue -{ - list-style: none; -} - -#rolespanel .tools li -{ - padding-left: 22px; - background: url(images/tools.png) 0 50% no-repeat; -} - -#rolespanel .queue li -{ - padding-left: 22px; - background: url(images/queue.png) 0 50% no-repeat; -} - -#footer -{ - font-size: 1.6ex; - clear: both; - text-align: center; - padding: 15px 0 2.5ex; - background: url(images/footer-top.png) 0 0 repeat-x; -} - -#footlinks -{ - padding-top: 3px; - padding-bottom: 18px; - background: #EEEEEE url(images/footer-bottom.png) 0 100% repeat-x; - list-style: none; -} - -#footlinks li -{ - display: inline; - border-left: 1px solid #CCCCCC; - padding-left: 1px; -} - -#footlinks li.first -{ - padding-left: 0; - border-left: none; -} - -#footlinks a -{ - margin: 0 2ex; - color: #3465A4; -} - diff --git a/fas/fas/static/css/sortable_tables.css b/fas/fas/static/css/sortable_tables.css deleted file mode 100644 index 3620868..0000000 --- a/fas/fas/static/css/sortable_tables.css +++ /dev/null @@ -1,66 +0,0 @@ -h1 { - font-size: 2em; - color: #4B4545; - text-align: center; -} - -table.datagrid { -/* width: 100%; */ - border-collapse: collapse; -} - -table.datagrid thead th { - text-align: left; - background-color: #4B4545; - background-repeat: no-repeat; - background-position: right center; - color: white; - font-weight: bold; - padding: .3em .7em; - font-size: .9em; - padding-right: 5px; - background-repeat: no-repeat; - background-position: 95% right; -} - -table.datagrid thead th a { - color: white; - text-decoration: none; - font-size: 1.0em; - background-repeat: no-repeat; - background-position: center right; - padding-right: 15px; -} - -table.datagrid thead th.over { - background-color: #746B6B; - cursor: pointer; -} - -table.datagrid tbody th { - font-weight: bold; -} - -table.datagrid tbody td, table.datagrid tbody th { - text-align: left; - padding: .3em .7em; - border-bottom: 1px solid #eee; -} - -table.datagrid tbody tr.alternate td, table.datagrid tbody tr.alternate th { - background-color: #f1f1f1; -} - -table.datagrid tfoot td, table.datagrid tfoot th { - background-color: #FFFEE3; - color: #4B4545; - padding: .5em; - font-weight: bold; - border-top: 2px solid #4B4545; -} - -table.datagrid tfoot th { text-align: left; } - -table.datagrid tfoot td { } - -.invisible { display: none; } diff --git a/fas/fas/static/css/static/images/favicon.ico b/fas/fas/static/css/static/images/favicon.ico deleted file mode 100644 index 332557b..0000000 Binary files a/fas/fas/static/css/static/images/favicon.ico and /dev/null differ diff --git a/fas/fas/static/css/static/images/header-icon_account.png b/fas/fas/static/css/static/images/header-icon_account.png deleted file mode 100644 index d32d048..0000000 Binary files a/fas/fas/static/css/static/images/header-icon_account.png and /dev/null differ diff --git a/fas/fas/static/css/static/images/header_inner.png b/fas/fas/static/css/static/images/header_inner.png deleted file mode 100644 index 2b2d87d..0000000 Binary files a/fas/fas/static/css/static/images/header_inner.png and /dev/null differ diff --git a/fas/fas/static/css/static/images/hr.png b/fas/fas/static/css/static/images/hr.png deleted file mode 100644 index 66aa5c1..0000000 Binary files a/fas/fas/static/css/static/images/hr.png and /dev/null differ diff --git a/fas/fas/static/css/static/images/icon_tool-item.png b/fas/fas/static/css/static/images/icon_tool-item.png deleted file mode 100644 index c54189c..0000000 Binary files a/fas/fas/static/css/static/images/icon_tool-item.png and /dev/null differ diff --git a/fas/fas/static/css/static/images/icon_warning.png b/fas/fas/static/css/static/images/icon_warning.png deleted file mode 100644 index d7f3f55..0000000 Binary files a/fas/fas/static/css/static/images/icon_warning.png and /dev/null differ diff --git a/fas/fas/static/css/static/images/info.png b/fas/fas/static/css/static/images/info.png deleted file mode 100644 index 329c523..0000000 Binary files a/fas/fas/static/css/static/images/info.png and /dev/null differ diff --git a/fas/fas/static/css/static/images/ok.png b/fas/fas/static/css/static/images/ok.png deleted file mode 100644 index fee6751..0000000 Binary files a/fas/fas/static/css/static/images/ok.png and /dev/null differ diff --git a/fas/fas/static/css/static/images/status_approved.png b/fas/fas/static/css/static/images/status_approved.png deleted file mode 100644 index 62b254b..0000000 Binary files a/fas/fas/static/css/static/images/status_approved.png and /dev/null differ diff --git a/fas/fas/static/css/static/images/status_incomplete.png b/fas/fas/static/css/static/images/status_incomplete.png deleted file mode 100644 index 3169e1d..0000000 Binary files a/fas/fas/static/css/static/images/status_incomplete.png and /dev/null differ diff --git a/fas/fas/static/css/static/images/status_rejected.png b/fas/fas/static/css/static/images/status_rejected.png deleted file mode 100644 index bedcaea..0000000 Binary files a/fas/fas/static/css/static/images/status_rejected.png and /dev/null differ diff --git a/fas/fas/static/css/static/images/tg_under_the_hood.png b/fas/fas/static/css/static/images/tg_under_the_hood.png deleted file mode 100644 index bc9c79c..0000000 Binary files a/fas/fas/static/css/static/images/tg_under_the_hood.png and /dev/null differ diff --git a/fas/fas/static/css/static/images/under_the_hood_blue.png b/fas/fas/static/css/static/images/under_the_hood_blue.png deleted file mode 100644 index 90e84b7..0000000 Binary files a/fas/fas/static/css/static/images/under_the_hood_blue.png and /dev/null differ diff --git a/fas/fas/static/css/style.css b/fas/fas/static/css/style.css index 261c78a..3a68603 100644 --- a/fas/fas/static/css/style.css +++ b/fas/fas/static/css/style.css @@ -325,6 +325,11 @@ a background: url(/fas/static/images/footer-top.png) 0 0 repeat-x; } +#footer .copy, #footer .disclaimer +{ + font-size: 1.5ex; +} + #footlinks { padding-top: 3px; @@ -360,17 +365,6 @@ a margin: 1ex 0; } -.flash -{ - float: left; - background: #DEE6B1 url(/fas/static/images/success.png) 10px 50% no-repeat; - height: 50px; - line-height: 50px; - border: 1px solid #998877; - padding: 0 15px 0 43px; - margin-top: 9px; -} - .help { background: #DEE6B1 url(/fas/static/images/help.png) 10px 50% no-repeat; @@ -379,3 +373,56 @@ a margin: 1ex 0; } +.letters +{ + list-style: none; +} + +.letters li +{ + display: inline; + margin-right: 1ex; +} + +#content table +{ + border-collapse: collapse; +} + +#content table th, #content table td +{ + padding: 0 2ex; +} + +pre +{ + font-size: 3ex; +} + +form ul +{ + list-style: none; +} + +form li +{ + margin: 0 0 1ex; + text-align: left; + overflow: auto; +} + +form li label +{ + float: left; + clear: left; + width: 16ex; + text-align: right; + margin: 0; + padding: 0 2ex 0 0; +} + +form li input, form li textarea +{ + margin: 0; +} + diff --git a/fas/fas/static/javascript/DragAndDrop.js b/fas/fas/static/javascript/DragAndDrop.js deleted file mode 100644 index 3b64298..0000000 --- a/fas/fas/static/javascript/DragAndDrop.js +++ /dev/null @@ -1,774 +0,0 @@ -/*** -MochiKit.DragAndDrop 1.4 - -See for documentation, downloads, license, etc. - -Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) - Mochi-ized By Thomas Herve (_firstname_@nimail.org) - -***/ - -if (typeof(dojo) != 'undefined') { - dojo.provide('MochiKit.DragAndDrop'); - dojo.require('MochiKit.Base'); - dojo.require('MochiKit.DOM'); - dojo.require('MochiKit.Iter'); - dojo.require('MochiKit.Visual'); - dojo.require('MochiKit.Signal'); -} - -if (typeof(JSAN) != 'undefined') { - JSAN.use("MochiKit.Base", []); - JSAN.use("MochiKit.DOM", []); - JSAN.use("MochiKit.Visual", []); - JSAN.use("MochiKit.Iter", []); - JSAN.use("MochiKit.Signal", []); -} - -try { - if (typeof(MochiKit.Base) == 'undefined' || - typeof(MochiKit.DOM) == 'undefined' || - typeof(MochiKit.Visual) == 'undefined' || - typeof(MochiKit.Signal) == 'undefined' || - typeof(MochiKit.Iter) == 'undefined') { - throw ""; - } -} catch (e) { - throw "MochiKit.DragAndDrop depends on MochiKit.Base, MochiKit.DOM, MochiKit.Visual, MochiKit.Signal and MochiKit.Iter!"; -} - -if (typeof(MochiKit.DragAndDrop) == 'undefined') { - MochiKit.DragAndDrop = {}; -} - -MochiKit.DragAndDrop.NAME = 'MochiKit.DragAndDrop'; -MochiKit.DragAndDrop.VERSION = '1.4'; - -MochiKit.DragAndDrop.__repr__ = function () { - return '[' + this.NAME + ' ' + this.VERSION + ']'; -}; - -MochiKit.DragAndDrop.toString = function () { - return this.__repr__(); -}; - -MochiKit.DragAndDrop.EXPORT = [ - "Droppable", - "Draggable" -]; - -MochiKit.DragAndDrop.EXPORT_OK = [ - "Droppables", - "Draggables" -]; - -MochiKit.DragAndDrop.Droppables = { - /*** - - Manage all droppables. Shouldn't be used, use the Droppable object instead. - - ***/ - drops: [], - - remove: function (element) { - this.drops = MochiKit.Base.filter(function (d) { - return d.element != MochiKit.DOM.getElement(element) - }, this.drops); - }, - - register: function (drop) { - this.drops.push(drop); - }, - - unregister: function (drop) { - this.drops = MochiKit.Base.filter(function (d) { - return d != drop; - }, this.drops); - }, - - prepare: function (element) { - MochiKit.Base.map(function (drop) { - if (drop.isAccepted(element)) { - if (drop.options.activeclass) { - MochiKit.DOM.addElementClass(drop.element, - drop.options.activeclass); - } - drop.options.onactive(drop.element, element); - } - }, this.drops); - }, - - findDeepestChild: function (drops) { - deepest = drops[0]; - - for (i = 1; i < drops.length; ++i) { - if (MochiKit.DOM.isParent(drops[i].element, deepest.element)) { - deepest = drops[i]; - } - } - return deepest; - }, - - show: function (point, element) { - if (!this.drops.length) { - return; - } - var affected = []; - - if (this.last_active) { - this.last_active.deactivate(); - } - MochiKit.Iter.forEach(this.drops, function (drop) { - if (drop.isAffected(point, element)) { - affected.push(drop); - } - }); - if (affected.length > 0) { - drop = this.findDeepestChild(affected); - MochiKit.Position.within(drop.element, point.page.x, point.page.y); - drop.options.onhover(element, drop.element, - MochiKit.Position.overlap(drop.options.overlap, drop.element)); - drop.activate(); - } - }, - - fire: function (event, element) { - if (!this.last_active) { - return; - } - MochiKit.Position.prepare(); - - if (this.last_active.isAffected(event.mouse(), element)) { - this.last_active.options.ondrop(element, - this.last_active.element, event); - } - }, - - reset: function (element) { - MochiKit.Base.map(function (drop) { - if (drop.options.activeclass) { - MochiKit.DOM.removeElementClass(drop.element, - drop.options.activeclass); - } - drop.options.ondesactive(drop.element, element); - }, this.drops); - if (this.last_active) { - this.last_active.deactivate(); - } - } -}; - -MochiKit.DragAndDrop.Droppable = function (element, options) { - this.__init__(element, options); -}; - -MochiKit.DragAndDrop.Droppable.prototype = { - /*** - - A droppable object. Simple use is to create giving an element: - - new MochiKit.DragAndDrop.Droppable('myelement'); - - Generally you'll want to define the 'ondrop' function and maybe the - 'accept' option to filter draggables. - - ***/ - __class__: MochiKit.DragAndDrop.Droppable, - - __init__: function (element, /* optional */options) { - var d = MochiKit.DOM; - var b = MochiKit.Base; - this.element = d.getElement(element); - this.options = b.update({ - greedy: true, - hoverclass: null, - activeclass: null, - hoverfunc: b.noop, - accept: null, - onactive: b.noop, - ondesactive: b.noop, - onhover: b.noop, - ondrop: b.noop, - containment: [], - tree: false - }, options || {}); - - // cache containers - this.options._containers = []; - b.map(MochiKit.Base.bind(function (c) { - this.options._containers.push(d.getElement(c)); - }, this), this.options.containment); - - d.makePositioned(this.element); // fix IE - - MochiKit.DragAndDrop.Droppables.register(this); - }, - - isContained: function (element) { - if (this._containers) { - var containmentNode; - if (this.options.tree) { - containmentNode = element.treeNode; - } else { - containmentNode = element.parentNode; - } - return MochiKit.Iter.some(this._containers, function (c) { - return containmentNode == c; - }); - } else { - return true; - } - }, - - isAccepted: function (element) { - return ((!this.options.accept) || MochiKit.Iter.some( - this.options.accept, function (c) { - return MochiKit.DOM.hasElementClass(element, c); - })); - }, - - isAffected: function (point, element) { - return ((this.element != element) && - this.isContained(element) && - this.isAccepted(element) && - MochiKit.Position.within(this.element, point.page.x, - point.page.y)); - }, - - deactivate: function () { - /*** - - A droppable is deactivate when a draggable has been over it and left. - - ***/ - if (this.options.hoverclass) { - MochiKit.DOM.removeElementClass(this.element, - this.options.hoverclass); - } - this.options.hoverfunc(this.element, false); - MochiKit.DragAndDrop.Droppables.last_active = null; - }, - - activate: function () { - /*** - - A droppable is active when a draggable is over it. - - ***/ - if (this.options.hoverclass) { - MochiKit.DOM.addElementClass(this.element, this.options.hoverclass); - } - this.options.hoverfunc(this.element, true); - MochiKit.DragAndDrop.Droppables.last_active = this; - }, - - destroy: function () { - /*** - - Delete this droppable. - - ***/ - MochiKit.DragAndDrop.Droppables.unregister(this); - }, - - repr: function () { - return '[' + this.__class__.NAME + ", options:" + MochiKit.Base.repr(this.options) + "]"; - } -}; - -MochiKit.DragAndDrop.Draggables = { - /*** - - Manage draggables elements. Not intended to direct use. - - ***/ - drags: [], - - observers: [], - - register: function (draggable) { - if (this.drags.length === 0) { - var conn = MochiKit.Signal.connect; - this.eventMouseUp = conn(document, 'onmouseup', this, this.endDrag); - this.eventMouseMove = conn(document, 'onmousemove', this, - this.updateDrag); - this.eventKeypress = conn(document, 'onkeypress', this, - this.keyPress); - } - this.drags.push(draggable); - }, - - unregister: function (draggable) { - this.drags = MochiKit.Base.filter(function (d) { - return d != draggable; - }, this.drags); - if (this.drags.length === 0) { - var disc = MochiKit.Signal.disconnect - disc(this.eventMouseUp); - disc(this.eventMouseMove); - disc(this.eventKeypress); - } - }, - - activate: function (draggable) { - // allows keypress events if window is not currently focused - // fails for Safari - window.focus(); - this.activeDraggable = draggable; - }, - - deactivate: function () { - this.activeDraggable = null; - }, - - updateDrag: function (event) { - if (!this.activeDraggable) { - return; - } - var pointer = event.mouse(); - // Mozilla-based browsers fire successive mousemove events with - // the same coordinates, prevent needless redrawing (moz bug?) - if (this._lastPointer && (MochiKit.Base.repr(this._lastPointer.page) == - MochiKit.Base.repr(pointer.page))) { - return; - } - this._lastPointer = pointer; - this.activeDraggable.updateDrag(event, pointer); - }, - - endDrag: function (event) { - if (!this.activeDraggable) { - return; - } - this._lastPointer = null; - this.activeDraggable.endDrag(event); - this.activeDraggable = null; - }, - - keyPress: function (event) { - if (this.activeDraggable) { - this.activeDraggable.keyPress(event); - } - }, - - addObserver: function (observer) { - this.observers.push(observer); - this._cacheObserverCallbacks(); - }, - - removeObserver: function (element) { - // element instead of observer fixes mem leaks - this.observers = MochiKit.Base.filter(function (o) { - return o.element != element; - }, this.observers); - this._cacheObserverCallbacks(); - }, - - notify: function (eventName, draggable, event) { - // 'onStart', 'onEnd', 'onDrag' - if (this[eventName + 'Count'] > 0) { - MochiKit.Base.map(function (o) { - if (o[eventName]) { - o[eventName](eventName, draggable, event); - } - }, this.observers); - } - }, - - _cacheObserverCallbacks: function () { - var b = MochiKit.Base; - var self = MochiKit.DragAndDrop.Draggables; - b.map(function (eventName) { - self[eventName + 'Count'] = b.filter(function (o) { - return o[eventName]; - }, self.observers).length; - }, ['onStart', 'onEnd', 'onDrag']); - } -}; - -MochiKit.DragAndDrop.Draggable = function (element, options) { - this.__init__(element, options); -}; - -MochiKit.DragAndDrop.Draggable.prototype = { - /*** - - A draggable object. Simple instantiate : - - new MochiKit.DragAndDrop.Draggable('myelement'); - - ***/ - __class__ : MochiKit.DragAndDrop.Draggable, - - __init__: function (element, /* optional */options) { - var v = MochiKit.Visual; - var b = MochiKit.Base; - options = b.update({ - handle: false, - starteffect: function (innerelement) { - this._savedOpacity = MochiKit.DOM.getOpacity(innerelement) || 1.0; - new v.Opacity(innerelement, {duration:0.2, from:this._savedOpacity, to:0.7}); - }, - reverteffect: function (innerelement, top_offset, left_offset) { - var dur = Math.sqrt(Math.abs(top_offset^2) + - Math.abs(left_offset^2))*0.02; - return new v.Move(innerelement, - {x: -left_offset, y: -top_offset, duration: dur}); - }, - endeffect: function (innerelement) { - new v.Opacity(innerelement, {duration:0.2, from:0.7, to:this._savedOpacity}); - }, - onchange: b.noop, - zindex: 1000, - revert: false, - scroll: false, - scrollSensitivity: 20, - scrollSpeed: 15, - // false, or xy or [x, y] or function (x, y){return [x, y];} - snap: false - }, options || {}); - - var d = MochiKit.DOM; - this.element = d.getElement(element); - - if (options.handle && (typeof(options.handle) == 'string')) { - this.handle = d.getFirstElementByTagAndClassName(null, - options.handle, this.element); - } - if (!this.handle) { - this.handle = d.getElement(options.handle); - } - if (!this.handle) { - this.handle = this.element; - } - - if (options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) { - options.scroll = d.getElement(options.scroll); - } - - d.makePositioned(this.element); // fix IE - - this.delta = this.currentDelta(); - this.options = options; - this.dragging = false; - - this.eventMouseDown = MochiKit.Signal.connect(this.handle, - 'onmousedown', this, this.initDrag); - MochiKit.DragAndDrop.Draggables.register(this); - }, - - destroy: function () { - MochiKit.Signal.disconnect(this.eventMouseDown); - MochiKit.DragAndDrop.Draggables.unregister(this); - }, - - currentDelta: function () { - var s = MochiKit.DOM.getStyle; - return [ - parseInt(s(this.element, 'left') || '0'), - parseInt(s(this.element, 'top') || '0')]; - }, - - initDrag: function (event) { - if (!event.mouse().button.left) { - return; - } - // abort on form elements, fixes a Firefox issue - var src = event.target; - if (src.tagName && ( - src.tagName == 'INPUT' || src.tagName == 'SELECT' || - src.tagName == 'OPTION' || src.tagName == 'BUTTON' || - src.tagName == 'TEXTAREA')) { - return; - } - - if (this._revert) { - this._revert.cancel(); - this._revert = null; - } - - var pointer = event.mouse(); - var pos = MochiKit.Position.cumulativeOffset(this.element); - this.offset = [pointer.page.x - pos.x, pointer.page.y - pos.y] - - MochiKit.DragAndDrop.Draggables.activate(this); - event.stop(); - }, - - startDrag: function (event) { - this.dragging = true; - if (this.options.selectclass) { - MochiKit.DOM.addElementClass(this.element, - this.options.selectclass); - } - if (this.options.zindex) { - this.originalZ = parseInt(MochiKit.DOM.getStyle(this.element, - 'z-index') || '0'); - this.element.style.zIndex = this.options.zindex; - } - - if (this.options.ghosting) { - this._clone = this.element.cloneNode(true); - this.ghostPosition = MochiKit.Position.absolutize(this.element); - this.element.parentNode.insertBefore(this._clone, this.element); - } - - if (this.options.scroll) { - if (this.options.scroll == window) { - var where = this._getWindowScroll(this.options.scroll); - this.originalScrollLeft = where.left; - this.originalScrollTop = where.top; - } else { - this.originalScrollLeft = this.options.scroll.scrollLeft; - this.originalScrollTop = this.options.scroll.scrollTop; - } - } - - MochiKit.DragAndDrop.Droppables.prepare(this.element); - MochiKit.DragAndDrop.Draggables.notify('onStart', this, event); - if (this.options.starteffect) { - this.options.starteffect(this.element); - } - }, - - updateDrag: function (event, pointer) { - if (!this.dragging) { - this.startDrag(event); - } - MochiKit.Position.prepare(); - MochiKit.DragAndDrop.Droppables.show(pointer, this.element); - MochiKit.DragAndDrop.Draggables.notify('onDrag', this, event); - this.draw(pointer); - this.options.onchange(this); - - if (this.options.scroll) { - this.stopScrolling(); - var p, q; - if (this.options.scroll == window) { - var s = this._getWindowScroll(this.options.scroll); - p = new MochiKit.Style.Coordinates(s.left, s.top); - q = new MochiKit.Style.Coordinates(s.left + s.width, - s.top + s.height); - } else { - p = MochiKit.Position.page(this.options.scroll); - p.x += this.options.scroll.scrollLeft; - p.y += this.options.scroll.scrollTop; - q = new MochiKit.Style.Coordinates(p.x + this.options.scroll.offsetWidth, - p.y + this.options.scroll.offsetHeight); - } - var speed = [0, 0]; - if (pointer.page.x > (q.x - this.options.scrollSensitivity)) { - speed[0] = pointer.page.x - (q.x - this.options.scrollSensitivity); - } else if (pointer.page.x < (p.x + this.options.scrollSensitivity)) { - speed[0] = pointer.page.x - (p.x + this.options.scrollSensitivity); - } - if (pointer.page.y > (q.y - this.options.scrollSensitivity)) { - speed[1] = pointer.page.y - (q.y - this.options.scrollSensitivity); - } else if (pointer.page.y < (p.y + this.options.scrollSensitivity)) { - speed[1] = pointer.page.y - (p.y + this.options.scrollSensitivity); - } - this.startScrolling(speed); - } - - // fix AppleWebKit rendering - if (MochiKit.Base.isSafari()) { - window.scrollBy(0, 0); - } - event.stop(); - }, - - finishDrag: function (event, success) { - var dr = MochiKit.DragAndDrop; - this.dragging = false; - if (this.options.selectclass) { - MochiKit.DOM.removeElementClass(this.element, - this.options.selectclass); - } - - if (this.options.ghosting) { - // XXX: from a user point of view, it would be better to remove - // the node only *after* the MochiKit.Visual.Move end when used - // with revert. - MochiKit.Position.relativize(this.element, this.ghostPosition); - MochiKit.DOM.removeElement(this._clone); - this._clone = null; - } - - if (success) { - dr.Droppables.fire(event, this.element); - } - dr.Draggables.notify('onEnd', this, event); - - var revert = this.options.revert; - if (revert && typeof(revert) == 'function') { - revert = revert(this.element); - } - - var d = this.currentDelta(); - if (revert && this.options.reverteffect) { - this._revert = this.options.reverteffect(this.element, - d[1] - this.delta[1], d[0] - this.delta[0]); - } else { - this.delta = d; - } - - if (this.options.zindex) { - this.element.style.zIndex = this.originalZ; - } - - if (this.options.endeffect) { - this.options.endeffect(this.element); - } - - dr.Draggables.deactivate(); - dr.Droppables.reset(this.element); - }, - - keyPress: function (event) { - if (event.keyString != "KEY_ESCAPE") { - return; - } - this.finishDrag(event, false); - event.stop(); - }, - - endDrag: function (event) { - if (!this.dragging) { - return; - } - this.stopScrolling(); - this.finishDrag(event, true); - event.stop(); - }, - - draw: function (point) { - var pos = MochiKit.Position.cumulativeOffset(this.element); - var d = this.currentDelta(); - pos.x -= d[0]; - pos.y -= d[1]; - - if (this.options.scroll && !this.options.scroll.scrollTo) { - pos.x -= this.options.scroll.scrollLeft - this.originalScrollLeft; - pos.y -= this.options.scroll.scrollTop - this.originalScrollTop; - } - - var p = [point.page.x - pos.x - this.offset[0], - point.page.y - pos.y - this.offset[1]] - - if (this.options.snap) { - if (typeof(this.options.snap) == 'function') { - p = this.options.snap(p[0], p[1]); - } else { - if (this.options.snap instanceof Array) { - var i = -1; - p = MochiKit.Base.map(MochiKit.Base.bind(function (v) { - i += 1; - return Math.round(v/this.options.snap[i]) * - this.options.snap[i] - }, this), p) - } else { - p = MochiKit.Base.map(MochiKit.Base.bind(function (v) { - return Math.round(v/this.options.snap) * - this.options.snap - }, this), p) - } - } - } - var style = this.element.style; - if ((!this.options.constraint) || - (this.options.constraint == 'horizontal')) { - style.left = p[0] + 'px'; - } - if ((!this.options.constraint) || - (this.options.constraint == 'vertical')) { - style.top = p[1] + 'px'; - } - if (style.visibility == 'hidden') { - style.visibility = ''; // fix gecko rendering - } - }, - - stopScrolling: function () { - if (this.scrollInterval) { - clearInterval(this.scrollInterval); - this.scrollInterval = null; - } - }, - - startScrolling: function (speed) { - if (!speed[0] || !speed[1]) { - return; - } - this.scrollSpeed = [speed[0] * this.options.scrollSpeed, - speed[1] * this.options.scrollSpeed]; - this.lastScrolled = new Date(); - this.scrollInterval = setInterval(MochiKit.Base.bind(this.scroll, this), 10); - }, - - scroll: function () { - var current = new Date(); - var delta = current - this.lastScrolled; - this.lastScrolled = current; - - if (this.options.scroll == window) { - var s = this._getWindowScroll(this.options.scroll); - if (this.scrollSpeed[0] || this.scrollSpeed[1]) { - var d = delta / 1000; - this.options.scroll.scrollTo(s.left + d * this.scrollSpeed[0], - s.top + d * this.scrollSpeed[1]); - } - } else { - this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000; - this.options.scroll.scrollTop += this.scrollSpeed[1] * delta / 1000; - } - - var d = MochiKit.DragAndDrop; - - MochiKit.Position.prepare(); - d.Droppables.show(d.Draggables._lastPointer, this.element); - this.draw(d.Draggables._lastPointer); - this.options.onchange(this); - }, - - _getWindowScroll: function (w) { - var T, L, W, H; - with (w.document) { - if (w.document.documentElement && documentElement.scrollTop) { - T = documentElement.scrollTop; - L = documentElement.scrollLeft; - } else if (w.document.body) { - T = body.scrollTop; - L = body.scrollLeft; - } - if (w.innerWidth) { - W = w.innerWidth; - H = w.innerHeight; - } else if (w.document.documentElement && documentElement.clientWidth) { - W = documentElement.clientWidth; - H = documentElement.clientHeight; - } else { - W = body.offsetWidth; - H = body.offsetHeight - } - } - return {top: T, left: L, width: W, height: H}; - }, - - repr: function () { - return '[' + this.__class__.NAME + ", options:" + MochiKit.Base.repr(this.options) + "]"; - } -}; - -MochiKit.DragAndDrop.__new__ = function () { - MochiKit.Base.nameFunctions(this); - - this.EXPORT_TAGS = { - ":common": this.EXPORT, - ":all": MochiKit.Base.concat(this.EXPORT, this.EXPORT_OK) - }; -}; - -MochiKit.DragAndDrop.__new__(); - -MochiKit.Base._exportSymbols(this, MochiKit.DragAndDrop); - diff --git a/fas/fas/static/javascript/MochiKit.js b/fas/fas/static/javascript/MochiKit.js deleted file mode 100644 index e0be5a6..0000000 --- a/fas/fas/static/javascript/MochiKit.js +++ /dev/null @@ -1,5773 +0,0 @@ -/*** - - MochiKit.MochiKit 1.4 : PACKED VERSION - - THIS FILE IS AUTOMATICALLY GENERATED. If creating patches, please - diff against the source tree, not this file. - - See for documentation, downloads, license, etc. - - (c) 2005 Bob Ippolito. All rights Reserved. - -***/ - -if(typeof (dojo)!="undefined"){ -dojo.provide("MochiKit.Base"); -} -if(typeof (MochiKit)=="undefined"){ -MochiKit={}; -} -if(typeof (MochiKit.Base)=="undefined"){ -MochiKit.Base={}; -} -MochiKit.Base.VERSION="1.4"; -MochiKit.Base.NAME="MochiKit.Base"; -MochiKit.Base.update=function(_1,_2){ -if(_1===null){ -_1={}; -} -for(var i=1;i=0;i--){ -_15.unshift(o[i]); -} -}else{ -res.push(o); -} -} -return res; -},extend:function(_16,obj,_17){ -if(!_17){ -_17=0; -} -if(obj){ -var l=obj.length; -if(typeof (l)!="number"){ -if(typeof (MochiKit.Iter)!="undefined"){ -obj=MochiKit.Iter.list(obj); -l=obj.length; -}else{ -throw new TypeError("Argument not an array-like and MochiKit.Iter not present"); -} -} -if(!_16){ -_16=[]; -} -for(var i=_17;i>b; -},zrshift:function(a,b){ -return a>>>b; -},eq:function(a,b){ -return a==b; -},ne:function(a,b){ -return a!=b; -},gt:function(a,b){ -return a>b; -},ge:function(a,b){ -return a>=b; -},lt:function(a,b){ -return al){ -_42=l; -} -} -_41=[]; -for(i=0;i<_42;i++){ -var _43=[]; -for(var j=1;j=0;i--){ -_57=[_56[i].apply(this,_57)]; -} -return _57[0]; -}; -},bind:function(_58,_59){ -if(typeof (_58)=="string"){ -_58=_59[_58]; -} -var _60=_58.im_func; -var _61=_58.im_preargs; -var _62=_58.im_self; -var m=MochiKit.Base; -if(typeof (_58)=="function"&&typeof (_58.apply)=="undefined"){ -_58=m._wrapDumbFunction(_58); -} -if(typeof (_60)!="function"){ -_60=_58; -} -if(typeof (_59)!="undefined"){ -_62=_59; -} -if(typeof (_61)=="undefined"){ -_61=[]; -}else{ -_61=_61.slice(); -} -m.extend(_61,arguments,2); -var _63=function(){ -var _64=arguments; -var me=arguments.callee; -if(me.im_preargs.length>0){ -_64=m.concat(me.im_preargs,_64); -} -var _59=me.im_self; -if(!_59){ -_59=this; -} -return me.im_func.apply(_59,_64); -}; -_63.im_self=_62; -_63.im_func=_60; -_63.im_preargs=_61; -return _63; -},bindMethods:function(_65){ -var _66=MochiKit.Base.bind; -for(var k in _65){ -var _67=_65[k]; -if(typeof (_67)=="function"){ -_65[k]=_66(_67,_65); -} -} -},registerComparator:function(_68,_69,_70,_71){ -MochiKit.Base.comparatorRegistry.register(_68,_69,_70,_71); -},_primitives:{"boolean":true,"string":true,"number":true},compare:function(a,b){ -if(a==b){ -return 0; -} -var _72=(typeof (a)=="undefined"||a===null); -var _73=(typeof (b)=="undefined"||b===null); -if(_72&&_73){ -return 0; -}else{ -if(_72){ -return -1; -}else{ -if(_73){ -return 1; -} -} -} -var m=MochiKit.Base; -var _74=m._primitives; -if(!(typeof (a) in _74&&typeof (b) in _74)){ -try{ -return m.comparatorRegistry.match(a,b); -} -catch(e){ -if(e!=m.NotFound){ -throw e; -} -} -} -if(ab){ -return 1; -} -} -var _75=m.repr; -throw new TypeError(_75(a)+" and "+_75(b)+" can not be compared"); -},compareDateLike:function(a,b){ -return MochiKit.Base.compare(a.getTime(),b.getTime()); -},compareArrayLike:function(a,b){ -var _76=MochiKit.Base.compare; -var _77=a.length; -var _78=0; -if(_77>b.length){ -_78=1; -_77=b.length; -}else{ -if(_770))){ -var kv=MochiKit.DOM.formContents(_120); -_120=kv[0]; -_121=kv[1]; -}else{ -if(arguments.length==1){ -var o=_120; -_120=[]; -_121=[]; -for(var k in o){ -var v=o[k]; -if(typeof (v)!="function"){ -_120.push(k); -_121.push(v); -} -} -} -} -var rval=[]; -var len=Math.min(_120.length,_121.length); -var _124=MochiKit.Base.urlEncode; -for(var i=0;i=stop){ -throw self.StopIteration; -} -_153+=step; -return rval; -}}; -},imap:function(fun,p,q){ -var m=MochiKit.Base; -var self=MochiKit.Iter; -var _157=m.map(self.iter,m.extend(null,arguments,1)); -var map=m.map; -var next=self.next; -return {repr:function(){ -return "imap(...)"; -},toString:m.forwardCall("repr"),next:function(){ -return fun.apply(this,map(next,_157)); -}}; -},applymap:function(fun,seq,self){ -seq=MochiKit.Iter.iter(seq); -var m=MochiKit.Base; -return {repr:function(){ -return "applymap(...)"; -},toString:m.forwardCall("repr"),next:function(){ -return fun.apply(self,seq.next()); -}}; -},chain:function(p,q){ -var self=MochiKit.Iter; -var m=MochiKit.Base; -if(arguments.length==1){ -return self.iter(arguments[0]); -} -var _159=m.map(self.iter,arguments); -return {repr:function(){ -return "chain(...)"; -},toString:m.forwardCall("repr"),next:function(){ -while(_159.length>1){ -try{ -return _159[0].next(); -} -catch(e){ -if(e!=self.StopIteration){ -throw e; -} -_159.shift(); -} -} -if(_159.length==1){ -var arg=_159.shift(); -this.next=m.bind("next",arg); -return this.next(); -} -throw self.StopIteration; -}}; -},takewhile:function(pred,seq){ -var self=MochiKit.Iter; -seq=self.iter(seq); -return {repr:function(){ -return "takewhile(...)"; -},toString:MochiKit.Base.forwardCall("repr"),next:function(){ -var rval=seq.next(); -if(!pred(rval)){ -this.next=function(){ -throw self.StopIteration; -}; -this.next(); -} -return rval; -}}; -},dropwhile:function(pred,seq){ -seq=MochiKit.Iter.iter(seq); -var m=MochiKit.Base; -var bind=m.bind; -return {"repr":function(){ -return "dropwhile(...)"; -},"toString":m.forwardCall("repr"),"next":function(){ -while(true){ -var rval=seq.next(); -if(!pred(rval)){ -break; -} -} -this.next=bind("next",seq); -return rval; -}}; -},_tee:function(_161,sync,_163){ -sync.pos[_161]=-1; -var m=MochiKit.Base; -var _164=m.listMin; -return {repr:function(){ -return "tee("+_161+", ...)"; -},toString:m.forwardCall("repr"),next:function(){ -var rval; -var i=sync.pos[_161]; -if(i==sync.max){ -rval=_163.next(); -sync.deque.push(rval); -sync.max+=1; -sync.pos[_161]+=1; -}else{ -rval=sync.deque[i-sync.min]; -sync.pos[_161]+=1; -if(i==sync.min&&_164(sync.pos)!=sync.min){ -sync.min+=1; -sync.deque.shift(); -} -} -return rval; -}}; -},tee:function(_165,n){ -var rval=[]; -var sync={"pos":[],"deque":[],"max":-1,"min":-1}; -if(arguments.length==1||typeof (n)=="undefined"||n===null){ -n=2; -} -var self=MochiKit.Iter; -_165=self.iter(_165); -var _tee=self._tee; -for(var i=0;i0&&_171>=stop)||(step<0&&_171<=stop)){ -throw MochiKit.Iter.StopIteration; -} -var rval=_171; -_171+=step; -return rval; -},repr:function(){ -return "range("+[_171,stop,step].join(", ")+")"; -},toString:MochiKit.Base.forwardCall("repr")}; -},sum:function(_172,_173){ -if(typeof (_173)=="undefined"||_173===null){ -_173=0; -} -var x=_173; -var self=MochiKit.Iter; -_172=self.iter(_172); -try{ -while(true){ -x+=_172.next(); -} -} -catch(e){ -if(e!=self.StopIteration){ -throw e; -} -} -return x; -},exhaust:function(_174){ -var self=MochiKit.Iter; -_174=self.iter(_174); -try{ -while(true){ -_174.next(); -} -} -catch(e){ -if(e!=self.StopIteration){ -throw e; -} -} -},forEach:function(_175,func,self){ -var m=MochiKit.Base; -if(arguments.length>2){ -func=m.bind(func,self); -} -if(m.isArrayLike(_175)){ -try{ -for(var i=0;i<_175.length;i++){ -func(_175[i]); -} -} -catch(e){ -if(e!=MochiKit.Iter.StopIteration){ -throw e; -} -} -}else{ -self=MochiKit.Iter; -self.exhaust(self.imap(func,_175)); -} -},every:function(_176,func){ -var self=MochiKit.Iter; -try{ -self.ifilterfalse(func,_176).next(); -return false; -} -catch(e){ -if(e!=self.StopIteration){ -throw e; -} -return true; -} -},sorted:function(_177,cmp){ -var rval=MochiKit.Iter.list(_177); -if(arguments.length==1){ -cmp=MochiKit.Base.compare; -} -rval.sort(cmp); -return rval; -},reversed:function(_178){ -var rval=MochiKit.Iter.list(_178); -rval.reverse(); -return rval; -},some:function(_179,func){ -var self=MochiKit.Iter; -try{ -self.ifilter(func,_179).next(); -return true; -} -catch(e){ -if(e!=self.StopIteration){ -throw e; -} -return false; -} -},iextend:function(lst,_180){ -if(MochiKit.Base.isArrayLike(_180)){ -for(var i=0;i<_180.length;i++){ -lst.push(_180[i]); -} -}else{ -var self=MochiKit.Iter; -_180=self.iter(_180); -try{ -while(true){ -lst.push(_180.next()); -} -} -catch(e){ -if(e!=self.StopIteration){ -throw e; -} -} -} -return lst; -},groupby:function(_181,_182){ -var m=MochiKit.Base; -var self=MochiKit.Iter; -if(arguments.length<2){ -_182=m.operator.identity; -} -_181=self.iter(_181); -var pk=undefined; -var k=undefined; -var v; -function fetch(){ -v=_181.next(); -k=_182(v); -} -function eat(){ -var ret=v; -v=undefined; -return ret; -} -var _185=true; -return {repr:function(){ -return "groupby(...)"; -},next:function(){ -while(k==pk){ -fetch(); -if(_185){ -_185=false; -break; -} -} -pk=k; -return [k,{next:function(){ -if(v==undefined){ -fetch(); -} -if(k!=pk){ -throw self.StopIteration; -} -return eat(); -}}]; -}}; -},groupby_as_array:function(_186,_187){ -var m=MochiKit.Base; -var self=MochiKit.Iter; -if(arguments.length<2){ -_187=m.operator.identity; -} -_186=self.iter(_186); -var _188=[]; -var _189=true; -var _190; -while(true){ -try{ -var _191=_186.next(); -var key=_187(_191); -} -catch(e){ -if(e==self.StopIteration){ -break; -} -throw e; -} -if(_189||key!=_190){ -var _192=[]; -_188.push([key,_192]); -} -_192.push(_191); -_189=false; -_190=key; -} -return _188; -},arrayLikeIter:function(_193){ -var i=0; -return {repr:function(){ -return "arrayLikeIter(...)"; -},toString:MochiKit.Base.forwardCall("repr"),next:function(){ -if(i>=_193.length){ -throw MochiKit.Iter.StopIteration; -} -return _193[i++]; -}}; -},hasIterateNext:function(_194){ -return (_194&&typeof (_194.iterateNext)=="function"); -},iterateNextIter:function(_195){ -return {repr:function(){ -return "iterateNextIter(...)"; -},toString:MochiKit.Base.forwardCall("repr"),next:function(){ -var rval=_195.iterateNext(); -if(rval===null||rval===undefined){ -throw MochiKit.Iter.StopIteration; -} -return rval; -}}; -}}); -MochiKit.Iter.EXPORT_OK=["iteratorRegistry","arrayLikeIter","hasIterateNext","iterateNextIter",]; -MochiKit.Iter.EXPORT=["StopIteration","registerIteratorFactory","iter","count","cycle","repeat","next","izip","ifilter","ifilterfalse","islice","imap","applymap","chain","takewhile","dropwhile","tee","list","reduce","range","sum","exhaust","forEach","every","sorted","reversed","some","iextend","groupby","groupby_as_array"]; -MochiKit.Iter.__new__=function(){ -var m=MochiKit.Base; -if(typeof (StopIteration)!="undefined"){ -this.StopIteration=StopIteration; -}else{ -this.StopIteration=new m.NamedError("StopIteration"); -} -this.iteratorRegistry=new m.AdapterRegistry(); -this.registerIteratorFactory("arrayLike",m.isArrayLike,this.arrayLikeIter); -this.registerIteratorFactory("iterateNext",this.hasIterateNext,this.iterateNextIter); -this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)}; -m.nameFunctions(this); -}; -MochiKit.Iter.__new__(); -if(MochiKit.__export__){ -reduce=MochiKit.Iter.reduce; -} -MochiKit.Base._exportSymbols(this,MochiKit.Iter); -if(typeof (dojo)!="undefined"){ -dojo.provide("MochiKit.Logging"); -dojo.require("MochiKit.Base"); -} -if(typeof (JSAN)!="undefined"){ -JSAN.use("MochiKit.Base",[]); -} -try{ -if(typeof (MochiKit.Base)=="undefined"){ -throw ""; -} -} -catch(e){ -throw "MochiKit.Logging depends on MochiKit.Base!"; -} -if(typeof (MochiKit.Logging)=="undefined"){ -MochiKit.Logging={}; -} -MochiKit.Logging.NAME="MochiKit.Logging"; -MochiKit.Logging.VERSION="1.4"; -MochiKit.Logging.__repr__=function(){ -return "["+this.NAME+" "+this.VERSION+"]"; -}; -MochiKit.Logging.toString=function(){ -return this.__repr__(); -}; -MochiKit.Logging.EXPORT=["LogLevel","LogMessage","Logger","alertListener","logger","log","logError","logDebug","logFatal","logWarning"]; -MochiKit.Logging.EXPORT_OK=["logLevelAtLeast","isLogMessage","compareLogMessage"]; -MochiKit.Logging.LogMessage=function(num,_197,info){ -this.num=num; -this.level=_197; -this.info=info; -this.timestamp=new Date(); -}; -MochiKit.Logging.LogMessage.prototype={repr:function(){ -var m=MochiKit.Base; -return "LogMessage("+m.map(m.repr,[this.num,this.level,this.info]).join(", ")+")"; -},toString:MochiKit.Base.forwardCall("repr")}; -MochiKit.Base.update(MochiKit.Logging,{logLevelAtLeast:function(_199){ -var self=MochiKit.Logging; -if(typeof (_199)=="string"){ -_199=self.LogLevel[_199]; -} -return function(msg){ -var _201=msg.level; -if(typeof (_201)=="string"){ -_201=self.LogLevel[_201]; -} -return _201>=_199; -}; -},isLogMessage:function(){ -var _202=MochiKit.Logging.LogMessage; -for(var i=0;i=0&&this._messages.length>this.maxSize){ -this._messages.shift(); -} -},getMessages:function(_211){ -var _212=0; -if(!(typeof (_211)=="undefined"||_211===null)){ -_212=Math.max(0,this._messages.length-_211); -} -return this._messages.slice(_212); -},getMessageText:function(_213){ -if(typeof (_213)=="undefined"||_213===null){ -_213=30; -} -var _214=this.getMessages(_213); -if(_214.length){ -var lst=map(function(m){ -return "\n ["+m.num+"] "+m.level+": "+m.info.join(" "); -},_214); -lst.unshift("LAST "+_214.length+" MESSAGES:"); -return lst.join(""); -} -return ""; -},debuggingBookmarklet:function(_215){ -if(typeof (MochiKit.LoggingPane)=="undefined"){ -alert(this.getMessageText()); -}else{ -MochiKit.LoggingPane.createLoggingPane(_215||false); -} -}}; -MochiKit.Logging.__new__=function(){ -this.LogLevel={ERROR:40,FATAL:50,WARNING:30,INFO:20,DEBUG:10}; -var m=MochiKit.Base; -m.registerComparator("LogMessage",this.isLogMessage,this.compareLogMessage); -var _216=m.partial; -var _217=this.Logger; -var _218=_217.prototype.baseLog; -m.update(this.Logger.prototype,{debug:_216(_218,"DEBUG"),log:_216(_218,"INFO"),error:_216(_218,"ERROR"),fatal:_216(_218,"FATAL"),warning:_216(_218,"WARNING")}); -var self=this; -var _219=function(name){ -return function(){ -self.logger[name].apply(self.logger,arguments); -}; -}; -this.log=_219("log"); -this.logError=_219("error"); -this.logDebug=_219("debug"); -this.logFatal=_219("fatal"); -this.logWarning=_219("warning"); -this.logger=new _217(); -this.logger.useNativeConsole=true; -this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)}; -m.nameFunctions(this); -}; -if(typeof (printfire)=="undefined"&&typeof (document)!="undefined"&&document.createEvent&&typeof (dispatchEvent)!="undefined"){ -printfire=function(){ -printfire.args=arguments; -var ev=document.createEvent("Events"); -ev.initEvent("printfire",false,true); -dispatchEvent(ev); -}; -} -MochiKit.Logging.__new__(); -MochiKit.Base._exportSymbols(this,MochiKit.Logging); -if(typeof (dojo)!="undefined"){ -dojo.provide("MochiKit.DateTime"); -} -if(typeof (MochiKit)=="undefined"){ -MochiKit={}; -} -if(typeof (MochiKit.DateTime)=="undefined"){ -MochiKit.DateTime={}; -} -MochiKit.DateTime.NAME="MochiKit.DateTime"; -MochiKit.DateTime.VERSION="1.4"; -MochiKit.DateTime.__repr__=function(){ -return "["+this.NAME+" "+this.VERSION+"]"; -}; -MochiKit.DateTime.toString=function(){ -return this.__repr__(); -}; -MochiKit.DateTime.isoDate=function(str){ -str=str+""; -if(typeof (str)!="string"||str.length===0){ -return null; -} -var iso=str.split("-"); -if(iso.length===0){ -return null; -} -return new Date(iso[0],iso[1]-1,iso[2]); -}; -MochiKit.DateTime._isoRegexp=/(\d{4,})(?:-(\d{1,2})(?:-(\d{1,2})(?:[T ](\d{1,2}):(\d{1,2})(?::(\d{1,2})(?:\.(\d+))?)?(?:(Z)|([+-])(\d{1,2})(?::(\d{1,2}))?)?)?)?)?/; -MochiKit.DateTime.isoTimestamp=function(str){ -str=str+""; -if(typeof (str)!="string"||str.length===0){ -return null; -} -var res=str.match(MochiKit.DateTime._isoRegexp); -if(typeof (res)=="undefined"||res===null){ -return null; -} -var year,month,day,hour,min,sec,msec; -year=parseInt(res[1],10); -if(typeof (res[2])=="undefined"||res[2]===""){ -return new Date(year); -} -month=parseInt(res[2],10)-1; -day=parseInt(res[3],10); -if(typeof (res[4])=="undefined"||res[4]===""){ -return new Date(year,month,day); -} -hour=parseInt(res[4],10); -min=parseInt(res[5],10); -sec=(typeof (res[6])!="undefined"&&res[6]!=="")?parseInt(res[6],10):0; -if(typeof (res[7])!="undefined"&&res[7]!==""){ -msec=Math.round(1000*parseFloat("0."+res[7])); -}else{ -msec=0; -} -if((typeof (res[8])=="undefined"||res[8]==="")&&(typeof (res[9])=="undefined"||res[9]==="")){ -return new Date(year,month,day,hour,min,sec,msec); -} -var ofs; -if(typeof (res[9])!="undefined"&&res[9]!==""){ -ofs=parseInt(res[10],10)*3600000; -if(typeof (res[11])!="undefined"&&res[11]!==""){ -ofs+=parseInt(res[11],10)*60000; -} -if(res[9]=="-"){ -ofs=-ofs; -} -}else{ -ofs=0; -} -return new Date(Date.UTC(year,month,day,hour,min,sec,msec)-ofs); -}; -MochiKit.DateTime.toISOTime=function(date,_226){ -if(typeof (date)=="undefined"||date===null){ -return null; -} -var hh=date.getHours(); -var mm=date.getMinutes(); -var ss=date.getSeconds(); -var lst=[((_226&&(hh<10))?"0"+hh:hh),((mm<10)?"0"+mm:mm),((ss<10)?"0"+ss:ss)]; -return lst.join(":"); -}; -MochiKit.DateTime.toISOTimestamp=function(date,_230){ -if(typeof (date)=="undefined"||date===null){ -return null; -} -var sep=_230?"T":" "; -var foot=_230?"Z":""; -if(_230){ -date=new Date(date.getTime()+(date.getTimezoneOffset()*60000)); -} -return MochiKit.DateTime.toISODate(date)+sep+MochiKit.DateTime.toISOTime(date,_230)+foot; -}; -MochiKit.DateTime.toISODate=function(date){ -if(typeof (date)=="undefined"||date===null){ -return null; -} -var _233=MochiKit.DateTime._padTwo; -return [date.getFullYear(),_233(date.getMonth()+1),_233(date.getDate())].join("-"); -}; -MochiKit.DateTime.americanDate=function(d){ -d=d+""; -if(typeof (d)!="string"||d.length===0){ -return null; -} -var a=d.split("/"); -return new Date(a[2],a[0]-1,a[1]); -}; -MochiKit.DateTime._padTwo=function(n){ -return (n>9)?n:"0"+n; -}; -MochiKit.DateTime.toPaddedAmericanDate=function(d){ -if(typeof (d)=="undefined"||d===null){ -return null; -} -var _235=MochiKit.DateTime._padTwo; -return [_235(d.getMonth()+1),_235(d.getDate()),d.getFullYear()].join("/"); -}; -MochiKit.DateTime.toAmericanDate=function(d){ -if(typeof (d)=="undefined"||d===null){ -return null; -} -return [d.getMonth()+1,d.getDate(),d.getFullYear()].join("/"); -}; -MochiKit.DateTime.EXPORT=["isoDate","isoTimestamp","toISOTime","toISOTimestamp","toISODate","americanDate","toPaddedAmericanDate","toAmericanDate"]; -MochiKit.DateTime.EXPORT_OK=[]; -MochiKit.DateTime.EXPORT_TAGS={":common":MochiKit.DateTime.EXPORT,":all":MochiKit.DateTime.EXPORT}; -MochiKit.DateTime.__new__=function(){ -var base=this.NAME+"."; -for(var k in this){ -var o=this[k]; -if(typeof (o)=="function"&&typeof (o.NAME)=="undefined"){ -try{ -o.NAME=base+k; -} -catch(e){ -} -} -} -}; -MochiKit.DateTime.__new__(); -if(typeof (MochiKit.Base)!="undefined"){ -MochiKit.Base._exportSymbols(this,MochiKit.DateTime); -}else{ -(function(_236,_237){ -if((typeof (JSAN)=="undefined"&&typeof (dojo)=="undefined")||(MochiKit.__export__===false)){ -var all=_237.EXPORT_TAGS[":all"]; -for(var i=0;i_245){ -var i=_251.length-_245; -res=fmt.separator+_251.substring(i,_251.length)+res; -_251=_251.substring(0,i); -} -} -res=_251+res; -if(_243>0){ -while(frac.length<_246){ -frac=frac+"0"; -} -res=res+fmt.decimal+frac; -} -return _247+res+_248; -}; -}; -MochiKit.Format.numberFormatter=function(_253,_254,_255){ -if(typeof (_254)=="undefined"){ -_254=""; -} -var _256=_253.match(/((?:[0#]+,)?[0#]+)(?:\.([0#]+))?(%)?/); -if(!_256){ -throw TypeError("Invalid pattern"); -} -var _257=_253.substr(0,_256.index); -var _258=_253.substr(_256.index+_256[0].length); -if(_257.search(/-/)==-1){ -_257=_257+"-"; -} -var _259=_256[1]; -var frac=(typeof (_256[2])=="string"&&_256[2]!="")?_256[2]:""; -var _260=(typeof (_256[3])=="string"&&_256[3]!=""); -var tmp=_259.split(/,/); -var _262; -if(typeof (_255)=="undefined"){ -_255="default"; -} -if(tmp.length==1){ -_262=null; -}else{ -_262=tmp[1].length; -} -var _263=_259.length-_259.replace(/0/g,"").length; -var _264=frac.length-frac.replace(/0/g,"").length; -var _265=frac.length; -var rval=MochiKit.Format._numberFormatter(_254,_257,_258,_255,_260,_265,_263,_262,_264); -var m=MochiKit.Base; -if(m){ -var fn=arguments.callee; -var args=m.concat(arguments); -rval.repr=function(){ -return [self.NAME,"(",map(m.repr,args).join(", "),")"].join(""); -}; -} -return rval; -}; -MochiKit.Format.formatLocale=function(_267){ -if(typeof (_267)=="undefined"||_267===null){ -_267="default"; -} -if(typeof (_267)=="string"){ -var rval=MochiKit.Format.LOCALE[_267]; -if(typeof (rval)=="string"){ -rval=arguments.callee(rval); -MochiKit.Format.LOCALE[_267]=rval; -} -return rval; -}else{ -return _267; -} -}; -MochiKit.Format.twoDigitAverage=function(_268,_269){ -if(_269){ -var res=_268/_269; -if(!isNaN(res)){ -return MochiKit.Format.twoDigitFloat(_268/_269); -} -} -return "0"; -}; -MochiKit.Format.twoDigitFloat=function(_270){ -var sign=(_270<0?"-":""); -var s=Math.floor(Math.abs(_270)*100).toString(); -if(s=="0"){ -return s; -} -if(s.length<3){ -while(s.charAt(s.length-1)=="0"){ -s=s.substring(0,s.length-1); -} -return sign+"0."+s; -} -var head=sign+s.substring(0,s.length-2); -var tail=s.substring(s.length-2,s.length); -if(tail=="00"){ -return head; -}else{ -if(tail.charAt(1)=="0"){ -return head+"."+tail.charAt(0); -}else{ -return head+"."+tail; -} -} -}; -MochiKit.Format.lstrip=function(str,_275){ -str=str+""; -if(typeof (str)!="string"){ -return null; -} -if(!_275){ -return str.replace(/^\s+/,""); -}else{ -return str.replace(new RegExp("^["+_275+"]+"),""); -} -}; -MochiKit.Format.rstrip=function(str,_276){ -str=str+""; -if(typeof (str)!="string"){ -return null; -} -if(!_276){ -return str.replace(/\s+$/,""); -}else{ -return str.replace(new RegExp("["+_276+"]+$"),""); -} -}; -MochiKit.Format.strip=function(str,_277){ -var self=MochiKit.Format; -return self.rstrip(self.lstrip(str,_277),_277); -}; -MochiKit.Format.truncToFixed=function(_278,_279){ -_278=Math.floor(_278*Math.pow(10,_279)); -var res=(_278*Math.pow(10,-_279)).toFixed(_279); -if(res.charAt(0)=="."){ -res="0"+res; -} -return res; -}; -MochiKit.Format.roundToFixed=function(_280,_281){ -return MochiKit.Format.truncToFixed(_280+0.5*Math.pow(10,-_281),_281); -}; -MochiKit.Format.percentFormat=function(_282){ -return MochiKit.Format.twoDigitFloat(100*_282)+"%"; -}; -MochiKit.Format.EXPORT=["truncToFixed","roundToFixed","numberFormatter","formatLocale","twoDigitAverage","twoDigitFloat","percentFormat","lstrip","rstrip","strip"]; -MochiKit.Format.LOCALE={en_US:{separator:",",decimal:".",percent:"%"},de_DE:{separator:".",decimal:",",percent:"%"},fr_FR:{separator:" ",decimal:",",percent:"%"},"default":"en_US"}; -MochiKit.Format.EXPORT_OK=[]; -MochiKit.Format.EXPORT_TAGS={":all":MochiKit.Format.EXPORT,":common":MochiKit.Format.EXPORT}; -MochiKit.Format.__new__=function(){ -var base=this.NAME+"."; -var k,v,o; -for(k in this.LOCALE){ -o=this.LOCALE[k]; -if(typeof (o)=="object"){ -o.repr=function(){ -return this.NAME; -}; -o.NAME=base+"LOCALE."+k; -} -} -for(k in this){ -o=this[k]; -if(typeof (o)=="function"&&typeof (o.NAME)=="undefined"){ -try{ -o.NAME=base+k; -} -catch(e){ -} -} -} -}; -MochiKit.Format.__new__(); -if(typeof (MochiKit.Base)!="undefined"){ -MochiKit.Base._exportSymbols(this,MochiKit.Format); -}else{ -(function(_283,_284){ -if((typeof (JSAN)=="undefined"&&typeof (dojo)=="undefined")||(MochiKit.__export__===false)){ -var all=_284.EXPORT_TAGS[":all"]; -for(var i=0;i1){ -fn=MochiKit.Base.partial.apply(null,arguments); -} -return this.addCallbacks(fn,fn); -},addCallback:function(fn){ -if(arguments.length>1){ -fn=MochiKit.Base.partial.apply(null,arguments); -} -return this.addCallbacks(fn,null); -},addErrback:function(fn){ -if(arguments.length>1){ -fn=MochiKit.Base.partial.apply(null,arguments); -} -return this.addCallbacks(null,fn); -},addCallbacks:function(cb,eb){ -if(this.chained){ -throw new Error("Chained Deferreds can not be re-used"); -} -this.chain.push([cb,eb]); -if(this.fired>=0){ -this._fire(); -} -return this; -},_fire:function(){ -var _289=this.chain; -var _290=this.fired; -var res=this.results[_290]; -var self=this; -var cb=null; -while(_289.length>0&&this.paused===0){ -var pair=_289.shift(); -var f=pair[_290]; -if(f===null){ -continue; -} -try{ -res=f(res); -_290=((res instanceof Error)?1:0); -if(res instanceof MochiKit.Async.Deferred){ -cb=function(res){ -self._resback(res); -self.paused--; -if((self.paused===0)&&(self.fired>=0)){ -self._fire(); -} -}; -this.paused++; -} -} -catch(err){ -_290=1; -if(!(err instanceof Error)){ -err=new MochiKit.Async.GenericError(err); -} -res=err; -} -} -this.fired=_290; -this.results[_290]=res; -if(cb&&this.paused){ -res.addBoth(cb); -res.chained=true; -} -}}; -MochiKit.Base.update(MochiKit.Async,{evalJSONRequest:function(){ -return eval("("+arguments[0].responseText+")"); -},succeed:function(_292){ -var d=new MochiKit.Async.Deferred(); -d.callback.apply(d,arguments); -return d; -},fail:function(_293){ -var d=new MochiKit.Async.Deferred(); -d.errback.apply(d,arguments); -return d; -},getXMLHttpRequest:function(){ -var self=arguments.callee; -if(!self.XMLHttpRequest){ -var _294=[function(){ -return new XMLHttpRequest(); -},function(){ -return new ActiveXObject("Msxml2.XMLHTTP"); -},function(){ -return new ActiveXObject("Microsoft.XMLHTTP"); -},function(){ -return new ActiveXObject("Msxml2.XMLHTTP.4.0"); -},function(){ -throw new MochiKit.Async.BrowserComplianceError("Browser does not support XMLHttpRequest"); -}]; -for(var i=0;i<_294.length;i++){ -var func=_294[i]; -try{ -self.XMLHttpRequest=func; -return func(); -} -catch(e){ -} -} -} -return self.XMLHttpRequest(); -},_xhr_onreadystatechange:function(d){ -var m=MochiKit.Base; -if(this.readyState==4){ -try{ -this.onreadystatechange=null; -} -catch(e){ -try{ -this.onreadystatechange=m.noop; -} -catch(e){ -} -} -var _295=null; -try{ -_295=this.status; -if(!_295&&m.isNotEmpty(this.responseText)){ -_295=304; -} -} -catch(e){ -} -if(_295==200||_295==304){ -d.callback(this); -}else{ -var err=new MochiKit.Async.XMLHttpRequestError(this,"Request failed"); -if(err.number){ -d.errback(err); -}else{ -d.errback(err); -} -} -} -},_xhr_canceller:function(req){ -try{ -req.onreadystatechange=null; -} -catch(e){ -try{ -req.onreadystatechange=MochiKit.Base.noop; -} -catch(e){ -} -} -req.abort(); -},sendXMLHttpRequest:function(req,_298){ -if(typeof (_298)=="undefined"||_298===null){ -_298=""; -} -var m=MochiKit.Base; -var self=MochiKit.Async; -var d=new self.Deferred(m.partial(self._xhr_canceller,req)); -try{ -req.onreadystatechange=m.bind(self._xhr_onreadystatechange,req,d); -req.send(_298); -} -catch(e){ -try{ -req.onreadystatechange=null; -} -catch(ignore){ -} -d.errback(e); -} -return d; -},doSimpleXMLHttpRequest:function(url){ -var self=MochiKit.Async; -var req=self.getXMLHttpRequest(); -if(arguments.length>1){ -var m=MochiKit.Base; -var qs=m.queryString.apply(null,m.extend(null,arguments,1)); -if(qs){ -url+="?"+qs; -} -} -req.open("GET",url,true); -return self.sendXMLHttpRequest(req); -},loadJSONDoc:function(url){ -var self=MochiKit.Async; -var d=self.doSimpleXMLHttpRequest.apply(self,arguments); -d=d.addCallback(self.evalJSONRequest); -return d; -},wait:function(_301,_302){ -var d=new MochiKit.Async.Deferred(); -var m=MochiKit.Base; -if(typeof (_302)!="undefined"){ -d.addCallback(function(){ -return _302; -}); -} -var _303=setTimeout(m.bind("callback",d),Math.floor(_301*1000)); -d.canceller=function(){ -try{ -clearTimeout(_303); -} -catch(e){ -} -}; -return d; -},callLater:function(_304,func){ -var m=MochiKit.Base; -var _305=m.partial.apply(m,m.extend(null,arguments,1)); -return MochiKit.Async.wait(_304).addCallback(function(res){ -return _305(); -}); -}}); -MochiKit.Async.DeferredLock=function(){ -this.waiting=[]; -this.locked=false; -this.id=this._nextId(); -}; -MochiKit.Async.DeferredLock.prototype={__class__:MochiKit.Async.DeferredLock,acquire:function(){ -d=new MochiKit.Async.Deferred(); -if(this.locked){ -this.waiting.push(d); -}else{ -this.locked=true; -d.callback(this); -} -return d; -},release:function(){ -if(!this.locked){ -throw TypeError("Tried to release an unlocked DeferredLock"); -} -this.locked=false; -if(this.waiting.length>0){ -this.locked=true; -this.waiting.shift().callback(this); -} -},_nextId:MochiKit.Base.counter(),repr:function(){ -var _306; -if(this.locked){ -_306="locked, "+this.waiting.length+" waiting"; -}else{ -_306="unlocked"; -} -return "DeferredLock("+this.id+", "+_306+")"; -},toString:MochiKit.Base.forwardCall("repr")}; -MochiKit.Async.DeferredList=function(list,_308,_309,_310,_311){ -MochiKit.Async.Deferred.apply(this,[_311]); -this.list=list; -var _312=[]; -this.resultList=_312; -this.finishedCount=0; -this.fireOnOneCallback=_308; -this.fireOnOneErrback=_309; -this.consumeErrors=_310; -var cb=MochiKit.Base.bind(this._cbDeferred,this); -for(var i=0;i=0){ -var opt=elem.options[elem.selectedIndex]; -_326.push(name); -_327.push((opt.value)?opt.value:opt.text); -return null; -} -_326.push(name); -_327.push(""); -return null; -}else{ -var opts=elem.options; -if(!opts.length){ -_326.push(name); -_327.push(""); -return null; -} -for(var i=0;i0){ -return node; -} -if(typeof (node)=="number"||typeof (node)=="boolean"){ -node=node.toString(); -} -if(typeof (node)=="string"){ -return self._document.createTextNode(node); -} -if(typeof (node.__dom__)=="function"){ -node=node.__dom__(ctx); -continue; -} -if(typeof (node.dom)=="function"){ -node=node.dom(ctx); -continue; -} -if(typeof (node)=="function"){ -node=node.apply(ctx,[ctx]); -continue; -} -if(im){ -var _342=null; -try{ -_342=iter(node); -} -catch(e){ -} -if(_342){ -return map(_340,_342,_338(ctx)); -} -} -try{ -node=_339.match(node,ctx); -continue; -} -catch(e){ -if(e!=_341){ -throw e; -} -} -return self._document.createTextNode(node.toString()); -} -return undefined; -},setNodeAttribute:function(node,attr,_344){ -var o={}; -o[attr]=_344; -try{ -return MochiKit.DOM.updateNodeAttributes(node,o); -} -catch(e){ -} -return null; -},getNodeAttribute:function(node,attr){ -var self=MochiKit.DOM; -var _345=self.attributeArray.renames[attr]; -node=self.getElement(node); -try{ -if(_345){ -return node[_345]; -} -return node.getAttribute(attr); -} -catch(e){ -} -return null; -},updateNodeAttributes:function(node,_346){ -var elem=node; -var self=MochiKit.DOM; -if(typeof (node)=="string"){ -elem=self.getElement(node); -} -if(_346){ -var _347=MochiKit.Base.updatetree; -if(self.attributeArray.compliant){ -for(var k in _346){ -var v=_346[k]; -if(typeof (v)=="object"&&typeof (elem[k])=="object"){ -_347(elem[k],v); -}else{ -if(k.substring(0,2)=="on"){ -if(typeof (v)=="string"){ -v=new Function(v); -} -elem[k]=v; -}else{ -elem.setAttribute(k,v); -} -} -} -}else{ -var _348=self.attributeArray.renames; -for(k in _346){ -v=_346[k]; -var _349=_348[k]; -if(k=="style"&&typeof (v)=="string"){ -elem.style.cssText=v; -}else{ -if(typeof (_349)=="string"){ -elem[_349]=v; -}else{ -if(typeof (elem[k])=="object"&&typeof (v)=="object"){ -_347(elem[k],v); -}else{ -if(k.substring(0,2)=="on"){ -if(typeof (v)=="string"){ -v=new Function(v); -} -elem[k]=v; -}else{ -elem.setAttribute(k,v); -} -} -} -} -} -} -} -return elem; -},appendChildNodes:function(node){ -var elem=node; -var self=MochiKit.DOM; -if(typeof (node)=="string"){ -elem=self.getElement(node); -} -var _350=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)]; -var _351=MochiKit.Base.concat; -while(_350.length){ -var n=_350.shift(); -if(typeof (n)=="undefined"||n===null){ -}else{ -if(typeof (n.nodeType)=="number"){ -elem.appendChild(n); -}else{ -_350=_351(n,_350); -} -} -} -return elem; -},replaceChildNodes:function(node){ -var elem=node; -var self=MochiKit.DOM; -if(typeof (node)=="string"){ -elem=self.getElement(node); -arguments[0]=elem; -} -var _352; -while((_352=elem.firstChild)){ -elem.removeChild(_352); -} -if(arguments.length<2){ -return elem; -}else{ -return self.appendChildNodes.apply(this,arguments); -} -},createDOM:function(name,_353){ -var elem; -var self=MochiKit.DOM; -var m=MochiKit.Base; -if(typeof (_353)=="string"||typeof (_353)=="number"){ -var args=m.extend([name,null],arguments,1); -return arguments.callee.apply(this,args); -} -if(typeof (name)=="string"){ -if(_353&&!self.attributeArray.compliant){ -var _354=""; -if("name" in _353){ -_354+=" name=\""+self.escapeHTML(_353.name)+"\""; -} -if(name=="input"&&"type" in _353){ -_354+=" type=\""+self.escapeHTML(_353.type)+"\""; -} -if(_354){ -name="<"+name+_354+">"; -} -} -elem=self._document.createElement(name); -}else{ -elem=name; -} -if(_353){ -self.updateNodeAttributes(elem,_353); -} -if(arguments.length<=2){ -return elem; -}else{ -var args=m.extend([elem],arguments,2); -return self.appendChildNodes.apply(this,args); -} -},createDOMFunc:function(){ -var m=MochiKit.Base; -return m.partial.apply(this,m.extend([MochiKit.DOM.createDOM],arguments)); -},removeElement:function(elem){ -var e=MochiKit.DOM.getElement(elem); -e.parentNode.removeChild(e); -return e; -},swapDOM:function(dest,src){ -var self=MochiKit.DOM; -dest=self.getElement(dest); -var _357=dest.parentNode; -if(src){ -src=self.getElement(src); -_357.replaceChild(src,dest); -}else{ -_357.removeChild(dest); -} -return src; -},getElement:function(id){ -var self=MochiKit.DOM; -if(arguments.length==1){ -return ((typeof (id)=="string")?self._document.getElementById(id):id); -}else{ -return MochiKit.Base.map(self.getElement,arguments); -} -},getElementsByTagAndClassName:function(_359,_360,_361){ -var self=MochiKit.DOM; -if(typeof (_359)=="undefined"||_359===null){ -_359="*"; -} -if(typeof (_361)=="undefined"||_361===null){ -_361=self._document; -} -_361=self.getElement(_361); -var _362=(_361.getElementsByTagName(_359)||self._document.all); -if(typeof (_360)=="undefined"||_360===null){ -return MochiKit.Base.extend(null,_362); -} -var _363=[]; -for(var i=0;i<_362.length;i++){ -var _364=_362[i]; -var _365=_364.className.split(" "); -for(var j=0;j<_365.length;j++){ -if(_365[j]==_360){ -_363.push(_364); -break; -} -} -} -return _363; -},_newCallStack:function(path,once){ -var rval=function(){ -var _368=arguments.callee.callStack; -for(var i=0;i<_368.length;i++){ -if(_368[i].apply(this,arguments)===false){ -break; -} -} -if(once){ -try{ -this[path]=null; -} -catch(e){ -} -} -}; -rval.callStack=[]; -return rval; -},addToCallStack:function(_369,path,func,once){ -var self=MochiKit.DOM; -var _370=_369[path]; -var _371=_370; -if(!(typeof (_370)=="function"&&typeof (_370.callStack)=="object"&&_370.callStack!==null)){ -_371=self._newCallStack(path,once); -if(typeof (_370)=="function"){ -_371.callStack.push(_370); -} -_369[path]=_371; -} -_371.callStack.push(func); -},addLoadEvent:function(func){ -var self=MochiKit.DOM; -self.addToCallStack(self._window,"onload",func,true); -},focusOnLoad:function(_372){ -var self=MochiKit.DOM; -self.addLoadEvent(function(){ -_372=self.getElement(_372); -if(_372){ -_372.focus(); -} -}); -},setElementClass:function(_373,_374){ -var self=MochiKit.DOM; -var obj=self.getElement(_373); -if(self.attributeArray.compliant){ -obj.setAttribute("class",_374); -}else{ -obj.setAttribute("className",_374); -} -},toggleElementClass:function(_375){ -var self=MochiKit.DOM; -for(var i=1;i/g,">"); -},toHTML:function(dom){ -return MochiKit.DOM.emitHTML(dom).join(""); -},emitHTML:function(dom,lst){ -if(typeof (lst)=="undefined"||lst===null){ -lst=[]; -} -var _391=[dom]; -var self=MochiKit.DOM; -var _392=self.escapeHTML; -var _393=self.attributeArray; -while(_391.length){ -dom=_391.pop(); -if(typeof (dom)=="string"){ -lst.push(dom); -}else{ -if(dom.nodeType==1){ -lst.push("<"+dom.nodeName.toLowerCase()); -var _394=[]; -var _395=_393(dom); -for(var i=0;i<_395.length;i++){ -var a=_395[i]; -_394.push([" ",a.name,"=\"",_392(a.value),"\""]); -} -_394.sort(); -for(i=0;i<_394.length;i++){ -var _396=_394[i]; -for(var j=0;j<_396.length;j++){ -lst.push(_396[j]); -} -} -if(dom.hasChildNodes()){ -lst.push(">"); -_391.push(""); -var _397=dom.childNodes; -for(i=_397.length-1;i>=0;i--){ -_391.push(_397[i]); -} -}else{ -lst.push("/>"); -} -}else{ -if(dom.nodeType==3){ -lst.push(_392(dom.nodeValue)); -} -} -} -} -return lst; -},scrapeText:function(node,_398){ -var rval=[]; -(function(node){ -var cn=node.childNodes; -if(cn){ -for(var i=0;i0){ -var _404=m.filter; -_403=function(node){ -return _404(_403.ignoreAttrFilter,node.attributes); -}; -_403.ignoreAttr={}; -var _405=_402.attributes; -var _406=_403.ignoreAttr; -for(var i=0;i<_405.length;i++){ -var a=_405[i]; -_406[a.name]=a.value; -} -_403.ignoreAttrFilter=function(a){ -return (_403.ignoreAttr[a.name]!=a.value); -}; -_403.compliant=false; -_403.renames={"class":"className","checked":"defaultChecked","usemap":"useMap","for":"htmlFor","readonly":"readOnly"}; -}else{ -_403=function(node){ -return node.attributes; -}; -_403.compliant=true; -_403.renames={}; -} -this.attributeArray=_403; -var _407=function(_408,arr){ -var _409=arr[1].split("."); -var str=""; -var obj={}; -str+="if (!MochiKit."+_409[1]+") { throw new Error(\""; -str+="This function has been deprecated and depends on MochiKit."; -str+=_409[1]+".\");}"; -str+="return MochiKit."+_409[1]+"."+arr[0]; -str+=".apply(this, arguments);"; -obj[_409[2]]=new Function(str); -MochiKit.Base.update(MochiKit[_408],obj); -}; -for(var i;i<&-]/g,"_"); -var name=uid+"_"+url; -var nwin=win.open("",name,"dependent,resizable,height=200"); -if(!nwin){ -alert("Not able to open debugging window due to pop-up blocking."); -return undefined; -} -nwin.document.write(""+"[MochiKit.LoggingPane]"+""); -nwin.document.close(); -nwin.document.title+=" "+win.document.title; -win=nwin; -} -var doc=win.document; -this.doc=doc; -var _444=doc.getElementById(uid); -var _445=!!_444; -if(_444&&typeof (_444.loggingPane)!="undefined"){ -_444.loggingPane.logger=this.logger; -_444.loggingPane.buildAndApplyFilter(); -return _444.loggingPane; -} -if(_445){ -var _446; -while((_446=_444.firstChild)){ -_444.removeChild(_446); -} -}else{ -_444=doc.createElement("div"); -_444.id=uid; -} -_444.loggingPane=this; -var _447=doc.createElement("input"); -var _448=doc.createElement("input"); -var _449=doc.createElement("button"); -var _450=doc.createElement("button"); -var _451=doc.createElement("button"); -var _452=doc.createElement("button"); -var _453=doc.createElement("div"); -var _454=doc.createElement("div"); -var _455=uid+"_Listener"; -this.colorTable=_441(this.colorTable); -var _456=[]; -var _457=null; -var _458=function(msg){ -var _459=msg.level; -if(typeof (_459)=="number"){ -_459=MochiKit.Logging.LogLevel[_459]; -} -return _459; -}; -var _460=function(msg){ -return msg.info.join(" "); -}; -var _461=bind(function(msg){ -var _462=_458(msg); -var text=_460(msg); -var c=this.colorTable[_462]; -var p=doc.createElement("span"); -p.className="MochiKit-LogMessage MochiKit-LogLevel-"+_462; -p.style.cssText="margin: 0px; white-space: -moz-pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; white-space: pre-line; word-wrap: break-word; wrap-option: emergency; color: "+c; -p.appendChild(doc.createTextNode(_462+": "+text)); -_454.appendChild(p); -_454.appendChild(doc.createElement("br")); -if(_453.offsetHeight>_453.scrollHeight){ -_453.scrollTop=0; -}else{ -_453.scrollTop=_453.scrollHeight; -} -},this); -var _464=function(msg){ -_456[_456.length]=msg; -_461(msg); -}; -var _465=function(){ -var _466,infore; -try{ -_466=new RegExp(_447.value); -infore=new RegExp(_448.value); -} -catch(e){ -logDebug("Error in filter regex: "+e.message); -return null; -} -return function(msg){ -return (_466.test(_458(msg))&&infore.test(_460(msg))); -}; -}; -var _467=function(){ -while(_454.firstChild){ -_454.removeChild(_454.firstChild); -} -}; -var _468=function(){ -_456=[]; -_467(); -}; -var _469=bind(function(){ -if(this.closed){ -return; -} -this.closed=true; -if(MochiKit.LoggingPane._loggingPane==this){ -MochiKit.LoggingPane._loggingPane=null; -} -this.logger.removeListener(_455); -_444.loggingPane=null; -if(_437){ -_444.parentNode.removeChild(_444); -}else{ -this.win.close(); -} -},this); -var _470=function(){ -_467(); -for(var i=0;i<_456.length;i++){ -var msg=_456[i]; -if(_457===null||_457(msg)){ -_461(msg); -} -} -}; -this.buildAndApplyFilter=function(){ -_457=_465(); -_470(); -this.logger.removeListener(_455); -this.logger.addListener(_455,_457,_464); -}; -var _471=bind(function(){ -_456=this.logger.getMessages(); -_470(); -},this); -var _472=bind(function(_473){ -_473=_473||window.event; -key=_473.which||_473.keyCode; -if(key==13){ -this.buildAndApplyFilter(); -} -},this); -var _474="display: block; z-index: 1000; left: 0px; bottom: 0px; position: fixed; width: 100%; background-color: white; font: "+this.logFont; -if(_437){ -_474+="; height: 10em; border-top: 2px solid black"; -}else{ -_474+="; height: 100%;"; -} -_444.style.cssText=_474; -if(!_445){ -doc.body.appendChild(_444); -} -_474={"cssText":"width: 33%; display: inline; font: "+this.logFont}; -_440(_447,{"value":"FATAL|ERROR|WARNING|INFO|DEBUG","onkeypress":_472,"style":_474}); -_444.appendChild(_447); -_440(_448,{"value":".*","onkeypress":_472,"style":_474}); -_444.appendChild(_448); -_474="width: 8%; display:inline; font: "+this.logFont; -_449.appendChild(doc.createTextNode("Filter")); -_449.onclick=bind("buildAndApplyFilter",this); -_449.style.cssText=_474; -_444.appendChild(_449); -_450.appendChild(doc.createTextNode("Load")); -_450.onclick=_471; -_450.style.cssText=_474; -_444.appendChild(_450); -_451.appendChild(doc.createTextNode("Clear")); -_451.onclick=_468; -_451.style.cssText=_474; -_444.appendChild(_451); -_452.appendChild(doc.createTextNode("Close")); -_452.onclick=_469; -_452.style.cssText=_474; -_444.appendChild(_452); -_453.style.cssText="overflow: auto; width: 100%"; -_454.style.cssText="width: 100%; height: "+(_437?"8em":"100%"); -_453.appendChild(_454); -_444.appendChild(_453); -this.buildAndApplyFilter(); -_471(); -if(_437){ -this.win=undefined; -}else{ -this.win=win; -} -this.inline=_437; -this.closePane=_469; -this.closed=false; -return this; -}; -MochiKit.LoggingPane.LoggingPane.prototype={"logFont":"8pt Verdana,sans-serif","colorTable":{"ERROR":"red","FATAL":"darkred","WARNING":"blue","INFO":"black","DEBUG":"green"}}; -MochiKit.LoggingPane.EXPORT_OK=["LoggingPane"]; -MochiKit.LoggingPane.EXPORT=["createLoggingPane"]; -MochiKit.LoggingPane.__new__=function(){ -this.EXPORT_TAGS={":common":this.EXPORT,":all":MochiKit.Base.concat(this.EXPORT,this.EXPORT_OK)}; -MochiKit.Base.nameFunctions(this); -MochiKit.LoggingPane._loggingPane=null; -}; -MochiKit.LoggingPane.__new__(); -MochiKit.Base._exportSymbols(this,MochiKit.LoggingPane); -if(typeof (dojo)!="undefined"){ -dojo.provide("MochiKit.Color"); -dojo.require("MochiKit.Base"); -dojo.require("MochiKit.DOM"); -dojo.require("MochiKit.Style"); -} -if(typeof (JSAN)!="undefined"){ -JSAN.use("MochiKit.Base",[]); -JSAN.use("MochiKit.DOM",[]); -JSAN.use("MochiKit.Style",[]); -} -try{ -if(typeof (MochiKit.Base)=="undefined"){ -throw ""; -} -} -catch(e){ -throw "MochiKit.Color depends on MochiKit.Base"; -} -try{ -if(typeof (MochiKit.Base)=="undefined"){ -throw ""; -} -} -catch(e){ -throw "MochiKit.Color depends on MochiKit.DOM"; -} -try{ -if(typeof (MochiKit.Base)=="undefined"){ -throw ""; -} -} -catch(e){ -throw "MochiKit.Color depends on MochiKit.Style"; -} -if(typeof (MochiKit.Color)=="undefined"){ -MochiKit.Color={}; -} -MochiKit.Color.NAME="MochiKit.Color"; -MochiKit.Color.VERSION="1.4"; -MochiKit.Color.__repr__=function(){ -return "["+this.NAME+" "+this.VERSION+"]"; -}; -MochiKit.Color.toString=function(){ -return this.__repr__(); -}; -MochiKit.Color.Color=function(red,_476,blue,_478){ -if(typeof (_478)=="undefined"||_478===null){ -_478=1; -} -this.rgb={r:red,g:_476,b:blue,a:_478}; -}; -MochiKit.Color.Color.prototype={__class__:MochiKit.Color.Color,colorWithAlpha:function(_479){ -var rgb=this.rgb; -var m=MochiKit.Color; -return m.Color.fromRGB(rgb.r,rgb.g,rgb.b,_479); -},colorWithHue:function(hue){ -var hsl=this.asHSL(); -hsl.h=hue; -var m=MochiKit.Color; -return m.Color.fromHSL(hsl); -},colorWithSaturation:function(_483){ -var hsl=this.asHSL(); -hsl.s=_483; -var m=MochiKit.Color; -return m.Color.fromHSL(hsl); -},colorWithLightness:function(_484){ -var hsl=this.asHSL(); -hsl.l=_484; -var m=MochiKit.Color; -return m.Color.fromHSL(hsl); -},darkerColorWithLevel:function(_485){ -var hsl=this.asHSL(); -hsl.l=Math.max(hsl.l-_485,0); -var m=MochiKit.Color; -return m.Color.fromHSL(hsl); -},lighterColorWithLevel:function(_486){ -var hsl=this.asHSL(); -hsl.l=Math.min(hsl.l+_486,1); -var m=MochiKit.Color; -return m.Color.fromHSL(hsl); -},blendedColor:function(_487,_488){ -if(typeof (_488)=="undefined"||_488===null){ -_488=0.5; -} -var sf=1-_488; -var s=this.rgb; -var d=_487.rgb; -var df=_488; -return MochiKit.Color.Color.fromRGB((s.r*sf)+(d.r*df),(s.g*sf)+(d.g*df),(s.b*sf)+(d.b*df),(s.a*sf)+(d.a*df)); -},compareRGB:function(_491){ -var a=this.asRGB(); -var b=_491.asRGB(); -return MochiKit.Base.compare([a.r,a.g,a.b,a.a],[b.r,b.g,b.b,b.a]); -},isLight:function(){ -return this.asHSL().b>0.5; -},isDark:function(){ -return (!this.isLight()); -},toHSLString:function(){ -var c=this.asHSL(); -var ccc=MochiKit.Color.clampColorComponent; -var rval=this._hslString; -if(!rval){ -var mid=(ccc(c.h,360).toFixed(0)+","+ccc(c.s,100).toPrecision(4)+"%"+","+ccc(c.l,100).toPrecision(4)+"%"); -var a=c.a; -if(a>=1){ -a=1; -rval="hsl("+mid+")"; -}else{ -if(a<=0){ -a=0; -} -rval="hsla("+mid+","+a+")"; -} -this._hslString=rval; -} -return rval; -},toRGBString:function(){ -var c=this.rgb; -var ccc=MochiKit.Color.clampColorComponent; -var rval=this._rgbString; -if(!rval){ -var mid=(ccc(c.r,255).toFixed(0)+","+ccc(c.g,255).toFixed(0)+","+ccc(c.b,255).toFixed(0)); -if(c.a!=1){ -rval="rgba("+mid+","+c.a+")"; -}else{ -rval="rgb("+mid+")"; -} -this._rgbString=rval; -} -return rval; -},asRGB:function(){ -return MochiKit.Base.clone(this.rgb); -},toHexString:function(){ -var m=MochiKit.Color; -var c=this.rgb; -var ccc=MochiKit.Color.clampColorComponent; -var rval=this._hexString; -if(!rval){ -rval=("#"+m.toColorPart(ccc(c.r,255))+m.toColorPart(ccc(c.g,255))+m.toColorPart(ccc(c.b,255))); -this._hexString=rval; -} -return rval; -},asHSV:function(){ -var hsv=this.hsv; -var c=this.rgb; -if(typeof (hsv)=="undefined"||hsv===null){ -hsv=MochiKit.Color.rgbToHSV(this.rgb); -this.hsv=hsv; -} -return MochiKit.Base.clone(hsv); -},asHSL:function(){ -var hsl=this.hsl; -var c=this.rgb; -if(typeof (hsl)=="undefined"||hsl===null){ -hsl=MochiKit.Color.rgbToHSL(this.rgb); -this.hsl=hsl; -} -return MochiKit.Base.clone(hsl); -},toString:function(){ -return this.toRGBString(); -},repr:function(){ -var c=this.rgb; -var col=[c.r,c.g,c.b,c.a]; -return this.__class__.NAME+"("+col.join(", ")+")"; -}}; -MochiKit.Base.update(MochiKit.Color.Color,{fromRGB:function(red,_496,blue,_497){ -var _498=MochiKit.Color.Color; -if(arguments.length==1){ -var rgb=red; -red=rgb.r; -_496=rgb.g; -blue=rgb.b; -if(typeof (rgb.a)=="undefined"){ -_497=undefined; -}else{ -_497=rgb.a; -} -} -return new _498(red,_496,blue,_497); -},fromHSL:function(hue,_499,_500,_501){ -var m=MochiKit.Color; -return m.Color.fromRGB(m.hslToRGB.apply(m,arguments)); -},fromHSV:function(hue,_502,_503,_504){ -var m=MochiKit.Color; -return m.Color.fromRGB(m.hsvToRGB.apply(m,arguments)); -},fromName:function(name){ -var _505=MochiKit.Color.Color; -if(name.charAt(0)=="\""){ -name=name.substr(1,name.length-2); -} -var _506=_505._namedColors[name.toLowerCase()]; -if(typeof (_506)=="string"){ -return _505.fromHexString(_506); -}else{ -if(name=="transparent"){ -return _505.transparentColor(); -} -} -return null; -},fromString:function(_507){ -var self=MochiKit.Color.Color; -var _508=_507.substr(0,3); -if(_508=="rgb"){ -return self.fromRGBString(_507); -}else{ -if(_508=="hsl"){ -return self.fromHSLString(_507); -}else{ -if(_507.charAt(0)=="#"){ -return self.fromHexString(_507); -} -} -} -return self.fromName(_507); -},fromHexString:function(_509){ -if(_509.charAt(0)=="#"){ -_509=_509.substring(1); -} -var _510=[]; -var i,hex; -if(_509.length==3){ -for(i=0;i<3;i++){ -hex=_509.substr(i,1); -_510.push(parseInt(hex+hex,16)/255); -} -}else{ -for(i=0;i<6;i+=2){ -hex=_509.substr(i,2); -_510.push(parseInt(hex,16)/255); -} -} -var _511=MochiKit.Color.Color; -return _511.fromRGB.apply(_511,_510); -},_fromColorString:function(pre,_513,_514,_515){ -if(_515.indexOf(pre)===0){ -_515=_515.substring(_515.indexOf("(",3)+1,_515.length-1); -} -var _516=_515.split(/\s*,\s*/); -var _517=[]; -for(var i=0;i<_516.length;i++){ -var c=_516[i]; -var val; -var _518=c.substring(c.length-3); -if(c.charAt(c.length-1)=="%"){ -val=0.01*parseFloat(c.substring(0,c.length-1)); -}else{ -if(_518=="deg"){ -val=parseFloat(c)/360; -}else{ -if(_518=="rad"){ -val=parseFloat(c)/(Math.PI*2); -}else{ -val=_514[i]*parseFloat(c); -} -} -} -_517.push(val); -} -return this[_513].apply(this,_517); -},fromComputedStyle:function(elem,_519){ -var d=MochiKit.DOM; -var cls=MochiKit.Color.Color; -for(elem=d.getElement(elem);elem;elem=elem.parentNode){ -var _520=MochiKit.Style.computedStyle.apply(d,arguments); -if(!_520){ -continue; -} -var _521=cls.fromString(_520); -if(!_521){ -break; -} -if(_521.asRGB().a>0){ -return _521; -} -} -return null; -},fromBackground:function(elem){ -var cls=MochiKit.Color.Color; -return cls.fromComputedStyle(elem,"backgroundColor","background-color")||cls.whiteColor(); -},fromText:function(elem){ -var cls=MochiKit.Color.Color; -return cls.fromComputedStyle(elem,"color","color")||cls.blackColor(); -},namedColors:function(){ -return MochiKit.Base.clone(MochiKit.Color.Color._namedColors); -}}); -MochiKit.Base.update(MochiKit.Color,{clampColorComponent:function(v,_522){ -v*=_522; -if(v<0){ -return 0; -}else{ -if(v>_522){ -return _522; -}else{ -return v; -} -} -},_hslValue:function(n1,n2,hue){ -if(hue>6){ -hue-=6; -}else{ -if(hue<0){ -hue+=6; -} -} -var val; -if(hue<1){ -val=n1+(n2-n1)*hue; -}else{ -if(hue<3){ -val=n2; -}else{ -if(hue<4){ -val=n1+(n2-n1)*(4-hue); -}else{ -val=n1; -} -} -} -return val; -},hsvToRGB:function(hue,_525,_526,_527){ -if(arguments.length==1){ -var hsv=hue; -hue=hsv.h; -_525=hsv.s; -_526=hsv.v; -_527=hsv.a; -} -var red; -var _528; -var blue; -if(_525===0){ -red=0; -_528=0; -blue=0; -}else{ -var i=Math.floor(hue*6); -var f=(hue*6)-i; -var p=_526*(1-_525); -var q=_526*(1-(_525*f)); -var t=_526*(1-(_525*(1-f))); -switch(i){ -case 1: -red=q; -_528=_526; -blue=p; -break; -case 2: -red=p; -_528=_526; -blue=t; -break; -case 3: -red=p; -_528=q; -blue=_526; -break; -case 4: -red=t; -_528=p; -blue=_526; -break; -case 5: -red=_526; -_528=p; -blue=q; -break; -case 6: -case 0: -red=_526; -_528=t; -blue=p; -break; -} -} -return {r:red,g:_528,b:blue,a:_527}; -},hslToRGB:function(hue,_530,_531,_532){ -if(arguments.length==1){ -var hsl=hue; -hue=hsl.h; -_530=hsl.s; -_531=hsl.l; -_532=hsl.a; -} -var red; -var _533; -var blue; -if(_530===0){ -red=_531; -_533=_531; -blue=_531; -}else{ -var m2; -if(_531<=0.5){ -m2=_531*(1+_530); -}else{ -m2=_531+_530-(_531*_530); -} -var m1=(2*_531)-m2; -var f=MochiKit.Color._hslValue; -var h6=hue*6; -red=f(m1,m2,h6+2); -_533=f(m1,m2,h6); -blue=f(m1,m2,h6-2); -} -return {r:red,g:_533,b:blue,a:_532}; -},rgbToHSV:function(red,_537,blue,_538){ -if(arguments.length==1){ -var rgb=red; -red=rgb.r; -_537=rgb.g; -blue=rgb.b; -_538=rgb.a; -} -var max=Math.max(Math.max(red,_537),blue); -var min=Math.min(Math.min(red,_537),blue); -var hue; -var _541; -var _542=max; -if(min==max){ -hue=0; -_541=0; -}else{ -var _543=(max-min); -_541=_543/max; -if(red==max){ -hue=(_537-blue)/_543; -}else{ -if(_537==max){ -hue=2+((blue-red)/_543); -}else{ -hue=4+((red-_537)/_543); -} -} -hue/=6; -if(hue<0){ -hue+=1; -} -if(hue>1){ -hue-=1; -} -} -return {h:hue,s:_541,v:_542,a:_538}; -},rgbToHSL:function(red,_544,blue,_545){ -if(arguments.length==1){ -var rgb=red; -red=rgb.r; -_544=rgb.g; -blue=rgb.b; -_545=rgb.a; -} -var max=Math.max(red,Math.max(_544,blue)); -var min=Math.min(red,Math.min(_544,blue)); -var hue; -var _546; -var _547=(max+min)/2; -var _548=max-min; -if(_548===0){ -hue=0; -_546=0; -}else{ -if(_547<=0.5){ -_546=_548/(max+min); -}else{ -_546=_548/(2-max-min); -} -if(red==max){ -hue=(_544-blue)/_548; -}else{ -if(_544==max){ -hue=2+((blue-red)/_548); -}else{ -hue=4+((red-_544)/_548); -} -} -hue/=6; -if(hue<0){ -hue+=1; -} -if(hue>1){ -hue-=1; -} -} -return {h:hue,s:_546,l:_547,a:_545}; -},toColorPart:function(num){ -num=Math.round(num); -var _549=num.toString(16); -if(num<16){ -return "0"+_549; -} -return _549; -},__new__:function(){ -var m=MochiKit.Base; -this.Color.fromRGBString=m.bind(this.Color._fromColorString,this.Color,"rgb","fromRGB",[1/255,1/255,1/255,1]); -this.Color.fromHSLString=m.bind(this.Color._fromColorString,this.Color,"hsl","fromHSL",[1/360,0.01,0.01,1]); -var _550=1/3; -var _551={black:[0,0,0],blue:[0,0,1],brown:[0.6,0.4,0.2],cyan:[0,1,1],darkGray:[_550,_550,_550],gray:[0.5,0.5,0.5],green:[0,1,0],lightGray:[2*_550,2*_550,2*_550],magenta:[1,0,1],orange:[1,0.5,0],purple:[0.5,0,0.5],red:[1,0,0],transparent:[0,0,0,0],white:[1,1,1],yellow:[1,1,0]}; -var _552=function(name,r,g,b,a){ -var rval=this.fromRGB(r,g,b,a); -this[name]=function(){ -return rval; -}; -return rval; -}; -for(var k in _551){ -var name=k+"Color"; -var _554=m.concat([_552,this.Color,name],_551[k]); -this.Color[name]=m.bind.apply(null,_554); -} -var _555=function(){ -for(var i=0;i1){ -var src=MochiKit.DOM.getElement(arguments[0]); -var sig=arguments[1]; -var obj=arguments[2]; -var func=arguments[3]; -for(var i=_571.length-1;i>=0;i--){ -var o=_571[i]; -if(o[0]===src&&o[1]===sig&&o[4]===obj&&o[5]===func){ -self._disconnect(o); -_571.splice(i,1); -return true; -} -} -}else{ -var idx=m.findIdentical(_571,_570); -if(idx>=0){ -self._disconnect(_570); -_571.splice(idx,1); -return true; -} -} -return false; -},disconnectAll:function(src,sig){ -src=MochiKit.DOM.getElement(src); -var m=MochiKit.Base; -var _572=m.flattenArguments(m.extend(null,arguments,1)); -var self=MochiKit.Signal; -var _573=self._disconnect; -var _574=self._observers; -if(_572.length===0){ -for(var i=_574.length-1;i>=0;i--){ -var _575=_574[i]; -if(_575[0]===src){ -_573(_575); -_574.splice(i,1); -} -} -}else{ -var sigs={}; -for(var i=0;i<_572.length;i++){ -sigs[_572[i]]=true; -} -for(var i=_574.length-1;i>=0;i--){ -var _575=_574[i]; -if(_575[0]===src&&_575[1] in sigs){ -_573(_575); -_574.splice(i,1); -} -} -} -},signal:function(src,sig){ -var _577=MochiKit.Signal._observers; -src=MochiKit.DOM.getElement(src); -var args=MochiKit.Base.extend(null,arguments,2); -var _578=[]; -for(var i=0;i<_577.length;i++){ -var _579=_577[i]; -if(_579[0]===src&&_579[1]===sig){ -try{ -_579[2].apply(src,args); -} -catch(e){ -_578.push(e); -} -} -} -if(_578.length==1){ -throw _578[0]; -}else{ -if(_578.length>1){ -var e=new Error("Multiple errors thrown in handling 'sig', see errors property"); -e.errors=_578; -throw e; -} -} -}}); -MochiKit.Signal.EXPORT_OK=[]; -MochiKit.Signal.EXPORT=["connect","disconnect","signal","disconnectAll"]; -MochiKit.Signal.__new__=function(win){ -var m=MochiKit.Base; -this._document=document; -this._window=win; -try{ -this.connect(window,"onunload",this._unloadCache); -} -catch(e){ -} -this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)}; -m.nameFunctions(this); -}; -MochiKit.Signal.__new__(this); -if(MochiKit.__export__){ -connect=MochiKit.Signal.connect; -disconnect=MochiKit.Signal.disconnect; -disconnectAll=MochiKit.Signal.disconnectAll; -signal=MochiKit.Signal.signal; -} -MochiKit.Base._exportSymbols(this,MochiKit.Signal); -if(typeof (dojo)!="undefined"){ -dojo.provide("MochiKit.Visual"); -dojo.require("MochiKit.Base"); -dojo.require("MochiKit.DOM"); -dojo.require("MochiKit.Style"); -dojo.require("MochiKit.Color"); -dojo.require("MochiKit.Iter"); -} -if(typeof (JSAN)!="undefined"){ -JSAN.use("MochiKit.Base",[]); -JSAN.use("MochiKit.DOM",[]); -JSAN.use("MochiKit.Style",[]); -JSAN.use("MochiKit.Color",[]); -JSAN.use("MochiKit.Iter",[]); -} -try{ -if(typeof (MochiKit.Base)==="undefined"||typeof (MochiKit.DOM)==="undefined"||typeof (MochiKit.Style)==="undefined"||typeof (MochiKit.Color)==="undefined"||typeof (MochiKit.Iter)==="undefined"){ -throw ""; -} -} -catch(e){ -throw "MochiKit.Visual depends on MochiKit.Base, MochiKit.DOM, MochiKit.Style, MochiKit.Color and MochiKit.Iter!"; -} -if(typeof (MochiKit.Visual)=="undefined"){ -MochiKit.Visual={}; -} -MochiKit.Visual.NAME="MochiKit.Visual"; -MochiKit.Visual.VERSION="1.4"; -MochiKit.Visual.__repr__=function(){ -return "["+this.NAME+" "+this.VERSION+"]"; -}; -MochiKit.Visual.toString=function(){ -return this.__repr__(); -}; -MochiKit.Visual._RoundCorners=function(e,_580){ -e=MochiKit.DOM.getElement(e); -this._setOptions(_580); -if(this.options.__unstable__wrapElement){ -e=this._doWrap(e); -} -var _581=this.options.color; -var C=MochiKit.Color.Color; -if(this.options.color==="fromElement"){ -_581=C.fromBackground(e); -}else{ -if(!(_581 instanceof C)){ -_581=C.fromString(_581); -} -} -this.isTransparent=(_581.asRGB().a<=0); -var _583=this.options.bgColor; -if(this.options.bgColor==="fromParent"){ -_583=C.fromBackground(e.offsetParent); -}else{ -if(!(_583 instanceof C)){ -_583=C.fromString(_583); -} -} -this._roundCornersImpl(e,_581,_583); -}; -MochiKit.Visual._RoundCorners.prototype={_doWrap:function(e){ -var _584=e.parentNode; -var doc=MochiKit.DOM.currentDocument(); -if(typeof (doc.defaultView)==="undefined"||doc.defaultView===null){ -return e; -} -var _585=doc.defaultView.getComputedStyle(e,null); -if(typeof (_585)==="undefined"||_585===null){ -return e; -} -var _586=MochiKit.DOM.DIV({"style":{display:"block",marginTop:_585.getPropertyValue("padding-top"),marginRight:_585.getPropertyValue("padding-right"),marginBottom:_585.getPropertyValue("padding-bottom"),marginLeft:_585.getPropertyValue("padding-left"),padding:"0px"}}); -_586.innerHTML=e.innerHTML; -e.innerHTML=""; -e.appendChild(_586); -return e; -},_roundCornersImpl:function(e,_587,_588){ -if(this.options.border){ -this._renderBorder(e,_588); -} -if(this._isTopRounded()){ -this._roundTopCorners(e,_587,_588); -} -if(this._isBottomRounded()){ -this._roundBottomCorners(e,_587,_588); -} -},_renderBorder:function(el,_590){ -var _591="1px solid "+this._borderColor(_590); -var _592="border-left: "+_591; -var _593="border-right: "+_591; -var _594="style='"+_592+";"+_593+"'"; -el.innerHTML="
"+el.innerHTML+"
"; -},_roundTopCorners:function(el,_595,_596){ -var _597=this._createCorner(_596); -for(var i=0;i=0;i--){ -_600.appendChild(this._createCornerSlice(_598,_599,i,"bottom")); -} -el.style.paddingBottom=0; -el.appendChild(_600); -},_createCorner:function(_601){ -var dom=MochiKit.DOM; -return dom.DIV({style:{backgroundColor:_601.toString()}}); -},_createCornerSlice:function(_602,_603,n,_604){ -var _605=MochiKit.DOM.SPAN(); -var _606=_605.style; -_606.backgroundColor=_602.toString(); -_606.display="block"; -_606.height="1px"; -_606.overflow="hidden"; -_606.fontSize="1px"; -var _607=this._borderColor(_602,_603); -if(this.options.border&&n===0){ -_606.borderTopStyle="solid"; -_606.borderTopWidth="1px"; -_606.borderLeftWidth="0px"; -_606.borderRightWidth="0px"; -_606.borderBottomWidth="0px"; -_606.height="0px"; -_606.borderColor=_607.toString(); -}else{ -if(_607){ -_606.borderColor=_607.toString(); -_606.borderStyle="solid"; -_606.borderWidth="0px 1px"; -} -} -if(!this.options.compact&&(n==(this.options.numSlices-1))){ -_606.height="2px"; -} -this._setMargin(_605,n,_604); -this._setBorder(_605,n,_604); -return _605; -},_setOptions:function(_608){ -this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false,__unstable__wrapElement:false}; -MochiKit.Base.update(this.options,_608); -this.options.numSlices=(this.options.compact?2:4); -},_whichSideTop:function(){ -var _609=this.options.corners; -if(this._hasString(_609,"all","top")){ -return ""; -} -var _610=(_609.indexOf("tl")!=-1); -var _611=(_609.indexOf("tr")!=-1); -if(_610&&_611){ -return ""; -} -if(_610){ -return "left"; -} -if(_611){ -return "right"; -} -return ""; -},_whichSideBottom:function(){ -var _612=this.options.corners; -if(this._hasString(_612,"all","bottom")){ -return ""; -} -var _613=(_612.indexOf("bl")!=-1); -var _614=(_612.indexOf("br")!=-1); -if(_613&&_614){ -return ""; -} -if(_613){ -return "left"; -} -if(_614){ -return "right"; -} -return ""; -},_borderColor:function(_615,_616){ -if(_615=="transparent"){ -return _616; -}else{ -if(this.options.border){ -return this.options.border; -}else{ -if(this.options.blend){ -return _616.blendedColor(_615); -} -} -} -return ""; -},_setMargin:function(el,n,_617){ -var _618=this._marginSize(n)+"px"; -var _619=(_617=="top"?this._whichSideTop():this._whichSideBottom()); -var _620=el.style; -if(_619=="left"){ -_620.marginLeft=_618; -_620.marginRight="0px"; -}else{ -if(_619=="right"){ -_620.marginRight=_618; -_620.marginLeft="0px"; -}else{ -_620.marginLeft=_618; -_620.marginRight=_618; -} -} -},_setBorder:function(el,n,_621){ -var _622=this._borderSize(n)+"px"; -var _623=(_621=="top"?this._whichSideTop():this._whichSideBottom()); -var _624=el.style; -if(_623=="left"){ -_624.borderLeftWidth=_622; -_624.borderRightWidth="0px"; -}else{ -if(_623=="right"){ -_624.borderRightWidth=_622; -_624.borderLeftWidth="0px"; -}else{ -_624.borderLeftWidth=_622; -_624.borderRightWidth=_622; -} -} -},_marginSize:function(n){ -if(this.isTransparent){ -return 0; -} -var o=this.options; -if(o.compact&&o.blend){ -var _625=[1,0]; -return _625[n]; -}else{ -if(o.compact){ -var _626=[2,1]; -return _626[n]; -}else{ -if(o.blend){ -var _627=[3,2,1,0]; -return _627[n]; -}else{ -var _628=[5,3,2,1]; -return _628[n]; -} -} -} -},_borderSize:function(n){ -var o=this.options; -var _629; -if(o.compact&&(o.blend||this.isTransparent)){ -return 1; -}else{ -if(o.compact){ -_629=[1,0]; -}else{ -if(o.blend){ -_629=[2,1,1,1]; -}else{ -if(o.border){ -_629=[0,2,0,0]; -}else{ -if(this.isTransparent){ -_629=[5,3,2,1]; -}else{ -return 0; -} -} -} -} -} -return _629[n]; -},_hasString:function(str){ -for(var i=1;i=(_654||i)){ -_654=i; -} -}); -_652=_654||_652; -break; -} -_651.startOn+=_652; -_651.finishOn+=_652; -if(!_651.options.queue.limit||this.effects.length<_651.options.queue.limit){ -this.effects.push(_651); -} -if(!this.interval){ -this.interval=setInterval(MochiKit.Base.bind(this.loop,this),40); -} -},remove:function(_655){ -this.effects=MochiKit.Base.filter(function(e){ -return e!=_655; -},this.effects); -if(this.effects.length==0){ -clearInterval(this.interval); -this.interval=null; -} -},loop:function(){ -var _656=new Date().getTime(); -MochiKit.Iter.forEach(this.effects,function(_657){ -_657.loop(_656); -}); -}}); -MochiKit.Visual.Queues={instances:{},get:function(_658){ -if(typeof (_658)!="string"){ -return _658; -} -if(!this.instances[_658]){ -this.instances[_658]=new MochiKit.Visual.ScopedQueue(); -} -return this.instances[_658]; -}}; -MochiKit.Visual.Queue=MochiKit.Visual.Queues.get("global"); -MochiKit.Visual.DefaultOptions={transition:MochiKit.Visual.Transitions.sinoidal,duration:1,fps:25,sync:false,from:0,to:1,delay:0,queue:"parallel"}; -MochiKit.Visual.Base=function(){ -}; -MochiKit.Visual.Base.prototype={__class__:MochiKit.Visual.Base,start:function(_659){ -var v=MochiKit.Visual; -this.options=MochiKit.Base.setdefault(_659||{},v.DefaultOptions); -this.currentFrame=0; -this.state="idle"; -this.startOn=this.options.delay*1000; -this.finishOn=this.startOn+(this.options.duration*1000); -this.event("beforeStart"); -if(!this.options.sync){ -v.Queues.get(typeof (this.options.queue)=="string"?"global":this.options.queue.scope).add(this); -} -},loop:function(_660){ -if(_660>=this.startOn){ -if(_660>=this.finishOn){ -this.render(1); -this.cancel(); -this.event("beforeFinish"); -this.finish(); -this.event("afterFinish"); -return; -} -var pos=(_660-this.startOn)/(this.finishOn-this.startOn); -var _661=Math.round(pos*this.options.fps*this.options.duration); -if(_661>this.currentFrame){ -this.render(pos); -this.currentFrame=_661; -} -} -},render:function(pos){ -if(this.state=="idle"){ -this.state="running"; -this.event("beforeSetup"); -this.setup(); -this.event("afterSetup"); -} -if(this.state=="running"){ -if(this.options.transition){ -pos=this.options.transition(pos); -} -pos*=(this.options.to-this.options.from); -pos+=this.options.from; -this.event("beforeUpdate"); -this.update(pos); -this.event("afterUpdate"); -} -},cancel:function(){ -if(!this.options.sync){ -MochiKit.Visual.Queues.get(typeof (this.options.queue)=="string"?"global":this.options.queue.scope).remove(this); -} -this.state="finished"; -},setup:function(){ -},finish:function(){ -},update:function(_662){ -},event:function(_663){ -if(this.options[_663+"Internal"]){ -this.options[_663+"Internal"](this); -} -if(this.options[_663]){ -this.options[_663](this); -} -},repr:function(){ -return "["+this.__class__.NAME+", options:"+MochiKit.Base.repr(this.options)+"]"; -}}; -MochiKit.Visual.Parallel=function(_664,_665){ -this.__init__(_664,_665); -}; -MochiKit.Visual.Parallel.prototype=new MochiKit.Visual.Base(); -MochiKit.Base.update(MochiKit.Visual.Parallel.prototype,{__init__:function(_666,_667){ -this.effects=_666||[]; -this.start(_667); -},update:function(_668){ -MochiKit.Iter.forEach(this.effects,function(_669){ -_669.render(_668); -}); -},finish:function(){ -MochiKit.Iter.forEach(this.effects,function(_670){ -_670.render(1); -_670.cancel(); -_670.event("beforeFinish"); -_670.finish(); -_670.event("afterFinish"); -}); -}}); -MochiKit.Visual.Opacity=function(_671,_672){ -this.__init__(_671,_672); -}; -MochiKit.Visual.Opacity.prototype=new MochiKit.Visual.Base(); -MochiKit.Base.update(MochiKit.Visual.Opacity.prototype,{__init__:function(_673,_674){ -var b=MochiKit.Base; -var d=MochiKit.DOM; -this.element=d.getElement(_673); -if(b.isIE()&&(!this.element.currentStyle.hasLayout)){ -d.setStyle(this.element,{zoom:1}); -} -_674=b.update({from:d.getOpacity(this.element)||0,to:1},_674||{}); -this.start(_674); -},update:function(_675){ -MochiKit.DOM.setOpacity(this.element,_675); -}}); -MochiKit.Visual.Move=function(_676,_677){ -this.__init__(_676,_677); -}; -MochiKit.Visual.Move.prototype=new MochiKit.Visual.Base(); -MochiKit.Base.update(MochiKit.Visual.Move.prototype,{__init__:function(_678,_679){ -this.element=MochiKit.DOM.getElement(_678); -_679=MochiKit.Base.update({x:0,y:0,mode:"relative"},_679||{}); -this.start(_679); -},setup:function(){ -var d=MochiKit.DOM; -d.makePositioned(this.element); -var s=this.element.style; -var _680=s.visibility; -var _681=s.display; -if(_681=="none"){ -s.visibility="hidden"; -s.display=""; -} -this.originalLeft=parseFloat(d.getStyle(this.element,"left")||"0"); -this.originalTop=parseFloat(d.getStyle(this.element,"top")||"0"); -if(this.options.mode=="absolute"){ -this.options.x-=this.originalLeft; -this.options.y-=this.originalTop; -} -if(_681=="none"){ -s.visibility=_680; -s.display=_681; -} -},update:function(_682){ -MochiKit.DOM.setStyle(this.element,{left:this.options.x*_682+this.originalLeft+"px",top:this.options.y*_682+this.originalTop+"px"}); -}}); -MochiKit.Visual.Scale=function(_683,_684,_685){ -this.__init__(_683,_684,_685); -}; -MochiKit.Visual.Scale.prototype=new MochiKit.Visual.Base(); -MochiKit.Base.update(MochiKit.Visual.Scale.prototype,{__init__:function(_686,_687,_688){ -this.element=MochiKit.DOM.getElement(_686); -_688=MochiKit.Base.update({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:_687},_688||{}); -this.start(_688); -},setup:function(){ -this.restoreAfterFinish=this.options.restoreAfterFinish||false; -this.elementPositioning=MochiKit.DOM.getStyle(this.element,"position"); -var fe=MochiKit.Iter.forEach; -var b=MochiKit.Base.bind; -this.originalStyle={}; -fe(["top","left","width","height","fontSize"],b(function(k){ -this.originalStyle[k]=this.element.style[k]; -},this)); -this.originalTop=this.element.offsetTop; -this.originalLeft=this.element.offsetLeft; -var _689=MochiKit.DOM.getStyle(this.element,"font-size")||"100%"; -fe(["em","px","%"],b(function(_690){ -if(_689.indexOf(_690)>0){ -this.fontSize=parseFloat(_689); -this.fontSizeType=_690; -} -},this)); -this.factor=(this.options.scaleTo-this.options.scaleFrom)/100; -if(/^content/.test(this.options.scaleMode)){ -this.dims=[this.element.scrollHeight,this.element.scrollWidth]; -}else{ -if(this.options.scaleMode=="box"){ -this.dims=[this.element.offsetHeight,this.element.offsetWidth]; -}else{ -this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth]; -} -} -},update:function(_691){ -var _692=(this.options.scaleFrom/100)+(this.factor*_691); -if(this.options.scaleContent&&this.fontSize){ -MochiKit.DOM.setStyle(this.element,{fontSize:this.fontSize*_692+this.fontSizeType}); -} -this.setDimensions(this.dims[0]*_692,this.dims[1]*_692); -},finish:function(){ -if(this.restoreAfterFinish){ -MochiKit.DOM.setStyle(this.element,this.originalStyle); -} -},setDimensions:function(_693,_694){ -var d={}; -if(this.options.scaleX){ -d.width=_694+"px"; -} -if(this.options.scaleY){ -d.height=_693+"px"; -} -if(this.options.scaleFromCenter){ -var topd=(_693-this.dims[0])/2; -var _696=(_694-this.dims[1])/2; -if(this.elementPositioning=="absolute"){ -if(this.options.scaleY){ -d.top=this.originalTop-topd+"px"; -} -if(this.options.scaleX){ -d.left=this.originalLeft-_696+"px"; -} -}else{ -if(this.options.scaleY){ -d.top=-topd+"px"; -} -if(this.options.scaleX){ -d.left=-_696+"px"; -} -} -} -MochiKit.DOM.setStyle(this.element,d); -}}); -MochiKit.Visual.Highlight=function(_697,_698){ -this.__init__(_697,_698); -}; -MochiKit.Visual.Highlight.prototype=new MochiKit.Visual.Base(); -MochiKit.Base.update(MochiKit.Visual.Highlight.prototype,{__init__:function(_699,_700){ -this.element=MochiKit.DOM.getElement(_699); -_700=MochiKit.Base.update({startcolor:"#ffff99"},_700||{}); -this.start(_700); -},setup:function(){ -var d=MochiKit.DOM; -var b=MochiKit.Base; -if(d.getStyle(this.element,"display")=="none"){ -this.cancel(); -return; -} -this.oldStyle={backgroundImage:d.getStyle(this.element,"background-image")}; -d.setStyle(this.element,{backgroundImage:"none"}); -if(!this.options.endcolor){ -this.options.endcolor=MochiKit.Color.Color.fromBackground(this.element).toHexString(); -} -if(!this.options.restorecolor){ -this.options.restorecolor=d.getStyle(this.element,"background-color"); -} -this._base=b.map(b.bind(function(i){ -return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16); -},this),[0,1,2]); -this._delta=b.map(b.bind(function(i){ -return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]; -},this),[0,1,2]); -},update:function(_701){ -var m="#"; -MochiKit.Iter.forEach([0,1,2],MochiKit.Base.bind(function(i){ -m+=MochiKit.Color.toColorPart(Math.round(this._base[i]+this._delta[i]*_701)); -},this)); -MochiKit.DOM.setStyle(this.element,{backgroundColor:m}); -},finish:function(){ -MochiKit.DOM.setStyle(this.element,MochiKit.Base.update(this.oldStyle,{backgroundColor:this.options.endcolor})); -}}); -MochiKit.Visual.ScrollTo=function(_702,_703){ -this.__init__(_702,_703); -}; -MochiKit.Visual.ScrollTo.prototype=new MochiKit.Visual.Base(); -MochiKit.Base.update(MochiKit.Visual.ScrollTo.prototype,{__init__:function(_704,_705){ -this.element=MochiKit.DOM.getElement(_704); -this.start(_705||{}); -},setup:function(){ -var p=MochiKit.Position; -p.prepare(); -var _706=p.cumulativeOffset(this.element); -if(this.options.offset){ -_706.y+=this.options.offset; -} -var max; -if(window.innerHeight){ -max=window.innerHeight-window.height; -}else{ -if(document.documentElement&&document.documentElement.clientHeight){ -max=document.documentElement.clientHeight-document.body.scrollHeight; -}else{ -if(document.body){ -max=document.body.clientHeight-document.body.scrollHeight; -} -} -} -this.scrollStart=p.windowOffset.y; -this.delta=(_706.y>max?max:_706.y)-this.scrollStart; -},update:function(_707){ -var p=MochiKit.Position; -p.prepare(); -window.scrollTo(p.windowOffset.x,this.scrollStart+(_707*this.delta)); -}}); -MochiKit.Visual.fade=function(_708,_709){ -var d=MochiKit.DOM; -var _710=d.getInlineOpacity(_708); -_709=MochiKit.Base.update({from:d.getOpacity(_708)||1,to:0,afterFinishInternal:function(_711){ -if(_711.options.to!==0){ -return; -} -MochiKit.Style.hideElement(_711.element); -d.setStyle(_711.element,{opacity:_710}); -}},_709||{}); -return new MochiKit.Visual.Opacity(_708,_709); -}; -MochiKit.Visual.appear=function(_712,_713){ -var d=MochiKit.DOM; -var v=MochiKit.Visual; -_713=MochiKit.Base.update({from:(d.getStyle(_712,"display")=="none"?0:d.getOpacity(_712)||0),to:1,afterFinishInternal:function(_714){ -v.forceRerendering(_714.element); -},beforeSetupInternal:function(_715){ -d.setOpacity(_715.element,_715.options.from); -MochiKit.Style.showElement(_715.element); -}},_713||{}); -return new v.Opacity(_712,_713); -}; -MochiKit.Visual.puff=function(_716,_717){ -var d=MochiKit.DOM; -var v=MochiKit.Visual; -_716=d.getElement(_716); -var _718={opacity:d.getInlineOpacity(_716),position:d.getStyle(_716,"position")}; -_717=MochiKit.Base.update({beforeSetupInternal:function(_719){ -d.setStyle(_719.effects[0].element,{position:"absolute"}); -},afterFinishInternal:function(_720){ -MochiKit.Style.hideElement(_720.effects[0].element); -d.setStyle(_720.effects[0].element,_718); -}},_717||{}); -return new v.Parallel([new v.Scale(_716,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new v.Opacity(_716,{sync:true,to:0})],_717); -}; -MochiKit.Visual.blindUp=function(_721,_722){ -var d=MochiKit.DOM; -_721=d.getElement(_721); -d.makeClipping(_721); -_722=MochiKit.Base.update({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(_723){ -MochiKit.Style.hideElement(_723.element); -d.undoClipping(_723.element); -}},_722||{}); -return new MochiKit.Visual.Scale(_721,0,_722); -}; -MochiKit.Visual.blindDown=function(_724,_725){ -var d=MochiKit.DOM; -_724=d.getElement(_724); -var _726=MochiKit.Style.getElementDimensions(_724); -_725=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_726.h,originalWidth:_726.w},restoreAfterFinish:true,afterSetupInternal:function(_727){ -d.makeClipping(_727.element); -d.setStyle(_727.element,{height:"0px"}); -MochiKit.Style.showElement(_727.element); -},afterFinishInternal:function(_728){ -d.undoClipping(_728.element); -}},_725||{}); -return new MochiKit.Visual.Scale(_724,100,_725); -}; -MochiKit.Visual.switchOff=function(_729,_730){ -var d=MochiKit.DOM; -_729=d.getElement(_729); -var _731=d.getInlineOpacity(_729); -var _730=MochiKit.Base.update({duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetupInternal:function(_732){ -d.makePositioned(_732.element); -d.makeClipping(_732.element); -},afterFinishInternal:function(_733){ -MochiKit.Style.hideElement(_733.element); -d.undoClipping(_733.element); -d.undoPositioned(_733.element); -d.setStyle(_733.element,{opacity:_731}); -}},_730||{}); -var v=MochiKit.Visual; -return new v.appear(_729,{duration:0.4,from:0,transition:v.Transitions.flicker,afterFinishInternal:function(_734){ -new v.Scale(_734.element,1,_730); -}}); -}; -MochiKit.Visual.dropOut=function(_735,_736){ -var d=MochiKit.DOM; -_735=d.getElement(_735); -var _737={top:d.getStyle(_735,"top"),left:d.getStyle(_735,"left"),opacity:d.getInlineOpacity(_735)}; -_736=MochiKit.Base.update({duration:0.5,beforeSetupInternal:function(_738){ -d.makePositioned(_738.effects[0].element); -},afterFinishInternal:function(_739){ -MochiKit.Style.hideElement(_739.effects[0].element); -d.undoPositioned(_739.effects[0].element); -d.setStyle(_739.effects[0].element,_737); -}},_736||{}); -var v=MochiKit.Visual; -return new v.Parallel([new v.Move(_735,{x:0,y:100,sync:true}),new v.Opacity(_735,{sync:true,to:0})],_736); -}; -MochiKit.Visual.shake=function(_740,_741){ -var d=MochiKit.DOM; -var v=MochiKit.Visual; -_740=d.getElement(_740); -_741=MochiKit.Base.update({x:-20,y:0,duration:0.05,afterFinishInternal:function(_742){ -d.undoPositioned(_742.element); -d.setStyle(_742.element,oldStyle); -}},_741||{}); -var _743={top:d.getStyle(_740,"top"),left:d.getStyle(_740,"left")}; -return new v.Move(_740,{x:20,y:0,duration:0.05,afterFinishInternal:function(_744){ -new v.Move(_744.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(_744){ -new v.Move(_744.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(_744){ -new v.Move(_744.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(_744){ -new v.Move(_744.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(_744){ -new v.Move(_744.element,_741); -}}); -}}); -}}); -}}); -}}); -}; -MochiKit.Visual.slideDown=function(_745,_746){ -var d=MochiKit.DOM; -var b=MochiKit.Base; -_745=d.getElement(_745); -if(!_745.firstChild){ -throw "MochiKit.Visual.slideDown must be used on a element with a child"; -} -d.removeEmptyTextNodes(_745); -var _747=d.getStyle(_745.firstChild,"bottom")||0; -var _748=MochiKit.Style.getElementDimensions(_745); -_746=b.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_748.h,originalWidth:_748.w},restoreAfterFinish:true,afterSetupInternal:function(_749){ -d.makePositioned(_749.element); -d.makePositioned(_749.element.firstChild); -if(b.isOpera()){ -d.setStyle(_749.element,{top:""}); -} -d.makeClipping(_749.element); -d.setStyle(_749.element,{height:"0px"}); -MochiKit.Style.showElement(_745); -},afterUpdateInternal:function(_750){ -d.setStyle(_750.element.firstChild,{bottom:(_750.dims[0]-_750.element.clientHeight)+"px"}); -},afterFinishInternal:function(_751){ -d.undoClipping(_751.element); -if(b.isIE()){ -d.undoPositioned(_751.element); -d.undoPositioned(_751.element.firstChild); -}else{ -d.undoPositioned(_751.element.firstChild); -d.undoPositioned(_751.element); -} -d.setStyle(_751.element.firstChild,{bottom:_747}); -}},_746||{}); -return new MochiKit.Visual.Scale(_745,100,_746); -}; -MochiKit.Visual.slideUp=function(_752,_753){ -var d=MochiKit.DOM; -var b=MochiKit.Base; -_752=d.getElement(_752); -if(!_752.firstChild){ -throw "MochiKit.Visual.slideUp must be used on a element with a child"; -} -d.removeEmptyTextNodes(_752); -var _754=d.getStyle(_752.firstChild,"bottom"); -_753=b.update({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(_755){ -d.makePositioned(_755.element); -d.makePositioned(_755.element.firstChild); -if(b.isOpera()){ -d.setStyle(_755.element,{top:""}); -} -d.makeClipping(_755.element); -MochiKit.Style.showElement(_752); -},afterUpdateInternal:function(_756){ -d.setStyle(_756.element.firstChild,{bottom:(_756.dims[0]-_756.element.clientHeight)+"px"}); -},afterFinishInternal:function(_757){ -MochiKit.Style.hideElement(_757.element); -d.undoClipping(_757.element); -d.undoPositioned(_757.element.firstChild); -d.undoPositioned(_757.element); -d.setStyle(_757.element.firstChild,{bottom:_754}); -}},_753||{}); -return new MochiKit.Visual.Scale(_752,0,_753); -}; -MochiKit.Visual.squish=function(_758,_759){ -var d=MochiKit.DOM; -var b=MochiKit.Base; -_759=b.update({restoreAfterFinish:true,beforeSetupInternal:function(_760){ -d.makeClipping(_760.element); -},afterFinishInternal:function(_761){ -MochiKit.Style.hideElement(_761.element); -d.undoClipping(_761.element); -}},_759||{}); -return new MochiKit.Visual.Scale(_758,b.isOpera()?1:0,_759); -}; -MochiKit.Visual.grow=function(_762,_763){ -var d=MochiKit.DOM; -var v=MochiKit.Visual; -_762=d.getElement(_762); -_763=MochiKit.Base.update({direction:"center",moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.full},_763||{}); -var _764={top:_762.style.top,left:_762.style.left,height:_762.style.height,width:_762.style.width,opacity:d.getInlineOpacity(_762)}; -var dims=MochiKit.Style.getElementDimensions(_762); -var _766,initialMoveY; -var _767,moveY; -switch(_763.direction){ -case "top-left": -_766=initialMoveY=_767=moveY=0; -break; -case "top-right": -_766=dims.w; -initialMoveY=moveY=0; -_767=-dims.w; -break; -case "bottom-left": -_766=_767=0; -initialMoveY=dims.h; -moveY=-dims.h; -break; -case "bottom-right": -_766=dims.w; -initialMoveY=dims.h; -_767=-dims.w; -moveY=-dims.h; -break; -case "center": -_766=dims.w/2; -initialMoveY=dims.h/2; -_767=-dims.w/2; -moveY=-dims.h/2; -break; -} -var _768=MochiKit.Base.update({beforeSetupInternal:function(_769){ -d.setStyle(_769.effects[0].element,{height:"0px"}); -MochiKit.Style.showElement(_769.effects[0].element); -},afterFinishInternal:function(_770){ -d.undoClipping(_770.effects[0].element); -d.undoPositioned(_770.effects[0].element); -d.setStyle(_770.effects[0].element,_764); -}},_763||{}); -return new v.Move(_762,{x:_766,y:initialMoveY,duration:0.01,beforeSetupInternal:function(_771){ -MochiKit.Style.hideElement(_771.element); -d.makeClipping(_771.element); -d.makePositioned(_771.element); -},afterFinishInternal:function(_772){ -new v.Parallel([new v.Opacity(_772.element,{sync:true,to:1,from:0,transition:_763.opacityTransition}),new v.Move(_772.element,{x:_767,y:moveY,sync:true,transition:_763.moveTransition}),new v.Scale(_772.element,100,{scaleMode:{originalHeight:dims.h,originalWidth:dims.w},sync:true,scaleFrom:MochiKit.Base.isOpera()?1:0,transition:_763.scaleTransition,restoreAfterFinish:true})],_768); -}}); -}; -MochiKit.Visual.shrink=function(_773,_774){ -var d=MochiKit.DOM; -var v=MochiKit.Visual; -_773=d.getElement(_773); -_774=MochiKit.Base.update({direction:"center",moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.none},_774||{}); -var _775={top:_773.style.top,left:_773.style.left,height:_773.style.height,width:_773.style.width,opacity:d.getInlineOpacity(_773)}; -var dims=MochiKit.Style.getElementDimensions(_773); -var _776,moveY; -switch(_774.direction){ -case "top-left": -_776=moveY=0; -break; -case "top-right": -_776=dims.w; -moveY=0; -break; -case "bottom-left": -_776=0; -moveY=dims.h; -break; -case "bottom-right": -_776=dims.w; -moveY=dims.h; -break; -case "center": -_776=dims.w/2; -moveY=dims.h/2; -break; -} -var _777=MochiKit.Base.update({beforeStartInternal:function(_778){ -d.makePositioned(_778.effects[0].element); -d.makeClipping(_778.effects[0].element); -},afterFinishInternal:function(_779){ -MochiKit.Style.hideElement(_779.effects[0].element); -d.undoClipping(_779.effects[0].element); -d.undoPositioned(_779.effects[0].element); -d.setStyle(_779.effects[0].element,_775); -}},_774||{}); -return new v.Parallel([new v.Opacity(_773,{sync:true,to:0,from:1,transition:_774.opacityTransition}),new v.Scale(_773,MochiKit.Base.isOpera()?1:0,{sync:true,transition:_774.scaleTransition,restoreAfterFinish:true}),new v.Move(_773,{x:_776,y:moveY,sync:true,transition:_774.moveTransition})],_777); -}; -MochiKit.Visual.pulsate=function(_780,_781){ -var d=MochiKit.DOM; -var v=MochiKit.Visual; -var b=MochiKit.Base; -_780=d.getElement(_780); -var _782=d.getInlineOpacity(_780); -_781=b.update({duration:3,from:0,afterFinishInternal:function(_783){ -d.setStyle(_783.element,{opacity:_782}); -}},_781||{}); -var _784=_781.transition||v.Transitions.sinoidal; -var _785=b.bind(function(pos){ -return _784(1-v.Transitions.pulse(pos)); -},_784); -b.bind(_785,_784); -return new v.Opacity(_780,b.update({transition:_785},_781)); -}; -MochiKit.Visual.fold=function(_786,_787){ -var d=MochiKit.DOM; -var v=MochiKit.Visual; -_786=d.getElement(_786); -var _788={top:_786.style.top,left:_786.style.left,width:_786.style.width,height:_786.style.height}; -d.makeClipping(_786); -_787=MochiKit.Base.update({scaleContent:false,scaleX:false,afterFinishInternal:function(_789){ -new v.Scale(_786,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(_789){ -MochiKit.Style.hideElement(_789.element); -d.undoClipping(_789.element); -d.setStyle(_789.element,_788); -}}); -}},_787||{}); -return new v.Scale(_786,5,_787); -}; -MochiKit.Visual.Color=MochiKit.Color.Color; -MochiKit.Visual.getElementsComputedStyle=MochiKit.DOM.computedStyle; -MochiKit.Visual.__new__=function(){ -var m=MochiKit.Base; -m.nameFunctions(this); -this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)}; -}; -MochiKit.Visual.EXPORT=["roundElement","roundClass","tagifyText","multiple","toggle","Base","Parallel","Opacity","Move","Scale","Highlight","ScrollTo","fade","appear","puff","blindUp","blindDown","switchOff","dropOut","shake","slideDown","slideUp","squish","grow","shrink","pulsate","fold"]; -MochiKit.Visual.EXPORT_OK=["PAIRS"]; -MochiKit.Visual.__new__(); -MochiKit.Base._exportSymbols(this,MochiKit.Visual); -if(typeof (MochiKit)=="undefined"){ -MochiKit={}; -} -if(typeof (MochiKit.MochiKit)=="undefined"){ -MochiKit.MochiKit={}; -} -MochiKit.MochiKit.NAME="MochiKit.MochiKit"; -MochiKit.MochiKit.VERSION="1.4"; -MochiKit.MochiKit.__repr__=function(){ -return "["+this.NAME+" "+this.VERSION+"]"; -}; -MochiKit.MochiKit.toString=function(){ -return this.__repr__(); -}; -MochiKit.MochiKit.SUBMODULES=["Base","Iter","Logging","DateTime","Format","Async","DOM","Style","LoggingPane","Color","Signal","Visual"]; -if(typeof (JSAN)!="undefined"||typeof (dojo)!="undefined"){ -if(typeof (dojo)!="undefined"){ -dojo.provide("MochiKit.MochiKit"); -dojo.require("MochiKit.*"); -} -if(typeof (JSAN)!="undefined"){ -(function(lst){ -for(var i=0;i"); -} -} -})(); -} - - diff --git a/fas/fas/static/javascript/New.js b/fas/fas/static/javascript/New.js deleted file mode 100644 index 5fe951a..0000000 --- a/fas/fas/static/javascript/New.js +++ /dev/null @@ -1,366 +0,0 @@ - -MochiKit.Base.update(MochiKit.Base, { - isIE: function () { - return /MSIE/.test(navigator.userAgent); - }, - - isGecko: function () { - return /Gecko/.test(navigator.userAgent); - }, - - isKHTML: function () { - return /Konqueror|Safari|KHTML/.test(navigator.userAgent) - }, - - isSafari: function () { - return navigator.appVersion.indexOf('AppleWebKit') > 0; - }, - - isOpera: function () { - return navigator.userAgent.indexOf('Opera') > 0; - } -}); - -MochiKit.Base.update(MochiKit.DOM, { - getStyle: function (element, style) { - element = MochiKit.DOM.getElement(element); - var value = element.style[MochiKit.Base.camelize(style)]; - if (!value) { - if (document.defaultView && document.defaultView.getComputedStyle) { - var css = document.defaultView.getComputedStyle(element, null); - value = css ? css.getPropertyValue(style) : null; - } else if (element.currentStyle) { - value = element.currentStyle[MochiKit.Base.camelize(style)]; - } - } - - if (MochiKit.Base.isOpera() && (MochiKit.Base.find(['left', 'top', 'right', 'bottom'], style))) { - if (MochiKit.DOM.getStyle(element, 'position') == 'static') { - value = 'auto'; - } - } - - return value == 'auto' ? null : value; - }, - - setStyle: function (element, style) { - element = MochiKit.DOM.getElement(element); - for (name in style) { - element.style[MochiKit.Base.camelize(name)] = style[name]; - } - }, - - getOpacity: function (element) { - var opacity; - if (opacity = MochiKit.DOM.getStyle(element, 'opacity')) { - return parseFloat(opacity); - } - if (opacity = (MochiKit.DOM.getStyle(element, 'filter') || '').match(/alpha\(opacity=(.*)\)/)) { - if (opacity[1]) { - return parseFloat(opacity[1]) / 100; - } - } - return 1.0; - }, - - getInlineOpacity: function (element) { - return MochiKit.DOM.getElement(element).style.opacity || ''; - }, - - setOpacity: function (element, value) { - element = MochiKit.DOM.getElement(element); - if (value == 1) { - MochiKit.DOM.setStyle(element, {opacity: - (MochiKit.Base.isGecko() && !MochiKit.Base.isKHTML()) ? - 0.999999 : null}); - if (MochiKit.Base.isIE()) - MochiKit.DOM.setStyle(element, {filter: - MochiKit.DOM.getStyle(element, 'filter').replace(/alpha\([^\)]*\)/gi, '')}); - } else { - if (value < 0.00001) { - value = 0; - } - MochiKit.DOM.setStyle(element, {opacity: value}); - if (MochiKit.Base.isIE()) { - MochiKit.DOM.setStyle(element, - {filter: MochiKit.DOM.getStyle(element, 'filter').replace(/alpha\([^\)]*\)/gi, '') + 'alpha(opacity=' + value * 100 + ')' }); - } - } - }, - - isVisible: function (element) { - return MochiKit.DOM.getElement(element).style.display != 'none'; - }, - - makeClipping: function (element) { - element = MochiKit.DOM.getElement(element); - if (element._overflow) { - return; - } - element._overflow = element.style.overflow; - if ((MochiKit.DOM.getStyle(element, 'overflow') || 'visible') != 'hidden') { - element.style.overflow = 'hidden'; - } - }, - - undoClipping: function (element) { - element = MochiKit.DOM.getElement(element); - if (!element._overflow) { - return; - } - element.style.overflow = element._overflow; - element._overflow = undefined; - }, - - makePositioned: function (element) { - element = MochiKit.DOM.getElement(element); - /*if (!element.style) { - alert(element); - }*/ - var pos = MochiKit.DOM.getStyle(element, 'position'); - if ((pos == 'static' || !pos) && !element._madePositioned) { - element._madePositioned = true; - element.style.position = 'relative'; - // Opera returns the offset relative to the positioning context, - // when an element is position relative but top and left have - // not been defined - if (MochiKit.Base.isOpera()) { - element.style.top = 0; - element.style.left = 0; - } - } - }, - - undoPositioned: function (element) { - element = MochiKit.DOM.getElement(element); - if (element._madePositioned) { - element._madePositioned = undefined; - element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; - } - }, - - getFirstElementByTagAndClassName: function (tagName, className, - /* optional */parent) { - var self = MochiKit.DOM; - if (typeof(tagName) == 'undefined' || tagName === null) { - tagName = '*'; - } - if (typeof(parent) == 'undefined' || parent === null) { - parent = self._document; - } - parent = self.getElement(parent); - var children = (parent.getElementsByTagName(tagName) - || self._document.all); - if (typeof(className) == 'undefined' || className === null) { - return MochiKit.Base.extend(null, children); - } - - for (var i = 0; i < children.length; i++) { - var child = children[i]; - var classNames = child.className.split(' '); - for (var j = 0; j < classNames.length; j++) { - if (classNames[j] == className) { - return child; - } - } - } - }, - - isParent: function (child, element) { - if (!child.parentNode || child == element) { - return false; - } - - if (child.parentNode == element) { - return true; - } - - return MochiKit.DOM.isParent(child.parentNode, element); - } -}); - -MochiKit.Position = { - // set to true if needed, warning: firefox performance problems - // NOT neeeded for page scrolling, only if draggable contained in - // scrollable elements - includeScrollOffsets: false, - - prepare: function () { - var deltaX = window.pageXOffset - || document.documentElement.scrollLeft - || document.body.scrollLeft - || 0; - var deltaY = window.pageYOffset - || document.documentElement.scrollTop - || document.body.scrollTop - || 0; - this.windowOffset = new MochiKit.Style.Coordinates(deltaX, deltaY); - }, - - cumulativeOffset: function (element) { - var valueT = 0; - var valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - } while (element); - return new MochiKit.Style.Coordinates(valueL, valueT); - }, - - realOffset: function (element) { - var valueT = 0; - var valueL = 0; - do { - valueT += element.scrollTop || 0; - valueL += element.scrollLeft || 0; - element = element.parentNode; - } while (element); - return new MochiKit.Style.Coordinates(valueL, valueT); - }, - - within: function (element, x, y) { - if (this.includeScrollOffsets) { - return this.withinIncludingScrolloffsets(element, x, y); - } - this.xcomp = x; - this.ycomp = y; - this.offset = this.cumulativeOffset(element); - if (element.style.position == "fixed") { - this.offset.x += this.windowOffset.x; - this.offset.y += this.windowOffset.y; - } - - return (y >= this.offset.y && - y < this.offset.y + element.offsetHeight && - x >= this.offset.x && - x < this.offset.x + element.offsetWidth); - }, - - withinIncludingScrolloffsets: function (element, x, y) { - var offsetcache = this.realOffset(element); - - this.xcomp = x + offsetcache.x - this.windowOffset.x; - this.ycomp = y + offsetcache.y - this.windowOffset.y; - this.offset = this.cumulativeOffset(element); - - return (this.ycomp >= this.offset.y && - this.ycomp < this.offset.y + element.offsetHeight && - this.xcomp >= this.offset.x && - this.xcomp < this.offset.x + element.offsetWidth); - }, - - // within must be called directly before - overlap: function (mode, element) { - if (!mode) { - return 0; - } - if (mode == 'vertical') { - return ((this.offset.y + element.offsetHeight) - this.ycomp) / - element.offsetHeight; - } - if (mode == 'horizontal') { - return ((this.offset.x + element.offsetWidth) - this.xcomp) / - element.offsetWidth; - } - }, - - absolutize: function (element) { - element = MochiKit.DOM.getElement(element); - if (element.style.position == 'absolute') { - return; - } - MochiKit.Position.prepare(); - - var offsets = MochiKit.Position.positionedOffset(element); - var width = element.clientWidth; - var height = element.clientHeight; - - var oldStyle = { - 'position': element.style.position, - 'left': offsets.x - parseFloat(element.style.left || 0), - 'top': offsets.y - parseFloat(element.style.top || 0), - 'width': element.style.width, - 'height': element.style.height - }; - - element.style.position = 'absolute'; - element.style.top = offsets.y + 'px'; - element.style.left = offsets.x + 'px'; - element.style.width = width + 'px'; - element.style.height = height + 'px'; - - return oldStyle; - }, - - positionedOffset: function (element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - if (element) { - p = MochiKit.DOM.getStyle(element, 'position'); - if (p == 'relative' || p == 'absolute') { - break; - } - } - } while (element); - return new MochiKit.Style.Coordinates(valueL, valueT); - }, - - relativize: function (element, oldPos) { - element = MochiKit.DOM.getElement(element); - if (element.style.position == 'relative') { - return; - } - MochiKit.Position.prepare(); - - var top = parseFloat(element.style.top || 0) - - (oldPos['top'] || 0); - var left = parseFloat(element.style.left || 0) - - (oldPos['left'] || 0); - - element.style.position = oldPos['position']; - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.width = oldPos['width']; - element.style.height = oldPos['height']; - }, - - clone: function (source, target) { - source = MochiKit.DOM.getElement(source); - target = MochiKit.DOM.getElement(target); - target.style.position = 'absolute'; - var offsets = this.cumulativeOffset(source); - target.style.top = offsets.y + 'px'; - target.style.left = offsets.x + 'px'; - target.style.width = source.offsetWidth + 'px'; - target.style.height = source.offsetHeight + 'px'; - }, - - page: function (forElement) { - var valueT = 0; - var valueL = 0; - - var element = forElement; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - - // Safari fix - if (element.offsetParent == document.body && MochiKit.DOM.getStyle(element, 'position') == 'absolute') { - break; - } - } while (element = element.offsetParent); - - element = forElement; - do { - valueT -= element.scrollTop || 0; - valueL -= element.scrollLeft || 0; - } while (element = element.parentNode); - - return new MochiKit.Style.Coordinates(valueL, valueT); - } -}; - diff --git a/fas/fas/static/javascript/Sortable.js b/fas/fas/static/javascript/Sortable.js deleted file mode 100644 index de70455..0000000 --- a/fas/fas/static/javascript/Sortable.js +++ /dev/null @@ -1,531 +0,0 @@ -/*** -Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) - Mochi-ized By Thomas Herve (_firstname_@nimail.org) - -See scriptaculous.js for full license. - -***/ - -if (typeof(dojo) != 'undefined') { - dojo.provide('MochiKit.DragAndDrop'); - dojo.require('MochiKit.Base'); - dojo.require('MochiKit.DOM'); - dojo.require('MochiKit.Iter'); -} - -if (typeof(JSAN) != 'undefined') { - JSAN.use("MochiKit.Base", []); - JSAN.use("MochiKit.DOM", []); - JSAN.use("MochiKit.Iter", []); -} - -try { - if (typeof(MochiKit.Base) == 'undefined' || - typeof(MochiKit.DOM) == 'undefined' || - typeof(MochiKit.Iter) == 'undefined') { - throw ""; - } -} catch (e) { - throw "MochiKit.DragAndDrop depends on MochiKit.Base, MochiKit.DOM and MochiKit.Iter!"; -} - -if (typeof(MochiKit.Sortable) == 'undefined') { - MochiKit.Sortable = {}; -} - -MochiKit.Sortable.NAME = 'MochiKit.Sortable'; -MochiKit.Sortable.VERSION = '1.4'; - -MochiKit.Sortable.__repr__ = function () { - return '[' + this.NAME + ' ' + this.VERSION + ']'; -}; - -MochiKit.Sortable.toString = function () { - return this.__repr__(); -}; - -MochiKit.Sortable.EXPORT = [ - "SortableObserver" -]; - -MochiKit.DragAndDrop.EXPORT_OK = [ - "Sortable" -]; - -MochiKit.Sortable.SortableObserver = function (element, observer) { - this.__init__(element, observer); -}; - -MochiKit.Sortable.SortableObserver.prototype = { - /*** - - Observe events of drag and drop sortables. - - ***/ - __init__: function (element, observer) { - this.element = MochiKit.DOM.getElement(element); - this.observer = observer; - this.lastValue = MochiKit.Sortable.Sortable.serialize(this.element); - }, - - onStart: function () { - this.lastValue = MochiKit.Sortable.Sortable.serialize(this.element); - }, - - onEnd: function () { - MochiKit.Sortable.Sortable.unmark(); - if (this.lastValue != MochiKit.Sortable.Sortable.serialize(this.element)) { - this.observer(this.element) - } - } -}; - -MochiKit.Sortable.Sortable = { - /*** - - Manage sortables. Mainly use the create function to add a sortable. - - ***/ - sortables: {}, - - _findRootElement: function (element) { - while (element.tagName != "BODY") { - if (element.id && MochiKit.Sortable.Sortable.sortables[element.id]) { - return element; - } - element = element.parentNode; - } - }, - - options: function (element) { - element = MochiKit.Sortable.Sortable._findRootElement(MochiKit.DOM.getElement(element)); - if (!element) { - return; - } - return MochiKit.Sortable.Sortable.sortables[element.id]; - }, - - destroy: function (element){ - var s = MochiKit.Sortable.Sortable.options(element); - var b = MochiKit.Base; - var d = MochiKit.DragAndDrop; - - if (s) { - d.Draggables.removeObserver(s.element); - b.map(function (dr) { - d.Droppables.remove(dr); - }, s.droppables); - b.map(function (dr) { - dr.destroy(); - }, s.draggables); - - delete MochiKit.Sortable.Sortable.sortables[s.element.id]; - } - }, - - create: function (element, options) { - element = MochiKit.DOM.getElement(element); - var self = MochiKit.Sortable.Sortable; - options = MochiKit.Base.update({ - element: element, - tag: 'li', // assumes li children, override with tag: 'tagname' - dropOnEmpty: false, - tree: false, - treeTag: 'ul', - overlap: 'vertical', // one of 'vertical', 'horizontal' - constraint: 'vertical', // one of 'vertical', 'horizontal', false - // also takes array of elements (or ids); or false - containment: [element], - handle: false, // or a CSS class - only: false, - hoverclass: null, - ghosting: false, - scroll: false, - scrollSensitivity: 20, - scrollSpeed: 15, - format: /^[^_]*_(.*)$/, - onChange: MochiKit.Base.noop, - onUpdate: MochiKit.Base.noop, - accept: null - }, options); - - // clear any old sortable with same element - self.destroy(element); - - // build options for the draggables - var options_for_draggable = { - revert: true, - ghosting: options.ghosting, - scroll: options.scroll, - scrollSensitivity: options.scrollSensitivity, - scrollSpeed: options.scrollSpeed, - constraint: options.constraint, - handle: options.handle - }; - - if (options.starteffect) { - options_for_draggable.starteffect = options.starteffect; - } - - if (options.reverteffect) { - options_for_draggable.reverteffect = options.reverteffect; - } else if (options.ghosting) { - options_for_draggable.reverteffect = function (innerelement) { - innerelement.style.top = 0; - innerelement.style.left = 0; - }; - } - - if (options.endeffect) { - options_for_draggable.endeffect = options.endeffect; - } - - if (options.zindex) { - options_for_draggable.zindex = options.zindex; - } - - // build options for the droppables - var options_for_droppable = { - overlap: options.overlap, - containment: options.containment, - hoverclass: options.hoverclass, - onhover: self.onHover, - tree: options.tree, - accept: options.accept - } - - var options_for_tree = { - onhover: self.onEmptyHover, - overlap: options.overlap, - containment: options.containment, - hoverclass: options.hoverclass, - accept: options.accept - } - - // fix for gecko engine - MochiKit.DOM.removeEmptyTextNodes(element); - - options.draggables = []; - options.droppables = []; - - // drop on empty handling - if (options.dropOnEmpty || options.tree) { - new MochiKit.DragAndDrop.Droppable(element, options_for_tree); - options.droppables.push(element); - } - MochiKit.Base.map(function (e) { - // handles are per-draggable - var handle = options.handle ? - MochiKit.DOM.getFirstElementByTagAndClassName(null, - options.handle, e) : e; - options.draggables.push( - new MochiKit.DragAndDrop.Draggable(e, - MochiKit.Base.update(options_for_draggable, - {handle: handle}))); - new MochiKit.DragAndDrop.Droppable(e, options_for_droppable); - if (options.tree) { - e.treeNode = element; - } - options.droppables.push(e); - }, (self.findElements(element, options) || [])); - - if (options.tree) { - MochiKit.Base.map(function (e) { - new MochiKit.DragAndDrop.Droppable(e, options_for_tree); - e.treeNode = element; - options.droppables.push(e); - }, (self.findTreeElements(element, options) || [])); - } - - // keep reference - self.sortables[element.id] = options; - - // for onupdate - MochiKit.DragAndDrop.Draggables.addObserver( - new MochiKit.Sortable.SortableObserver(element, options.onUpdate)); - }, - - // return all suitable-for-sortable elements in a guaranteed order - findElements: function (element, options) { - return MochiKit.Sortable.Sortable.findChildren( - element, options.only, options.tree ? true : false, options.tag); - }, - - findTreeElements: function (element, options) { - return MochiKit.Sortable.Sortable.findChildren( - element, options.only, options.tree ? true : false, options.treeTag); - }, - - findChildren: function (element, only, recursive, tagName) { - if (!element.hasChildNodes()) { - return null; - } - tagName = tagName.toUpperCase(); - if (only) { - only = MochiKit.Base.flattenArray([only]); - } - var elements = []; - MochiKit.Base.map(function (e) { - if (e.tagName && - e.tagName.toUpperCase() == tagName && - (!only || - MochiKit.Iter.some(only, function (c) { - return MochiKit.DOM.hasElementClass(e, c); - }))) { - elements.push(e); - } - if (recursive) { - var grandchildren = MochiKit.Sortable.Sortable.findChildren(e, only, recursive, tagName); - if (grandchildren && grandchildren.length > 0) { - elements = elements.concat(grandchildren); - } - } - }, element.childNodes); - return elements; - }, - - onHover: function (element, dropon, overlap) { - if (MochiKit.DOM.isParent(dropon, element)) { - return; - } - var self = MochiKit.Sortable.Sortable; - - if (overlap > .33 && overlap < .66 && self.options(dropon).tree) { - return; - } else if (overlap > 0.5) { - self.mark(dropon, 'before'); - if (dropon.previousSibling != element) { - var oldParentNode = element.parentNode; - element.style.visibility = 'hidden'; // fix gecko rendering - dropon.parentNode.insertBefore(element, dropon); - if (dropon.parentNode != oldParentNode) { - self.options(oldParentNode).onChange(element); - } - self.options(dropon.parentNode).onChange(element); - } - } else { - self.mark(dropon, 'after'); - var nextElement = dropon.nextSibling || null; - if (nextElement != element) { - var oldParentNode = element.parentNode; - element.style.visibility = 'hidden'; // fix gecko rendering - dropon.parentNode.insertBefore(element, nextElement); - if (dropon.parentNode != oldParentNode) { - self.options(oldParentNode).onChange(element); - } - self.options(dropon.parentNode).onChange(element); - } - } - }, - - _offsetSize: function (element, type) { - if (type == 'vertical' || type == 'height') { - return element.offsetHeight; - } else { - return element.offsetWidth; - } - }, - - onEmptyHover: function (element, dropon, overlap) { - var oldParentNode = element.parentNode; - var self = MochiKit.Sortable.Sortable; - var droponOptions = self.options(dropon); - - if (!MochiKit.DOM.isParent(dropon, element)) { - var index; - - var children = self.findElements(dropon, {tag: droponOptions.tag, - only: droponOptions.only}); - var child = null; - - if (children) { - var offset = self._offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap); - - for (index = 0; index < children.length; index += 1) { - if (offset - self._offsetSize(children[index], droponOptions.overlap) >= 0) { - offset -= self._offsetSize(children[index], droponOptions.overlap); - } else if (offset - (self._offsetSize (children[index], droponOptions.overlap) / 2) >= 0) { - child = index + 1 < children.length ? children[index + 1] : null; - break; - } else { - child = children[index]; - break; - } - } - } - - dropon.insertBefore(element, child); - - self.options(oldParentNode).onChange(element); - droponOptions.onChange(element); - } - }, - - unmark: function () { - var m = MochiKit.Sortable.Sortable._marker; - if (m) { - MochiKit.Style.hideElement(m); - } - }, - - mark: function (dropon, position) { - // mark on ghosting only - var d = MochiKit.DOM; - var self = MochiKit.Sortable.Sortable; - var sortable = self.options(dropon.parentNode); - if (sortable && !sortable.ghosting) { - return; - } - - if (!self._marker) { - self._marker = d.getElement('dropmarker') || - document.createElement('DIV'); - MochiKit.Style.hideElement(self._marker); - d.addElementClass(self._marker, 'dropmarker'); - self._marker.style.position = 'absolute'; - document.getElementsByTagName('body').item(0).appendChild(self._marker); - } - var offsets = MochiKit.Position.cumulativeOffset(dropon); - self._marker.style.left = offsets.x + 'px'; - self._marker.style.top = offsets.y + 'px'; - - if (position == 'after') { - if (sortable.overlap == 'horizontal') { - self._marker.style.left = (offsets.x + dropon.clientWidth) + 'px'; - } else { - self._marker.style.top = (offsets.y + dropon.clientHeight) + 'px'; - } - } - MochiKit.Style.showElement(self._marker); - }, - - _tree: function (element, options, parent) { - var self = MochiKit.Sortable.Sortable; - var children = self.findElements(element, options) || []; - - for (var i = 0; i < children.length; ++i) { - var match = children[i].id.match(options.format); - - if (!match) { - continue; - } - - var child = { - id: encodeURIComponent(match ? match[1] : null), - element: element, - parent: parent, - children: [], - position: parent.children.length, - container: self._findChildrenElement(children[i], options.treeTag.toUpperCase()) - } - - /* Get the element containing the children and recurse over it */ - if (child.container) { - self._tree(child.container, options, child) - } - - parent.children.push (child); - } - - return parent; - }, - - /* Finds the first element of the given tag type within a parent element. - Used for finding the first LI[ST] within a L[IST]I[TEM].*/ - _findChildrenElement: function (element, containerTag) { - if (element && element.hasChildNodes) { - for (var i = 0; i < element.childNodes.length; ++i) { - if (element.childNodes[i].tagName == containerTag) { - return element.childNodes[i]; - } - } - } - return null; - }, - - tree: function (element, options) { - element = MochiKit.DOM.getElement(element); - var sortableOptions = MochiKit.Sortable.Sortable.options(element); - options = MochiKit.Base.update({ - tag: sortableOptions.tag, - treeTag: sortableOptions.treeTag, - only: sortableOptions.only, - name: element.id, - format: sortableOptions.format - }, options || {}); - - var root = { - id: null, - parent: null, - children: new Array, - container: element, - position: 0 - } - - return MochiKit.Sortable.Sortable._tree(element, options, root); - }, - - setSequence: function (element, newSequence, options) { - var self = MochiKit.Sortable.Sortable; - var b = MochiKit.Base; - element = MochiKit.DOM.getElement(element); - options = b.update(self.options(element), options || {}); - - var nodeMap = {}; - b.map(function (n) { - var m = n.id.match(options.format); - if (m) { - nodeMap[m[1]] = [n, n.parentNode]; - } - n.parentNode.removeChild(n); - }, self.findElements(element, options)); - - b.map(function (ident) { - var n = nodeMap[ident]; - if (n) { - n[1].appendChild(n[0]); - delete nodeMap[ident]; - } - }, newSequence); - }, - - /* Construct a [i] index for a particular node */ - _constructIndex: function (node) { - var index = ''; - do { - if (node.id) { - index = '[' + node.position + ']' + index; - } - } while ((node = node.parent) != null); - return index; - }, - - sequence: function (element, options) { - element = MochiKit.DOM.getElement(element); - var self = MochiKit.Sortable.Sortable; - var options = MochiKit.Base.update(self.options(element), options || {}); - - return MochiKit.Base.map(function (item) { - return item.id.match(options.format) ? item.id.match(options.format)[1] : ''; - }, MochiKit.DOM.getElement(self.findElements(element, options) || [])); - }, - - serialize: function (element, options) { - element = MochiKit.DOM.getElement(element); - var self = MochiKit.Sortable.Sortable; - options = MochiKit.Base.update(self.options(element), options || {}); - var name = encodeURIComponent(options.name || element.id); - - if (options.tree) { - return MochiKit.Base.flattenArray(MochiKit.Base.map(function (item) { - return [name + self._constructIndex(item) + "[id]=" + - encodeURIComponent(item.id)].concat(item.children.map(arguments.callee)); - }, self.tree(element, options).children)).join('&'); - } else { - return MochiKit.Base.map(function (item) { - return name + "[]=" + encodeURIComponent(item); - }, self.sequence(element, options)).join('&'); - } - } -}; - diff --git a/fas/fas/static/javascript/color.js b/fas/fas/static/javascript/color.js deleted file mode 100644 index bd6c3c1..0000000 --- a/fas/fas/static/javascript/color.js +++ /dev/null @@ -1,57 +0,0 @@ -function getSelected() { - return getElement("foreback").value; -} - -function updateDisplay() { - var textbox = getElement("as_string"); - var current = getSelected(); - - if (current == "Foreground") { - textbox.value = Color.fromText("sample").toString(); - } else { - textbox.value = Color.fromBackground("sample").toString(); - } -} - -function setSampleFromElement(elem, toSet) { - var elem = getElement(elem); - var samplediv = getElement("sample"); - var color = Color.fromString(elem.value); - if (color == null) { - alert("Unknown color string"); - return; - } - samplediv.style[toSet] = color; - updateDisplay(); -} - -function setColor() { - var current = getSelected(); - if (current == "Foreground") { - setSampleFromElement("as_string", "color"); - } else { - setSampleFromElement("as_string", "background"); - } -} - -function setForeground() { - setSampleFromElement("foreground", "color"); -} - -function setBackground() { - setSampleFromElement("background", "background"); -} - -function cloneColor() { - var samplediv = getElement("sample"); - var current = getSelected(); - - if (current == "Foreground") { - samplediv.style.color = Color.fromText("header"); - } else { - samplediv.style.background = Color.fromBackground("header"); - } - - updateDisplay(); - -} diff --git a/fas/fas/static/javascript/draggable.js b/fas/fas/static/javascript/draggable.js deleted file mode 100644 index 67c08ab..0000000 --- a/fas/fas/static/javascript/draggable.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - - Drag: A Really Simple Drag Handler - -*/ - - var nextInChain = []; - - RollingSign = function(element, newstring, options) { - this.__init__(element, newstring, options); - } - - RollingSign.prototype = new Base(); - - update(RollingSign.prototype, { - - __init__ : function(element, newstring, options) { - this.element = getElement(element); - - options = update( - { - charSpaceSize: 26, - startingChar: 65 - }, options || {}); - - this.newstring = newstring; - this.oldstring = this.element.innerHTML; - - this.start(options); - }, - - update: function(position) { - curchar = this.newstring.length * position; - toMake = this.newstring.length - curchar; - - ending = ""; - for (i = 0; i < toMake; i++) { - ending += String.fromCharCode( - Math.random() * this.options.charSpaceSize + - this.options.startingChar); - } - - this.element.innerHTML = this.newstring.substr(0, curchar) + - ending; - }, - - finish: function() { - this.element.innerHTML = this.newstring; - } - } - ); - -Drag = { - _move: null, - _down: null, - - start: function(e) { - e.stop(); - - // We need to remember what we're dragging. - Drag._target = e.target(); - - /* - There's no cross-browser way to get offsetX and offsetY, so we - have to do it ourselves. For performance, we do this once and - cache it. - */ - Drag._offset = Drag._diff( - e.mouse().page, - getElementPosition(Drag._target)); - - Drag._move = connect(document, 'onmousemove', Drag._drag); - Drag._down = connect(document, 'onmouseup', Drag._stop); - }, - - _offset: null, - _target: null, - - _diff: function(lhs, rhs) { - return new MochiKit.Style.Coordinates(lhs.x - rhs.x, lhs.y - rhs.y); - }, - - _drag: function(e) { - e.stop(); - setElementPosition( - Drag._target, - Drag._diff(e.mouse().page, Drag._offset)); - }, - - _stop: function(e) { - disconnect(Drag._move); - disconnect(Drag._down); - } -}; - -connect(window, 'onload', - function() { - /* - Find all DIVs tagged with the draggable class, and connect them to - the Drag handler. - */ - var d = getElementsByTagAndClassName('DIV', 'draggable'); - forEach(d, - function(elem) { - connect(elem, 'onmousedown', Drag.start); - }); - - }); - -connect(window, 'onload', - function() { - var elems = getElementsByTagAndClassName("A", "view-source"); - var page = "draggable/"; - for (var i = 0; i < elems.length; i++) { - var elem = elems[i]; - var href = elem.href.split(/\//).pop(); - elem.target = "_blank"; - elem.href = "../view-source/view-source.html#" + page + href; - } - }); diff --git a/fas/fas/static/javascript/forms.js b/fas/fas/static/javascript/forms.js deleted file mode 100644 index 4356840..0000000 --- a/fas/fas/static/javascript/forms.js +++ /dev/null @@ -1,35 +0,0 @@ -function cancelEdit(element) { - switchOff(element + 'Form') - appear(element) -} - -function formEdit(element) { - var elements = Array("givenName", "mail", "fedoraPersonBugzillaMail", "fedoraPersonIrcNick", "fedoraPersonKeyId", "telephoneNumber", "postalAddress", "description") - for(var i = 0; i != elements.length; i++) { - if (elements[i] != element) { - var form = document.getElementById(elements[i] + 'Form'); - if ( form.style.display != 'none') { - new Highlight(elements[i] + 'Form'); - return false; - } - } - } - switchOff(element); - appear(element + 'Form'); -} - -function displayHelp(helpID) { - grow('helpMessageMain'); - getElement('helpMessage').innerHTML = 'Please Wait...'; - //d = MochiKit.Async.doSimpleXMLHttpRequest('/fas/help', {}); - var d = loadJSONDoc('/fas/help', {helpID: helpID}); - var gotMetadata = function (meta) { - getElement('helpMessage').innerHTML = meta.help - }; - //getElement('helpMessage').innerHTML = d.help; - var metadataFetchFailed = function (err) { - getElement('helpMessage').innerHTML = 'Could not fetch help message!' - }; - d.addCallbacks(gotMetadata, metadataFetchFailed) - return false; -} \ No newline at end of file diff --git a/fas/fas/static/javascript/signal.js b/fas/fas/static/javascript/signal.js deleted file mode 100644 index 3540fc3..0000000 --- a/fas/fas/static/javascript/signal.js +++ /dev/null @@ -1,13 +0,0 @@ -var currentSelected = null; - -function changeSelected(e) { - if (currentSelected != null) { - logDebug("Disconnecting " + currentSelected); - disconnectAll(currentSelected); - } - var es = getElement("elemselect"); - currentSelected = es.value; - var ev = getElement("eventselect").value; - logDebug("Connecting " + currentSelected + " for event " + ev); - connect(currentSelected, ev, log); -} diff --git a/fas/fas/static/javascript/sortable_tables.js b/fas/fas/static/javascript/sortable_tables.js deleted file mode 100644 index 2466f90..0000000 --- a/fas/fas/static/javascript/sortable_tables.js +++ /dev/null @@ -1,203 +0,0 @@ -/* - -On page load, the SortableManager: - -- Finds the table by its id (sortable_table). -- Parses its thead for columns with a "mochi:format" attribute. -- Parses the data out of the tbody based upon information given in the - "mochi:format" attribute, and clones the tr elements for later re-use. -- Clones the column header th elements for use as a template when drawing - sort arrow columns. -- Stores away a reference to the tbody, as it will be replaced on each sort. -- Performs the first sort. - - -On sort request: - -- Sorts the data based on the given key and direction -- Creates a new tbody from the rows in the new ordering -- Replaces the column header th elements with clickable versions, adding an - indicator (↑ or ↓) to the most recently sorted column. - -*/ - -SortableManager = function () { - this.thead = null; - this.tbody = null; - this.columns = []; - this.rows = []; - this.sortState = {}; - this.sortkey = 0; -}; - -mouseOverFunc = function () { - addElementClass(this, "over"); -}; - -mouseOutFunc = function () { - removeElementClass(this, "over"); -}; - -ignoreEvent = function (ev) { - if (ev && ev.preventDefault) { - ev.preventDefault(); - ev.stopPropagation(); - } else if (typeof(event) != 'undefined') { - event.cancelBubble = false; - event.returnValue = false; - } -}; - - -update(SortableManager.prototype, { - - "initWithTable": function (table) { - /*** - - Initialize the SortableManager with a table object - - ***/ - // Ensure that it's a DOM element - table = getElement(table); - // Find the thead - this.thead = table.getElementsByTagName('thead')[0]; - // get the mochi:format key and contents for each column header - var cols = this.thead.getElementsByTagName('th'); - for (var i = 0; i < cols.length; i++) { - var node = cols[i]; - var attr = null; - try { - attr = node.getAttribute("mochi:format"); - } catch (err) { - // pass - } - var o = node.childNodes; - this.columns.push({ - "format": attr, - "element": node, - "proto": node.cloneNode(true) - }); - } - // scrape the tbody for data - this.tbody = table.getElementsByTagName('tbody')[0]; - // every row - var rows = this.tbody.getElementsByTagName('tr'); - for (var i = 0; i < rows.length; i++) { - // every cell - var row = rows[i]; - var cols = row.getElementsByTagName('td'); - var rowData = []; - for (var j = 0; j < cols.length; j++) { - // scrape the text and build the appropriate object out of it - var cell = cols[j]; - var obj = scrapeText(cell); - switch (this.columns[j].format) { - case 'isodate': - obj = isoDate(obj); - break; - case 'str': - break; - case 'istr': - obj = obj.toLowerCase(); - break; - // cases for numbers, etc. could be here - default: - break; - } - rowData.push(obj); - } - // stow away a reference to the TR and save it - rowData.row = row.cloneNode(true); - this.rows.push(rowData); - - } - - // do initial sort on first column - this.drawSortedRows(this.sortkey, true, false); - - }, - - "onSortClick": function (name) { - /*** - - Return a sort function for click events - - ***/ - return method(this, function () { - log('onSortClick', name); - var order = this.sortState[name]; - if (order == null) { - order = true; - } else if (name == this.sortkey) { - order = !order; - } - this.drawSortedRows(name, order, true); - }); - }, - - "drawSortedRows": function (key, forward, clicked) { - /*** - - Draw the new sorted table body, and modify the column headers - if appropriate - - ***/ - log('drawSortedRows', key, forward); - this.sortkey = key; - // sort based on the state given (forward or reverse) - var cmp = (forward ? keyComparator : reverseKeyComparator); - this.rows.sort(cmp(key)); - // save it so we can flip next time - this.sortState[key] = forward; - // get every "row" element from this.rows and make a new tbody - var newBody = TBODY(null, map(itemgetter("row"), this.rows)); - // swap in the new tbody - this.tbody = swapDOM(this.tbody, newBody); - for (var i = 0; i < this.columns.length; i++) { - var col = this.columns[i]; - var node = col.proto.cloneNode(true); - // remove the existing events to minimize IE leaks - col.element.onclick = null; - col.element.onmousedown = null; - col.element.onmouseover = null; - col.element.onmouseout = null; - // set new events for the new node - node.onclick = this.onSortClick(i); - node.onmousedown = ignoreEvent; - node.onmouseover = mouseOverFunc; - node.onmouseout = mouseOutFunc; - // if this is the sorted column - if (key == i) { - // \u2193 is down arrow, \u2191 is up arrow - // forward sorts mean the rows get bigger going down - var arrow = (forward ? "\u2193" : "\u2191"); - // add the character to the column header - node.appendChild(SPAN(null, arrow)); - if (clicked) { - node.onmouseover(); - } - } - - // swap in the new th - col.element = swapDOM(col.element, node); - } - } -}); - -sortableManager = new SortableManager(); - -addLoadEvent(function () { - sortableManager.initWithTable('sortable_table'); -}); - -// rewrite the view-source links -addLoadEvent(function () { - var elems = getElementsByTagAndClassName("A", "view-source"); - var page = "sortable_tables/"; - for (var i = 0; i < elems.length; i++) { - var elem = elems[i]; - var href = elem.href.split(/\//).pop(); - elem.target = "_blank"; - elem.href = "../view-source/view-source.html#" + page + href; - } -}); diff --git a/fas/fas/static/javascript/style.js b/fas/fas/static/javascript/style.js deleted file mode 100644 index 2b28806..0000000 --- a/fas/fas/static/javascript/style.js +++ /dev/null @@ -1,67 +0,0 @@ -// getElementDimensions, getElementPosition - -function updateStatus() { - var e = getElement("thetestelem"); - - var dim = getElementDimensions(e); - var pos = getElementPosition(e); - - getElement("dimensions").innerHTML = repr(dim); - getElement("coordinates").innerHTML = repr(pos); - - getElement("width").value = dim.w; - getElement("height").value = dim.h; - - getElement("x").value = pos.x; - getElement("y").value = pos.y; -} - -// showElement and hideElement - -function hideTheTestElem() { - // Toggles our guinea testelem element - - var button = getElement("hidebutton"); - if (button.value == "Hide Element") { - hideElement("thetestelem"); - button.value = "Show Element"; - } else { - showElement("thetestelem"); - button.value = "Hide Element"; - } - updateStatus(); -} - -// setElementDimensions - -function setTestElemDimensions() { - var e = getElement("thetestelem"); - var dim = new Dimensions(getElement("width").value, - getElement("height").value); - setElementDimensions(e, dim); - updateStatus(); -} - -// setElementPosition - -function setTestElemPosition() { - var e = getElement("thetestelem"); - var pos = new Coordinates(getElement("x").value, - getElement("y").value); - setElementPosition(e, pos); - updateStatus(); -} - -// setOpacity - -function setTestElemOpacity() { - setOpacity("thetestelem", getElement("opacity").value); -} - -// computedStyle - -function getTestElemStyle() { - var prop = getElement("testelemprop").value; - var style = computedStyle("thetestelem", prop); - getElement("testelemstyle").innerHTML = style; -} \ No newline at end of file diff --git a/fas/fas/templates/edit.kid b/fas/fas/templates/edit.kid deleted file mode 100644 index 34b4352..0000000 --- a/fas/fas/templates/edit.kid +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - -
-
- - - - - -
- - diff --git a/fas/fas/templates/editAccount.kid b/fas/fas/templates/editAccount.kid index b2a315f..1330592 100644 --- a/fas/fas/templates/editAccount.kid +++ b/fas/fas/templates/editAccount.kid @@ -1,236 +1,10 @@ - - + - + Edit Account - - - - -

Your Fedora Account

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Your Roles

- -

Pending

- - -
- -
- -

Approved

- - - -

Misc

- - - - - - - - - - - - - - - - +

Edit Account

+ ${form(action='editAccountSubmit', method='post', value=value)} diff --git a/fas/fas/templates/editGroup.kid b/fas/fas/templates/editGroup.kid index 20b2789..3bbab33 100644 --- a/fas/fas/templates/editGroup.kid +++ b/fas/fas/templates/editGroup.kid @@ -1,88 +1,10 @@ - - + - + Edit Group - -

My Status: ${me.fedoraRoleStatus}

-
- - - -
-Remove me - - -

${group.cn}

- - - - - - - - -
Name${group.cn}
Owner${group.fedoraGroupOwner}
Type${group.fedoraGroupType}
Needs Sponsor${group.fedoraGroupNeedsSponsor}
Self Removal${group.fedoraGroupUserCanRemove}
fedoraGroupJoinMsg${group.fedoraGroupJoinMsg}
- -

Invite (?)

-${searchUserForm(action='modifyGroup', value=value, method='get')} - - -

Members

- - - - - - - - - - - - - - - - - - - - - - -
UsernameSponsorDate AddedDate ApprovedApprovalRole TypeAction
${user}${groups[user].fedoraRoleSponsor}${groups[user].fedoraRoleSponsor}${groups[user].fedoraRoleCreationDate}${groups[user].fedoraRoleApprovalDate}${groups[user].fedoraRoleStatus}${groups[user].fedoraRoleType} - Sponsor - Approve - Delete - Upgrade - Downgrade Suspend - - Sponsor - Approve - Delete - Upgrade - Downgrade Suspend -
-- Error!
-
- +

Edit Group

+ ${form(action='editGroupSubmit', method='post', value=value)} diff --git a/fas/fas/templates/groupList.kid b/fas/fas/templates/groupList.kid index 85535ae..092253d 100644 --- a/fas/fas/templates/groupList.kid +++ b/fas/fas/templates/groupList.kid @@ -1,44 +1,49 @@ + py:extends="'master.kid'"> + + Groups List + - - - - + +

List (${search})

- -

List (${search})

+

Search Groups

+
+

"*" is a wildcard (Ex: "cvs*")

+
+ + +
+
-
- Search (Ex: "cvs*") -
+

Results

+ - - - - - -
- ${letter} - All
- - - - - - - - -
GroupStatus
${groups[group].cn} (edit) - (info) - - -
- - + + + + + + + + + + + + +
GroupDescriptionStatus
${group.cn}${group.fedoraGroupDesc} + + Approved + Unapproved + + Not a Member +
+ diff --git a/fas/fas/templates/home.kid b/fas/fas/templates/home.kid index e49e550..e2adeb5 100644 --- a/fas/fas/templates/home.kid +++ b/fas/fas/templates/home.kid @@ -1,28 +1,20 @@ - + - + Fedora Accounts System - - -

Recent Builds (Koji)

- +

Recent Builds (Koji)

+
- + diff --git a/fas/fas/templates/invite.kid b/fas/fas/templates/invite.kid index bcf29ce..a266c33 100644 --- a/fas/fas/templates/invite.kid +++ b/fas/fas/templates/invite.kid @@ -9,15 +9,16 @@ -

Invite a new community member!

+

Invite a new community member!

- - To email:
- From: ${user.mail}
- Subject: Invitation to join the Fedora Team!
- Message: Please come up with a better more inviting message.
+ +
+To email:
+From: ${user.mail}
+Subject: Invitation to join the Fedora Team!
+Message:
-${user.givenName} ≤${user.mail}≥ has invited you to join the Fedora
+${user.givenName} <${user.mail}> has invited you to join the Fedora
 Project!  We are a community of users and developers who produce a
 complete operating system from entirely free and open source software
 (FOSS).  ${user.givenName} thinks that you have knowledge and skills
@@ -33,8 +34,8 @@ very smart and talented people.
 
 Fedora and FOSS are changing the world -- come be a part of it!
 
- + +
- diff --git a/fas/fas/templates/login.kid b/fas/fas/templates/login.kid index e3254e8..22e7655 100644 --- a/fas/fas/templates/login.kid +++ b/fas/fas/templates/login.kid @@ -1,118 +1,36 @@ - +"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + - - - Login - - #loginBox p - { - position: relative; - top: -1.5em; - padding-left: 4em; - font-size: 12px; - margin: 0; - color: #666; - } - - #loginBox table - { - table-layout: fixed; - border-spacing: 0; - width: 100%; - } - - #loginBox td.label - { - width: 33%; - text-align: right; - } - - #loginBox td.field - { - width: 66%; - } - - #loginBox td.field input - { - width: 100%; - } - - #loginBox td.buttons - { - text-align: right; - } - - - - - -
-

Login

-

${message}

-
-
BuildBuild Date
BuildBuild Date
- ${builds.builds[build]['title']} - ${builds.builds[build]['title']} - (build) + ${builds.builds[build]['title']} + ${builds.builds[build]['title']} ${builds.builds[build]['pubDate']}
- - - - - - - - - - - - - - - - - -
- - - -
- - - -
- -
Forgot Password?
Sign Up
- - - - - - - + +

Login

+

${message}

+
+
    +
  • +
  • +
  • + + + +
  • +
+
+ + diff --git a/fas/fas/templates/master.kid b/fas/fas/templates/master.kid index 59005da..1fd3188 100644 --- a/fas/fas/templates/master.kid +++ b/fas/fas/templates/master.kid @@ -2,37 +2,21 @@ - - - Your title goes here + + Title + - - - - - + - +
@@ -49,74 +33,50 @@
- Logged in: ${tg.identity.user.user_name}. + Logged in: ${tg.identity.user.user_name}
- +
+
+ ${tg_flash} +
+
+
+ - - - - -
- - -
-
- -
- +
+ + diff --git a/fas/fas/templates/resetPassword.kid b/fas/fas/templates/resetPassword.kid index b653412..df0c53f 100644 --- a/fas/fas/templates/resetPassword.kid +++ b/fas/fas/templates/resetPassword.kid @@ -1,28 +1,30 @@ - - - - - - - -
- Username:
- Primary Email:
- -
-
- -
- New password for ${tg.identity.user.user_name}
- New Password:
- Verify Password: - -
-
- - + + + Reset Password + + +

Reset Password

+
+
+
    +
  • +
  • +
  • +
+
+
+
+

+ New password for ${tg.identity.user.user_name} +

+
+
    +
  • +
  • +
  • +
+
+
+ diff --git a/fas/fas/templates/signUp.kid b/fas/fas/templates/signUp.kid index 6ad6959..a90b3cd 100644 --- a/fas/fas/templates/signUp.kid +++ b/fas/fas/templates/signUp.kid @@ -1,28 +1,10 @@ - - + - + Sign up for a Fedora account - - - - -${form(action='newAccountSubmit', method='post')} +

Sign up for a Fedora account

+ ${form(action='newAccountSubmit', method='post')} diff --git a/fas/fas/templates/userList.kid b/fas/fas/templates/userList.kid index 84575cd..6342252 100644 --- a/fas/fas/templates/userList.kid +++ b/fas/fas/templates/userList.kid @@ -4,35 +4,44 @@ xmlns:mochi="MyUniqueMochiUri"> - + Users List - +

List (${search})

-

List (${search})

- -
- Search (Ex: "mmcg*") + +

"*" is a wildcard (Ex: "cvs*")

+
+ + +
+

Results

+ + - - - - -
- ${letter} - All
- - + + + + - - + + + + + +
Username
UsernameAccount Status
${item} (edit)
${user} + Done + Done +
diff --git a/fas/ldap/52fc-fedora-person.ldif b/fas/ldap/52fc-fedora-person.ldif index 788dcc3..e61c35d 100644 --- a/fas/ldap/52fc-fedora-person.ldif +++ b/fas/ldap/52fc-fedora-person.ldif @@ -2,12 +2,16 @@ #it is based on the inetOrgPerson shema, but has some spicific #attribues added onto it for use by the Account system #for now this is the contents -#sshkey bugzillaemail +#sshkey bugzillaemail ircNick approvalStatus creationDate dn: cn=schema -attributeTypes: ( 2.5.444.8 NAME 'sshkey' DESC 'ssh key for this member' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{50} ) -attributeTypes: ( 2.5.444.9 NAME 'bugzillaemail' DESC 'members preferred bugzilla email address' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +attributeTypes: ( 2.5.444.8 NAME 'fedoraPersonSshKey' DESC 'ssh key for this member' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{4096} SINGLE-VALUE) +attributeTypes: ( 2.5.444.9 NAME 'fedoraPersonBugzillaMail' DESC 'members preferred bugzilla email address' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +attributeTypes: ( 2.5.444.16 NAME 'fedoraPersonIrcNick' DESC 'irc nick of the user on freenode' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{100} ) +attributetypes: ( 2.5.444.17 NAME 'fedoraPersonCreationDate' DESC 'date entry was created' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +attributeTypes: ( 2.5.444.18 NAME 'fedoraPersonApprovalStatus' DESC 'users approval status' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{50} ) +attributeTypes: ( 2.5.444.19 NAME 'fedoraPersonKeyId' DESC 'users GPG key ID' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{50} ) # fedoraPerson # The fedoraPerson represents people who are a member of the fedora project # in some way. It is a structural class and inherits # from the inetOrgPerson class -objectclasses: ( 2.5.555.1 NAME 'fedoraPerson' DESC 'A member of the fedoraproject group' SUP inetOrgPerson STRUCTURAL MUST ( sshkey $ bugzillaemail ) ) +objectClasses: ( 2.5.555.1 NAME 'fedoraPerson' DESC 'A member of the fedoraproject group' SUP inetOrgPerson STRUCTURAL MUST ( fedoraPersonSshKey $ mail $ fedoraPersonCreationDate ) MAY (fedoraPersonIrcNick $ fedoraPersonApprovalStatus $ fedoraPersonBugzillaMail $ fedoraPersonKeyId ) ) diff --git a/fas/ldap/53fc-fedora-group.ldif b/fas/ldap/53fc-fedora-group.ldif index 87ee867..4e32a55 100644 --- a/fas/ldap/53fc-fedora-group.ldif +++ b/fas/ldap/53fc-fedora-group.ldif @@ -12,5 +12,6 @@ attributeTypes: ( 2.5.444.11 NAME 'fedoraGroupType' DESC 'the type of group' EQU attributeTypes: ( 2.5.444.12 NAME 'fedoraGroupNeedsSponsor' DESC 'boolean indicating whether or not the group needs a sponsor' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) attributeTypes: ( 2.5.444.13 NAME 'fedoraGroupUserCanRemove' DESC 'boolean indicating whether or not the user can remove the group' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) attributeTypes: ( 2.5.444.14 NAME 'fedoraGroupJoinMsg' DESC 'message received upon joining the group' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1000} ) +attributeTypes: ( 2.5.444.21 NAME 'fedoraGroupDesc' DESC 'group description' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{100} ) attributeTypes: ( 2.5.444.20 NAME 'fedoraGroupRequires' DESC 'Requisites of this Group' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{50} ) -objectClasses: ( 2.5.555.3 NAME 'fedoraGroup' DESC 'A object describing a group entry' STRUCTURAL MUST ( cn $ fedoraGroupOwner ) MAY ( fedoraGroupJoinMsg $ fedoraGroupUsercanRemove $ fedoraGroupType $ fedoraGroupNeedsSponsor $ fedoraGroupUserCanRemove $ fedoraGroupRequires ) ) +objectClasses: ( 2.5.555.3 NAME 'fedoraGroup' DESC 'A object describing a group entry' STRUCTURAL MUST ( cn $ fedoraGroupDesc $ fedoraGroupOwner ) MAY ( fedoraGroupJoinMsg $ fedoraGroupUsercanRemove $ fedoraGroupType $ fedoraGroupNeedsSponsor $ fedoraGroupUserCanRemove $ fedoraGroupRequires ) )