ABOUT0000644000076500000240000000006611201222575011527 0ustar mdipierrostaffWrite something about this app. Developed with web2py.LICENSE0000644000076500000240000000020711201222575011734 0ustar mdipierrostaffThis is a sample license. You can write here anything you want as long as you do not violate web2py copyright, trademark and license. __init__.py0000644000076500000240000000000011203316461013027 0ustar mdipierrostaff__init__.pyc0000644000076500000240000000021711213735155013212 0ustar mdipierrostaff 1 Jc@sdS(N((((s8/Users/mdipierro/web2py/applications/bingapi/__init__.pysscache/0000755000076500000240000000000011213735226012000 5ustar mdipierrostaffcache/cache.lock0000644000076500000240000000000011213735226013703 0ustar mdipierrostaffcontrollers/0000755000076500000240000000000011213750312013274 5ustar mdipierrostaffcontrollers/appadmin.py0000644000076500000240000001746711213730015015454 0ustar mdipierrostaff # ########################################################## # ## make sure administrator is on localhost # ########################################################### import os import socket import datetime import copy import gluon.contenttype import gluon.fileutils # ## crytical --- make a copy of the environment global_env = copy.copy(globals()) global_env['datetime'] = datetime http_host = request.env.http_host.split(':')[0] remote_addr = request.env.remote_addr try: hosts = (http_host, socket.gethostbyname(remote_addr)) except: hosts = (http_host, ) if remote_addr not in hosts: raise HTTP(400) if not gluon.fileutils.check_credentials(request): redirect('/admin') ignore_rw = True response.view = 'appadmin.html' response.menu = [[T('design'), False, URL('admin', 'default', 'design', args=[request.application])], [T('db'), False, URL(r=request, f='index')], [T('state'), False, URL(r=request, f='state')]] # ########################################################## # ## auxiliary functions # ########################################################### def get_databases(request): dbs = {} for (key, value) in global_env.items(): cond = False try: cond = isinstance(value, GQLDB) except: cond = isinstance(value, SQLDB) if cond: dbs[key] = value return dbs databases = get_databases(None) def eval_in_global_env(text): exec ('_ret=%s' % text, {}, global_env) return global_env['_ret'] def get_database(request): if request.args and request.args[0] in databases: return eval_in_global_env(request.args[0]) else: session.flash = T('invalid request') redirect(URL(r=request, f='index')) def get_table(request): db = get_database(request) if len(request.args) > 1 and request.args[1] in db.tables: return (db, request.args[1]) else: session.flash = T('invalid request') redirect(URL(r=request, f='index')) def get_query(request): try: return eval_in_global_env(request.vars.query) except Exception: return None # ########################################################## # ## list all databases and tables # ########################################################### def index(): return dict(databases=databases) # ########################################################## # ## insert a new record # ########################################################### def insert(): (db, table) = get_table(request) form = SQLFORM(db[table], ignore_rw=ignore_rw) if form.accepts(request.vars, session): response.flash = T('new record inserted') return dict(form=form) # ########################################################## # ## list all records in table and insert new record # ########################################################### def download(): import os db = get_database(request) return response.download(request,db) def csv(): import gluon.contenttype response.headers['Content-Type'] = \ gluon.contenttype.contenttype('.csv') db = get_database(request) query = get_query(request) if not query: return None response.headers['Content-disposition'] = 'attachment; filename=%s_%s.csv'\ % tuple(request.vars.query.split('.')[:2]) return str(db(query).select()) def import_csv(table, file): table.import_from_csv_file(file) def select(): import re db = get_database(request) dbname = request.args[0] regex = re.compile('(?P\w+)\.(?P\w+)=(?P\d+)') if request.vars.query: match = regex.match(request.vars.query) if match: request.vars.query = '%s.%s.%s==%s' % (request.args[0], match.group('table'), match.group('field'), match.group('value')) else: request.vars.query = session.last_query query = get_query(request) if request.vars.start: start = int(request.vars.start) else: start = 0 nrows = 0 stop = start + 100 table = None rows = [] orderby = request.vars.orderby if orderby: orderby = dbname + '.' + orderby if orderby == session.last_orderby: if orderby[0] == '~': orderby = orderby[1:] else: orderby = '~' + orderby session.last_orderby = orderby session.last_query = request.vars.query form = FORM(TABLE(TR(T('Query:'), '', INPUT(_style='width:400px', _name='query', _value=request.vars.query or '', requires=IS_NOT_EMPTY(error_message=T("Cannot be empty")))), TR(T('Update:'), INPUT(_name='update_check', _type='checkbox', value=False), INPUT(_style='width:400px', _name='update_fields', _value=request.vars.update_fields or '')), TR(T('Delete:'), INPUT(_name='delete_check', _class='delete', _type='checkbox', value=False), ''), TR('', '', INPUT(_type='submit', _value='submit'))), _action=URL(r=request,args=request.args)) if request.vars.csvfile != None: try: import_csv(db[request.vars.table], request.vars.csvfile.file) response.flash = T('data uploaded') except: response.flash = T('unable to parse csv file') if form.accepts(request.vars, formname=None): regex = re.compile(request.args[0] + '\.(?P
\w+)\.id\>0') match = regex.match(form.vars.query.strip()) if match: table = match.group('table') try: nrows = db(query).count() if form.vars.update_check and form.vars.update_fields: db(query).update(**eval_in_global_env('dict(%s)' % form.vars.update_fields)) response.flash = T('%s rows updated', nrows) elif form.vars.delete_check: db(query).delete() response.flash = T('%s rows deleted', nrows) nrows = db(query).count() if orderby: rows = db(query).select(limitby=(start, stop), orderby=eval_in_global_env(orderby)) else: rows = db(query).select(limitby=(start, stop)) except: (rows, nrows) = ([], 0) response.flash = T('Invalid Query') return dict( form=form, table=table, start=start, stop=stop, nrows=nrows, rows=rows, query=request.vars.query, ) # ########################################################## # ## edit delete one record # ########################################################### def update(): (db, table) = get_table(request) try: id = int(request.args[2]) record = db(db[table].id == id).select()[0] except: session.flash = T('record does not exist') redirect(URL(r=request, f='select', args=request.args[:1], vars=dict(query='%s.%s.id>0' % tuple(request.args[:2])))) form = SQLFORM(db[table], record, deletable=True, delete_label=T('Check to delete'), ignore_rw=ignore_rw, linkto=URL(r=request, f='select', args=request.args[:1]), upload=URL(r=request, f='download', args=request.args[:1])) if form.accepts(request.vars, session): response.flash = T('done!') redirect(URL(r=request, f='select', args=request.args[:1], vars=dict(query='%s.%s.id>0' % tuple(request.args[:2])))) return dict(form=form) # ########################################################## # ## get global variables # ########################################################### def state(): return dict() controllers/default.py0000644000076500000240000000240611213750213015274 0ustar mdipierrostaff######################################################################### ## This is a samples controller ## - index is the default action of any application ## - user is required for authentication and authorization ## - download is for downloading files uploaded in the db (does streaming) ## - call exposes all registered services (none by default) ######################################################################### exec('from applications.%s.modules.bingapi_w import Bing' % request.application) BING_APPID='' response.title="Bing Interface" response.subtitle="Full Web Search from web2py" def index(): """ example action using the internationalization operator T and flash rendered by views/default/index.html or views/generic.html """ form=FORM(INPUT(_name='q',requires=IS_NOT_EMPTY()), INPUT(_type='submit',_value='Search')) items=[] if form.accepts(request.vars,session): bing = Bing(BING_APPID) res = bing.do_web_search(request.vars.q) items = res['SearchResponse']['Web']['Results'] return dict(form=form,items=items) def download(): """ allows downloading of uploaded files http://..../[app]/default/download/[filename] """ return response.download(request,db) cron/0000755000076500000240000000000011213734570011677 5ustar mdipierrostaffdatabases/0000755000076500000240000000000011213735342012663 5ustar mdipierrostaffdatabases/c8b669d15150d7109e5f7ab36744a5b7_auth_event.table0000644000076500000240000000037111213735342022346 0ustar mdipierrostaff(dp1 S'origin' p2 S'CHAR(32)' p3 sS'client_ip' p4 S'CHAR(32)' p5 sS'user_id' p6 S'REFERENCES auth_user(id) ON DELETE CASCADE' p7 sS'description' p8 S'TEXT' p9 sS'time_stamp' p10 S'TIMESTAMP' p11 sS'id' p12 S'INTEGER PRIMARY KEY AUTOINCREMENT' p13 s.databases/c8b669d15150d7109e5f7ab36744a5b7_auth_group.table0000644000076500000240000000016211213735342022357 0ustar mdipierrostaff(dp1 S'role' p2 S'CHAR(128)' p3 sS'id' p4 S'INTEGER PRIMARY KEY AUTOINCREMENT' p5 sS'description' p6 S'TEXT' p7 s.databases/c8b669d15150d7109e5f7ab36744a5b7_auth_membership.table0000644000076500000240000000027211213735342023360 0ustar mdipierrostaff(dp1 S'group_id' p2 S'REFERENCES auth_group(id) ON DELETE CASCADE' p3 sS'user_id' p4 S'REFERENCES auth_user(id) ON DELETE CASCADE' p5 sS'id' p6 S'INTEGER PRIMARY KEY AUTOINCREMENT' p7 s.databases/c8b669d15150d7109e5f7ab36744a5b7_auth_permission.table0000644000076500000240000000032711213735342023416 0ustar mdipierrostaff(dp1 S'record_id' p2 S'INTEGER' p3 sS'group_id' p4 S'REFERENCES auth_group(id) ON DELETE CASCADE' p5 sS'table_name' p6 S'CHAR(32)' p7 sS'id' p8 S'INTEGER PRIMARY KEY AUTOINCREMENT' p9 sS'name' p10 S'CHAR(32)' p11 s.databases/c8b669d15150d7109e5f7ab36744a5b7_auth_user.table0000644000076500000240000000034311213735342022202 0ustar mdipierrostaff(dp1 S'first_name' p2 S'CHAR(128)' p3 sS'last_name' p4 S'CHAR(128)' p5 sS'email' p6 S'CHAR(128)' p7 sS'password' p8 S'CHAR(32)' p9 sS'registration_key' p10 S'CHAR(128)' p11 sS'id' p12 S'INTEGER PRIMARY KEY AUTOINCREMENT' p13 s.databases/sql.log0000644000076500000240000000206511213735342014170 0ustar mdipierrostafftimestamp: 2009-06-10T08:53:38.833782 CREATE TABLE auth_user( id INTEGER PRIMARY KEY AUTOINCREMENT, first_name CHAR(128), last_name CHAR(128), email CHAR(128), password CHAR(32), registration_key CHAR(128) ); success! timestamp: 2009-06-10T08:53:38.840469 CREATE TABLE auth_group( id INTEGER PRIMARY KEY AUTOINCREMENT, role CHAR(128), description TEXT ); success! timestamp: 2009-06-10T08:53:38.845378 CREATE TABLE auth_membership( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id REFERENCES auth_user(id) ON DELETE CASCADE, group_id REFERENCES auth_group(id) ON DELETE CASCADE ); success! timestamp: 2009-06-10T08:53:38.852000 CREATE TABLE auth_permission( id INTEGER PRIMARY KEY AUTOINCREMENT, group_id REFERENCES auth_group(id) ON DELETE CASCADE, name CHAR(32), table_name CHAR(32), record_id INTEGER ); success! timestamp: 2009-06-10T08:53:38.858401 CREATE TABLE auth_event( id INTEGER PRIMARY KEY AUTOINCREMENT, time_stamp TIMESTAMP, client_ip CHAR(32), user_id REFERENCES auth_user(id) ON DELETE CASCADE, origin CHAR(32), description TEXT ); success! databases/storage.sqlite0000644000076500000240000002200011213735342015544 0ustar mdipierrostaffSQLite format 3@         vvG!Nktableauth_userauth_userCREATE TABLE auth_user( id INTEGER PRIMARY KEY AUTOINCREMENT, first_name CHAR(128), last_name CHAR(128), email CHAR(128), password CHAR(32), registration_key CHAR(128) )P++Ytablesqlite_sequencesqlite_sequenceCREATE TABLE sqlite_sequence(name,seq)!!Utableauth_groupauth_groupCREATE TABLE auth_group( id INTEGER PRIMARY KEY AUTOINCREMENT, role CHAR(128), description TEXT )\++otableauth_membershipauth_membershipCREATE TABLE auth_membership( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id REFERENCES auth_user(id) ON DELETE CASCADE, group_id REFERENCES auth_group(id) ON DELETE CASCADE ) 22a++ytableauth_permissionauth_permissionCREATE TABLE auth_permission( id INTEGER PRIMARY KEY AUTOINCREMENT, group_id REFERENCES auth_group(id) ON DELETE CASCADE, name CHAR(32), table_name CHAR(32), record_id INTEGER )g!!tableauth_eventauth_eventCREATE TABLE auth_event( id INTEGER PRIMARY KEY AUTOINCREMENT, time_stamp TIMESTAMP, client_ip CHAR(32), user_id REFERENCES auth_user(id) ON DELETE CASCADE, origin CHAR(32), description TEXT )errors/0000755000076500000240000000000011213747107012252 5ustar mdipierrostafflanguages/0000755000076500000240000000000011213734570012704 5ustar mdipierrostafflanguages/fr-fr.py0000644000076500000240000000543411202315640014267 0ustar mdipierrostaff{ '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN', '%Y-%m-%d': '%Y-%m-%d', '%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S', '%s rows deleted': '%s rang\xc3\xa9es effac\xc3\xa9es', '%s rows updated': '%s rang\xc3\xa9es mises \xc3\xa0 jour', 'Available databases and tables': 'Available databases and tables', 'Cannot be empty': 'Cannot be empty', 'Check to delete': 'Check to delete', 'Current request': 'Current request', 'Current response': 'Current response', 'Current session': 'Current session', 'Delete:': 'Delete:', 'Edit current record': 'Edit current record', 'Hello World': 'Bonjour Monde', 'Import/Export': 'Import/Export', 'Internal State': 'Internal State', 'Invalid Query': 'Requ\xc3\xaate Invalide', 'New Record': 'New Record', 'No databases in this application': 'No databases in this application', 'Query:': 'Query:', 'Rows in table': 'Rows in table', 'Rows selected': 'Rows selected', 'Sure you want to delete this object?': 'Souhaitez vous vraiment effacercet objet?', 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.', 'Update:': 'Update:', 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.', 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.', 'Welcome to web2py': 'Bienvenue sur web2py', 'click here for online examples': 'cliquez ici pour voir des exemples enligne', 'click here for the administrative interface': "cliquez ici pour aller\xc3\xa0 l'interface d'administration", 'data uploaded': 'donn\xc3\xa9es t\xc3\xa9l\xc3\xa9charg\xc3\xa9es', 'database': 'database', 'database %s select': 'database %s select', 'db': 'db', 'design': 'design', 'done!': 'fait!', 'export as csv file': 'export as csv file', 'insert new': 'insert new', 'insert new %s': 'insert new %s', 'invalid request': 'requ\xc3\xaate invalide', 'new record inserted': 'nouvelle archive ins\xc3\xa9r\xc3\xa9e', 'next 100 rows': 'next 100 rows', 'or import from csv file': 'or import from csv file', 'previous 100 rows': 'previous 100 rows', 'record does not exist': "l'archive n'existe pas", 'record id': 'record id', 'selected': 'selected', 'state': '\xc3\xa9tat', 'table': 'table', 'unable to parse csv file': "incapable d'analyser le fichier cvs", } languages/it-it.py0000644000076500000240000000522011202315603014271 0ustar mdipierrostaff{ '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN', '%Y-%m-%d': '%Y-%m-%d', '%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S', '%s rows deleted': '%s records cancellati', '%s rows updated': '*** %s records modificati', 'Available databases and tables': 'Available databases and tables', 'Cannot be empty': 'Cannot be empty', 'Check to delete': 'Check to delete', 'Current request': 'Current request', 'Current response': 'Current response', 'Current session': 'Current session', 'Delete:': 'Delete:', 'Edit current record': 'Edit current record', 'Hello World': 'Salve Mondo', 'Import/Export': 'Import/Export', 'Internal State': 'Internal State', 'Invalid Query': 'Query invalida', 'New Record': 'New Record', 'No databases in this application': 'No databases in this application', 'Query:': 'Query:', 'Rows in table': 'Rows in table', 'Rows selected': 'Rows selected', 'Sure you want to delete this object?': 'Sicuro che vuoi cancellare questo oggetto?', 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.', 'Update:': 'Update:', 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.', 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.', 'Welcome to web2py': 'Ciao da wek2py', 'click here for online examples': 'clicca per vedere gli esempi', 'click here for the administrative interface': "clicca per l'interfaccia administrativa", 'data uploaded': 'dati caricati', 'database': 'database', 'database %s select': 'database %s select', 'db': 'db', 'design': 'progetta', 'done!': 'fatto!', 'export as csv file': 'export as csv file', 'insert new': 'insert new', 'insert new %s': 'insert new %s', 'invalid request': 'richiesta invalida!', 'new record inserted': 'nuovo record inserito', 'next 100 rows': 'next 100 rows', 'or import from csv file': 'or import from csv file', 'previous 100 rows': 'previous 100 rows', 'record does not exist': 'il record non esiste', 'record id': 'record id', 'selected': 'selected', 'state': 'stato', 'table': 'table', 'unable to parse csv file': 'non so leggere questo csv file', } languages/it.py0000644000076500000240000000522011202315655013666 0ustar mdipierrostaff{ '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN', '%Y-%m-%d': '%Y-%m-%d', '%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S', '%s rows deleted': '%s records cancellati', '%s rows updated': '*** %s records modificati', 'Available databases and tables': 'Available databases and tables', 'Cannot be empty': 'Cannot be empty', 'Check to delete': 'Check to delete', 'Current request': 'Current request', 'Current response': 'Current response', 'Current session': 'Current session', 'Delete:': 'Delete:', 'Edit current record': 'Edit current record', 'Hello World': 'Salve Mondo', 'Import/Export': 'Import/Export', 'Internal State': 'Internal State', 'Invalid Query': 'Query invalida', 'New Record': 'New Record', 'No databases in this application': 'No databases in this application', 'Query:': 'Query:', 'Rows in table': 'Rows in table', 'Rows selected': 'Rows selected', 'Sure you want to delete this object?': 'Sicuro che vuoi cancellare questo oggetto?', 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.', 'Update:': 'Update:', 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.', 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.', 'Welcome to web2py': 'Ciao da wek2py', 'click here for online examples': 'clicca per vedere gli esempi', 'click here for the administrative interface': "clicca per l'interfaccia administrativa", 'data uploaded': 'dati caricati', 'database': 'database', 'database %s select': 'database %s select', 'db': 'db', 'design': 'progetta', 'done!': 'fatto!', 'export as csv file': 'export as csv file', 'insert new': 'insert new', 'insert new %s': 'insert new %s', 'invalid request': 'richiesta invalida!', 'new record inserted': 'nuovo record inserito', 'next 100 rows': 'next 100 rows', 'or import from csv file': 'or import from csv file', 'previous 100 rows': 'previous 100 rows', 'record does not exist': 'il record non esiste', 'record id': 'record id', 'selected': 'selected', 'state': 'stato', 'table': 'table', 'unable to parse csv file': 'non so leggere questo csv file', } languages/pt-br.py0000644000076500000240000000563411206032053014277 0ustar mdipierrostaff{ '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" \xc3\xa9 uma express\xc3\xa3o opcional como "campo1=\'novovalor\'". Voc\xc3\xaa n\xc3\xa3o pode atualizar ou apagar os resultados de um JOIN', '%Y-%m-%d': '%Y-%m-%d', '%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S', '%s rows deleted': '%s linhas apagadas', '%s rows updated': '%s linhas atualizadas', 'Available databases and tables': 'Bancos de dados e tabelas dispon\xc3\xadveis', 'Cannot be empty': 'N\xc3\xa3o pode ser vazio', 'Check to delete': 'Marque para apagar', 'Current request': 'Requisi\xc3\xa7\xc3\xa3o atual', 'Current response': 'Resposta atual', 'Current session': 'Sess\xc3\xa3o atual', 'Delete:': 'Apagar:', 'Edit current record': 'Editar o registro atual', 'Hello World': 'Ol\xc3\xa1 Mundo', 'Import/Export': 'Importar/Exportar', 'Internal State': 'Estado Interno', 'Invalid Query': 'Consulta Inv\xc3\xa1lida', 'Login': 'Autentique-se', 'Lost Password': 'Esqueceu sua senha?', 'New Record': 'Novo Registro', 'No databases in this application': 'Sem bancos de dados nesta aplica\xc3\xa7\xc3\xa3o', 'Query:': 'Consulta:', 'Register': 'Registre-se', 'Rows in table': 'Linhas na tabela', 'Rows selected': 'Linhas selecionadas', 'Sure you want to delete this object?': 'Est\xc3\xa1 certo(a) que deseja apagar esse objeto ?', 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'Uma "consulta" \xc3\xa9 uma condi\xc3\xa7\xc3\xa3o como "db.tabela1.campo1==\'valor\'". Express\xc3\xb5es como "db.tabela1.campo1==db.tabela2.campo2" resultam em um JOIN SQL.', 'Update:': 'Atualizar:', 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) para AND, (...)|(...) para OR, e ~(...) para NOT para construir consultas mais complexas.', 'Welcome to web2py': 'Bem vindo ao web2py', 'click here for online examples': 'clique aqui para ver alguns exemplos', 'click here for the administrative interface': 'clique aqui para acessar a interface administrativa', 'customize me!': 'Personalize-me!', 'data uploaded': 'dados enviados', 'database': 'banco de dados', 'database %s select': 'Selecionar banco de dados %s', 'db': 'db', 'design': 'design', 'done!': 'conclu\xc3\xaddo!', 'export as csv file': 'exportar como um arquivo csv', 'insert new': 'inserir novo', 'insert new %s': 'inserir novo %s', 'invalid request': 'requisi\xc3\xa7\xc3\xa3o inv\xc3\xa1lida', 'new record inserted': 'novo registro inserido', 'next 100 rows': 'pr\xc3\xb3ximas 100 linhas', 'or import from csv file': 'ou importar de um arquivo csv', 'previous 100 rows': '100 linhas anteriores', 'record does not exist': 'registro n\xc3\xa3o existe', 'record id': 'id do registro', 'selected': 'selecionado', 'state': 'estado', 'table': 'tabela', 'unable to parse csv file': 'n\xc3\xa3o foi poss\xc3\xadvel analisar arquivo csv', } languages/pt-pt.py0000644000076500000240000000541711202315736014326 0ustar mdipierrostaff{ '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN', '%Y-%m-%d': '%Y-%m-%d', '%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S', '%s rows deleted': '%s linhas eliminadas', '%s rows updated': '%s linhas actualizadas', 'Available databases and tables': 'Available databases and tables', 'Cannot be empty': 'Cannot be empty', 'Check to delete': 'Check to delete', 'Current request': 'Current request', 'Current response': 'Current response', 'Current session': 'Current session', 'Delete:': 'Delete:', 'Edit current record': 'Edit current record', 'Hello World': 'Ol\xc3\xa1 Mundo', 'Import/Export': 'Import/Export', 'Internal State': 'Internal State', 'Invalid Query': 'Consulta Inv\xc3\xa1lida', 'New Record': 'New Record', 'No databases in this application': 'No databases in this application', 'Query:': 'Query:', 'Rows in table': 'Rows in table', 'Rows selected': 'Rows selected', 'Sure you want to delete this object?': 'Tem a certeza que deseja eliminar este objecto?', 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.', 'Update:': 'Update:', 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.', 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.', 'Welcome to Gluonization': 'Bem vindo ao Web2py', 'Welcome to web2py': 'Welcome to web2py', 'click here for online examples': 'Clique aqui para exemplos online', 'click here for the administrative interface': 'Clique aqui para o painel administrativo', 'data uploaded': 'informa\xc3\xa7\xc3\xa3o enviada', 'database': 'database', 'database %s select': 'database %s select', 'db': 'bd', 'design': 'design', 'done!': 'conclu\xc3\xaddo!', 'export as csv file': 'export as csv file', 'insert new': 'insert new', 'insert new %s': 'insert new %s', 'invalid request': 'Pedido Inv\xc3\xa1lido', 'new record inserted': 'novo registo inserido', 'next 100 rows': 'next 100 rows', 'or import from csv file': 'or import from csv file', 'previous 100 rows': 'previous 100 rows', 'record does not exist': 'registo inexistente', 'record id': 'record id', 'selected': 'selected', 'state': 'estado', 'table': 'table', 'unable to parse csv file': 'n\xc3\xa3o foi poss\xc3\xadvel carregar ficheiro csv', } languages/pt.py0000644000076500000240000000541711202315701013675 0ustar mdipierrostaff{ '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN', '%Y-%m-%d': '%Y-%m-%d', '%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S', '%s rows deleted': '%s linhas eliminadas', '%s rows updated': '%s linhas actualizadas', 'Available databases and tables': 'Available databases and tables', 'Cannot be empty': 'Cannot be empty', 'Check to delete': 'Check to delete', 'Current request': 'Current request', 'Current response': 'Current response', 'Current session': 'Current session', 'Delete:': 'Delete:', 'Edit current record': 'Edit current record', 'Hello World': 'Ol\xc3\xa1 Mundo', 'Import/Export': 'Import/Export', 'Internal State': 'Internal State', 'Invalid Query': 'Consulta Inv\xc3\xa1lida', 'New Record': 'New Record', 'No databases in this application': 'No databases in this application', 'Query:': 'Query:', 'Rows in table': 'Rows in table', 'Rows selected': 'Rows selected', 'Sure you want to delete this object?': 'Tem a certeza que deseja eliminar este objecto?', 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.', 'Update:': 'Update:', 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.', 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.', 'Welcome to Gluonization': 'Bem vindo ao Web2py', 'Welcome to web2py': 'Welcome to web2py', 'click here for online examples': 'Clique aqui para exemplos online', 'click here for the administrative interface': 'Clique aqui para o painel administrativo', 'data uploaded': 'informa\xc3\xa7\xc3\xa3o enviada', 'database': 'database', 'database %s select': 'database %s select', 'db': 'bd', 'design': 'design', 'done!': 'conclu\xc3\xaddo!', 'export as csv file': 'export as csv file', 'insert new': 'insert new', 'insert new %s': 'insert new %s', 'invalid request': 'Pedido Inv\xc3\xa1lido', 'new record inserted': 'novo registo inserido', 'next 100 rows': 'next 100 rows', 'or import from csv file': 'or import from csv file', 'previous 100 rows': 'previous 100 rows', 'record does not exist': 'registo inexistente', 'record id': 'record id', 'selected': 'selected', 'state': 'estado', 'table': 'table', 'unable to parse csv file': 'n\xc3\xa3o foi poss\xc3\xadvel carregar ficheiro csv', } models/0000755000076500000240000000000011213747141012217 5ustar mdipierrostaffmodels/db.py0000644000076500000240000000611311206153615013156 0ustar mdipierrostaff######################################################################### ## This scaffolding model makes your app work on Google App Engine too ######################################################################### if request.env.web2py_runtime_gae: # if running on Google App Engine from gluon.contrib.gql import * ### connect to Google BigTable db = GQLDB() ## and store sessions and tickets there session.connect(request, response, db=db) ### or use the following lines to store sessions in Memcache # from gluon.contrib.memdb import MEMDB # from google.appengine.api.memcache import Client # session.connect(request, response, db=MEMDB(Client())) else: # else use a normal relational database # if not, use SQLite or other DB db = SQLDB('sqlite://storage.sqlite') ######################################################################### ## uncomment the following line if you do not want sessions #session.forget() ######################################################################### ######################################################################### ## Define your tables below, for example ## ## >>> db.define_table('mytable',SQLField('myfield','string')) ## ## Fields can be 'string','text','password','integer','double','boolean' ## 'date','time','datetime','blob','upload', 'reference TABLENAME' ## There is an implicit 'id integer autoincrement' field ## Consult manual for more options, validators, etc. ## ## More API examples for controllers: ## ## >>> db.mytable.insert(myfield='value') ## >>> rows=db(db.mytbale.myfield=='value).select(db.mytable.ALL) ## >>> for row in rows: print row.id, row.myfield ######################################################################### ######################################################################### ## Here is sample code if you need: ## - email capabilities ## - authentication (registration, login, logout, ... ) ## - authorization (role based authorization) ## - services (xml, csv, json, xmlrpc, jsonrpc, amf, rss) ## - crud actions ## comment/uncomment as needed ######################################################################### from gluon.tools import * auth=Auth(globals(),db) # authentication/authorization auth.define_tables() # creates all needed tables crud=Crud(globals(),db) # for CRUD helpers using auth service=Service(globals()) # for json, xml, jsonrpc, xmlrpc, amfrpc ## uncomment as necessary or consult docs for more options #crud.settings.auth=auth # (optional) enforces authorization on crud #mail=Mail() # mailer #mail.settings.server='smtp.gmail.com:587' # your SMTP server #mail.settings.sender='you@gmail.com' # your email #mail.settings.login='username:password' # your credentials #auth.settings.mailer=mail # for user email verification #auth.settings.registration_requires_verification = True #auth.settings.registration_requires_approval = True #auth.messages.verify_email = \ # 'Click on the link http://.../verify_email/%(key)s to verify your email' modules/0000755000076500000240000000000011213747270012407 5ustar mdipierrostaffmodules/__init__.py0000644000076500000240000000000011201222575014477 0ustar mdipierrostaffmodules/__init__.pyc0000644000076500000240000000022711213747270014664 0ustar mdipierrostaff }%Jc@sdS(N((((s@/Users/mdipierro/web2py/applications/bingapi/modules/__init__.pyssmodules/bingapi_w.py0000644000076500000240000000535111213743554014725 0ustar mdipierrostaff""" based on bingapi.py version 1.0 described here" Home-page: https://svn.uswaretech.com/bingapi/ Author: Lakshman Prasad, Shabda Raaj Author-email: lakshman@uswaretech.com License: UNKNOWN Modified by mdipierro to work with web2py and on Google App Engine """ import gluon.contrib.simplejson as simplejson import logging import urllib from gluon.tools import fetch class BingException(Exception): pass class Bing(object): def __init__(self, app_id, loglevel=logging.INFO): self.app_id = app_id self.log_filename = 'bing.log' self.end_point = 'http://api.search.live.net/json.aspx?Appid=%s&'%app_id logging.basicConfig(level=loglevel, format='%(asctime)s %(name)-6s %(levelname)-8s %(message)s', filename=self.log_filename) def talk_to_bing(self, query, sources, extra_args={}): logging.info('Query:%s'%query) logging.info('Sources:%s'%sources) logging.info('Other Args:%s'%extra_args) payload={} #payload['Appid'] = self.app_id payload['query'] = query payload['sources'] = sources payload.update(extra_args) query_string = urllib.urlencode(payload) final_url = self.end_point + query_string logging.info('final_url:%s'%final_url) json = fetch(final_url) data = simplejson.loads(json) if 'Errors' in data['SearchResponse']: logging.info('Error') logging.info('data:%s'%data) data = data['SearchResponse'] errors_list = [el['Message'] for el in data['Errors']] error_text = ','.join(errors_list) raise BingException(error_text) logging.info('data:%s'%data) return data def do_web_search(self, query, extra_args={}): return self.talk_to_bing(query, sources='web', extra_args=extra_args) def do_image_search(self, query, extra_args={}): return self.talk_to_bing(query, sources='image', extra_args=extra_args) def do_news_search(self, query, extra_args={}): return self.talk_to_bing(query, sources='news', extra_args=extra_args) def do_spell_search(self, query, extra_args={}): return self.talk_to_bing(query, sources='spell', extra_args=extra_args) def do_related_search(self, query, extra_args={}): return self.talk_to_bing(query, sources='relatedsearch', extra_args=extra_args) def do_phonebook_search(self, query, extra_args={}): return self.talk_to_bing(query, sources='Phonebook', extra_args=extra_args) def do_answers_search(self, query, extra_args={}): return self.talk_to_bing(query, sources='InstantAnswer', extra_args=extra_args) modules/bingapi_w.pyc0000644000076500000240000000777711213747270015105 0ustar mdipierrostaff l/Jc@spdZddkiiZddkZddkZddklZdefdYZ de fdYZ dS(s based on bingapi.py version 1.0 described here" Home-page: https://svn.uswaretech.com/bingapi/ Author: Lakshman Prasad, Shabda Raaj Author-email: lakshman@uswaretech.com License: UNKNOWN Modified by mdipierro to work with web2py and on Google App Engine iN(tfetcht BingExceptioncBseZRS((t__name__t __module__(((sA/Users/mdipierro/web2py/applications/bingapi/modules/bingapi_w.pyRstBingcBsweZeidZhdZhdZhdZhdZhdZ hdZ hdZ hdZ RS( cCsB||_d|_d||_tid|ddd|idS(Nsbing.logs.http://api.search.live.net/json.aspx?Appid=%s&tleveltformats2%(asctime)s %(name)-6s %(levelname)-8s %(message)stfilename(tapp_idt log_filenamet end_pointtloggingt basicConfig(tselfRtloglevel((sA/Users/mdipierro/web2py/applications/bingapi/modules/bingapi_w.pyt__init__s    c Cs8tid|tid|tid|h}||d<||d<|i|ti|}|i|}tid|t|}ti|}d|djoptid tid ||d}g} |dD]} | | d q~ } d i | } t | ntid ||S( NsQuery:%ss Sources:%ss Other Args:%stquerytsourcess final_url:%stErrorstSearchResponsetErrorsdata:%stMessaget,( R tinfotupdateturllibt urlencodeR Rt simplejsontloadstjoinR( R RRt extra_argstpayloadt query_stringt final_urltjsontdatat_[1]telt errors_listt error_text((sA/Users/mdipierro/web2py/applications/bingapi/modules/bingapi_w.pyt talk_to_bings*       )cCs|i|ddd|S(NRtwebR(R((R RR((sA/Users/mdipierro/web2py/applications/bingapi/modules/bingapi_w.pyt do_web_search5scCs|i|ddd|S(NRtimageR(R((R RR((sA/Users/mdipierro/web2py/applications/bingapi/modules/bingapi_w.pytdo_image_search8scCs|i|ddd|S(NRtnewsR(R((R RR((sA/Users/mdipierro/web2py/applications/bingapi/modules/bingapi_w.pytdo_news_search;scCs|i|ddd|S(NRtspellR(R((R RR((sA/Users/mdipierro/web2py/applications/bingapi/modules/bingapi_w.pytdo_spell_search>scCs|i|ddd|S(NRt relatedsearchR(R((R RR((sA/Users/mdipierro/web2py/applications/bingapi/modules/bingapi_w.pytdo_related_searchAscCs|i|ddd|S(NRt PhonebookR(R((R RR((sA/Users/mdipierro/web2py/applications/bingapi/modules/bingapi_w.pytdo_phonebook_searchDscCs|i|ddd|S(NRt InstantAnswerR(R((R RR((sA/Users/mdipierro/web2py/applications/bingapi/modules/bingapi_w.pytdo_answers_searchGs( RRR tINFORR(R*R,R.R0R2R4R6(((sA/Users/mdipierro/web2py/applications/bingapi/modules/bingapi_w.pyRs       ( t__doc__tgluon.contrib.simplejsontcontribRR Rt gluon.toolsRt ExceptionRtobjectR(((sA/Users/mdipierro/web2py/applications/bingapi/modules/bingapi_w.pyss   private/0000755000076500000240000000000011213734570012410 5ustar mdipierrostaffsessions/0000755000076500000240000000000011213747270012605 5ustar mdipierrostaffsessions/127-0-0-1-5bc00977-b112-4787-82dc-dd81168f261f0000644000076500000240000000012711213747316020122 0ustar mdipierrostaff(dp1 S'_formkey[default]' p2 S'f1a81abb-8d71-4d09-a80a-495e957894ce' p3 sS'auth' p4 Ns.static/0000755000076500000240000000000011213750473012225 5ustar mdipierrostaffstatic/base.css0000644000076500000240000002107311206157632013654 0ustar mdipierrostaff@charset "UTF-8"; * { background: transparent; border: 0; margin: 0; outline: 0; padding: 0; color: inherit; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; font-size: 100%; } body { width:100%; min-width: 600px; } table { border-spacing: 0; border-collapse: collapse; } label, th, td { text-align: left; vertical-align: top; padding-left: 0.5em; padding-right: 0.5em; padding-top: 0.3em; padding-bottom: 0.2em; } th, thead td, tfoot td { font-weight: bold; text-align: center; } b { font-weight: bold; } i { font-style: italic; } pre { font-size: 0.8em; font-family: monospace, courier; padding-left: 2em; padding-top: 1em; } tt { font-size: 0.8em; font-family: monospace, courier; } h1 { padding-top: 0.5em; font-size: 2em; } h2 { padding-top: 0.4em; font-size: 1.5em; } h3 { padding-top: 0.3em; font-size: 1em; } p { padding-top: 0.2em; text-align: justify; } ol, ul { padding-top: 0.3em; padding-left: 1.5em; } label { font-weight: bold; } a { text-decoration: none; } a:hover { text-decoration: underline; } input, textarea { border: 1px #666666 solid; } input:focus, textarea:focus { background: #ffcccc; } html { font-size: 10pt; font-family: Georgia, Times new Roman; color: #333333; background: #cccccc; } a { color: #FF5C1F; } .flash { position: absolute; top: 0px; right: 20%; width: 60%; height: 50px; opacity: 0.75; margin: 0 auto; text-align: center; clear: both; border: 1px #000000 solid; color: black; font-size: 12pt; padding: 100px 10px 10px 10px; cursor: pointer; background: white; /* margin: 0 auto; text-align: center; clear: both; border: 1px solid #99f; background-color: #ddf; cursor: pointer; margin-top: 0.0em; margin-bottom: 1.0em; padding-top: 1.0em; padding-bottom: 1.0em; */ } div.error { background-color: red; color: white; padding: 3px; } .warn { background-color: yellow; color: black; padding: 5px; } .info { background-color: #E5FFE5; color: black; padding: 5px; } .error { background-color: red; color: white; padding: 5px; } .wrapper { padding-top: 20px; padding-left: 20px; } .layout { width: 95%; padding: 0; border: 1px #99f solid; border-spacing: 0; background: #fff; } .header { border-bottom: 1px #99f solid; } .statusbar { background: #ddf; border-bottom: 1px #99f solid; } .footer { border-top: 1px #99f solid; } .width10em { width: 10em; background: transparent; } .expandable { background: transparent; } ul.web2py-menu, ul.web2py-menu ul, ul.web2py-menu li, ul.web2py-menu a { display: block; margin: 0; padding: 0; } ul.web2py-menu, ul.web2py-menu li, ul.web2py-menu ul { list-style: none; } ul.web2py-menu ul { display: none; } ul.web2py-menu li { position: relative; z-index: 1; } ul.web2py-menu li:hover { z-index: 999; } ul.web2py-menu li:hover > ul { display: block; position: absolute; } ul.web2py-menu-horizontal li { float: left; width: auto; } ul.web2py-menu-hRight li { float: right; } ul.web2py-menu-vertical li { float: none; } ul.web2py-menu-vertical, ul.web2py-menu-vertical ul { width: 10em; } ul.web2py-menu-wide { width: 100%; } ul.web2py-menu-vRight { float: right; } ul.web2py-menu-lFloat { float: left; } ul.web2py-menu-noFloat { float: none; } div.web2py-menu-center ul.web2py-menu { float: left; position: relative; left: 50%; } div.web2py-menu-center ul.web2py-menu li { position: relative; left: -50%; } div.web2py-menu-center ul.web2py-menu li li { left: auto; } ul.web2py-menu-horizontal ul { top: auto; right: auto; left: auto; margin-top: -1px; } ul.web2py-menu-vertical ul { left: 60%; right: auto; top: auto; margin-top: -0.5em; } ul.web2py-menu-vRight ul, ul.web2py-menu-hRight ul.web2py-menu-vertical ul, ul.web2py-menu-dRight, ul.web2py-menu-dRight ul { left: -60%; right: auto; top: auto; margin-top: -0.5em; } ul.web2py-menu-hRight ul { left: auto; right: 0; top: auto; margin-top: -1px; } ul.web2py-menu li a { border: solid 1px #99f } ul.web2py-menu-horizontal li { margin-bottom: -1px; margin-left: -1px; } ul.web2py-menu-horizontal { padding-left: 1px ; } ul.web2py-menu-vertical li { margin-left: 0; margin-top: -1px; } ul.web2py-menu-vertical { border-top: solid 1px #fff; } ul.web2py-menu li a { padding: 2px 5px 3px; } ul.web2py-menu li a:link, ul.web2py-menu li a:hover, ul.web2py-menu li a:visited, ul.web2py-menu li a:active { text-decoration: none; } ul.web2py-menu li.sfhover a:active, ul.web2py-menu li:hover a:active { color: #fff; background-color: #c00; } ul.web2py-menu li { background-color: #ddf; } ul.web2py-menu li:hover, ul.web2py-menu li.sfhover { background-color: #eda; } ul.web2py-menu li a:hover { background-color: #ffc; } ul.web2py-menu li.web2py-menu-expand a, ul.web2py-menu li.web2py-menu-expand li.web2py-menu-expand a, ul.web2py-menu li.web2py-menu-expand li.web2py-menu-expand li.web2py-menu-expand a { padding-right: 25px; // background-image: url("expand-right.gif"); // background-repeat: no-repeat; // background-position: 100% 50%; } ul.web2py-menu-vRight li.web2py-menu-expand a, ul.web2py-menu-vRight li.web2py-menu-expand li.web2py-menu-expand a, ul.web2py-menu-vRight li.web2py-menu-expand li.web2py-menu-expand li.web2py-menu-expand a, ul.web2py-menu-hRight li.web2py-menu-expand a, ul.web2py-menu-hRight li.web2py-menu-expand li.web2py-menu-expand a, ul.web2py-menu-hRight li.web2py-menu-expand li.web2py-menu-expand li.web2py-menu-expand a { padding-right: 5px; padding-left: 20px; // background-image: url("expand-left.gif"); // background-repeat: no-repeat; // background-position: -5px 50%; } ul.web2py-menu-horizontal li.web2py-menu-expand a { padding-left: 5px; padding-right: 15px; // background-image: url("expand-down.gif"); // background-position: 100% 50%; } ul.web2py-menu li.web2py-menu-expand li a, ul.web2py-menu li.web2py-menu-expand li.web2py-menu-expand li a, ul.web2py-menu li.web2py-menu-expand li.web2py-menu-expand li.web2py-menu-expand li a { background-image: none; padding-right: 5px; padding-left: 5px; } * html ul.web2py-menu { display: inline-block; display: block; position: relative; position: static; } * html ul.web2py-menu ul { float: left; float: none; } ul.web2py-menu ul { background-color: #fff; } * html ul.web2py-menu-vertical li, * html ul.web2py-menu-horizontal li ul.web2py-menu-vertical li { width: 100%; float: left; clear: left; } *:first-child+html ul.web2py-menu-vertical > li:hover ul { min-width: 0; } ul.web2py-menu li a { position: relative; min-width: 0; } * html ul.web2py-menu-horizontal li { width: 6em; width: auto; } * html div.web2py-menu-center { position: relative; z-index: 1; } html:not([lang*=""]) div.web2py-menu-center ul.web2py-menu li a:hover { height: 100%; } html:not([lang*=""]) div.web2py-menu-center ul.web2py-menu li a:hover { height: auto; } * html ul.web2py-menu ul { display: block; position: absolute; } * html ul.web2py-menu ul, * html ul.web2py-menu-horizontal ul, * html ul.web2py-menu-vertical ul, * html ul.web2py-menu-vRight ul, * html ul.web2py-menu-hRight ul.web2py-menu-vertical ul, * html ul.web2py-menu-hRight ul { left: -10000px; } * html ul.web2py-menu li.sfhover { z-index: 999; } * html ul.web2py-menu li.sfhover ul { left: auto; } * html ul.web2py-menu li.sfhover ul ul, * html ul.web2py-menu li.sfhover ul ul ul { display: none; } * html ul.web2py-menu li.sfhover ul, * html ul.web2py-menu li li.sfhover ul, * html ul.web2py-menu li li li.sfhover ul { display: block; } * html ul.web2py-menu-vertical li.sfhover ul { left: 60%; } * html ul.web2py-menu-vRight li.sfhover ul, * html ul.web2py-menu-hRight ul.web2py-menu-vertical li.sfhover ul { left: -60%; } * html ul.web2py-menu iframe { position: absolute; left: 0; top: 0; z-index: -1; } .clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .clearfix { min-width: 0; display: inline-block; display: block; } * html .clearfix { height: 1%; } static/calendar.css0000755000076500000240000001055011201222575014506 0ustar mdipierrostaff.calendar{position:relative;display:none;border-top:2px solid #fff;border-right:2px solid #000;border-bottom:2px solid #000;border-left:2px solid #fff;font-size:11px;color:#000;cursor:default;background:#d4d0c8;font-family:tahoma,verdana,sans-serif;}.calendar table{border-top:1px solid #000;border-right:1px solid #fff;border-bottom:1px solid #fff;border-left:1px solid #000;font-size:11px;color:#000;cursor:default;background:#d4d0c8;font-family:tahoma,verdana,sans-serif;}.calendar .button{text-align:center;padding:1px;border-top:1px solid #fff;border-right:1px solid #000;border-bottom:1px solid #000;border-left:1px solid #fff;}.calendar .nav{background:transparent}.calendar thead .title{font-weight:bold;padding:1px;border:1px solid #000;background:#848078;color:#fff;text-align:center;}.calendar thead .name{border-bottom:1px solid #000;padding:2px;text-align:center;background:#f4f0e8;}.calendar thead .weekend{color:#f00;}.calendar thead .hilite{border-top:2px solid #fff;border-right:2px solid #000;border-bottom:2px solid #000;border-left:2px solid #fff;padding:0;background-color:#e4e0d8;}.calendar thead .active{padding:2px 0 0 2px;border-top:1px solid #000;border-right:1px solid #fff;border-bottom:1px solid #fff;border-left:1px solid #000;background-color:#c4c0b8;}.calendar tbody .day{width:2em;text-align:right;padding:2px 4px 2px 2px;}.calendar tbody .day.othermonth{font-size:80%;color:#aaa;}.calendar tbody .day.othermonth.oweekend{color:#faa;}.calendar table .wn{padding:2px 3px 2px 2px;border-right:1px solid #000;background:#f4f0e8;}.calendar tbody .rowhilite td{background:#e4e0d8;}.calendar tbody .rowhilite td.wn{background:#d4d0c8;}.calendar tbody td.hilite{padding:1px 3px 1px 1px;border-top:1px solid #fff;border-right:1px solid #000;border-bottom:1px solid #000;border-left:1px solid #fff;}.calendar tbody td.active{padding:2px 2px 0 2px;border-top:1px solid #000;border-right:1px solid #fff;border-bottom:1px solid #fff;border-left:1px solid #000;}.calendar tbody td.selected{font-weight:bold;border-top:1px solid #000;border-right:1px solid #fff;border-bottom:1px solid #fff;border-left:1px solid #000;padding:2px 2px 0 2px;background:#e4e0d8;}.calendar tbody td.weekend{color:#f00;}.calendar tbody td.today{font-weight:bold;color:#00f;}.calendar tbody .disabled{color:#999;}.calendar tbody .emptycell{visibility:hidden;}.calendar tbody .emptyrow{display:none;}.calendar tfoot .ttip{background:#f4f0e8;padding:1px;border:1px solid #000;background:#848078;color:#fff;text-align:center;}.calendar tfoot .hilite{border-top:1px solid #fff;border-right:1px solid #000;border-bottom:1px solid #000;border-left:1px solid #fff;padding:1px;background:#e4e0d8;}.calendar tfoot .active{padding:2px 0 0 2px;border-top:1px solid #000;border-right:1px solid #fff;border-bottom:1px solid #fff;border-left:1px solid #000;}.calendar .combo{position:absolute;display:none;width:4em;top:0;left:0;cursor:default;border-top:1px solid #fff;border-right:1px solid #000;border-bottom:1px solid #000;border-left:1px solid #fff;background:#e4e0d8;font-size:90%;padding:1px;z-index:100;}.calendar .combo .label,.calendar .combo .label-IEfix{text-align:center;padding:1px;}.calendar .combo .label-IEfix{width:4em;}.calendar .combo .active{background:#c4c0b8;padding:0;border-top:1px solid #000;border-right:1px solid #fff;border-bottom:1px solid #fff;border-left:1px solid #000;}.calendar .combo .hilite{background:#048;color:#fea;}.calendar td.time{border-top:1px solid #000;padding:1px 0;text-align:center;background-color:#f4f0e8;}.calendar td.time .hour,.calendar td.time .minute,.calendar td.time .ampm{padding:0 3px 0 4px;border:1px solid #889;font-weight:bold;background-color:#fff;}.calendar td.time .ampm{text-align:center;}.calendar td.time .colon{padding:0 2px 0 3px;font-weight:bold;}.calendar td.time span.hilite{border-color:#000;background-color:#766;color:#fff;}.calendar td.time span.active{border-color:#f00;background-color:#000;color:#0f0;}#CP_hourcont{padding:0;position:absolute;border:1px dashed #666;background-color:#eee;display:none;}#CP_minutecont{background-color:#ddd;padding:1px;position:absolute;width:45px;display:none;}.floatleft{float:left;}.CP_hour{padding:1px;font-family:Arial,Helvetica,sans-serif;font-size:9px;white-space:nowrap;cursor:pointer;width:35px;}.CP_minute{padding:1px;font-family:Arial,Helvetica,sans-serif;font-size:9px;white-space:nowrap;cursor:pointer;width:auto;}.CP_over{background-color:#fff;}static/calendar.js0000755000076500000240000013540411201222575014340 0ustar mdipierrostaff/* Copyright Notice for Dynarch Date Time Picker */ /* Copyright Mihai Bazon, 2002-2005 | www.bazon.net/mishoo * ----------------------------------------------------------- * * The DHTML Calendar, version 1.0 "It is happening again" * * Details and latest version at: * www.dynarch.com/projects/calendar * * This script is developed by Dynarch.com. Visit us at www.dynarch.com. * * This script is distributed under the GNU Lesser General Public License. * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html */ // Calendar EN language // Author: Mihai Bazon, // Encoding: any // Distributed under the same terms as the calendar itself. /* End Copyright Notice for Dynarch Date Time Picker */ /* ClockPick, by Josh Nathanson Version 1.2.4 Timepicker plugin for jQuery See copyright at end of file Complete documentation at http://www.oakcitygraphics.com/jquery/clockpick/trunk/ClockPick.cfm name clockpick type jQuery param options hash object containing config options param options[starthour] int starting hour (use military int) param options[endhour] int ending hour (use military int) param options[showminutes] bool show minutes param options[minutedivisions] int number of divisions, i.e. 4 = :00, :15, :30, :45 param options[military] bool use 24hr time if true param options[event] string mouse event to trigger plugin param options[layout] string set div layout to vertical or horizontal ('vertical','horizontal') param options[valuefield] string field to insert time value, if not same as click field (name of input field) param options[useBgiframe] bool set true if using bgIframe plugin param options[hoursopacity] float set opacity of hours container param options[minutesopacity] float set opacity of minutes container param callback function callback function - gets passed back the time value as a string */ /* Copyright Notice for jQuery Clockpick */ /* +-----------------------------------------------------------------------+ | Copyright (c) 2007 Josh Nathanson | | All rights reserved. | | | | Redistribution and use in source and binary forms, with or without | | modification, are permitted provided that the following conditions | | are met: | | | | o Redistributions of source code must retain the above copyright | | notice, this list of conditions and the following disclaimer. | | o Redistributions in binary form must reproduce the above copyright | | notice, this list of conditions and the following disclaimer in the | | documentation and/or other materials provided with the distribution.| | | | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | | +-----------------------------------------------------------------------+ */ /* End Copyright Notice for jQuery Clockpick below */ Calendar=function(J,K,H,G){this.activeDiv=null;this.currentDateEl=null;this.getDateStatus=null;this.getDateToolTip=null;this.getDateText=null;this.timeout=null;this.onSelected=H||null;this.onClose=G||null;this.dragging=false;this.hidden=false;this.minYear=1970;this.maxYear=2050;this.dateFormat=Calendar._TT.DEF_DATE_FORMAT;this.ttDateFormat=Calendar._TT.TT_DATE_FORMAT;this.isPopup=true;this.weekNumbers=true;this.firstDayOfWeek=typeof J=="number"?J:Calendar._FD;this.showsOtherMonths=false;this.dateStr=K;this.ar_days=null;this.showsTime=false;this.time24=true;this.yearStep=2;this.hiliteToday=true;this.multiple=null;this.table=null;this.element=null;this.tbody=null;this.firstdayname=null;this.monthsCombo=null;this.yearsCombo=null;this.hilitedMonth=null;this.activeMonth=null;this.hilitedYear=null;this.activeYear=null;this.dateClicked=false;if(typeof Calendar._SDN=="undefined"){if(typeof Calendar._SDN_len=="undefined"){Calendar._SDN_len=3}var L=new Array();for(var I=8;I>0;){L[--I]=Calendar._DN[I].substr(0,Calendar._SDN_len)}Calendar._SDN=L;if(typeof Calendar._SMN_len=="undefined"){Calendar._SMN_len=3}L=new Array();for(var I=12;I>0;){L[--I]=Calendar._MN[I].substr(0,Calendar._SMN_len)}Calendar._SMN=L}};Calendar._C=null;Calendar.is_ie=(/msie/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent));Calendar.is_ie5=(Calendar.is_ie&&/msie 5\.0/i.test(navigator.userAgent));Calendar.is_opera=/opera/i.test(navigator.userAgent);Calendar.is_khtml=/Konqueror|Safari|KHTML/i.test(navigator.userAgent);Calendar.getAbsolutePos=function(I){var G=0,J=0;var K=/^div$/i.test(I.tagName);if(K&&I.scrollLeft){G=I.scrollLeft}if(K&&I.scrollTop){J=I.scrollTop}var H={x:I.offsetLeft-G,y:I.offsetTop-J};if(I.offsetParent){var L=this.getAbsolutePos(I.offsetParent);H.x+=L.x;H.y+=L.y}return H};Calendar.isRelated=function(G,E){var F=E.relatedTarget;if(!F){var H=E.type;if(H=="mouseover"){F=E.fromElement}else{if(H=="mouseout"){F=E.toElement}}}while(F){if(F==G){return true}F=F.parentNode}return false};Calendar.removeClass=function(G,H){if(!(G&&G.className)){return }var F=G.className.split(" ");var J=new Array();for(var I=F.length;I>0;){if(F[--I]!=H){J[J.length]=F[I]}}G.className=J.join(" ")};Calendar.addClass=function(D,C){Calendar.removeClass(D,C);D.className+=" "+C};Calendar.getElement=function(C){var D=Calendar.is_ie?window.event.srcElement:C.currentTarget;while(D.nodeType!=1||/^div$/i.test(D.tagName)){D=D.parentNode}return D};Calendar.getTargetElement=function(C){var D=Calendar.is_ie?window.event.srcElement:C.target;while(D.nodeType!=1){D=D.parentNode}return D};Calendar.stopEvent=function(B){B||(B=window.event);if(Calendar.is_ie){B.cancelBubble=true;B.returnValue=false}else{B.preventDefault();B.stopPropagation()}return false};Calendar.addEvent=function(D,E,F){if(D.attachEvent){D.attachEvent("on"+E,F)}else{if(D.addEventListener){D.addEventListener(E,F,true)}else{D["on"+E]=F}}};Calendar.removeEvent=function(D,E,F){if(D.detachEvent){D.detachEvent("on"+E,F)}else{if(D.removeEventListener){D.removeEventListener(E,F,true)}else{D["on"+E]=null}}};Calendar.createElement=function(E,F){var D=null;if(document.createElementNS){D=document.createElementNS("http://www.w3.org/1999/xhtml",E)}else{D=document.createElement(E)}if(typeof F!="undefined"){F.appendChild(D)}return D};Calendar._add_evs=function(el){with(Calendar){addEvent(el,"mouseover",dayMouseOver);addEvent(el,"mousedown",dayMouseDown);addEvent(el,"mouseout",dayMouseOut);if(is_ie){addEvent(el,"dblclick",dayMouseDblClick);el.setAttribute("unselectable",true)}}};Calendar.findMonth=function(B){if(typeof B.month!="undefined"){return B}else{if(typeof B.parentNode.month!="undefined"){return B.parentNode}}return null};Calendar.findYear=function(B){if(typeof B.year!="undefined"){return B}else{if(typeof B.parentNode.year!="undefined"){return B.parentNode}}return null};Calendar.showMonthsCombo=function(){var I=Calendar._C;if(!I){return false}var I=I;var H=I.activeDiv;var J=I.monthsCombo;if(I.hilitedMonth){Calendar.removeClass(I.hilitedMonth,"hilite")}if(I.activeMonth){Calendar.removeClass(I.activeMonth,"active")}var K=I.monthsCombo.getElementsByTagName("div")[I.date.getMonth()];Calendar.addClass(K,"active");I.activeMonth=K;var L=J.style;L.display="block";if(H.navtype<0){L.left=H.offsetLeft+"px"}else{var G=J.offsetWidth;if(typeof G=="undefined"){G=50}L.left=(H.offsetLeft+H.offsetWidth-G)+"px"}L.top=(H.offsetTop+H.offsetHeight)+"px"};Calendar.showYearsCombo=function(K){var N=Calendar._C;if(!N){return false}var N=N;var L=N.activeDiv;var S=N.yearsCombo;if(N.hilitedYear){Calendar.removeClass(N.hilitedYear,"hilite")}if(N.activeYear){Calendar.removeClass(N.activeYear,"active")}N.activeYear=null;var M=N.date.getFullYear()+(K?1:-1);var P=S.firstChild;var Q=false;for(var T=12;T>0;--T){if(M>=N.minYear&&M<=N.maxYear){P.innerHTML=M;P.year=M;P.style.display="block";Q=true}else{P.style.display="none"}P=P.nextSibling;M+=K?N.yearStep:-N.yearStep}if(Q){var O=S.style;O.display="block";if(L.navtype<0){O.left=L.offsetLeft+"px"}else{var R=S.offsetWidth;if(typeof R=="undefined"){R=50}O.left=(L.offsetLeft+L.offsetWidth-R)+"px"}O.top=(L.offsetTop+L.offsetHeight)+"px"}};Calendar.tableMouseUp=function(ev){var cal=Calendar._C;if(!cal){return false}if(cal.timeout){clearTimeout(cal.timeout)}var el=cal.activeDiv;if(!el){return false}var target=Calendar.getTargetElement(ev);ev||(ev=window.event);Calendar.removeClass(el,"active");if(target==el||target.parentNode==el){Calendar.cellClick(el,ev)}var mon=Calendar.findMonth(target);var date=null;if(mon){date=new Date(cal.date);if(mon.month!=date.getMonth()){date.setMonth(mon.month);cal.setDate(date);cal.dateClicked=false;cal.callHandler()}}else{var year=Calendar.findYear(target);if(year){date=new Date(cal.date);if(year.year!=date.getFullYear()){date.setFullYear(year.year);cal.setDate(date);cal.dateClicked=false;cal.callHandler()}}}with(Calendar){removeEvent(document,"mouseup",tableMouseUp);removeEvent(document,"mouseover",tableMouseOver);removeEvent(document,"mousemove",tableMouseOver);cal._hideCombos();_C=null;return stopEvent(ev)}};Calendar.tableMouseOver=function(X){var T=Calendar._C;if(!T){return }var R=T.activeDiv;var b=Calendar.getTargetElement(X);if(b==R||b.parentNode==R){Calendar.addClass(R,"hilite active");Calendar.addClass(R.parentNode,"rowhilite")}else{if(typeof R.navtype=="undefined"||(R.navtype!=50&&(R.navtype==0||Math.abs(R.navtype)>2))){Calendar.removeClass(R,"active")}Calendar.removeClass(R,"hilite");Calendar.removeClass(R.parentNode,"rowhilite")}X||(X=window.event);if(R.navtype==50&&b!=R){var Y=Calendar.getAbsolutePos(R);var V=R.offsetWidth;var W=X.clientX;var U;var Z=true;if(W>Y.x+V){U=W-Y.x-V;Z=false}else{U=Y.x-W}if(U<0){U=0}var e=R._range;var c=R._current;var d=Math.floor(U/10)%e.length;for(var f=e.length;--f>=0;){if(e[f]==c){break}}while(d-->0){if(Z){if(--f<0){f=e.length-1}}else{if(++f>=e.length){f=0}}}var S=e[f];R.innerHTML=S;T.onUpdateTime()}var Q=Calendar.findMonth(b);if(Q){if(Q.month!=T.date.getMonth()){if(T.hilitedMonth){Calendar.removeClass(T.hilitedMonth,"hilite")}Calendar.addClass(Q,"hilite");T.hilitedMonth=Q}else{if(T.hilitedMonth){Calendar.removeClass(T.hilitedMonth,"hilite")}}}else{if(T.hilitedMonth){Calendar.removeClass(T.hilitedMonth,"hilite")}var a=Calendar.findYear(b);if(a){if(a.year!=T.date.getFullYear()){if(T.hilitedYear){Calendar.removeClass(T.hilitedYear,"hilite")}Calendar.addClass(a,"hilite");T.hilitedYear=a}else{if(T.hilitedYear){Calendar.removeClass(T.hilitedYear,"hilite")}}}else{if(T.hilitedYear){Calendar.removeClass(T.hilitedYear,"hilite")}}}return Calendar.stopEvent(X)};Calendar.tableMouseDown=function(B){if(Calendar.getTargetElement(B)==Calendar.getElement(B)){return Calendar.stopEvent(B)}};Calendar.calDragIt=function(J){var I=Calendar._C;if(!(I&&I.dragging)){return false}var G;var H;if(Calendar.is_ie){H=window.event.clientY+document.body.scrollTop;G=window.event.clientX+document.body.scrollLeft}else{G=J.pageX;H=J.pageY}I.hideShowCovered();var F=I.element.style;F.left=(G-I.xOffs)+"px";F.top=(H-I.yOffs)+"px";return Calendar.stopEvent(J)};Calendar.calDragEnd=function(ev){var cal=Calendar._C;if(!cal){return false}cal.dragging=false;with(Calendar){removeEvent(document,"mousemove",calDragIt);removeEvent(document,"mouseup",calDragEnd);tableMouseUp(ev)}cal.hideShowCovered()};Calendar.dayMouseDown=function(ev){var el=Calendar.getElement(ev);if(el.disabled){return false}var cal=el.calendar;cal.activeDiv=el;Calendar._C=cal;if(el.navtype!=300){with(Calendar){if(el.navtype==50){el._current=el.innerHTML;addEvent(document,"mousemove",tableMouseOver)}else{addEvent(document,Calendar.is_ie5?"mousemove":"mouseover",tableMouseOver)}addClass(el,"hilite active");addEvent(document,"mouseup",tableMouseUp)}}else{if(cal.isPopup){cal._dragStart(ev)}}if(el.navtype==-1||el.navtype==1){if(cal.timeout){clearTimeout(cal.timeout)}cal.timeout=setTimeout("Calendar.showMonthsCombo()",250)}else{if(el.navtype==-2||el.navtype==2){if(cal.timeout){clearTimeout(cal.timeout)}cal.timeout=setTimeout((el.navtype>0)?"Calendar.showYearsCombo(true)":"Calendar.showYearsCombo(false)",250)}else{cal.timeout=null}}return Calendar.stopEvent(ev)};Calendar.dayMouseDblClick=function(B){Calendar.cellClick(Calendar.getElement(B),B||window.event);if(Calendar.is_ie){document.selection.empty()}};Calendar.dayMouseOver=function(D){var C=Calendar.getElement(D);if(Calendar.isRelated(C,D)||Calendar._C||C.disabled){return false}if(C.ttip){if(C.ttip.substr(0,1)=="_"){C.ttip=C.caldate.print(C.calendar.ttDateFormat)+C.ttip.substr(1)}C.calendar.tooltips.innerHTML=C.ttip}if(C.navtype!=300){Calendar.addClass(C,"hilite");if(C.caldate){Calendar.addClass(C.parentNode,"rowhilite")}}return Calendar.stopEvent(D)};Calendar.dayMouseOut=function(ev){with(Calendar){var el=getElement(ev);if(isRelated(el,ev)||_C||el.disabled){return false}removeClass(el,"hilite");if(el.caldate){removeClass(el.parentNode,"rowhilite")}if(el.calendar){el.calendar.tooltips.innerHTML=_TT.SEL_DATE}return stopEvent(ev)}};Calendar.cellClick=function(d,U){var Q=d.calendar;var a=false;var X=false;var c=null;if(typeof d.navtype=="undefined"){if(Q.currentDateEl){Calendar.removeClass(Q.currentDateEl,"selected");Calendar.addClass(d,"selected");a=(Q.currentDateEl==d);if(!a){Q.currentDateEl=d}}Q.date.setDateOnly(d.caldate);c=Q.date;var R=!(Q.dateClicked=!d.otherMonth);if(!R&&!Q.currentDateEl){Q._toggleMultipleDate(new Date(c))}else{X=!d.disabled}if(R){Q._init(Q.firstDayOfWeek,c)}}else{if(d.navtype==200){Calendar.removeClass(d,"hilite");Q.callCloseHandler();return }c=new Date(Q.date);if(d.navtype==0){c.setDateOnly(new Date())}Q.dateClicked=false;var V=c.getFullYear();var b=c.getMonth();function S(B){var A=c.getDate();var C=c.getMonthDays(B);if(A>C){c.setDate(C)}c.setMonth(B)}switch(d.navtype){case 400:Calendar.removeClass(d,"hilite");var T=Calendar._TT.ABOUT;if(typeof T!="undefined"){T+=Q.showsTime?Calendar._TT.ABOUT_TIME:""}else{T='Help and about box text is not translated into this language.\nIf you know this language and you feel generous please update\nthe corresponding file in "lang" subdir to match calendar-en.js\nand send it back to to get it into the distribution ;-)\n\nThank you!\nhttp://dynarch.com/mishoo/calendar.epl\n'}alert(T);return ;case -2:if(V>Q.minYear){c.setFullYear(V-1)}break;case -1:if(b>0){S(b-1)}else{if(V-->Q.minYear){c.setFullYear(V);S(11)}}break;case 1:if(b<11){S(b+1)}else{if(V=0;){if(Y[Z]==W){break}}if(U&&U.shiftKey){if(--Z<0){Z=Y.length-1}}else{if(++Z>=Y.length){Z=0}}var P=Y[Z];d.innerHTML=P;Q.onUpdateTime();return ;case 0:if((typeof Q.getDateStatus=="function")&&Q.getDateStatus(c,c.getFullYear(),c.getMonth(),c.getDate())){return false}break}if(!c.equalsTo(Q.date)){Q.setDate(c);X=true}else{if(d.navtype==0){X=a=true}}}if(X){U&&Q.callHandler()}if(a){Calendar.removeClass(d,"hilite");U&&Q.callCloseHandler()}};Calendar.prototype.create=function(Y){var Z=null;if(!Y){Z=document.getElementsByTagName("body")[0];this.isPopup=true}else{Z=Y;this.isPopup=false}this.date=this.dateStr?new Date(this.dateStr):new Date();var V=Calendar.createElement("table");this.table=V;V.cellSpacing=0;V.cellPadding=0;V.calendar=this;Calendar.addEvent(V,"mousedown",Calendar.tableMouseDown);var T=Calendar.createElement("div");this.element=T;T.className="calendar";if(this.isPopup){T.style.position="absolute";T.style.display="none"}T.appendChild(V);var b=Calendar.createElement("thead",V);var X=null;var U=null;var S=this;var f=function(A,B,C){X=Calendar.createElement("td",U);X.colSpan=B;X.className="button";if(C!=0&&Math.abs(C)<=2){X.className+=" nav"}Calendar._add_evs(X);X.calendar=S;X.navtype=C;X.innerHTML="
"+A+"
";return X};U=Calendar.createElement("tr",b);var R=6;(this.isPopup)&&--R;(this.weekNumbers)&&++R;f("?",1,400).ttip=Calendar._TT.INFO;this.title=f("",R,300);this.title.className="title";if(this.isPopup){this.title.ttip=Calendar._TT.DRAG_TO_MOVE;this.title.style.cursor="move";f("×",1,200).ttip=Calendar._TT.CLOSE}U=Calendar.createElement("tr",b);U.className="headrow";this._nav_py=f("«",1,-2);this._nav_py.ttip=Calendar._TT.PREV_YEAR;this._nav_pm=f("‹",1,-1);this._nav_pm.ttip=Calendar._TT.PREV_MONTH;this._nav_now=f(Calendar._TT.TODAY,this.weekNumbers?4:3,0);this._nav_now.ttip=Calendar._TT.GO_TODAY;this._nav_nm=f("›",1,1);this._nav_nm.ttip=Calendar._TT.NEXT_MONTH;this._nav_ny=f("»",1,2);this._nav_ny.ttip=Calendar._TT.NEXT_YEAR;U=Calendar.createElement("tr",b);U.className="daynames";if(this.weekNumbers){X=Calendar.createElement("td",U);X.className="name wn";X.innerHTML=Calendar._TT.WK}for(var c=7;c>0;--c){X=Calendar.createElement("td",U);if(!c){X.navtype=100;X.calendar=this;Calendar._add_evs(X)}}this.firstdayname=(this.weekNumbers)?U.firstChild.nextSibling:U.firstChild;this._displayWeekdays();var d=Calendar.createElement("tbody",V);this.tbody=d;for(c=6;c>0;--c){U=Calendar.createElement("tr",d);if(this.weekNumbers){X=Calendar.createElement("td",U)}for(var e=7;e>0;--e){X=Calendar.createElement("td",U);X.calendar=this;Calendar._add_evs(X)}}if(this.showsTime){U=Calendar.createElement("tr",d);U.className="time";X=Calendar.createElement("td",U);X.className="time";X.colSpan=2;X.innerHTML=Calendar._TT.TIME||" ";X=Calendar.createElement("td",U);X.className="time";X.colSpan=this.weekNumbers?4:3;(function(){function F(P,N,O,L){var K=Calendar.createElement("span",X);K.className=P;K.innerHTML=N;K.calendar=S;K.ttip=Calendar._TT.TIME_PART;K.navtype=50;K._range=[];if(typeof O!="number"){K._range=O}else{for(var J=O;J<=L;++J){var M;if(J<10&&L>=10){M="0"+J}else{M=""+J}K._range[K._range.length]=M}}Calendar._add_evs(K);return K}var B=S.date.getHours();var I=S.date.getMinutes();var A=!S.time24;var H=(B>12);if(A&&H){B-=12}var D=F("hour",B,A?1:0,A?12:23);var E=Calendar.createElement("span",X);E.innerHTML=":";E.className="colon";var G=F("minute",I,0,59);var C=null;X=Calendar.createElement("td",U);X.className="time";X.colSpan=2;if(A){C=F("ampm",H?"pm":"am",["am","pm"])}else{X.innerHTML=" "}S.onSetTime=function(){var K,L=this.date.getHours(),J=this.date.getMinutes();if(A){K=(L>=12);if(K){L-=12}if(L==0){L=12}C.innerHTML=K?"pm":"am"}D.innerHTML=(L<10)?("0"+L):L;G.innerHTML=(J<10)?("0"+J):J};S.onUpdateTime=function(){var K=this.date;var J=parseInt(D.innerHTML,10);if(A){if(/pm/i.test(C.innerHTML)&&J<12){J+=12}else{if(/am/i.test(C.innerHTML)&&J==12){J=0}}}var N=K.getDate();var M=K.getMonth();var L=K.getFullYear();K.setHours(J);K.setMinutes(parseInt(G.innerHTML,10));K.setFullYear(L);K.setMonth(M);K.setDate(N);this.dateClicked=false;this.callHandler()}})()}else{this.onSetTime=this.onUpdateTime=function(){}}var a=Calendar.createElement("tfoot",V);U=Calendar.createElement("tr",a);U.className="footrow";X=f(Calendar._TT.SEL_DATE,this.weekNumbers?8:7,300);X.className="ttip";if(this.isPopup){X.ttip=Calendar._TT.DRAG_TO_MOVE;X.style.cursor="move"}this.tooltips=X;T=Calendar.createElement("div",this.element);this.monthsCombo=T;T.className="combo";for(c=0;c0;--c){var W=Calendar.createElement("div");W.className=Calendar.is_ie?"label-IEfix":"label";T.appendChild(W)}this._init(this.firstDayOfWeek,this.date);Z.appendChild(this.element)};Calendar._keyEvent=function(T){var Q=window._dynarch_popupCalendar;if(!Q||Q.multiple){return false}(Calendar.is_ie)&&(T=window.event);var V=(Calendar.is_ie||T.type=="keypress"),S=T.keyCode;if(T.ctrlKey){switch(S){case 37:V&&Calendar.cellClick(Q._nav_pm);break;case 38:V&&Calendar.cellClick(Q._nav_py);break;case 39:V&&Calendar.cellClick(Q._nav_nm);break;case 40:V&&Calendar.cellClick(Q._nav_ny);break;default:return false}}else{switch(S){case 32:Calendar.cellClick(Q._nav_now);break;case 27:V&&Q.callCloseHandler();break;case 37:case 38:case 39:case 40:if(V){var Z,R,U,X,O,K;Z=S==37||S==38;K=(S==37||S==39)?1:7;function P(){O=Q.currentDateEl;var A=O.pos;R=A&15;U=A>>4;X=Q.ar_days[U][R]}P();function Y(){var A=new Date(Q.date);A.setDate(A.getDate()-K);Q.setDate(A)}function W(){var A=new Date(Q.date);A.setDate(A.getDate()+K);Q.setDate(A)}while(1){switch(S){case 37:if(--R>=0){X=Q.ar_days[U][R]}else{R=6;S=38;continue}break;case 38:if(--U>=0){X=Q.ar_days[U][R]}else{Y();P()}break;case 39:if(++R<7){X=Q.ar_days[U][R]}else{R=0;S=40;continue}break;case 40:if(++Uthis.maxYear){v=this.maxYear;e.setFullYear(v)}}this.firstDayOfWeek=q;this.date=new Date(e);var d=e.getMonth();var a=e.getDate();var b=e.getMonthDays();e.setDate(1);var k=(e.getDay()-this.firstDayOfWeek)%7;if(k<0){k+=7}e.setDate(-k);e.setDate(e.getDate()+1);var y=this.tbody.firstChild;var s=Calendar._SMN[d];var o=this.ar_days=new Array();var p=Calendar._TT.WEEKEND;var z=this.multiple?(this.datesCells={}):null;for(var i=0;i<6;++i,y=y.nextSibling){var AC=y.firstChild;if(this.weekNumbers){AC.className="day wn";AC.innerHTML=e.getWeekNumber();AC=AC.nextSibling}y.className="daysrow";var g=false,x,AA=o[i]=[];for(var j=0;j<7;++j,AC=AC.nextSibling,e.setDate(x+1)){x=e.getDate();var w=e.getDay();AC.className="day";AC.pos=i<<4|j;AA[j]=AC;var r=(e.getMonth()==d);if(!r){if(this.showsOtherMonths){AC.className+=" othermonth";AC.otherMonth=true}else{AC.className="emptycell";AC.innerHTML=" ";AC.disabled=true;continue}}else{AC.otherMonth=false;g=true}AC.disabled=false;AC.innerHTML=this.getDateText?this.getDateText(e,x):x;if(z){z[e.print("%Y%m%d")]=AC}if(this.getDateStatus){var n=this.getDateStatus(e,v,d,x);if(this.getDateToolTip){var u=this.getDateToolTip(e,v,d,x);if(u){AC.title=u}}if(n===true){AC.className+=" disabled";AC.disabled=true}else{if(/disabled/i.test(n)){AC.disabled=true}AC.className+=" "+n}}if(!AC.disabled){AC.caldate=new Date(e);AC.ttip="_";if(!this.multiple&&r&&x==a&&this.hiliteToday){AC.className+=" selected";this.currentDateEl=AC}if(e.getFullYear()==l&&e.getMonth()==c&&x==AB){AC.className+=" today";AC.ttip+=Calendar._TT.PART_TODAY}if(p.indexOf(w.toString())!=-1){AC.className+=AC.otherMonth?" oweekend":" weekend"}}}if(!(g||this.showsOtherMonths)){y.className="emptyrow"}}this.title.innerHTML=Calendar._MN[d]+", "+v;this.onSetTime();this.table.style.visibility="visible";this._initMultipleDates()};Calendar.prototype._initMultipleDates=function(){if(this.multiple){for(var F in this.multiple){var D=this.datesCells[F];var E=this.multiple[F];if(!E){continue}if(D){D.className+=" selected"}}}};Calendar.prototype._toggleMultipleDate=function(H){if(this.multiple){var G=H.print("%Y%m%d");var E=this.datesCells[G];if(E){var F=this.multiple[G];if(!F){Calendar.addClass(E,"selected");this.multiple[G]=H}else{Calendar.removeClass(E,"selected");delete this.multiple[G]}}}};Calendar.prototype.setDateToolTipHandler=function(B){this.getDateToolTip=B};Calendar.prototype.setDate=function(B){if(!B.equalsTo(this.date)){this._init(this.firstDayOfWeek,B)}};Calendar.prototype.refresh=function(){this._init(this.firstDayOfWeek,this.date)};Calendar.prototype.setFirstDayOfWeek=function(B){this._init(B,this.date);this._displayWeekdays()};Calendar.prototype.setDateStatusHandler=Calendar.prototype.setDisabledHandler=function(B){this.getDateStatus=B};Calendar.prototype.setRange=function(C,D){this.minYear=C;this.maxYear=D};Calendar.prototype.callHandler=function(){if(this.onSelected){this.onSelected(this,this.date.print(this.dateFormat))}};Calendar.prototype.callCloseHandler=function(){if(this.onClose){this.onClose(this)}this.hideShowCovered()};Calendar.prototype.destroy=function(){var B=this.element.parentNode;B.removeChild(this.element);Calendar._C=null;window._dynarch_popupCalendar=null};Calendar.prototype.reparent=function(D){var C=this.element;C.parentNode.removeChild(C);D.appendChild(C)};Calendar._checkCalendar=function(F){var E=window._dynarch_popupCalendar;if(!E){return false}var D=Calendar.is_ie?Calendar.getElement(F):Calendar.getTargetElement(F);for(;D!=null&&D!=E.element;D=D.parentNode){}if(D==null){window._dynarch_popupCalendar.callCloseHandler();return Calendar.stopEvent(F)}};Calendar.prototype.show=function(){var I=this.table.getElementsByTagName("tr");for(var J=I.length;J>0;){var H=I[--J];Calendar.removeClass(H,"rowhilite");var K=H.getElementsByTagName("td");for(var L=K.length;L>0;){var G=K[--L];Calendar.removeClass(G,"hilite");Calendar.removeClass(G,"active")}}this.element.style.display="block";this.hidden=false;if(this.isPopup){window._dynarch_popupCalendar=this;Calendar.addEvent(document,"keydown",Calendar._keyEvent);Calendar.addEvent(document,"keypress",Calendar._keyEvent);Calendar.addEvent(document,"mousedown",Calendar._checkCalendar)}this.hideShowCovered()};Calendar.prototype.hide=function(){if(this.isPopup){Calendar.removeEvent(document,"keydown",Calendar._keyEvent);Calendar.removeEvent(document,"keypress",Calendar._keyEvent);Calendar.removeEvent(document,"mousedown",Calendar._checkCalendar)}this.element.style.display="none";this.hidden=true;this.hideShowCovered()};Calendar.prototype.showAt=function(D,E){var F=this.element.style;F.left=D+"px";F.top=E+"px";this.show()};Calendar.prototype.showAtElement=function(I,H){var F=this;var G=Calendar.getAbsolutePos(I);if(!H||typeof H!="string"){this.showAt(G.x,G.y+I.offsetHeight);return true}function J(B){if(B.x<0){B.x=0}if(B.y<0){B.y=0}var A=document.createElement("div");var C=A.style;C.position="absolute";C.right=C.bottom=C.width=C.height="0px";document.body.appendChild(A);var D=Calendar.getAbsolutePos(A);document.body.removeChild(A);if(Calendar.is_ie){D.y+=document.body.scrollTop;D.x+=document.body.scrollLeft}else{D.y+=window.scrollY;D.x+=window.scrollX}var E=B.x+B.width-D.x;if(E>0){B.x-=E}E=B.y+B.height-D.y;if(E>0){B.y-=E}}this.element.style.display="block";Calendar.continuation_for_the_fucking_khtml_browser=function(){var D=F.element.offsetWidth;var B=F.element.offsetHeight;F.element.style.display="none";var C=H.substr(0,1);var A="l";if(H.length>1){A=H.substr(1,1)}switch(C){case"T":G.y-=B;break;case"B":G.y+=I.offsetHeight;break;case"C":G.y+=(I.offsetHeight-B)/2;break;case"t":G.y+=I.offsetHeight-B;break;case"b":break}switch(A){case"L":G.x-=D;break;case"R":G.x+=I.offsetWidth;break;case"C":G.x+=(I.offsetWidth-D)/2;break;case"l":G.x+=I.offsetWidth-D;break;case"r":break}G.width=D;G.height=B+40;F.monthsCombo.style.display="none";J(G);F.showAt(G.x,G.y)};if(Calendar.is_khtml){setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()",10)}else{Calendar.continuation_for_the_fucking_khtml_browser()}};Calendar.prototype.setDateFormat=function(B){this.dateFormat=B};Calendar.prototype.setTtDateFormat=function(B){this.ttDateFormat=B};Calendar.prototype.parseDate=function(D,C){if(!C){C=this.dateFormat}this.setDate(Date.parseDate(D,C))};Calendar.prototype.hideShowCovered=function(){if(!Calendar.is_ie&&!Calendar.is_opera){return }function S(A){var B=A.style.visibility;if(!B){if(document.defaultView&&typeof (document.defaultView.getComputedStyle)=="function"){if(!Calendar.is_khtml){B=document.defaultView.getComputedStyle(A,"").getPropertyValue("visibility")}else{B=""}}else{if(A.currentStyle){B=A.currentStyle.visibility}else{B=""}}}return B}var U=new Array("applet","iframe","select");var R=this.element;var T=Calendar.getAbsolutePos(R);var e=T.x;var Q=R.offsetWidth+e;var V=T.y;var W=R.offsetHeight+V;for(var c=U.length;c>0;){var d=document.getElementsByTagName(U[--c]);var f=null;for(var a=d.length;a>0;){f=d[--a];T=Calendar.getAbsolutePos(f);var X=T.x;var Y=f.offsetWidth+X;var Z=T.y;var b=f.offsetHeight+Z;if(this.hidden||(X>Q)||(YW)||(b29)?1900:2000);break;case"%b":case"%B":for(N=0;N<12;++N){if(Calendar._MN[N].substr(0,T[Z].length).toLowerCase()==T[Z].toLowerCase()){P=N;break}}break;case"%H":case"%I":case"%k":case"%l":S=parseInt(T[Z],10);break;case"%P":case"%p":if(/pm/i.test(T[Z])&&S<12){S+=12}else{if(/am/i.test(T[Z])&&S>=12){S-=12}}break;case"%M":O=parseInt(T[Z],10);break}}if(isNaN(V)){V=W.getFullYear()}if(isNaN(P)){P=W.getMonth()}if(isNaN(Y)){Y=W.getDate()}if(isNaN(S)){S=W.getHours()}if(isNaN(O)){O=W.getMinutes()}if(V!=0&&P!=-1&&Y!=0){return new Date(V,P,Y,S,O,0)}V=0;P=-1;Y=0;for(Z=0;Z31&&V==0){V=parseInt(T[Z],10);(V<100)&&(V+=(V>29)?1900:2000)}else{if(Y==0){Y=T[Z]}}}}}if(V==0){V=W.getFullYear()}if(P!=-1&&Y!=0){return new Date(V,P,Y,S,O,0)}return W};Date.prototype.getMonthDays=function(D){var C=this.getFullYear();if(typeof D=="undefined"){D=this.getMonth()}if(((0==(C%4))&&((0!=(C%100))||(0==(C%400))))&&D==1){return 29}else{return Date._MD[D]}};Date.prototype.getDayOfYear=function(){var D=new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0);var E=new Date(this.getFullYear(),0,0,0,0,0);var F=D-E;return Math.floor(F/Date.DAY)};Date.prototype.getWeekNumber=function(){var E=new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0);var F=E.getDay();E.setDate(E.getDate()-(F+6)%7+3);var D=E.valueOf();E.setMonth(0);E.setDate(4);return Math.round((D-E.valueOf())/(7*86400000))+1};Date.prototype.equalsTo=function(B){return((this.getFullYear()==B.getFullYear())&&(this.getMonth()==B.getMonth())&&(this.getDate()==B.getDate())&&(this.getHours()==B.getHours())&&(this.getMinutes()==B.getMinutes()))};Date.prototype.setDateOnly=function(C){var D=new Date(C);this.setDate(1);this.setFullYear(D.getFullYear());this.setMonth(D.getMonth());this.setDate(D.getDate())};Date.prototype.print=function(d){var U=this.getMonth();var e=this.getDate();var c=this.getFullYear();var a=this.getWeekNumber();var Z=this.getDay();var V={};var Y=this.getHours();var T=(Y>=12);var g=(T)?(Y-12):Y;var W=this.getDayOfYear();if(g==0){g=12}var S=this.getMinutes();var f=this.getSeconds();V["%a"]=Calendar._SDN[Z];V["%A"]=Calendar._DN[Z];V["%b"]=Calendar._SMN[U];V["%B"]=Calendar._MN[U];V["%C"]=1+Math.floor(c/100);V["%d"]=(e<10)?("0"+e):e;V["%e"]=e;V["%H"]=(Y<10)?("0"+Y):Y;V["%I"]=(g<10)?("0"+g):g;V["%j"]=(W<100)?((W<10)?("00"+W):("0"+W)):W;V["%k"]=Y;V["%l"]=g;V["%m"]=(U<9)?("0"+(1+U)):(1+U);V["%M"]=(S<10)?("0"+S):S;V["%n"]="\n";V["%p"]=T?"PM":"AM";V["%P"]=T?"pm":"am";V["%s"]=Math.floor(this.getTime()/1000);V["%S"]=(f<10)?("0"+f):f;V["%t"]="\t";V["%U"]=V["%W"]=V["%V"]=(a<10)?("0"+a):a;V["%u"]=Z+1;V["%w"]=Z;V["%y"]=(""+c).substr(2,2);V["%Y"]=c;V["%%"]="%";var X=/%./g;if(!Calendar.is_ie5&&!Calendar.is_khtml){return d.replace(X,function(A){return V[A]||A})}var b=d.match(X);for(var i=0;i=0;){var G=I.multiple[D];var B=G.print("%Y%m%d");A.multiple[B]=G}}A.showsOtherMonths=I.showOthers;A.yearStep=I.step;A.setRange(I.range[0],I.range[1]);A.params=I;A.setDateStatusHandler(I.dateStatusFunc);A.getDateText=I.dateText;A.setDateFormat(C);if(F){A.create()}A.refresh();if(!I.position){A.showAtElement(I.button||I.displayArea||I.inputField,I.align)}else{A.showAt(I.position[0],I.position[1])}return false};return K};jQuery.fn.clockpick=function(options,callback){var settings={starthour:8,endhour:18,showminutes:true,minutedivisions:4,military:false,event:"click",layout:"vertical",valuefield:null,useBgiframe:false,hoursopacity:1,minutesopacity:1};if(options){jQuery.extend(settings,options)}var callback=callback||function(){},v=(settings.layout=="vertical");errorcheck();jQuery(this)[settings.event](function(e){var self=this,$self=jQuery(this),$body=jQuery("body");if(!settings.valuefield){$self.unbind("keydown").bind("keydown",keyhandler)}else{jQuery("[name="+settings.valuefield+"]").unbind("keydown").bind("keydown",keyhandler)[0].focus()}jQuery("#CP_hourcont,#CP_minutecont").remove();$hourcont=jQuery("
").appendTo($body);!settings.useBgiframe?$hourcont.css("opacity",settings.hoursopacity):null;binder($hourcont);$hourcol1=jQuery("
").appendTo($body);$hourcol2=jQuery("
").appendTo($body);if(settings.showminutes){$mc=jQuery("
").appendTo($body);!settings.useBgiframe?$mc.css("opacity",settings.minutesopacity):null;binder($mc)}if(!v){$hourcont.css("width","auto");$mc.css("width","auto")}else{$hourcol1.addClass("floatleft");$hourcol2.addClass("floatleft")}renderhours();putcontainer();function renderhours(){var c=1;for(h=settings.starthour;h<=settings.endhour;h++){if(h==12){c=1}displayhours=((!settings.military&&h>12)?h-12:h)+set_tt(h);if(!settings.military&&h==0){displayhours="12"+set_tt(h)}$hd=jQuery("
"+displayhours+"
");if(settings.military){$hd.width(20)}binder($hd);if(!v){$hd.css("float","left")}(h<12)?$hourcol1.append($hd):$hourcol2.append($hd);c++}$hourcont.append($hourcol1);!v?$hourcont.append("
"):"";$hourcont.append($hourcol2)}function renderminutes(h){realhours=h;displayhours=(!settings.military&&h>12)?h-12:h;if(!settings.military&&h==0){displayhours="12"}$mc.empty();var n=60/settings.minutedivisions,tt=set_tt(realhours),counter=1;for(m=0;m<60;m=m+n){$md=jQuery("
"+displayhours+":"+((m<10)?"0":"")+m+tt+"
");if(!v){$md.css("float","left");if(settings.minutedivisions>6&&counter==settings.minutedivisions/2+1){$mc.append("
")}}$mc.append($md);binder($md);counter++}}function set_tt(realhours){if(!settings.military){return(realhours>=12)?" PM":" AM"}else{return""}}function putcontainer(){if(!jQuery.browser.safari&&e.type!="focus"){$hourcont.css("left",e.pageX-5).css("top",e.pageY-(Math.floor($hourcont.height()/2)));rectify($hourcont)}else{$self.after($hourcont)}$hourcont.show();if(settings.useBgiframe){bgi($hourcont)}}function rectify($obj){var ph=document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight;var pw=document.documentElement.clientWidth?document.documentElement.clientWidth:document.body.clientWidth;if(!jQuery.browser.safari){var t=parseInt($obj.css("top"));var l=parseInt($obj.css("left"))}else{var t=$obj[0].offsetTop;var l=$obj[0].offsetLeft}var st=document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;if(t<=st&&!$obj.is("#CP_minutecont")){$obj.css("top",st+10+"px")}else{if(t+$obj.height()-st>ph){$obj.css("top",st+ph-$obj.height()-10+"px")}}if(l<=0){$obj.css("left","10px")}}function bgi(ob){if(typeof jQuery.fn.bgIframe=="function"){ob.bgIframe()}else{alert("bgIframe plugin not loaded.")}}function binder($obj){if($obj.attr("id")=="CP_hourcont"){$obj.mouseout(function(e){hourcont_out(e)})}else{if($obj.attr("id")=="CP_minutecont"){$obj.mouseout(function(e){minutecont_out(e)})}else{if($obj.attr("class")=="CP_hour"){$obj.mouseover(function(e){hourdiv_over($obj,e)});$obj.mouseout(function(){hourdiv_out($obj)});$obj.click(function(){hourdiv_click($obj)})}else{if($obj.attr("class")=="CP_minute"){$obj.mouseover(function(){minutediv_over($obj)});$obj.mouseout(function(){minutediv_out($obj)});$obj.click(function(){minutediv_click($obj)})}}}}}function hourcont_out(e){try{t=(e.toElement)?e.toElement:e.relatedTarget;if(!(jQuery(t).is("div[@class^=CP], iframe"))){if(!jQuery.browser.safari){cleardivs()}}}catch(e){cleardivs()}}function minutecont_out(e){try{t=(e.toElement)?e.toElement:e.relatedTarget;if(!(jQuery(t).is("div[@class^=CP], iframe"))){if(!jQuery.browser.safari){cleardivs()}}}catch(e){cleardivs()}}function hourdiv_over($obj,e){var h=$obj.attr("id").split("_")[1],i=$obj.attr("id").split("_")[2],l,t;$obj.addClass("CP_over");if(settings.showminutes){$mc.hide();renderminutes(h);if(v){t=e.type=="mouseover"?e.pageY-15:$hourcont.offset().top+2+($obj.height()*i);if(h<12){if(!jQuery.browser.safari){l=$hourcont.offset().left-$mc.width()}else{l=$hourcont[0].offsetLeft-$mc.width()}}else{if(!jQuery.browser.safari){l=$hourcont.offset().left+$hourcont.width()}else{l=$hourcont[0].offsetLeft+$hourcont.width()}}}else{l=(e.type=="mouseover")?e.pageX-10:$hourcont.offset().left+($obj.width()-5)*i;if(h<12){if(!jQuery.browser.safari){t=$hourcont.offset().top-$mc.height()}else{t=$hourcont[0].offsetTop-$mc.height()}}else{if(!jQuery.browser.safari){t=$hourcont.offset().top+$hourcont.height()}else{t=$hourcont[0].offsetTop+$hourcont.height()}}}$mc.css("left",l+"px").css("top",t+"px");rectify($mc);$mc.show();if(settings.useBgiframe){bgi($mc)}}return false}function hourdiv_out($obj){$obj.removeClass("CP_over");return false}function hourdiv_click($obj){h=$obj.attr("id").split("_")[1];tt=set_tt(h);str=$obj.text();if(str.indexOf(" ")!=-1){cleanstr=str.substring(0,str.indexOf(" "))}else{cleanstr=str}$obj.text(cleanstr+":00"+tt);setval($obj);cleardivs()}function minutediv_over($obj){$obj.addClass("CP_over");return false}function minutediv_out($obj){$obj.removeClass("CP_over");return false}function minutediv_click($obj){setval($obj);cleardivs()}function setval($obj){if(!settings.valuefield){self.value=$obj.text()}else{jQuery("input[@name="+settings.valuefield+"]").val($obj.text())}callback.apply($self,[$obj.text()]);$self.unbind("keydown",keyhandler)}function cleardivs(){if(settings.showminutes){$mc.remove()}$hourcont.remove();$self.unbind("keydown",keyhandler)}function keyhandler(e){var $obj=$("div.CP_over").size()?$("div.CP_over"):$("div.CP_hour:first"),divtype=$obj.is(".CP_hour")?"hour":"minute",hi=(divtype=="hour")?$obj[0].id.split("_")[2]:0,h=(divtype=="minute")?$obj[0].id.split("_")[0]:$obj[0].id.split("_")[1];if(divtype=="minute"){var curloc=h<12?"m1":"m2"}else{var curloc=h<12?"h1":"h2"}function divprev($obj){if($obj.prev().size()){eval(divtype+"div_out($obj)");eval(divtype+"div_over($obj.prev(), e)")}else{return false}}function divnext($obj){if($obj.next().size()){eval(divtype+"div_out($obj)");eval(divtype+"div_over($obj.next(), e)")}else{return false}}function hourtohour($obj){var ctx=h>=12?"#hourcol1":"#hourcol2";$newobj=jQuery(".CP_hour[@id$=_"+hi+"]",ctx);if($newobj.size()){hourdiv_out($obj);hourdiv_over($newobj,e)}else{return false}}function hourtominute($obj){hourdiv_out($obj);minutediv_over($(".CP_minute:first"))}function minutetohour($obj){minutediv_out($obj);var ctx=h>=12?"#hourcol2":"#hourcol1";var $newobj=jQuery(".CP_hour[@id^=hr_"+h+"]",ctx);hourdiv_over($newobj,e)}switch(e.keyCode){case 37:if(v){switch(curloc){case"m1":return false;break;case"m2":minutetohour($obj);break;case"h1":hourtominute($obj);break;case"h2":hourtohour($obj);break}}else{divprev($obj)}break;case 38:if(v){divprev($obj)}else{switch(curloc){case"m1":return false;break;case"m2":minutetohour($obj);break;case"h1":hourtominute($obj);break;case"h2":hourtohour($obj);break}}break;case 39:if(v){switch(curloc){case"m1":minutetohour($obj);break;case"m2":return false;break;case"h1":hourtohour($obj);break;case"h2":hourtominute($obj);break}}else{divnext($obj)}break;case 40:if(v){divnext($obj)}else{switch(curloc){case"m1":minutetohour($obj);break;case"m2":return false;break;case"h1":hourtohour($obj);break;case"h2":hourtominute($obj);break}}break;case 13:eval(divtype+"div_click($obj)");break}return false}return false});function errorcheck(){if(settings.starthour>=settings.endhour){alert("Error - start hour must be less than end hour.");return false}else{if(60%settings.minutedivisions!=0){alert("Error - param minutedivisions must divide evenly into 60.");return false}}}return this};static/jquery.js0000644000076500000240000015764611201222575014117 0ustar mdipierrostaff/* * jQuery JavaScript Library v1.3.2 * http://jquery.com/ * * Copyright (c) 2009 John Resig * Dual licensed under the MIT and GPL licenses. * http://docs.jquery.com/License * * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) * Revision: 6246 */ (function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"
","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); /* * Sizzle CSS Selector Engine - v0.9.3 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();static/title.png0000644000076500000240000002527111201222575014055 0ustar mdipierrostaffPNG  IHDR$PkJiCCPICC ProfilexWgP۲o"9$IA2s*i 3ΐEEIADTT(ADDQ% 眪}^Zk^w ((Y||QB43k ykp}|Ħ =@ >@Hx IR \a73 @p|ѤhΘDfp: RxbT}|-'hu1,)On @p`yy|.FVdnTQBbq A:yοh1%v=V+W8<+| ˉ\o!Jn{*oТ\zVVn^ULLYXencadw#sKCOD/wX߻~y>rK ÆKEu$Srh/ ѧX8xIv\SSrL>lzDj:!'p*#+:nXzP3 | x;Ζ$S>:­G*PW/9]&\nrj57nRoհ ^ͨ3qg.{\SXF9Zd[?8u+wۧ;?K{n_)J7GgU}ok׫}owo??u>b k ώԎq~~<j/&&}+|!cyad.m>r{qOU5:mZe2<`cfiǘ_Up(X$Y V^VN.{Bbm*jVVZc:j1z ;(FeƯM1fDs?TˊmVcL[1; {kGSIbKn<=zL[_ݍpKȐ*a:&{-"(QNTg>3)!&2$ADŤ-X|O:uAڵÅGJ09&\M'ϟ:m~Z:rrw-P)+=ļTt\smˤʟWWY_4sJUkB׾]t[F5|5ͷOבp1QG PZliYy֠FmmK}>BѮ=R{#^{Qxvm`?> ].xh,a)tbg/V_UIMqMwi9Ҽ–Kq+V?~^Yol>W0:w PX|t<=D*+.9-)L,sC{#%"Rң=2YZ˾,?C3mN$GSSS?<7xHQtlzGF1ǻ2O8>u*+)3\yg_,t,*);U"Z\y /.s(*^Х ՙW\պ~mzˍқɷj,j֭ܙvwa$L ONNw=|>X~r=V;וI3 ˽IL&4xPpLR ` ID F*DY J:GZNGף1BL2+`_Xq6 3<;?"BeifeeaºV͎7pqq4vn+['ėǟ' $P"(#xMH[艰C/Z*%).B2@8$*^&SPvZjnya>@Pi 4,߼΢rŊ`moh{nA)yU-'//n=A$m0ܽQ#4 8扯Cږ~$82.7x2=K9;'6OLkAd@s/UUqگUkn1lȾ*-}*ۍ?֝F9}ovvAs)esm1& @"7P8\6@"Fja/j'*UVFG`0ɘ mqȸ$>ŖU5 ǖʶƞ4:Svl>:!#$!/V+#2ߢJAɬ.lSXRPoPURQ &l?q[֢^~A6@Bs ;̝|6v&9N.Ʈn+~-ފ>~X]s{A1P_(D} ʄ=I.-yulWʉS9y6EmgϖF7(P6QPqon.ݨjnllo^~pEQ֢6vZǫ$x҉2wF_-q@{⟊b>, |#~lKdWoJ=}llfei^dBőf+U?=V1uk\M_\~L&lT Np.{-(yGD@O( `<:y2coaeEh1. %{xBd89E"[Ǻyr'j9/qF_%R=HpN| 8XB "9 0:Db b!@$ >(@X€ "FFWDoNF$7oG2D]i=3FƘc0} `0ba0&C6Fkaw@8!zUP: @txJI!'XPia13B&XPh1d 6:DMA$j (R}*IDATxݮ-KRLjȜh²%pF lƢe|ĥ_{ʌ̪A4bh뫈2*+3k &>~,3'o} BǁΏfU|~9?~DkP?Ït<ǟ$r|"!RjyJkb{BVKۇU1ў,K~?'EyV<7h$*QI 怒r9 FT"xr7T"'$2$rD3F|G' i9@%okblƍh~غvQl7@ȁJo3D+1Jc#?J oJo%btF@NvVzq缣@3&2'#a7P"9m魛$̉UVG%D&ۅo2ed@' zBmd9Bgb i4#sbwKL25], D.33xr); Ub|+D*~Nd“R~i*sA5KVIJcd:*s| ̼ J/?+J&vHh9X z7s:Qv@wT0w&VTBm41G֤ѼPK72eP|B22jo3Yb4gQzT̡0wshD["&%x#ƜrvUnь:2l]jWo e9cBv ZX`qWLm?\ 9ȜwUFp#3aR $S̚hmu2ekqxFHU椊c]FSC1EhNs8.ƍ9Y 3M;L9WuDf VҝhTSoʟlTIIsF*CUXoBv)݃N/cV7w 4kp31Ua>`#.˘CFY{AZTFW D*YF# m#3wrFT4YS|Rc<=WJ}x󔹔ۏZwJ:P11C[b>̭m?G B.?oJ5ޑQ*uy15諞@7kMR*v3Ba HEeޣGoMuL0#s|APݺYKé^)l݇BLTTҼwviY'*f`e{MR#Z;vWڙy * 5wĊcP)|!R@g+e$+Hfsj}ff&TC0sEVNTB3|GVڗ("jʊ%2jQ2p#S1>2i0k]P\3>jffn0嬘4[Q5?uA̝9:g(c EéY9 Q])ʚ*N͊q!kΩO@f4J+([78d Qkz/[c=h37k\x TF`oQ"@c&75ʄqMS)Sci%EněXHuTA ($)8r̍Jc*\ Jǚy* YV^{ơ ؚqzzם,5B@WSߕ:o8sj̅ӯu`M|&"q( h"5572?5B U (ͩytbAQͼyDYuDN,dM1zod @2:O)c(s ƽMYةyk:B['׽$}ld̽X#"k|LVuLtWYO~),G*=< 2Iuz).5AN[da^~l M$BCwoRj DU9j]HW<7Ha# uF)d- o";'Dj =Ȇ{?"`V%Ï0*PPk'24PK^ixq?(JݏQǡy@xmR^.=4+|mƨK5r( `=p#9VqQi0x[0=!@La}Ec W y<#{,&n_Ayi5U \ 2O!fuW?f5X߳+sBq)}~[5X?|*ǝy-|OLZ"jL] oЌlʑcRb3Xl?#QfPc7rP 5qe~3BjL75r`Yse Kk205ZHZ[[*غ9ObiAxB丯݁;yr,?4:[t%*#W?$[ʄic<@[MsV #swzVa&"C1."rq J͸/MUUk&h"Rt{E;Q1EdМ[#jG9n4cʼٺW͡y,h5f0{Ꜩ0ov!p_p5"+&^zBfyihVsbTLNpO:YsЛy_Q0Nحpl/ُ.okGn5++cJ?* /@sҀ~csk.[95nY Y[[jNmc(ZJ5xRsw*bXskWE~s[QFUP֜ʢ Pмw_56WfHD|(lQ3Bk"*߬Geu}}=gd(7 Q[O~k=uW 1;[adVqD[;LPUe:P*u_mttT/=cm""2P2AyUHk$s^aǝ [_2mdQA!c8TGΈ.rj qF)+ĜgPW[qt'1!7X'sV܌Uu~rjs(zgk(= U3wW?KYB֋ҘۏUyAOw3J3u2s* hÏ{7X7SΩ ??L? *Kи#b FHZY1 Y˿ .VCI=p3k.pmRۈ4FfZR 4oMYYm#s!5kǁ9Tٞ=*ֺ8aw@*ĔdP82Q9@sOVּ21Uq!ghUwʸT\ZkG@Lj LF{ (i9.?R:wĔ7Mvlu2޻wdTV]Q:Jʹ& Zk[6LEX[,b%&Dhaʩ` ZLZ˽#;L[[^iZO= E`:O;|!VgZT~C@]{MR]QbVXQTL`>7nbT e{μegJyf!Sǽ*a{_Gܻ7#2qY&pq!QBCcIw5GXAWy`NA ]1u2:"` C({+1Y;3_.޽Տj*ݷzSjl3sukБYGu5wOv+V~* H8"ݺ׿'[ xq ~*j`ֆF ,D񂌣jMc#Ԙ"*KX75>@cVLFoBSY37&/5[siЮbAc{o.rp hPGh]ərܗY~bw51b#Rjbbn<؞e#XJ?PDo?-ݕdڕ]iNUƠ gě}!U4q~3s(kNDZ7p1u Tn? 6RvCi״iAq!a726B8jhQ{~q˪^fvŶGC3Ǡ},Տ:+AhP1?}R ʼb*Dy84lݜQӚ Xk/L)xYCG ӺwJ:c.o[S܈5B{ˑq}̬_LGTjuzL֧X_*Al$1xEPZ:fHS3"\~_L[{7?÷#POJGlKXQ~_PzM?Oƍ\[F&X2 :D3Ȕޘ27>@"Gk󽯙е1Dn7oI(f7dj*a1j/:5m}ӿF`ɛ2v͟}k&n?lͺ9]w~gnS1G6w W1{[@66j`'vh8pL6H52ohm}b#r5afЛ*u+w"[b][N{WL|rO>T5qu!Jz~CUkZo.gֺp?P{̍YlO&2$=ڭ/?kL}G}]3_.ԷR{T¯DKcgLSh(}^5>4&TkRE3“#w 3':87*+UGg%oP}z=ž:yvo9{9rXW&?|kXRO?i秢v9W_M-yߎn/%ٮdjM:÷i#OQ[~px~gv)x>kvo:I.SbY#sp/Ef[_c[WO\ ^y>[V9`_']գNtI{:٣u֋O>g0 }%:NM矬?|^Z⋊Q~=fx_({@_\9QB]cF3b?nH>IENDB`tests/0000755000076500000240000000000011213734570012100 5ustar mdipierrostaffuploads/0000755000076500000240000000000011213734570012405 5ustar mdipierrostaffviews/0000755000076500000240000000000011213734570012073 5ustar mdipierrostaffviews/appadmin.html0000644000076500000240000000726711213730014014553 0ustar mdipierrostaff{{extend 'layout.html'}} {{if request.function=='index':}}

{{=T("Available databases and tables")}}

{{if not databases:}}{{=T("No databases in this application")}}{{pass}} {{for db in sorted(databases):}} {{for table in databases[db].tables:}}

{{=A("%s.%s"%(db,table),_href=URL(r=request,f='select',args=[db],vars=dict(query='%s.%s.id>0'%(db,table))))}}

[ {{=A(str(T('insert new'))+' '+table,_href=URL(r=request,f='insert',args=[db,table]))}} ]

{{pass}} {{pass}} {{elif request.function=='select':}}

{{=XML(str(T("database %s select"))%A(request.args[0],_href=URL(r=request,f='index'))) }}

{{if table:}} [ {{=A(str(T('insert new %s'))%table,_href=URL(r=request,f='insert',args=[request.args[0],table]))}} ]

{{=T("Rows in table")}}


{{else:}}

{{=T("Rows selected")}}


{{pass}} {{=form}}

{{=T('The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.')}}
{{=T('Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.')}}
{{=T('"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN')}}



{{=nrows}} {{=T("selected")}}

{{if start>0:}}[ {{=A(T('previous 100 rows'),_href=URL(r=request,f='select',args=request.args[0],vars=dict(start=start-100)))}} ]{{pass}} {{if stop {{linkto=URL(r=request,f='update',args=request.args[0])}} {{upload=URL(r=request,f='download',args=request.args[0])}} {{=SQLTABLE(rows,linkto,upload,orderby=True,_class='sortable')}}
{{pass}}

{{=T("Import/Export")}}


[ {{=T("export as csv file")}} ] {{if table:}} {{=FORM(str(T('or import from csv file'))+" ",INPUT(_type='file',_name='csvfile'),INPUT(_type='hidden',_value=table,_name='table'),INPUT(_type='submit',_value='import'))}} {{pass}} {{elif request.function=='insert':}}

{{=T("database")}} {{=A(request.args[0],_href=URL(r=request,f='index'))}} {{=T("table")}} {{=A(request.args[1],_href=URL(r=request,f='select',args=request.args[0],vars=dict(query='%s.%s.id>0'%tuple(request.args[:2]))))}}

{{=T("New Record")}}


{{=form}} {{elif request.function=='update':}}

{{=T("database")}} {{=A(request.args[0],_href=URL(r=request,f='index'))}} {{=T("table")}} {{=A(request.args[1],_href=URL(r=request,f='select',args=request.args[0],vars=dict(query='%s.%s.id>0'%tuple(request.args[:2]))))}} {{=T("record id")}} {{=A(request.args[2],_href=URL(r=request,f='update',args=request.args[:3]))}}

{{=T("Edit current record")}}



{{=form}} {{elif request.function=='state':}}

{{=T("Internal State")}}

{{=T("Current request")}}

{{=BEAUTIFY(request)}}

{{=T("Current response")}}

{{=BEAUTIFY(response)}}

{{=T("Current session")}}

{{=BEAUTIFY(session)}} {{pass}} views/default/0000755000076500000240000000000011213750174013515 5ustar mdipierrostaffviews/default/index.html0000644000076500000240000000131411213750174015511 0ustar mdipierrostaff{{extend 'layout.html'}}

This is a sample web2py app using the new Microsoft Bing Search Engine based on the Python API developed by Lakshman. The original code has been slightly modified to be adapted to web2py libraries and made it work on the Google App Engine too.

Download this web2py app here: DOWNLOAD.

Search

{{=form}} {{if items:}}

Results

{{for item in items:}}

Microsoft Bing Search Engine based on the Python API developed by Lakshman. The original code has been slightly modified to be adapted to web2py libraries and made it work on the Google App Engine too.

Download this web2py app here: DOWNLOAD.

Search

{{=form}} {{if items:}}

Results

{{for item in items:}}

Microsoft Bing Search Engine based on the Python API developed by Lakshman. The original code has been slightly modified to be adapted to web2py libraries and made it work on the Google App Engine too.

Download this web2py app here: DOWNLOAD.

Search

{{=form}} {{if items:}}

Results

{{for item in items:}}

register
lost password
{{pass}} views/generic.html0000644000076500000240000000141111210247540014363 0ustar mdipierrostaff{{extend 'layout.html'}} {{""" You should not modify this file. It is used as default when a view is not provided for your controllers """}} {{=BEAUTIFY(response._vars)}} views/generic.json0000644000076500000240000000041611210247455014401 0ustar mdipierrostaff{{ ### # response._vars contains the dictionary returned by the controller action ### try: from gluon.serializers import json response.write(json(response._vars),escape=False) response.headers['Content-Type']='text/json' except: raise HTTP(405,'no json') }} views/generic.rss0000644000076500000240000000075411210247525014242 0ustar mdipierrostaff{{ ### # response._vars contains the dictionary returned by the controller action # for this to work the action must return something like # # dict(title=...,link=...,description=...,created_on='...',items=...) # # items is a list of dictionaries each with title, link, description, pub_date. ### try: from gluon.serializers import rss response.write(rss(response._vars),escape=False) response.headers['Content-Type']='application/rss+xml' except: raise HTTP(405,'no rss') }}views/generic.xml0000644000076500000240000000041111210247502014214 0ustar mdipierrostaff{{ ### # response._vars contains the dictionary returned by thecontroller action ### try: from gluon.serializers import xml response.write(xml(response._vars),escape=False) response.headers['Content-Type']='text/xml' except: raise HTTP(405,'no xml') }} views/layout.html0000644000076500000240000000403511204144653014275 0ustar mdipierrostaff {{=response.title or 'response.title'}} {{include 'web2py_ajax.html'}}

{{=response.title or 'response.title'}}

{{=response.subtitle or 'response.subtitle'}}

{{='/'.join(['',request.application,request.controller,request.function]+request.args)}}
{{if response.menu_auth:}}

Authentication

{{=MENU(response.menu_auth)}} {{pass}} {{if response.menu:}}

Main Menu

{{=MENU(response.menu)}} {{pass}} {{if response.menu_edit:}}

Edit This App

{{=MENU(response.menu_edit)}} {{pass}}
views/web2py_ajax.html0000644000076500000240000000462111210244352015166 0ustar mdipierrostaff{{import os}}