Commit 5d848631 authored by Ivan Tyagov's avatar Ivan Tyagov

Add the renderjs way of rendering an ERP5 From (using cache-able client side gadgets).

parent 6b77ce81
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>erp5_html5_style</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>"""\n
This script provides all required details of an ERP5 form + values\n
on respective context. Using these values a javascript client can construct\n
form at client side.\n
"""\n
from json import dumps\n
\n
LIST_FIELDS = ["ListField", "ParallelListField"]\n
\n
MARKER = [\'\', None]\n
result = {\'form_data\': {}, }\n
\n
# use form_id to get list of keys we care for\n
form = getattr(context, form_id)\n
for field_id in form.get_field_ids():\n
base_field_id = field_id.replace("my_", "")\n
field = getattr(form, field_id)\n
original_field = field\n
if field.meta_type == "ProxyField":\n
field = field.getRecursiveTemplateField()\n
field_meta_type = field.meta_type\n
field_value = original_field.get_value("default")\n
field_dict = result[\'form_data\'][field_id] = {}\n
\n
field_dict[\'type\'] = field_meta_type\n
field_dict[\'editable\'] = original_field.get_value("editable")\n
field_dict[\'css_class\'] = original_field.get_value("css_class")\n
field_dict[\'hidden\'] = original_field.get_value("hidden")\n
field_dict[\'description\'] = original_field.get_value("description")\n
field_dict[\'enabled\'] = original_field.get_value("enabled")\n
field_dict[\'title\'] = original_field.get_value("title")\n
field_dict[\'required\'] = original_field.is_required()\n
field_dict[\'alternate_name\'] = original_field.get_value("alternate_name")\n
# XXX: some fields have display_width some not (improve)\n
try:\n
field_dict[\'display_width\'] = original_field.get_value("display_width")\n
except:\n
field_dict[\'display_width\'] = None\n
\n
# XXX: DateTime not serialize-able (see Base_viewMetaData)?\n
# in what format to transfer to client renderjs.js ? (seconds sinc eepoch?)\n
if field_meta_type in ["DateTimeField"]:\n
if field_value not in MARKER:\n
field_value = field_value.strftime("%Y/%m/%d")\n
field_dict[\'editable\'] = 0 # XXX: we have not implemented it yet at client side\n
\n
# listbox\n
if field_meta_type in ["ListBox"]:\n
field_dict[\'listbox\'] = {}\n
field_dict[\'listbox\'][\'lines\'] = original_field.get_value("lines")\n
field_dict[\'listbox\'][\'columns\'] = [x for x in original_field.get_value("columns")]\n
field_dict[\'listbox\'][\'listbox_data_url\'] = "Listbox_asJSON"\n
\n
if field_meta_type in LIST_FIELDS:\n
# form contains selects, pass list of selects\' values and calculate default one?\n
field_dict[\'items\'] = original_field.get_value("items")\n
\n
if field_meta_type in ["FormBox"]:\n
# this is a special case as this field is part of another form\'s fields\n
formbox_target_id = original_field.get_value("formbox_target_id")\n
formbox_form = getattr(context, formbox_target_id)\n
# get all values\n
for formbox_field_id in formbox_form.get_field_ids():\n
formbox_field_id_field = getattr(formbox_form, formbox_field_id)\n
field_value = formbox_field_id_field.get_value("default") # only last wins ?\n
\n
\n
# add field value\n
field_dict[\'value\'] = field_value\n
context.log(\'%s %s\' %(original_field.getId(), field_dict))\n
\n
return dumps(result)\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>form_id=None</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Form_asJSON</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="group_list here/Form_getGroupTitleAndId;\n
form_id here/getId;">\n
\n
<tal:block tal:repeat="group group_list">\n
\n
<tal:block tal:define="gid group/gid;">\n
\n
<fieldset tal:attributes="class python:gid +\' editable\';">\n
\n
<tal:block tal:repeat="field python: here.get_fields_in_group(group[\'goid\'])">\n
\n
<tal:block tal:define="title field/title;\n
field_name python: \'field_%s\' %field.getId();\n
proxied_field python: test(field.meta_type==\'ProxyField\', field.getRecursiveTemplateField(), field);\n
field_type python: proxied_field.meta_type;">\n
\n
<div class="field">\n
<label tal:content="title"/>\n
<div class="input">\n
\n
<!-- <span tal:replace="structure python: getattr(here.gadgets.form, field_type).gadget(field_name=field_name)"/> -->\n
\n
<!-- XXX: render gadget asynchronously -->\n
<div tal:attributes="gadget string:gadgets/form/${field_type}/gadget?field_name=${field_name};\n
gadget:property string: {&quot;cacheable&quot;: &quot;1&quot;, &quot;cache_id&quot;: &quot;${form_id}_${field_name}&quot;}"></div>\n
\n
</div>\n
</div>\n
\n
</tal:block>\n
\n
</tal:block>\n
\n
</fieldset>\n
\n
</tal:block>\n
\n
</tal:block>\n
\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Form_asRenderJSGadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>"""\n
Save form on context.\n
"""\n
from json import dumps\n
from Products.Formulator.Errors import FormValidationError\n
from Products.CMFActivity.Errors import ActivityPendingError\n
\n
request = context.REQUEST\n
\n
# Prevent users who don\'t have rights to edit the object from\n
# editing it by calling the Base_edit script with correct\n
# parameters directly.\n
# XXX: implement it (above)\n
\n
# Get the form\n
form = getattr(context,form_id)\n
edit_order = form.edit_order\n
\n
try:\n
# Validate\n
form.validate_all_to_request(request, key_prefix=key_prefix)\n
except FormValidationError, validation_errors:\n
# Pack errors into the request\n
result = {}\n
result[\'field_errors\'] = {}\n
field_errors = form.ErrorFields(validation_errors)\n
for key, value in field_errors.items():\n
result[\'field_errors\'][key] = value.error_text\n
return dumps(result)\n
\n
(kw, encapsulated_editor_list), action = context.Base_edit(form_id, silent_mode=1)\n
context.log(\'%s %s\' %(kw, encapsulated_editor_list))\n
\n
context.edit(REQUEST=request, edit_order=edit_order, **kw)\n
for encapsulated_editor in encapsulated_editor_list:\n
encapsulated_editor.edit(context)\n
\n
# XXX: consider some kind of protocol ?\n
return dumps({})\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>form_id, key_prefix = None, **kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Form_save</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
from json import dumps\n
\n
REQUEST = context.REQUEST\n
form = getattr(context, form_id)\n
listbox = getattr(form, listbox_id)\n
lines = listbox.get_value("lines")\n
columns = listbox.get_value("columns")\n
listbox_renderer = context.getListBoxRenderer(listbox, REQUEST)\n
\n
# listbox pagination for jqgrid\n
# XXX: jqgrid always sends page which makes server side slection be resetted\n
selection_name = listbox.get_value("selection_name")\n
page = REQUEST.get("page")\n
if page is not None:\n
page = int(page)\n
REQUEST.form[\'page_start\'] = page\n
context.portal_selections.setPage(list_selection_name=selection_name, \\\n
listbox_uid=[],\n
REQUEST=REQUEST)\n
#context.log ("Set page = %s %s" %(page, selection_name))\n
\n
row_list= []\n
line_list = listbox_renderer.query()\n
for line in line_list:\n
value_line = line.getValueList() \n
row = {"id": value_line[0][0],\n
"cell": [x[1] for x in value_line]}\n
row_list.append(row)\n
\n
# return real listbox data here by using form and context\n
listbox_max_lines = int(listbox_renderer.getMaxLineNumber())\n
total_pages = listbox_renderer.total_pages\n
total_line = int(listbox_renderer.total_size)\n
current_page = int(listbox_renderer.current_page) + 1\n
current_page_max = listbox_max_lines * current_page\n
current_page_start = (listbox_max_lines * (current_page - 1)) + 1\n
current_page_stop = (total_line < current_page_max) and total_line or current_page_max\n
\n
\n
#context.log("%s %s %s %s %s %s" %(listbox_max_lines, total_line, current_page,\n
# current_page_max, current_page_start, current_page_stop))\n
\n
json = {"page": current_page,\n
"total": total_pages,\n
"records": total_line,\n
"rows":row_list}\n
\n
return dumps(json)\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>form_id, listbox_id="listbox"</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Listbox_asJSON</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<!doctype html>\n
\n
<!--[if lt IE 7 ]> <html class="ie ie6 no-js" lang="en"> <![endif]-->\n
<!--[if IE 7 ]> <html class="ie ie7 no-js" lang="en"> <![endif]-->\n
<!--[if IE 8 ]> <html class="ie ie8 no-js" lang="en"> <![endif]-->\n
<!--[if IE 9 ]> <html class="ie ie9 no-js" lang="en"> <![endif]-->\n
<!--[if gt IE 9]><!--><html class="no-js" lang="en"><!--<![endif]-->\n
<!-- the "no-js" class is for Modernizr. -->\n
\n
<head id="www-sitename-com" data-template-set="html5-reset">\n
\n
\t<meta charset="utf-8">\n
\t\n
\t<!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame -->\n
\t<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">\n
\t\n
\t<title></title>\n
\t\n
\t<meta name="title" content="">\n
\t<meta name="description" content="">\n
\t<!-- Google will often use this as its description of your page/site. Make it good. -->\n
\t\n
\t<meta name="google-site-verification" content="">\n
\t<!-- Speaking of Google, don\'t forget to set your site up: http://google.com/webmasters -->\n
\t\n
\t<meta name="author" content="Your Name Here">\n
\t<meta name="Copyright" content="Copyright Your Name Here 2011. All Rights Reserved.">\n
\n
\t<!-- Dublin Core Metadata : http://dublincore.org/ -->\n
\t<meta name="DC.title" content="Project Name">\n
\t<meta name="DC.subject" content="What you\'re about.">\n
\t<meta name="DC.creator" content="Who made this site.">\n
\t\n
\t<!-- Mobile Viewport Fix\n
\tj.mp/mobileviewport & davidbcalhoun.com/2010/viewport-metatag \n
\tdevice-width : Occupy full width of the screen in its current orientation\n
\tinitial-scale = 1.0 retains dimensions instead of zooming out if page height > device height\n
\tmaximum-scale = 1.0 retains dimensions instead of zooming in if page width < device width\n
\t-->\n
\t<!-- Uncomment to use Ñ use thoughtfully!\n
\t<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;">\n
\t-->\n
\n
\t<link rel="shortcut icon" href="favicon.ico">\n
\t<!-- This is the traditional favicon.\n
\t\t - size: 16x16 or 32x32\n
\t\t - transparency is OK\n
\t\t - see wikipedia for info on browser support: http://mky.be/favicon/ -->\n
\t\n
\n
</head>\n
\n
<body>\n
\n
\n
<!-- Gadget layout start here -->\n
<div id="application" gadget="gadgets/application/gadget"\n
gadget:property="{}"></div>\n
\n
<!-- here comes the javascript -->\n
<script src="jquery/core/jquery.js"></script>\n
\n
<!-- Gadget library goes here -->\n
<script src="renderjs.js"></script>\n
\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Person_viewAsHTML5</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>datetimepicker</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>XXX: use for DateTimeField</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts31305096.43</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>jquery-ui-timepicker-addon.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="cdata"><![CDATA[
/*\r\n
* jQuery timepicker addon\r\n
* By: Trent Richardson [http://trentrichardson.com]\r\n
* Version 0.9.9\r\n
* Last Modified: 02/05/2012\r\n
* \r\n
* Copyright 2012 Trent Richardson\r\n
* Dual licensed under the MIT and GPL licenses.\r\n
* http://trentrichardson.com/Impromptu/GPL-LICENSE.txt\r\n
* http://trentrichardson.com/Impromptu/MIT-LICENSE.txt\r\n
* \r\n
* HERES THE CSS:\r\n
* .ui-timepicker-div .ui-widget-header { margin-bottom: 8px; }\r\n
* .ui-timepicker-div dl { text-align: left; }\r\n
* .ui-timepicker-div dl dt { height: 25px; margin-bottom: -25px; }\r\n
* .ui-timepicker-div dl dd { margin: 0 10px 10px 65px; }\r\n
* .ui-timepicker-div td { font-size: 90%; }\r\n
* .ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }\r\n
*/\r\n
\r\n
(function($) {\r\n
\r\n
$.extend($.ui, { timepicker: { version: "0.9.9" } });\r\n
\r\n
/* Time picker manager.\r\n
Use the singleton instance of this class, $.timepicker, to interact with the time picker.\r\n
Settings for (groups of) time pickers are maintained in an instance object,\r\n
allowing multiple different settings on the same page. */\r\n
\r\n
function Timepicker() {\r\n
\tthis.regional = []; // Available regional settings, indexed by language code\r\n
\tthis.regional[\'\'] = { // Default regional settings\r\n
\t\tcurrentText: \'Now\',\r\n
\t\tcloseText: \'Done\',\r\n
\t\tampm: false,\r\n
\t\tamNames: [\'AM\', \'A\'],\r\n
\t\tpmNames: [\'PM\', \'P\'],\r\n
\t\ttimeFormat: \'hh:mm tt\',\r\n
\t\ttimeSuffix: \'\',\r\n
\t\ttimeOnlyTitle: \'Choose Time\',\r\n
\t\ttimeText: \'Time\',\r\n
\t\thourText: \'Hour\',\r\n
\t\tminuteText: \'Minute\',\r\n
\t\tsecondText: \'Second\',\r\n
\t\tmillisecText: \'Millisecond\',\r\n
\t\ttimezoneText: \'Time Zone\'\r\n
\t};\r\n
\tthis._defaults = { // Global defaults for all the datetime picker instances\r\n
\t\tshowButtonPanel: true,\r\n
\t\ttimeOnly: false,\r\n
\t\tshowHour: true,\r\n
\t\tshowMinute: true,\r\n
\t\tshowSecond: false,\r\n
\t\tshowMillisec: false,\r\n
\t\tshowTimezone: false,\r\n
\t\tshowTime: true,\r\n
\t\tstepHour: 1,\r\n
\t\tstepMinute: 1,\r\n
\t\tstepSecond: 1,\r\n
\t\tstepMillisec: 1,\r\n
\t\thour: 0,\r\n
\t\tminute: 0,\r\n
\t\tsecond: 0,\r\n
\t\tmillisec: 0,\r\n
\t\ttimezone: \'+0000\',\r\n
\t\thourMin: 0,\r\n
\t\tminuteMin: 0,\r\n
\t\tsecondMin: 0,\r\n
\t\tmillisecMin: 0,\r\n
\t\thourMax: 23,\r\n
\t\tminuteMax: 59,\r\n
\t\tsecondMax: 59,\r\n
\t\tmillisecMax: 999,\r\n
\t\tminDateTime: null,\r\n
\t\tmaxDateTime: null,\r\n
\t\tonSelect: null,\r\n
\t\thourGrid: 0,\r\n
\t\tminuteGrid: 0,\r\n
\t\tsecondGrid: 0,\r\n
\t\tmillisecGrid: 0,\r\n
\t\talwaysSetTime: true,\r\n
\t\tseparator: \' \',\r\n
\t\taltFieldTimeOnly: true,\r\n
\t\tshowTimepicker: true,\r\n
\t\ttimezoneIso8609: false,\r\n
\t\ttimezoneList: null,\r\n
\t\taddSliderAccess: false,\r\n
\t\tsliderAccessArgs: null\r\n
\t};\r\n
\t$.extend(this._defaults, this.regional[\'\']);\r\n
};\r\n
\r\n
$.extend(Timepicker.prototype, {\r\n
\t$input: null,\r\n
\t$altInput: null,\r\n
\t$timeObj: null,\r\n
\tinst: null,\r\n
\thour_slider: null,\r\n
\tminute_slider: null,\r\n
\tsecond_slider: null,\r\n
\tmillisec_slider: null,\r\n
\ttimezone_select: null,\r\n
\thour: 0,\r\n
\tminute: 0,\r\n
\tsecond: 0,\r\n
\tmillisec: 0,\r\n
\ttimezone: \'+0000\',\r\n
\thourMinOriginal: null,\r\n
\tminuteMinOriginal: null,\r\n
\tsecondMinOriginal: null,\r\n
\tmillisecMinOriginal: null,\r\n
\thourMaxOriginal: null,\r\n
\tminuteMaxOriginal: null,\r\n
\tsecondMaxOriginal: null,\r\n
\tmillisecMaxOriginal: null,\r\n
\tampm: \'\',\r\n
\tformattedDate: \'\',\r\n
\tformattedTime: \'\',\r\n
\tformattedDateTime: \'\',\r\n
\ttimezoneList: null,\r\n
\r\n
\t/* Override the default settings for all instances of the time picker.\r\n
\t @param settings object - the new settings to use as defaults (anonymous object)\r\n
\t @return the manager object */\r\n
\tsetDefaults: function(settings) {\r\n
\t\textendRemove(this._defaults, settings || {});\r\n
\t\treturn this;\r\n
\t},\r\n
\r\n
\t//########################################################################\r\n
\t// Create a new Timepicker instance\r\n
\t//########################################################################\r\n
\t_newInst: function($input, o) {\r\n
\t\tvar tp_inst = new Timepicker(),\r\n
\t\t\tinlineSettings = {};\r\n
\t\t\t\r\n
\t\tfor (var attrName in this._defaults) {\r\n
\t\t\tvar attrValue = $input.attr(\'time:\' + attrName);\r\n
\t\t\tif (attrValue) {\r\n
\t\t\t\ttry {\r\n
\t\t\t\t\tinlineSettings[attrName] = eval(attrValue);\r\n
\t\t\t\t} catch (err) {\r\n
\t\t\t\t\tinlineSettings[attrName] = attrValue;\r\n
\t\t\t\t}\r\n
\t\t\t}\r\n
\t\t}\r\n
\t\ttp_inst._defaults = $.extend({}, this._defaults, inlineSettings, o, {\r\n
\t\t\tbeforeShow: function(input, dp_inst) {\r\n
\t\t\t\tif ($.isFunction(o.beforeShow))\r\n
\t\t\t\t\treturn o.beforeShow(input, dp_inst, tp_inst);\r\n
\t\t\t},\r\n
\t\t\tonChangeMonthYear: function(year, month, dp_inst) {\r\n
\t\t\t\t// Update the time as well : this prevents the time from disappearing from the $input field.\r\n
\t\t\t\ttp_inst._updateDateTime(dp_inst);\r\n
\t\t\t\tif ($.isFunction(o.onChangeMonthYear))\r\n
\t\t\t\t\to.onChangeMonthYear.call($input[0], year, month, dp_inst, tp_inst);\r\n
\t\t\t},\r\n
\t\t\tonClose: function(dateText, dp_inst) {\r\n
\t\t\t\tif (tp_inst.timeDefined === true && $input.val() != \'\')\r\n
\t\t\t\t\ttp_inst._updateDateTime(dp_inst);\r\n
\t\t\t\tif ($.isFunction(o.onClose))\r\n
\t\t\t\t\to.onClose.call($input[0], dateText, dp_inst, tp_inst);\r\n
\t\t\t},\r\n
\t\t\ttimepicker: tp_inst // add timepicker as a property of datepicker: $.datepicker._get(dp_inst, \'timepicker\');\r\n
\t\t});\r\n
\t\ttp_inst.amNames = $.map(tp_inst._defaults.amNames, function(val) { return val.toUpperCase() });\r\n
\t\ttp_inst.pmNames = $.map(tp_inst._defaults.pmNames, function(val) { return val.toUpperCase() });\r\n
\r\n
\t\tif (tp_inst._defaults.timezoneList === null) {\r\n
\t\t\tvar timezoneList = [];\r\n
\t\t\tfor (var i = -11; i <= 12; i++)\r\n
\t\t\t\ttimezoneList.push((i >= 0 ? \'+\' : \'-\') + (\'0\' + Math.abs(i).toString()).slice(-2) + \'00\');\r\n
\t\t\tif (tp_inst._defaults.timezoneIso8609)\r\n
\t\t\t\ttimezoneList = $.map(timezoneList, function(val) {\r\n
\t\t\t\t\treturn val == \'+0000\' ? \'Z\' : (val.substring(0, 3) + \':\' + val.substring(3));\r\n
\t\t\t\t});\r\n
\t\t\ttp_inst._defaults.timezoneList = timezoneList;\r\n
\t\t}\r\n
\r\n
\t\ttp_inst.hour = tp_inst._defaults.hour;\r\n
\t\ttp_inst.minute = tp_inst._defaults.minute;\r\n
\t\ttp_inst.second = tp_inst._defaults.second;\r\n
\t\ttp_inst.millisec = tp_inst._defaults.millisec;\r\n
\t\ttp_inst.ampm = \'\';\r\n
\t\ttp_inst.$input = $input;\r\n
\r\n
\t\tif (o.altField)\r\n
\t\t\ttp_inst.$altInput = $(o.altField)\r\n
\t\t\t\t.css({ cursor: \'pointer\' })\r\n
\t\t\t\t.focus(function(){ $input.trigger("focus"); });\r\n
\t\t\r\n
\t\tif(tp_inst._defaults.minDate==0 || tp_inst._defaults.minDateTime==0)\r\n
\t\t{\r\n
\t\t\ttp_inst._defaults.minDate=new Date();\r\n
\t\t}\r\n
\t\tif(tp_inst._defaults.maxDate==0 || tp_inst._defaults.maxDateTime==0)\r\n
\t\t{\r\n
\t\t\ttp_inst._defaults.maxDate=new Date();\r\n
\t\t}\r\n
\t\t\r\n
\t\t// datepicker needs minDate/maxDate, timepicker needs minDateTime/maxDateTime..\r\n
\t\tif(tp_inst._defaults.minDate !== undefined && tp_inst._defaults.minDate instanceof Date)\r\n
\t\t\ttp_inst._defaults.minDateTime = new Date(tp_inst._defaults.minDate.getTime());\r\n
\t\tif(tp_inst._defaults.minDateTime !== undefined && tp_inst._defaults.minDateTime instanceof Date)\r\n
\t\t\ttp_inst._defaults.minDate = new Date(tp_inst._defaults.minDateTime.getTime());\r\n
\t\tif(tp_inst._defaults.maxDate !== undefined && tp_inst._defaults.maxDate instanceof Date)\r\n
\t\t\ttp_inst._defaults.maxDateTime = new Date(tp_inst._defaults.maxDate.getTime());\r\n
\t\tif(tp_inst._defaults.maxDateTime !== undefined && tp_inst._defaults.maxDateTime instanceof Date)\r\n
\t\t\ttp_inst._defaults.maxDate = new Date(tp_inst._defaults.maxDateTime.getTime());\r\n
\t\treturn tp_inst;\r\n
\t},\r\n
\r\n
\t//########################################################################\r\n
\t// add our sliders to the calendar\r\n
\t//########################################################################\r\n
\t_addTimePicker: function(dp_inst) {\r\n
\t\tvar currDT = (this.$altInput && this._defaults.altFieldTimeOnly) ?\r\n
\t\t\t\tthis.$input.val() + \' \' + this.$altInput.val() : \r\n
\t\t\t\tthis.$input.val();\r\n
\r\n
\t\tthis.timeDefined = this._parseTime(currDT);\r\n
\t\tthis._limitMinMaxDateTime(dp_inst, false);\r\n
\t\tthis._injectTimePicker();\r\n
\t},\r\n
\r\n
\t//########################################################################\r\n
\t// parse the time string from input value or _setTime\r\n
\t//########################################################################\r\n
\t_parseTime: function(timeString, withDate) {\r\n
\t\tvar regstr = this._defaults.timeFormat.toString()\r\n
\t\t\t\t.replace(/h{1,2}/ig, \'(\\\\d?\\\\d)\')\r\n
\t\t\t\t.replace(/m{1,2}/ig, \'(\\\\d?\\\\d)\')\r\n
\t\t\t\t.replace(/s{1,2}/ig, \'(\\\\d?\\\\d)\')\r\n
\t\t\t\t.replace(/l{1}/ig, \'(\\\\d?\\\\d?\\\\d)\')\r\n
\t\t\t\t.replace(/t{1,2}/ig, this._getPatternAmpm())\r\n
\t\t\t\t.replace(/z{1}/ig, \'(z|[-+]\\\\d\\\\d:?\\\\d\\\\d)?\')\r\n
\t\t\t\t.replace(/\\s/g, \'\\\\s?\') + this._defaults.timeSuffix + \'$\',\r\n
\t\t\torder = this._getFormatPositions(),\r\n
\t\t\tampm = \'\',\r\n
\t\t\ttreg;\r\n
\r\n
\t\tif (!this.inst) this.inst = $.datepicker._getInst(this.$input[0]);\r\n
\r\n
\t\tif (withDate || !this._defaults.timeOnly) {\r\n
\t\t\t// the time should come after x number of characters and a space.\r\n
\t\t\t// x = at least the length of text specified by the date format\r\n
\t\t\tvar dp_dateFormat = $.datepicker._get(this.inst, \'dateFormat\');\r\n
\t\t\t// escape special regex characters in the seperator\r\n
\t\t\tvar specials = new RegExp("[.*+?|()\\\\[\\\\]{}\\\\\\\\]", "g");\r\n
\t\t\tregstr = \'^.{\' + dp_dateFormat.length + \',}?\' + this._defaults.separator.replace(specials, "\\\\$&") + regstr;\r\n
\t\t}\r\n
\t\t\r\n
\t\ttreg = timeString.match(new RegExp(regstr, \'i\'));\r\n
\r\n
\t\tif (treg) {\r\n
\t\t\tif (order.t !== -1) {\r\n
\t\t\t\tif (treg[order.t] === undefined || treg[order.t].length === 0) {\r\n
\t\t\t\t\tampm = \'\';\r\n
\t\t\t\t\tthis.ampm = \'\';\r\n
\t\t\t\t} else {\r\n
\t\t\t\t\tampm = $.inArray(treg[order.t].toUpperCase(), this.amNames) !== -1 ? \'AM\' : \'PM\';\r\n
\t\t\t\t\tthis.ampm = this._defaults[ampm == \'AM\' ? \'amNames\' : \'pmNames\'][0];\r\n
\t\t\t\t}\r\n
\t\t\t}\r\n
\r\n
\t\t\tif (order.h !== -1) {\r\n
\t\t\t\tif (ampm == \'AM\' && treg[order.h] == \'12\')\r\n
\t\t\t\t\tthis.hour = 0; // 12am = 0 hour\r\n
\t\t\t\telse if (ampm == \'PM\' && treg[order.h] != \'12\')\r\n
\t\t\t\t\tthis.hour = (parseFloat(treg[order.h]) + 12).toFixed(0); // 12pm = 12 hour, any other pm = hour + 12\r\n
\t\t\t\telse this.hour = Number(treg[order.h]);\r\n
\t\t\t}\r\n
\r\n
\t\t\tif (order.m !== -1) this.minute = Number(treg[order.m]);\r\n
\t\t\tif (order.s !== -1) this.second = Number(treg[order.s]);\r\n
\t\t\tif (order.l !== -1) this.millisec = Number(treg[order.l]);\r\n
\t\t\tif (order.z !== -1 && treg[order.z] !== undefined) {\r\n
\t\t\t\tvar tz = treg[order.z].toUpperCase();\r\n
\t\t\t\tswitch (tz.length) {\r\n
\t\t\t\tcase 1:\t// Z\r\n
\t\t\t\t\ttz = this._defaults.timezoneIso8609 ? \'Z\' : \'+0000\';\r\n
\t\t\t\t\tbreak;\r\n
\t\t\t\tcase 5:\t// +hhmm\r\n
\t\t\t\t\tif (this._defaults.timezoneIso8609)\r\n
\t\t\t\t\t\ttz = tz.substring(1) == \'0000\'\r\n
\t\t\t\t\t\t ? \'Z\'\r\n
\t\t\t\t\t\t : tz.substring(0, 3) + \':\' + tz.substring(3);\r\n
\t\t\t\t\tbreak;\r\n
\t\t\t\tcase 6:\t// +hh:mm\r\n
\t\t\t\t\tif (!this._defaults.timezoneIso8609)\r\n
\t\t\t\t\t\ttz = tz == \'Z\' || tz.substring(1) == \'00:00\'\r\n
\t\t\t\t\t\t ? \'+0000\'\r\n
\t\t\t\t\t\t : tz.replace(/:/, \'\');\r\n
\t\t\t\t\telse if (tz.substring(1) == \'00:00\')\r\n
\t\t\t\t\t\ttz = \'Z\';\r\n
\t\t\t\t\tbreak;\r\n
\t\t\t\t}\r\n
\t\t\t\tthis.timezone = tz;\r\n
\t\t\t}\r\n
\t\t\t\r\n
\t\t\treturn true;\r\n
\r\n
\t\t}\r\n
\t\treturn false;\r\n
\t},\r\n
\r\n
\t//########################################################################\r\n
\t// pattern for standard and localized AM/PM markers\r\n
\t//########################################################################\r\n
\t_getPatternAmpm: function() {\r\n
\t\tvar markers = [];\r\n
\t\t\to = this._defaults;\r\n
\t\tif (o.amNames)\r\n
\t\t\t$.merge(markers, o.amNames);\r\n
\t\tif (o.pmNames)\r\n
\t\t\t$.merge(markers, o.pmNames);\r\n
\t\tmarkers = $.map(markers, function(val) { return val.replace(/[.*+?|()\\[\\]{}\\\\]/g, \'\\\\$&\') });\r\n
\t\treturn \'(\' + markers.join(\'|\') + \')?\';\r\n
\t},\r\n
\r\n
\t//########################################################################\r\n
\t// figure out position of time elements.. cause js cant do named captures\r\n
\t//########################################################################\r\n
\t_getFormatPositions: function() {\r\n
\t\tvar finds = this._defaults.timeFormat.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|t{1,2}|z)/g),\r\n
\t\t\torders = { h: -1, m: -1, s: -1, l: -1, t: -1, z: -1 };\r\n
\r\n
\t\tif (finds)\r\n
\t\t\tfor (var i = 0; i < finds.length; i++)\r\n
\t\t\t\tif (orders[finds[i].toString().charAt(0)] == -1)\r\n
\t\t\t\t\torders[finds[i].toString().charAt(0)] = i + 1;\r\n
\r\n
\t\treturn orders;\r\n
\t},\r\n
\r\n
\t//########################################################################\r\n
\t// generate and inject html for timepicker into ui datepicker\r\n
\t//########################################################################\r\n
\t_injectTimePicker: function() {\r\n
\t\tvar $dp = this.inst.dpDiv,\r\n
\t\t\to = this._defaults,\r\n
\t\t\ttp_inst = this,\r\n
\t\t\t// Added by Peter Medeiros:\r\n
\t\t\t// - Figure out what the hour/minute/second max should be based on the step values.\r\n
\t\t\t// - Example: if stepMinute is 15, then minMax is 45.\r\n
\t\t\thourMax = parseInt((o.hourMax - ((o.hourMax - o.hourMin) % o.stepHour)) ,10),\r\n
\t\t\tminMax = parseInt((o.minuteMax - ((o.minuteMax - o.minuteMin) % o.stepMinute)) ,10),\r\n
\t\t\tsecMax = parseInt((o.secondMax - ((o.secondMax - o.secondMin) % o.stepSecond)) ,10),\r\n
\t\t\tmillisecMax = parseInt((o.millisecMax - ((o.millisecMax - o.millisecMin) % o.stepMillisec)) ,10),\r\n
\t\t\tdp_id = this.inst.id.toString().replace(/([^A-Za-z0-9_])/g, \'\');\r\n
\r\n
\t\t// Prevent displaying twice\r\n
\t\t//if ($dp.find("div#ui-timepicker-div-"+ dp_id).length === 0) {\r\n
\t\tif ($dp.find("div#ui-timepicker-div-"+ dp_id).length === 0 && o.showTimepicker) {\r\n
\t\t\tvar noDisplay = \' style="display:none;"\',\r\n
\t\t\t\thtml =\t\'<div class="ui-timepicker-div" id="ui-timepicker-div-\' + dp_id + \'"><dl>\' +\r\n
\t\t\t\t\t\t\'<dt class="ui_tpicker_time_label" id="ui_tpicker_time_label_\' + dp_id + \'"\' +\r\n
\t\t\t\t\t\t((o.showTime) ? \'\' : noDisplay) + \'>\' + o.timeText + \'</dt>\' +\r\n
\t\t\t\t\t\t\'<dd class="ui_tpicker_time" id="ui_tpicker_time_\' + dp_id + \'"\' +\r\n
\t\t\t\t\t\t((o.showTime) ? \'\' : noDisplay) + \'></dd>\' +\r\n
\t\t\t\t\t\t\'<dt class="ui_tpicker_hour_label" id="ui_tpicker_hour_label_\' + dp_id + \'"\' +\r\n
\t\t\t\t\t\t((o.showHour) ? \'\' : noDisplay) + \'>\' + o.hourText + \'</dt>\',\r\n
\t\t\t\thourGridSize = 0,\r\n
\t\t\t\tminuteGridSize = 0,\r\n
\t\t\t\tsecondGridSize = 0,\r\n
\t\t\t\tmillisecGridSize = 0,\r\n
\t\t\t\tsize;\r\n
\r\n
\t\t\t// Hours\r\n
\t\t\thtml += \'<dd class="ui_tpicker_hour"><div id="ui_tpicker_hour_\' + dp_id + \'"\' +\r\n
\t\t\t\t\t\t((o.showHour) ? \'\' : noDisplay) + \'></div>\';\r\n
\t\t\tif (o.showHour && o.hourGrid > 0) {\r\n
\t\t\t\thtml += \'<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>\';\r\n
\r\n
\t\t\t\tfor (var h = o.hourMin; h <= hourMax; h += parseInt(o.hourGrid,10)) {\r\n
\t\t\t\t\thourGridSize++;\r\n
\t\t\t\t\tvar tmph = (o.ampm && h > 12) ? h-12 : h;\r\n
\t\t\t\t\tif (tmph < 10) tmph = \'0\' + tmph;\r\n
\t\t\t\t\tif (o.ampm) {\r\n
\t\t\t\t\t\tif (h == 0) tmph = 12 +\'a\';\r\n
\t\t\t\t\t\telse if (h < 12) tmph += \'a\';\r\n
\t\t\t\t\t\telse tmph += \'p\';\r\n
\t\t\t\t\t}\r\n
\t\t\t\t\thtml += \'<td>\' + tmph + \'</td>\';\r\n
\t\t\t\t}\r\n
\r\n
\t\t\t\thtml += \'</tr></table></div>\';\r\n
\t\t\t}\r\n
\t\t\thtml += \'</dd>\';\r\n
\r\n
\t\t\t// Minutes\r\n
\t\t\thtml += \'<dt class="ui_tpicker_minute_label" id="ui_tpicker_minute_label_\' + dp_id + \'"\' +\r\n
\t\t\t\t\t((o.showMinute) ? \'\' : noDisplay) + \'>\' + o.minuteText + \'</dt>\'+\r\n
\t\t\t\t\t\'<dd class="ui_tpicker_minute"><div id="ui_tpicker_minute_\' + dp_id + \'"\' +\r\n
\t\t\t\t\t\t\t((o.showMinute) ? \'\' : noDisplay) + \'></div>\';\r\n
\r\n
\t\t\tif (o.showMinute && o.minuteGrid > 0) {\r\n
\t\t\t\thtml += \'<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>\';\r\n
\r\n
\t\t\t\tfor (var m = o.minuteMin; m <= minMax; m += parseInt(o.minuteGrid,10)) {\r\n
\t\t\t\t\tminuteGridSize++;\r\n
\t\t\t\t\thtml += \'<td>\' + ((m < 10) ? \'0\' : \'\') + m + \'</td>\';\r\n
\t\t\t\t}\r\n
\r\n
\t\t\t\thtml += \'</tr></table></div>\';\r\n
\t\t\t}\r\n
\t\t\thtml += \'</dd>\';\r\n
\r\n
\t\t\t// Seconds\r\n
\t\t\thtml += \'<dt class="ui_tpicker_second_label" id="ui_tpicker_second_label_\' + dp_id + \'"\' +\r\n
\t\t\t\t\t((o.showSecond) ? \'\' : noDisplay) + \'>\' + o.secondText + \'</dt>\'+\r\n
\t\t\t\t\t\'<dd class="ui_tpicker_second"><div id="ui_tpicker_second_\' + dp_id + \'"\'+\r\n
\t\t\t\t\t\t\t((o.showSecond) ? \'\' : noDisplay) + \'></div>\';\r\n
\r\n
\t\t\tif (o.showSecond && o.secondGrid > 0) {\r\n
\t\t\t\thtml += \'<div style="padding-left: 1px"><table><tr>\';\r\n
\r\n
\t\t\t\tfor (var s = o.secondMin; s <= secMax; s += parseInt(o.secondGrid,10)) {\r\n
\t\t\t\t\tsecondGridSize++;\r\n
\t\t\t\t\thtml += \'<td>\' + ((s < 10) ? \'0\' : \'\') + s + \'</td>\';\r\n
\t\t\t\t}\r\n
\r\n
\t\t\t\thtml += \'</tr></table></div>\';\r\n
\t\t\t}\r\n
\t\t\thtml += \'</dd>\';\r\n
\r\n
\t\t\t// Milliseconds\r\n
\t\t\thtml += \'<dt class="ui_tpicker_millisec_label" id="ui_tpicker_millisec_label_\' + dp_id + \'"\' +\r\n
\t\t\t\t\t((o.showMillisec) ? \'\' : noDisplay) + \'>\' + o.millisecText + \'</dt>\'+\r\n
\t\t\t\t\t\'<dd class="ui_tpicker_millisec"><div id="ui_tpicker_millisec_\' + dp_id + \'"\'+\r\n
\t\t\t\t\t\t\t((o.showMillisec) ? \'\' : noDisplay) + \'></div>\';\r\n
\r\n
\t\t\tif (o.showMillisec && o.millisecGrid > 0) {\r\n
\t\t\t\thtml += \'<div style="padding-left: 1px"><table><tr>\';\r\n
\r\n
\t\t\t\tfor (var l = o.millisecMin; l <= millisecMax; l += parseInt(o.millisecGrid,10)) {\r\n
\t\t\t\t\tmillisecGridSize++;\r\n
\t\t\t\t\thtml += \'<td>\' + ((l < 10) ? \'0\' : \'\') + l + \'</td>\';\r\n
\t\t\t\t}\r\n
\r\n
\t\t\t\thtml += \'</tr></table></div>\';\r\n
\t\t\t}\r\n
\t\t\thtml += \'</dd>\';\r\n
\r\n
\t\t\t// Timezone\r\n
\t\t\thtml += \'<dt class="ui_tpicker_timezone_label" id="ui_tpicker_timezone_label_\' + dp_id + \'"\' +\r\n
\t\t\t\t\t((o.showTimezone) ? \'\' : noDisplay) + \'>\' + o.timezoneText + \'</dt>\';\r\n
\t\t\thtml += \'<dd class="ui_tpicker_timezone" id="ui_tpicker_timezone_\' + dp_id + \'"\'\t+\r\n
\t\t\t\t\t\t\t((o.showTimezone) ? \'\' : noDisplay) + \'></dd>\';\r\n
\r\n
\t\t\thtml += \'</dl></div>\';\r\n
\t\t\t$tp = $(html);\r\n
\r\n
\t\t\t\t// if we only want time picker...\r\n
\t\t\tif (o.timeOnly === true) {\r\n
\t\t\t\t$tp.prepend(\r\n
\t\t\t\t\t\'<div class="ui-widget-header ui-helper-clearfix ui-corner-all">\' +\r\n
\t\t\t\t\t\t\'<div class="ui-datepicker-title">\' + o.timeOnlyTitle + \'</div>\' +\r\n
\t\t\t\t\t\'</div>\');\r\n
\t\t\t\t$dp.find(\'.ui-datepicker-header, .ui-datepicker-calendar\').hide();\r\n
\t\t\t}\r\n
\r\n
\t\t\tthis.hour_slider = $tp.find(\'#ui_tpicker_hour_\'+ dp_id).slider({\r\n
\t\t\t\torientation: "horizontal",\r\n
\t\t\t\tvalue: this.hour,\r\n
\t\t\t\tmin: o.hourMin,\r\n
\t\t\t\tmax: hourMax,\r\n
\t\t\t\tstep: o.stepHour,\r\n
\t\t\t\tslide: function(event, ui) {\r\n
\t\t\t\t\ttp_inst.hour_slider.slider( "option", "value", ui.value);\r\n
\t\t\t\t\ttp_inst._onTimeChange();\r\n
\t\t\t\t}\r\n
\t\t\t});\r\n
\r\n
\t\t\t\r\n
\t\t\t// Updated by Peter Medeiros:\r\n
\t\t\t// - Pass in Event and UI instance into slide function\r\n
\t\t\tthis.minute_slider = $tp.find(\'#ui_tpicker_minute_\'+ dp_id).slider({\r\n
\t\t\t\torientation: "horizontal",\r\n
\t\t\t\tvalue: this.minute,\r\n
\t\t\t\tmin: o.minuteMin,\r\n
\t\t\t\tmax: minMax,\r\n
\t\t\t\tstep: o.stepMinute,\r\n
\t\t\t\tslide: function(event, ui) {\r\n
\t\t\t\t\ttp_inst.minute_slider.slider( "option", "value", ui.value);\r\n
\t\t\t\t\ttp_inst._onTimeChange();\r\n
\t\t\t\t}\r\n
\t\t\t});\r\n
\r\n
\t\t\tthis.second_slider = $tp.find(\'#ui_tpicker_second_\'+ dp_id).slider({\r\n
\t\t\t\torientation: "horizontal",\r\n
\t\t\t\tvalue: this.second,\r\n
\t\t\t\tmin: o.secondMin,\r\n
\t\t\t\tmax: secMax,\r\n
\t\t\t\tstep: o.stepSecond,\r\n
\t\t\t\tslide: function(event, ui) {\r\n
\t\t\t\t\ttp_inst.second_slider.slider( "option", "value", ui.value);\r\n
\t\t\t\t\ttp_inst._onTimeChange();\r\n
\t\t\t\t}\r\n
\t\t\t});\r\n
\r\n
\t\t\tthis.millisec_slider = $tp.find(\'#ui_tpicker_millisec_\'+ dp_id).slider({\r\n
\t\t\t\torientation: "horizontal",\r\n
\t\t\t\tvalue: this.millisec,\r\n
\t\t\t\tmin: o.millisecMin,\r\n
\t\t\t\tmax: millisecMax,\r\n
\t\t\t\tstep: o.stepMillisec,\r\n
\t\t\t\tslide: function(event, ui) {\r\n
\t\t\t\t\ttp_inst.millisec_slider.slider( "option", "value", ui.value);\r\n
\t\t\t\t\ttp_inst._onTimeChange();\r\n
\t\t\t\t}\r\n
\t\t\t});\r\n
\r\n
\t\t\tthis.timezone_select = $tp.find(\'#ui_tpicker_timezone_\'+ dp_id).append(\'<select></select>\').find("select");\r\n
\t\t\t$.fn.append.apply(this.timezone_select,\r\n
\t\t\t\t$.map(o.timezoneList, function(val, idx) {\r\n
\t\t\t\t\treturn $("<option />")\r\n
\t\t\t\t\t\t.val(typeof val == "object" ? val.value : val)\r\n
\t\t\t\t\t\t.text(typeof val == "object" ? val.label : val);\r\n
\t\t\t\t})\r\n
\t\t\t);\r\n
\t\t\tthis.timezone_select.val((typeof this.timezone != "undefined" && this.timezone != null && this.timezone != "") ? this.timezone : o.timezone);\r\n
\t\t\tthis.timezone_select.change(function() {\r\n
\t\t\t\ttp_inst._onTimeChange();\r\n
\t\t\t});\r\n
\r\n
\t\t\t// Add grid functionality\r\n
\t\t\tif (o.showHour && o.hourGrid > 0) {\r\n
\t\t\t\tsize = 100 * hourGridSize * o.hourGrid / (hourMax - o.hourMin);\r\n
\r\n
\t\t\t\t$tp.find(".ui_tpicker_hour table").css({\r\n
\t\t\t\t\twidth: size + "%",\r\n
\t\t\t\t\tmarginLeft: (size / (-2 * hourGridSize)) + "%",\r\n
\t\t\t\t\tborderCollapse: \'collapse\'\r\n
\t\t\t\t}).find("td").each( function(index) {\r\n
\t\t\t\t\t$(this).click(function() {\r\n
\t\t\t\t\t\tvar h = $(this).html();\r\n
\t\t\t\t\t\tif(o.ampm)\t{\r\n
\t\t\t\t\t\t\tvar ap = h.substring(2).toLowerCase(),\r\n
\t\t\t\t\t\t\t\taph = parseInt(h.substring(0,2), 10);\r\n
\t\t\t\t\t\t\tif (ap == \'a\') {\r\n
\t\t\t\t\t\t\t\tif (aph == 12) h = 0;\r\n
\t\t\t\t\t\t\t\telse h = aph;\r\n
\t\t\t\t\t\t\t} else if (aph == 12) h = 12;\r\n
\t\t\t\t\t\t\telse h = aph + 12;\r\n
\t\t\t\t\t\t}\r\n
\t\t\t\t\t\ttp_inst.hour_slider.slider("option", "value", h);\r\n
\t\t\t\t\t\ttp_inst._onTimeChange();\r\n
\t\t\t\t\t\ttp_inst._onSelectHandler();\r\n
\t\t\t\t\t}).css({\r\n
\t\t\t\t\t\tcursor: \'pointer\',\r\n
\t\t\t\t\t\twidth: (100 / hourGridSize) + \'%\',\r\n
\t\t\t\t\t\ttextAlign: \'center\',\r\n
\t\t\t\t\t\toverflow: \'hidden\'\r\n
\t\t\t\t\t});\r\n
\t\t\t\t});\r\n
\t\t\t}\r\n
\r\n
\t\t\tif (o.showMinute && o.minuteGrid > 0) {\r\n
\t\t\t\tsize = 100 * minuteGridSize * o.minuteGrid / (minMax - o.minuteMin);\r\n
\t\t\t\t$tp.find(".ui_tpicker_minute table").css({\r\n
\t\t\t\t\twidth: size + "%",\r\n
\t\t\t\t\tmarginLeft: (size / (-2 * minuteGridSize)) + "%",\r\n
\t\t\t\t\tborderCollapse: \'collapse\'\r\n
\t\t\t\t}).find("td").each(function(index) {\r\n
\t\t\t\t\t$(this).click(function() {\r\n
\t\t\t\t\t\ttp_inst.minute_slider.slider("option", "value", $(this).html());\r\n
\t\t\t\t\t\ttp_inst._onTimeChange();\r\n
\t\t\t\t\t\ttp_inst._onSelectHandler();\r\n
\t\t\t\t\t}).css({\r\n
\t\t\t\t\t\tcursor: \'pointer\',\r\n
\t\t\t\t\t\twidth: (100 / minuteGridSize) + \'%\',\r\n
\t\t\t\t\t\ttextAlign: \'center\',\r\n
\t\t\t\t\t\toverflow: \'hidden\'\r\n
\t\t\t\t\t});\r\n
\t\t\t\t});\r\n
\t\t\t}\r\n
\r\n
\t\t\tif (o.showSecond && o.secondGrid > 0) {\r\n
\t\t\t\t$tp.find(".ui_tpicker_second table").css({\r\n
\t\t\t\t\twidth: size + "%",\r\n
\t\t\t\t\tmarginLeft: (size / (-2 * secondGridSize)) + "%",\r\n
\t\t\t\t\tborderCollapse: \'collapse\'\r\n
\t\t\t\t}).find("td").each(function(index) {\r\n
\t\t\t\t\t$(this).click(function() {\r\n
\t\t\t\t\t\ttp_inst.second_slider.slider("option", "value", $(this).html());\r\n
\t\t\t\t\t\ttp_inst._onTimeChange();\r\n
\t\t\t\t\t\ttp_inst._onSelectHandler();\r\n
\t\t\t\t\t}).css({\r\n
\t\t\t\t\t\tcursor: \'pointer\',\r\n
\t\t\t\t\t\twidth: (100 / secondGridSize) + \'%\',\r\n
\t\t\t\t\t\ttextAlign: \'center\',\r\n
\t\t\t\t\t\toverflow: \'hidden\'\r\n
\t\t\t\t\t});\r\n
\t\t\t\t});\r\n
\t\t\t}\r\n
\r\n
\t\t\tif (o.showMillisec && o.millisecGrid > 0) {\r\n
\t\t\t\t$tp.find(".ui_tpicker_millisec table").css({\r\n
\t\t\t\t\twidth: size + "%",\r\n
\t\t\t\t\tmarginLeft: (size / (-2 * millisecGridSize)) + "%",\r\n
\t\t\t\t\tborderCollapse: \'collapse\'\r\n
\t\t\t\t}).find("td").each(function(index) {\r\n
\t\t\t\t\t$(this).click(function() {\r\n
\t\t\t\t\t\ttp_inst.millisec_slider.slider("option", "value", $(this).html());\r\n
\t\t\t\t\t\ttp_inst._onTimeChange();\r\n
\t\t\t\t\t\ttp_inst._onSelectHandler();\r\n
\t\t\t\t\t}).css({\r\n
\t\t\t\t\t\tcursor: \'pointer\',\r\n
\t\t\t\t\t\twidth: (100 / millisecGridSize) + \'%\',\r\n
\t\t\t\t\t\ttextAlign: \'center\',\r\n
\t\t\t\t\t\toverflow: \'hidden\'\r\n
\t\t\t\t\t});\r\n
\t\t\t\t});\r\n
\t\t\t}\r\n
\r\n
\t\t\tvar $buttonPanel = $dp.find(\'.ui-datepicker-buttonpane\');\r\n
\t\t\tif ($buttonPanel.length) $buttonPanel.before($tp);\r\n
\t\t\telse $dp.append($tp);\r\n
\r\n
\t\t\tthis.$timeObj = $tp.find(\'#ui_tpicker_time_\'+ dp_id);\r\n
\r\n
\t\t\tif (this.inst !== null) {\r\n
\t\t\t\tvar timeDefined = this.timeDefined;\r\n
\t\t\t\tthis._onTimeChange();\r\n
\t\t\t\tthis.timeDefined = timeDefined;\r\n
\t\t\t}\r\n
\r\n
\t\t\t//Emulate datepicker onSelect behavior. Call on slidestop.\r\n
\t\t\tvar onSelectDelegate = function() {\r\n
\t\t\t\ttp_inst._onSelectHandler();\r\n
\t\t\t};\r\n
\t\t\tthis.hour_slider.bind(\'slidestop\',onSelectDelegate);\r\n
\t\t\tthis.minute_slider.bind(\'slidestop\',onSelectDelegate);\r\n
\t\t\tthis.second_slider.bind(\'slidestop\',onSelectDelegate);\r\n
\t\t\tthis.millisec_slider.bind(\'slidestop\',onSelectDelegate);\r\n
\t\t\t\r\n
\t\t\t// slideAccess integration: http://trentrichardson.com/2011/11/11/jquery-ui-sliders-and-touch-accessibility/\r\n
\t\t\tif (this._defaults.addSliderAccess){\r\n
\t\t\t\tvar sliderAccessArgs = this._defaults.sliderAccessArgs;\r\n
\t\t\t\tsetTimeout(function(){ // fix for inline mode\r\n
\t\t\t\t\tif($tp.find(\'.ui-slider-access\').length == 0){\r\n
\t\t\t\t\t\t$tp.find(\'.ui-slider:visible\').sliderAccess(sliderAccessArgs);\r\n
\r\n
\t\t\t\t\t\t// fix any grids since sliders are shorter\r\n
\t\t\t\t\t\tvar sliderAccessWidth = $tp.find(\'.ui-slider-access:eq(0)\').outerWidth(true);\r\n
\t\t\t\t\t\tif(sliderAccessWidth){\r\n
\t\t\t\t\t\t\t$tp.find(\'table:visible\').each(function(){\r\n
\t\t\t\t\t\t\t\tvar $g = $(this),\r\n
\t\t\t\t\t\t\t\t\toldWidth = $g.outerWidth(),\r\n
\t\t\t\t\t\t\t\t\toldMarginLeft = $g.css(\'marginLeft\').toString().replace(\'%\',\'\'),\r\n
\t\t\t\t\t\t\t\t\tnewWidth = oldWidth - sliderAccessWidth,\r\n
\t\t\t\t\t\t\t\t\tnewMarginLeft = ((oldMarginLeft * newWidth)/oldWidth) + \'%\';\r\n
\t\t\t\t\t\t\r\n
\t\t\t\t\t\t\t\t$g.css({ width: newWidth, marginLeft: newMarginLeft });\r\n
\t\t\t\t\t\t\t});\r\n
\t\t\t\t\t\t}\r\n
\t\t\t\t\t}\r\n
\t\t\t\t},0);\r\n
\t\t\t}\r\n
\t\t\t// end slideAccess integration\r\n
\t\t\t\r\n
\t\t}\r\n
\t},\r\n
\r\n
\t//########################################################################\r\n
\t// This function tries to limit the ability to go outside the\r\n
\t// min/max date range\r\n
\t//########################################################################\r\n
\t_limitMinMaxDateTime: function(dp_inst, adjustSliders){\r\n
\t\tvar o = this._defaults,\r\n
\t\t\tdp_date = new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay);\r\n
\r\n
\t\tif(!this._defaults.showTimepicker) return; // No time so nothing to check here\r\n
\r\n
\t\tif($.datepicker._get(dp_inst, \'minDateTime\') !== null && $.datepicker._get(dp_inst, \'minDateTime\') !== undefined && dp_date){\r\n
\t\t\tvar minDateTime = $.datepicker._get(dp_inst, \'minDateTime\'),\r\n
\t\t\t\tminDateTimeDate = new Date(minDateTime.getFullYear(), minDateTime.getMonth(), minDateTime.getDate(), 0, 0, 0, 0);\r\n
\r\n
\t\t\tif(this.hourMinOriginal === null || this.minuteMinOriginal === null || this.secondMinOriginal === null || this.millisecMinOriginal === null){\r\n
\t\t\t\tthis.hourMinOriginal = o.hourMin;\r\n
\t\t\t\tthis.minuteMinOriginal = o.minuteMin;\r\n
\t\t\t\tthis.secondMinOriginal = o.secondMin;\r\n
\t\t\t\tthis.millisecMinOriginal = o.millisecMin;\r\n
\t\t\t}\r\n
\r\n
\t\t\tif(dp_inst.settings.timeOnly || minDateTimeDate.getTime() == dp_date.getTime()) {\r\n
\t\t\t\tthis._defaults.hourMin = minDateTime.getHours();\r\n
\t\t\t\tif (this.hour <= this._defaults.hourMin) {\r\n
\t\t\t\t\tthis.hour = this._defaults.hourMin;\r\n
\t\t\t\t\tthis._defaults.minuteMin = minDateTime.getMinutes();\r\n
\t\t\t\t\tif (this.minute <= this._defaults.minuteMin) {\r\n
\t\t\t\t\t\tthis.minute = this._defaults.minuteMin;\r\n
\t\t\t\t\t\tthis._defaults.secondMin = minDateTime.getSeconds();\r\n
\t\t\t\t\t} else if (this.second <= this._defaults.secondMin){\r\n
\t\t\t\t\t\tthis.second = this._defaults.secondMin;\r\n
\t\t\t\t\t\tthis._defaults.millisecMin = minDateTime.getMilliseconds();\r\n
\t\t\t\t\t} else {\r\n
\t\t\t\t\t\tif(this.millisec < this._defaults.millisecMin)\r\n
\t\t\t\t\t\t\tthis.millisec = this._defaults.millisecMin;\r\n
\t\t\t\t\t\tthis._defaults.millisecMin = this.millisecMinOriginal;\r\n
\t\t\t\t\t}\r\n
\t\t\t\t} else {\r\n
\t\t\t\t\tthis._defaults.minuteMin = this.minuteMinOriginal;\r\n
\t\t\t\t\tthis._defaults.secondMin = this.secondMinOriginal;\r\n
\t\t\t\t\tthis._defaults.millisecMin = this.millisecMinOriginal;\r\n
\t\t\t\t}\r\n
\t\t\t}else{\r\n
\t\t\t\tthis._defaults.hourMin = this.hourMinOriginal;\r\n
\t\t\t\tthis._defaults.minuteMin = this.minuteMinOriginal;\r\n
\t\t\t\tthis._defaults.secondMin = this.secondMinOriginal;\r\n
\t\t\t\tthis._defaults.millisecMin = this.millisecMinOriginal;\r\n
\t\t\t}\r\n
\t\t}\r\n
\r\n
\t\tif($.datepicker._get(dp_inst, \'maxDateTime\') !== null && $.datepicker._get(dp_inst, \'maxDateTime\') !== undefined && dp_date){\r\n
\t\t\tvar maxDateTime = $.datepicker._get(dp_inst, \'maxDateTime\'),\r\n
\t\t\t\tmaxDateTimeDate = new Date(maxDateTime.getFullYear(), maxDateTime.getMonth(), maxDateTime.getDate(), 0, 0, 0, 0);\r\n
\r\n
\t\t\tif(this.hourMaxOriginal === null || this.minuteMaxOriginal === null || this.secondMaxOriginal === null){\r\n
\t\t\t\tthis.hourMaxOriginal = o.hourMax;\r\n
\t\t\t\tthis.minuteMaxOriginal = o.minuteMax;\r\n
\t\t\t\tthis.secondMaxOriginal = o.secondMax;\r\n
\t\t\t\tthis.millisecMaxOriginal = o.millisecMax;\r\n
\t\t\t}\r\n
\r\n
\t\t\tif(dp_inst.settings.timeOnly || maxDateTimeDate.getTime() == dp_date.getTime()){\r\n
\t\t\t\tthis._defaults.hourMax = maxDateTime.getHours();\r\n
\t\t\t\tif (this.hour >= this._defaults.hourMax) {\r\n
\t\t\t\t\tthis.hour = this._defaults.hourMax;\r\n
\t\t\t\t\tthis._defaults.minuteMax = maxDateTime.getMinutes();\r\n
\t\t\t\t\tif (this.minute >= this._defaults.minuteMax) {\r\n
\t\t\t\t\t\tthis.minute = this._defaults.minuteMax;\r\n
\t\t\t\t\t\tthis._defaults.secondMax = maxDateTime.getSeconds();\r\n
\t\t\t\t\t} else if (this.second >= this._defaults.secondMax) {\r\n
\t\t\t\t\t\tthis.second = this._defaults.secondMax;\r\n
\t\t\t\t\t\tthis._defaults.millisecMax = maxDateTime.getMilliseconds();\r\n
\t\t\t\t\t} else {\r\n
\t\t\t\t\t\tif(this.millisec > this._defaults.millisecMax) this.millisec = this._defaults.millisecMax;\r\n
\t\t\t\t\t\tthis._defaults.millisecMax = this.millisecMaxOriginal;\r\n
\t\t\t\t\t}\r\n
\t\t\t\t} else {\r\n
\t\t\t\t\tthis._defaults.minuteMax = this.minuteMaxOriginal;\r\n
\t\t\t\t\tthis._defaults.secondMax = this.secondMaxOriginal;\r\n
\t\t\t\t\tthis._defaults.millisecMax = this.millisecMaxOriginal;\r\n
\t\t\t\t}\r\n
\t\t\t}else{\r\n
\t\t\t\tthis._defaults.hourMax = this.hourMaxOriginal;\r\n
\t\t\t\tthis._defaults.minuteMax = this.minuteMaxOriginal;\r\n
\t\t\t\tthis._defaults.secondMax = this.secondMaxOriginal;\r\n
\t\t\t\tthis._defaults.millisecMax = this.millisecMaxOriginal;\r\n
\t\t\t}\r\n
\t\t}\r\n
\r\n
\t\tif(adjustSliders !== undefined && adjustSliders === true){\r\n
\t\t\tvar hourMax = parseInt((this._defaults.hourMax - ((this._defaults.hourMax - this._defaults.hourMin) % this._defaults.stepHour)) ,10),\r\n
minMax = parseInt((this._defaults.minuteMax - ((this._defaults.minuteMax - this._defaults.minuteMin) % this._defaults.stepMinute)) ,10),\r\n
secMax = parseInt((this._defaults.secondMax - ((this._defaults.secondMax - this._defaults.secondMin) % this._defaults.stepSecond)) ,10),\r\n
\t\t\t\tmillisecMax = parseInt((this._defaults.millisecMax - ((this._defaults.millisecMax - this._defaults.millisecMin) % this._defaults.stepMillisec)) ,10);\r\n
\r\n
\t\t\tif(this.hour_slider)\r\n
\t\t\t\tthis.hour_slider.slider("option", { min: this._defaults.hourMin, max: hourMax }).slider(\'value\', this.hour);\r\n
\t\t\tif(this.minute_slider)\r\n
\t\t\t\tthis.minute_slider.slider("option", { min: this._defaults.minuteMin, max: minMax }).slider(\'value\', this.minute);\r\n
\t\t\tif(this.second_slider)\r\n
\t\t\t\tthis.second_slider.slider("option", { min: this._defaults.secondMin, max: secMax }).slider(\'value\', this.second);\r\n
\t\t\tif(this.millisec_slider)\r\n
\t\t\t\tthis.millisec_slider.slider("option", { min: this._defaults.millisecMin, max: millisecMax }).slider(\'value\', this.millisec);\r\n
\t\t}\r\n
\r\n
\t},\r\n
\r\n
\t\r\n
\t//########################################################################\r\n
\t// when a slider moves, set the internal time...\r\n
\t// on time change is also called when the time is updated in the text field\r\n
\t//########################################################################\r\n
\t_onTimeChange: function() {\r\n
\t\tvar hour = (this.hour_slider) ? this.hour_slider.slider(\'value\') : false,\r\n
\t\t\tminute = (this.minute_slider) ? this.minute_slider.slider(\'value\') : false,\r\n
\t\t\tsecond = (this.second_slider) ? this.second_slider.slider(\'value\') : false,\r\n
\t\t\tmillisec = (this.millisec_slider) ? this.millisec_slider.slider(\'value\') : false,\r\n
\t\t\ttimezone = (this.timezone_select) ? this.timezone_select.val() : false,\r\n
\t\t\to = this._defaults;\r\n
\r\n
\t\tif (typeof(hour) == \'object\') hour = false;\r\n
\t\tif (typeof(minute) == \'object\') minute = false;\r\n
\t\tif (typeof(second) == \'object\') second = false;\r\n
\t\tif (typeof(millisec) == \'object\') millisec = false;\r\n
\t\tif (typeof(timezone) == \'object\') timezone = false;\r\n
\r\n
\t\tif (hour !== false) hour = parseInt(hour,10);\r\n
\t\tif (minute !== false) minute = parseInt(minute,10);\r\n
\t\tif (second !== false) second = parseInt(second,10);\r\n
\t\tif (millisec !== false) millisec = parseInt(millisec,10);\r\n
\r\n
\t\tvar ampm = o[hour < 12 ? \'amNames\' : \'pmNames\'][0];\r\n
\r\n
\t\t// If the update was done in the input field, the input field should not be updated.\r\n
\t\t// If the update was done using the sliders, update the input field.\r\n
\t\tvar hasChanged = (hour != this.hour || minute != this.minute\r\n
\t\t\t\t|| second != this.second || millisec != this.millisec\r\n
\t\t\t\t|| (this.ampm.length > 0\r\n
\t\t\t\t && (hour < 12) != ($.inArray(this.ampm.toUpperCase(), this.amNames) !== -1))\r\n
\t\t\t\t|| timezone != this.timezone);\r\n
\t\t\r\n
\t\tif (hasChanged) {\r\n
\r\n
\t\t\tif (hour !== false)this.hour = hour;\r\n
\t\t\tif (minute !== false) this.minute = minute;\r\n
\t\t\tif (second !== false) this.second = second;\r\n
\t\t\tif (millisec !== false) this.millisec = millisec;\r\n
\t\t\tif (timezone !== false) this.timezone = timezone;\r\n
\t\t\t\r\n
\t\t\tif (!this.inst) this.inst = $.datepicker._getInst(this.$input[0]);\r\n
\t\t\t\r\n
\t\t\tthis._limitMinMaxDateTime(this.inst, true);\r\n
\t\t}\r\n
\t\tif (o.ampm) this.ampm = ampm;\r\n
\t\t\r\n
\t\t//this._formatTime();\r\n
\t\tthis.formattedTime = $.datepicker.formatTime(this._defaults.timeFormat, this, this._defaults);\r\n
\t\tif (this.$timeObj) this.$timeObj.text(this.formattedTime + o.timeSuffix);\r\n
\t\tthis.timeDefined = true;\r\n
\t\tif (hasChanged) this._updateDateTime();\r\n
\t},\r\n
\r\n
\t//########################################################################\r\n
\t// call custom onSelect. \r\n
\t// bind to sliders slidestop, and grid click.\r\n
\t//########################################################################\r\n
\t_onSelectHandler: function() {\r\n
\t\tvar onSelect = this._defaults.onSelect;\r\n
\t\tvar inputEl = this.$input ? this.$input[0] : null;\r\n
\t\tif (onSelect && inputEl) {\r\n
\t\t\tonSelect.apply(inputEl, [this.formattedDateTime, this]);\r\n
\t\t}\r\n
\t},\r\n
\r\n
\t//########################################################################\r\n
\t// left for any backwards compatibility\r\n
\t//########################################################################\r\n
\t_formatTime: function(time, format) {\r\n
\t\ttime = time || { hour: this.hour, minute: this.minute, second: this.second, millisec: this.millisec, ampm: this.ampm, timezone: this.timezone };\r\n
\t\tvar tmptime = (format || this._defaults.timeFormat).toString();\r\n
\r\n
\t\ttmptime = $.datepicker.formatTime(tmptime, time, this._defaults);\r\n
\t\t\r\n
\t\tif (arguments.length) return tmptime;\r\n
\t\telse this.formattedTime = tmptime;\r\n
\t},\r\n
\r\n
\t//########################################################################\r\n
\t// update our input with the new date time..\r\n
\t//########################################################################\r\n
\t_updateDateTime: function(dp_inst) {\r\n
\t\tdp_inst = this.inst || dp_inst;\r\n
\t\tvar dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),\r\n
\t\t\tdateFmt = $.datepicker._get(dp_inst, \'dateFormat\'),\r\n
\t\t\tformatCfg = $.datepicker._getFormatConfig(dp_inst),\r\n
\t\t\ttimeAvailable = dt !== null && this.timeDefined;\r\n
\t\tthis.formattedDate = $.datepicker.formatDate(dateFmt, (dt === null ? new Date() : dt), formatCfg);\r\n
\t\tvar formattedDateTime = this.formattedDate;\r\n
\t\tif (dp_inst.lastVal !== undefined && (dp_inst.lastVal.length > 0 && this.$input.val().length === 0))\r\n
\t\t\treturn;\r\n
\r\n
\t\tif (this._defaults.timeOnly === true) {\r\n
\t\t\tformattedDateTime = this.formattedTime;\r\n
\t\t} else if (this._defaults.timeOnly !== true && (this._defaults.alwaysSetTime || timeAvailable)) {\r\n
\t\t\tformattedDateTime += this._defaults.separator + this.formattedTime + this._defaults.timeSuffix;\r\n
\t\t}\r\n
\r\n
\t\tthis.formattedDateTime = formattedDateTime;\r\n
\r\n
\t\tif(!this._defaults.showTimepicker) {\r\n
\t\t\tthis.$input.val(this.formattedDate);\r\n
\t\t} else if (this.$altInput && this._defaults.altFieldTimeOnly === true) {\r\n
\t\t\tthis.$altInput.val(this.formattedTime);\r\n
\t\t\tthis.$input.val(this.formattedDate);\r\n
\t\t} else if(this.$altInput) {\r\n
\t\t\tthis.$altInput.val(formattedDateTime);\r\n
\t\t\tthis.$input.val(formattedDateTime);\r\n
\t\t} else {\r\n
\t\t\tthis.$input.val(formattedDateTime);\r\n
\t\t}\r\n
\t\t\r\n
\t\tthis.$input.trigger("change");\r\n
\t}\r\n
\r\n
});\r\n
\r\n
$.fn.extend({\r\n
\t//########################################################################\r\n
\t// shorthand just to use timepicker..\r\n
\t//########################################################################\r\n
\ttimepicker: function(o) {\r\n
\t\to = o || {};\r\n
\t\tvar tmp_args = arguments;\r\n
\r\n
\t\tif (typeof o == \'object\') tmp_args[0] = $.extend(o, { timeOnly: true });\r\n
\r\n
\t\treturn $(this).each(function() {\r\n
\t\t\t$.fn.datetimepicker.apply($(this), tmp_args);\r\n
\t\t});\r\n
\t},\r\n
\r\n
\t//########################################################################\r\n
\t// extend timepicker to datepicker\r\n
\t//########################################################################\r\n
\tdatetimepicker: function(o) {\r\n
\t\to = o || {};\r\n
\t\tvar $input = this,\r\n
\t\ttmp_args = arguments;\r\n
\r\n
\t\tif (typeof(o) == \'string\'){\r\n
\t\t\tif(o == \'getDate\') \r\n
\t\t\t\treturn $.fn.datepicker.apply($(this[0]), tmp_args);\r\n
\t\t\telse \r\n
\t\t\t\treturn this.each(function() {\r\n
\t\t\t\t\tvar $t = $(this);\r\n
\t\t\t\t\t$t.datepicker.apply($t, tmp_args);\r\n
\t\t\t\t});\r\n
\t\t}\r\n
\t\telse\r\n
\t\t\treturn this.each(function() {\r\n
\t\t\t\tvar $t = $(this);\r\n
\t\t\t\t$t.datepicker($.timepicker._newInst($t, o)._defaults);\r\n
\t\t\t});\r\n
\t}\r\n
});\r\n
\r\n
//########################################################################\r\n
// format the time all pretty... \r\n
// format = string format of the time\r\n
// time = a {}, not a Date() for timezones\r\n
// options = essentially the regional[].. amNames, pmNames, ampm\r\n
//########################################################################\r\n
$.datepicker.formatTime = function(format, time, options) {\r\n
\toptions = options || {};\r\n
\toptions = $.extend($.timepicker._defaults, options);\r\n
\ttime = $.extend({hour:0, minute:0, second:0, millisec:0, timezone:\'+0000\'}, time);\r\n
\t\r\n
\tvar tmptime = format;\r\n
\tvar ampmName = options[\'amNames\'][0];\r\n
\r\n
\tvar hour = parseInt(time.hour, 10);\r\n
\tif (options.ampm) {\r\n
\t\tif (hour > 11){\r\n
\t\t\tampmName = options[\'pmNames\'][0];\r\n
\t\t\tif(hour > 12)\r\n
\t\t\t\thour = hour % 12;\r\n
\t\t}\r\n
\t\tif (hour === 0)\r\n
\t\t\thour = 12;\r\n
\t}\r\n
\ttmptime = tmptime.replace(/(?:hh?|mm?|ss?|[tT]{1,2}|[lz])/g, function(match) {\r\n
\t\tswitch (match.toLowerCase()) {\r\n
\t\t\tcase \'hh\': return (\'0\' + hour).slice(-2);\r\n
\t\t\tcase \'h\': return hour;\r\n
\t\t\tcase \'mm\': return (\'0\' + time.minute).slice(-2);\r\n
\t\t\tcase \'m\': return time.minute;\r\n
\t\t\tcase \'ss\': return (\'0\' + time.second).slice(-2);\r\n
\t\t\tcase \'s\': return time.second;\r\n
\t\t\tcase \'l\': return (\'00\' + time.millisec).slice(-3);\r\n
\t\t\tcase \'z\': return time.timezone;\r\n
\t\t\tcase \'t\': case \'tt\':\r\n
\t\t\t\tif (options.ampm) {\r\n
\t\t\t\t\tif (match.length == 1)\r\n
\t\t\t\t\t\tampmName = ampmName.charAt(0);\r\n
\t\t\t\t\treturn match.charAt(0) == \'T\' ? ampmName.toUpperCase() : ampmName.toLowerCase();\r\n
\t\t\t\t}\r\n
\t\t\t\treturn \'\';\r\n
\t\t}\r\n
\t});\r\n
\r\n
\ttmptime = $.trim(tmptime);\r\n
\treturn tmptime;\r\n
}\r\n
\r\n
//########################################################################\r\n
// the bad hack :/ override datepicker so it doesnt close on select\r\n
// inspired: http://stackoverflow.com/questions/1252512/jquery-datepicker-prevent-closing-picker-when-clicking-a-date/1762378#1762378\r\n
//########################################################################\r\n
$.datepicker._base_selectDate = $.datepicker._selectDate;\r\n
$.datepicker._selectDate = function (id, dateStr) {\r\n
\tvar inst = this._getInst($(id)[0]),\r\n
\t\ttp_inst = this._get(inst, \'timepicker\');\r\n
\r\n
\tif (tp_inst) {\r\n
\t\ttp_inst._limitMinMaxDateTime(inst, true);\r\n
\t\tinst.inline = inst.stay_open = true;\r\n
\t\t//This way the onSelect handler called from calendarpicker get the full dateTime\r\n
\t\tthis._base_selectDate(id, dateStr);\r\n
\t\tinst.inline = inst.stay_open = false;\r\n
\t\tthis._notifyChange(inst);\r\n
\t\tthis._updateDatepicker(inst);\r\n
\t}\r\n
\telse this._base_selectDate(id, dateStr);\r\n
};\r\n
\r\n
//#############################################################################################\r\n
// second bad hack :/ override datepicker so it triggers an event when changing the input field\r\n
// and does not redraw the datepicker on every selectDate event\r\n
//#############################################################################################\r\n
$.datepicker._base_updateDatepicker = $.datepicker._updateDatepicker;\r\n
$.datepicker._updateDatepicker = function(inst) {\r\n
\r\n
\t// don\'t popup the datepicker if there is another instance already opened\r\n
\tvar input = inst.input[0];\r\n
\tif($.datepicker._curInst &&\r\n
\t $.datepicker._curInst != inst &&\r\n
\t $.datepicker._datepickerShowing &&\r\n
\t $.datepicker._lastInput != input) {\r\n
\t\treturn;\r\n
\t}\r\n
\r\n
\tif (typeof(inst.stay_open) !== \'boolean\' || inst.stay_open === false) {\r\n
\t\t\t\t\r\n
\t\tthis._base_updateDatepicker(inst);\r\n
\t\t\r\n
\t\t// Reload the time control when changing something in the input text field.\r\n
\t\tvar tp_inst = this._get(inst, \'timepicker\');\r\n
\t\tif(tp_inst) tp_inst._addTimePicker(inst);\r\n
\t}\r\n
};\r\n
\r\n
//#######################################################################################\r\n
// third bad hack :/ override datepicker so it allows spaces and colon in the input field\r\n
//#######################################################################################\r\n
$.datepicker._base_doKeyPress = $.datepicker._doKeyPress;\r\n
$.datepicker._doKeyPress = function(event) {\r\n
\tvar inst = $.datepicker._getInst(event.target),\r\n
\t\ttp_inst = $.datepicker._get(inst, \'timepicker\');\r\n
\r\n
\tif (tp_inst) {\r\n
\t\tif ($.datepicker._get(inst, \'constrainInput\')) {\r\n
\t\t\tvar ampm = tp_inst._defaults.ampm,\r\n
\t\t\t\tdateChars = $.datepicker._possibleChars($.datepicker._get(inst, \'dateFormat\')),\r\n
\t\t\t\tdatetimeChars = tp_inst._defaults.timeFormat.toString()\r\n
\t\t\t\t\t\t\t\t.replace(/[hms]/g, \'\')\r\n
\t\t\t\t\t\t\t\t.replace(/TT/g, ampm ? \'APM\' : \'\')\r\n
\t\t\t\t\t\t\t\t.replace(/Tt/g, ampm ? \'AaPpMm\' : \'\')\r\n
\t\t\t\t\t\t\t\t.replace(/tT/g, ampm ? \'AaPpMm\' : \'\')\r\n
\t\t\t\t\t\t\t\t.replace(/T/g, ampm ? \'AP\' : \'\')\r\n
\t\t\t\t\t\t\t\t.replace(/tt/g, ampm ? \'apm\' : \'\')\r\n
\t\t\t\t\t\t\t\t.replace(/t/g, ampm ? \'ap\' : \'\') +\r\n
\t\t\t\t\t\t\t\t" " +\r\n
\t\t\t\t\t\t\t\ttp_inst._defaults.separator +\r\n
\t\t\t\t\t\t\t\ttp_inst._defaults.timeSuffix +\r\n
\t\t\t\t\t\t\t\t(tp_inst._defaults.showTimezone ? tp_inst._defaults.timezoneList.join(\'\') : \'\') +\r\n
\t\t\t\t\t\t\t\t(tp_inst._defaults.amNames.join(\'\')) +\r\n
\t\t\t\t\t\t\t\t(tp_inst._defaults.pmNames.join(\'\')) +\r\n
\t\t\t\t\t\t\t\tdateChars,\r\n
\t\t\t\tchr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode);\r\n
\t\t\treturn event.ctrlKey || (chr < \' \' || !dateChars || datetimeChars.indexOf(chr) > -1);\r\n
\t\t}\r\n
\t}\r\n
\t\r\n
\treturn $.datepicker._base_doKeyPress(event);\r\n
};\r\n
\r\n
//#######################################################################################\r\n
// Override key up event to sync manual input changes.\r\n
//#######################################################################################\r\n
$.datepicker._base_doKeyUp = $.datepicker._doKeyUp;\r\n
$.datepicker._doKeyUp = function (event) {\r\n
\tvar inst = $.datepicker._getInst(event.target),\r\n
\t\ttp_inst = $.datepicker._get(inst, \'timepicker\');\r\n
\r\n
\tif (tp_inst) {\r\n
\t\tif (tp_inst._defaults.timeOnly && (inst.input.val() != inst.lastVal)) {\r\n
\t\t\ttry {\r\n
\t\t\t\t$.datepicker._updateDatepicker(inst);\r\n
\t\t\t}\r\n
\t\t\tcatch (err) {\r\n
\t\t\t\t$.datepicker.log(err);\r\n
\t\t\t}\r\n
\t\t}\r\n
\t}\r\n
\r\n
\treturn $.datepicker._base_doKeyUp(event);\r\n
};\r\n
\r\n
//#######################################################################################\r\n
// override "Today" button to also grab the time.\r\n
//#######################################################################################\r\n
$.datepicker._base_gotoToday = $.datepicker._gotoToday;\r\n
$.datepicker._gotoToday = function(id) {\r\n
\tvar inst = this._getInst($(id)[0]),\r\n
\t\t$dp = inst.dpDiv;\r\n
\tthis._base_gotoToday(id);\r\n
\tvar now = new Date();\r\n
\tvar tp_inst = this._get(inst, \'timepicker\');\r\n
\tif (tp_inst && tp_inst._defaults.showTimezone && tp_inst.timezone_select) {\r\n
\t\tvar tzoffset = now.getTimezoneOffset(); // If +0100, returns -60\r\n
\t\tvar tzsign = tzoffset > 0 ? \'-\' : \'+\';\r\n
\t\ttzoffset = Math.abs(tzoffset);\r\n
\t\tvar tzmin = tzoffset % 60;\r\n
\t\ttzoffset = tzsign + (\'0\' + (tzoffset - tzmin) / 60).slice(-2) + (\'0\' + tzmin).slice(-2);\r\n
\t\tif (tp_inst._defaults.timezoneIso8609)\r\n
\t\t\ttzoffset = tzoffset.substring(0, 3) + \':\' + tzoffset.substring(3);\r\n
\t\ttp_inst.timezone_select.val(tzoffset);\r\n
\t}\r\n
\tthis._setTime(inst, now);\r\n
\t$( \'.ui-datepicker-today\', $dp).click(); \r\n
};\r\n
\r\n
//#######################################################################################\r\n
// Disable & enable the Time in the datetimepicker\r\n
//#######################################################################################\r\n
$.datepicker._disableTimepickerDatepicker = function(target, date, withDate) {\r\n
\tvar inst = this._getInst(target),\r\n
\ttp_inst = this._get(inst, \'timepicker\');\r\n
\t$(target).datepicker(\'getDate\'); // Init selected[Year|Month|Day]\r\n
\tif (tp_inst) {\r\n
\t\ttp_inst._defaults.showTimepicker = false;\r\n
\t\ttp_inst._updateDateTime(inst);\r\n
\t}\r\n
};\r\n
\r\n
$.datepicker._enableTimepickerDatepicker = function(target, date, withDate) {\r\n
\tvar inst = this._getInst(target),\r\n
\ttp_inst = this._get(inst, \'timepicker\');\r\n
\t$(target).datepicker(\'getDate\'); // Init selected[Year|Month|Day]\r\n
\tif (tp_inst) {\r\n
\t\ttp_inst._defaults.showTimepicker = true;\r\n
\t\ttp_inst._addTimePicker(inst); // Could be disabled on page load\r\n
\t\ttp_inst._updateDateTime(inst);\r\n
\t}\r\n
};\r\n
\r\n
//#######################################################################################\r\n
// Create our own set time function\r\n
//#######################################################################################\r\n
$.datepicker._setTime = function(inst, date) {\r\n
\tvar tp_inst = this._get(inst, \'timepicker\');\r\n
\tif (tp_inst) {\r\n
\t\tvar defaults = tp_inst._defaults,\r\n
\t\t\t// calling _setTime with no date sets time to defaults\r\n
\t\t\thour = date ? date.getHours() : defaults.hour,\r\n
\t\t\tminute = date ? date.getMinutes() : defaults.minute,\r\n
\t\t\tsecond = date ? date.getSeconds() : defaults.second,\r\n
\t\t\tmillisec = date ? date.getMilliseconds() : defaults.millisec;\r\n
\r\n
\t\t//check if within min/max times..\r\n
\t\tif ((hour < defaults.hourMin || hour > defaults.hourMax) || (minute < defaults.minuteMin || minute > defaults.minuteMax) || (second < defaults.secondMin || second > defaults.secondMax) || (millisec < defaults.millisecMin || millisec > defaults.millisecMax)) {\r\n
\t\t\thour = defaults.hourMin;\r\n
\t\t\tminute = defaults.minuteMin;\r\n
\t\t\tsecond = defaults.secondMin;\r\n
\t\t\tmillisec = defaults.millisecMin;\r\n
\t\t}\r\n
\r\n
\t\ttp_inst.hour = hour;\r\n
\t\ttp_inst.minute = minute;\r\n
\t\ttp_inst.second = second;\r\n
\t\ttp_inst.millisec = millisec;\r\n
\r\n
\t\tif (tp_inst.hour_slider) tp_inst.hour_slider.slider(\'value\', hour);\r\n
\t\tif (tp_inst.minute_slider) tp_inst.minute_slider.slider(\'value\', minute);\r\n
\t\tif (tp_inst.second_slider) tp_inst.second_slider.slider(\'value\', second);\r\n
\t\tif (tp_inst.millisec_slider) tp_inst.millisec_slider.slider(\'value\', millisec);\r\n
\r\n
\t\ttp_inst._onTimeChange();\r\n
\t\ttp_inst._updateDateTime(inst);\r\n
\t}\r\n
};\r\n
\r\n
//#######################################################################################\r\n
// Create new public method to set only time, callable as $().datepicker(\'setTime\', date)\r\n
//#######################################################################################\r\n
$.datepicker._setTimeDatepicker = function(target, date, withDate) {\r\n
\tvar inst = this._getInst(target),\r\n
\t\ttp_inst = this._get(inst, \'timepicker\');\r\n
\r\n
\tif (tp_inst) {\r\n
\t\tthis._setDateFromField(inst);\r\n
\t\tvar tp_date;\r\n
\t\tif (date) {\r\n
\t\t\tif (typeof date == "string") {\r\n
\t\t\t\ttp_inst._parseTime(date, withDate);\r\n
\t\t\t\ttp_date = new Date();\r\n
\t\t\t\ttp_date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);\r\n
\t\t\t}\r\n
\t\t\telse tp_date = new Date(date.getTime());\r\n
\t\t\tif (tp_date.toString() == \'Invalid Date\') tp_date = undefined;\r\n
\t\t\tthis._setTime(inst, tp_date);\r\n
\t\t}\r\n
\t}\r\n
\r\n
};\r\n
\r\n
//#######################################################################################\r\n
// override setDate() to allow setting time too within Date object\r\n
//#######################################################################################\r\n
$.datepicker._base_setDateDatepicker = $.datepicker._setDateDatepicker;\r\n
$.datepicker._setDateDatepicker = function(target, date) {\r\n
\tvar inst = this._getInst(target),\r\n
\ttp_date = (date instanceof Date) ? new Date(date.getTime()) : date;\r\n
\r\n
\tthis._updateDatepicker(inst);\r\n
\tthis._base_setDateDatepicker.apply(this, arguments);\r\n
\tthis._setTimeDatepicker(target, tp_date, true);\r\n
};\r\n
\r\n
//#######################################################################################\r\n
// override getDate() to allow getting time too within Date object\r\n
//#######################################################################################\r\n
$.datepicker._base_getDateDatepicker = $.datepicker._getDateDatepicker;\r\n
$.datepicker._getDateDatepicker = function(target, noDefault) {\r\n
\tvar inst = this._getInst(target),\r\n
\t\ttp_inst = this._get(inst, \'timepicker\');\r\n
\r\n
\tif (tp_inst) {\r\n
\t\tthis._setDateFromField(inst, noDefault);\r\n
\t\tvar date = this._getDate(inst);\r\n
\t\tif (date && tp_inst._parseTime($(target).val(), tp_inst.timeOnly)) date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);\r\n
\t\treturn date;\r\n
\t}\r\n
\treturn this._base_getDateDatepicker(target, noDefault);\r\n
};\r\n
\r\n
//#######################################################################################\r\n
// override parseDate() because UI 1.8.14 throws an error about "Extra characters"\r\n
// An option in datapicker to ignore extra format characters would be nicer.\r\n
//#######################################################################################\r\n
$.datepicker._base_parseDate = $.datepicker.parseDate;\r\n
$.datepicker.parseDate = function(format, value, settings) {\r\n
\tvar date;\r\n
\ttry {\r\n
\t\tdate = this._base_parseDate(format, value, settings);\r\n
\t} catch (err) {\r\n
\t\tif (err.indexOf(":") >= 0) {\r\n
\t\t\t// Hack! The error message ends with a colon, a space, and\r\n
\t\t\t// the "extra" characters. We rely on that instead of\r\n
\t\t\t// attempting to perfectly reproduce the parsing algorithm.\r\n
\t\t\tdate = this._base_parseDate(format, value.substring(0,value.length-(err.length-err.indexOf(\':\')-2)), settings);\r\n
\t\t} else {\r\n
\t\t\t// The underlying error was not related to the time\r\n
\t\t\tthrow err;\r\n
\t\t}\r\n
\t}\r\n
\treturn date;\r\n
};\r\n
\r\n
//#######################################################################################\r\n
// override formatDate to set date with time to the input\r\n
//#######################################################################################\r\n
$.datepicker._base_formatDate=$.datepicker._formatDate;\r\n
$.datepicker._formatDate = function(inst, day, month, year){\r\n
\tvar tp_inst = this._get(inst, \'timepicker\');\r\n
\tif(tp_inst)\r\n
\t{\r\n
\t\tif(day)\r\n
\t\t\tvar b = this._base_formatDate(inst, day, month, year);\r\n
\t\ttp_inst._updateDateTime(inst);\t\r\n
\t\treturn tp_inst.$input.val();\r\n
\t}\r\n
\treturn this._base_formatDate(inst);\r\n
};\r\n
\r\n
//#######################################################################################\r\n
// override options setter to add time to maxDate(Time) and minDate(Time). MaxDate\r\n
//#######################################################################################\r\n
$.datepicker._base_optionDatepicker = $.datepicker._optionDatepicker;\r\n
$.datepicker._optionDatepicker = function(target, name, value) {\r\n
\tvar inst = this._getInst(target),\r\n
\t\ttp_inst = this._get(inst, \'timepicker\');\r\n
\tif (tp_inst) {\r\n
\t\tvar min,max,onselect;\r\n
\t\tif (typeof name == \'string\') { // if min/max was set with the string\r\n
\t\t\tif (name===\'minDate\' || name===\'minDateTime\' )\r\n
\t\t\t\tmin = value;\r\n
\t\t\telse if (name===\'maxDate\' || name===\'maxDateTime\')\r\n
\t\t\t\tmax = value;\r\n
\t\t\telse if (name===\'onSelect\')\r\n
\t\t\t\tonselect=value;\r\n
\t\t} else if (typeof name == \'object\') { //if min/max was set with the JSON\r\n
\t\t\tif(name.minDate)\r\n
\t\t\t\tmin = name.minDate;\r\n
\t\t\telse if (name.minDateTime)\r\n
\t\t\t\tmin = name.minDateTime;\r\n
\t\t\telse if (name.maxDate)\r\n
\t\t\t\tmax = name.maxDate;\r\n
\t\t\telse if (name.maxDateTime)\r\n
\t\t\t\tmax = name.maxDateTime;\r\n
\t\t}\r\n
\t\tif(min){ //if min was set\r\n
\t\t\tif(min==0)\r\n
\t\t\t\tmin=new Date();\r\n
\t\t\telse\r\n
\t\t\t\tmin= new Date(min);\r\n
\t\t\t\r\n
\t\t\ttp_inst._defaults.minDate = min;\r\n
\t\t\ttp_inst._defaults.minDateTime = min;\r\n
\t\t} else if (max){ //if max was set\r\n
\t\t\tif(max==0)\r\n
\t\t\t\tmax=new Date();\r\n
\t\t\telse\r\n
\t\t\t\tmax= new Date(max);\r\n
\t\t\ttp_inst._defaults.maxDate = max;\r\n
\t\t\ttp_inst._defaults.maxDateTime = max;\r\n
\t\t}\r\n
\t\telse if (onselect)\r\n
\t\t\ttp_inst._defaults.onSelect=onselect;\r\n
\t}\r\n
\tif (value === undefined)\r\n
\t\treturn this._base_optionDatepicker(target, name);\r\n
\treturn this._base_optionDatepicker(target, name, value);\r\n
};\r\n
\r\n
//#######################################################################################\r\n
// jQuery extend now ignores nulls!\r\n
//#######################################################################################\r\n
function extendRemove(target, props) {\r\n
\t$.extend(target, props);\r\n
\tfor (var name in props)\r\n
\t\tif (props[name] === null || props[name] === undefined)\r\n
\t\t\ttarget[name] = props[name];\r\n
\treturn target;\r\n
};\r\n
\r\n
$.timepicker = new Timepicker(); // singleton instance\r\n
$.timepicker.version = "0.9.9";\r\n
\r\n
})(jQuery);\r\n
\r\n
]]></string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>50902</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>jquery-ui-timepicker-addon.js</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal"\n
xmlns:i18n="http://xml.zope.org/namespaces/i18n">\n
<tal:block metal:define-macro="master">\n
<tal:block metal:use-macro="here/view_main/macros/master">\n
<tal:block metal:fill-slot="main">\n
\n
<!--<tal:block metal:use-macro="here/form_render/macros/master" />-->\n
\n
</tal:block>\n
</tal:block>\n
</tal:block>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>form_view_disable</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadgets</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Portal Gadgets</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>application</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<!-- Application -->\n
<link href="erp5.css" rel="stylesheet" type="text/css">\n
<link href="erp5_listbox.css" rel="stylesheet" type="text/css">\n
<script src="erp5.js" type="text/javascript"></script>\n
<script src="jstorage/jstorage.js" type="text/javascript"></script>\n
\n
\n
<!-- XXX: move to listbox gadget asap -->\n
<link rel="stylesheet" type="text/css" media="screen" href="jqgrid/ui.jqgrid.css" />\n
<link rel="stylesheet" type="text/css" media="screen" href="jqgrid/jquery-ui-1.8.1.custom.css" />\n
<script src="jqgrid/grid.locale-en.js" type="text/javascript"></script>\n
<script src="jquery/ui/js/jquery-ui.js" type="text/javascript"></script>\n
<script src="jqgrid/jquery.jqGrid.src.js" type="text/javascript"></script>\n
\n
<div id="top_menu"\n
gadget="gadgets/top_menu/gadget"></div>\n
\n
<div id="breadcrumb_gadget"\n
gadget="gadgets/breadcrumb/gadget"></div>\n
\n
<!-- XXX: get object and form being requested and pass it to gadget -->\n
<!--<div id="content"\n
gadget="gadgets/content/gadget"\n
tal:attributes="gadget string:gadgets/content/gadget?object_path=person_module/1&current_form_id=Person_view"></div>-->\n
\n
\n
<div id="content"\n
gadget="gadgets/content/gadget"\n
tal:attributes="gadget string:gadgets/content/gadget?object_path=document_module/1&current_form_id=OOoDocument_view"></div>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>breadcrumb</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<!-- Breadcrumb -->\n
<div class="status" id="status">\n
<div class="breadcrumb" id="breadcrumb">\n
\n
\n
<a href="http://km:12001/erp5/view">ERP5</a>\n
/\n
\n
\n
<a href="http://km:12001/erp5/person_module/view">Persons</a>\n
/\n
\n
\n
<a href="http://km:12001/erp5/person_module/1/view">Ivan Tyagov</a>\n
/\n
\n
\n
</div>\n
<div class="logged_in_as" id="logged_in_as">\n
\n
<span class="logged_txt">Logged In as :</span>\n
zope\n
\n
</div>\n
<p class="clear"></p>\n
\n
<div class="transition_message" id="transition_message"></div>\n
\n
</div>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>content</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<!-- Content -->\n
<div class="master" id="master"\n
tal:define="portal here/portal_url/getPortalObject;\n
portal_path portal_path | portal/absolute_url;\n
action_context python: portal.restrictedTraverse(request.get(\'object_path\', \'?\'), here);\n
actions python: here.Base_filterDuplicateActions(portal.portal_actions.listFilteredActionsFor(action_context));\n
url action_context/absolute_url;\n
current_form_id python: request.get(\'current_form_id\', \'view\');\n
current_url python: \'%s/%s\' % (url, current_form_id);\n
current_action python: portal.ERP5Site_getCurrentAction(current_url, actions);\n
actions actions/object_view | python: [];">\n
\n
\n
<div id="portal_status_message" style="height:20px; display:none;">\n
<p style="color:red; font-weight: bold;"></p>\n
</div>\n
\n
<div class="document">\n
\n
<div class="actions">\n
<button onclick="javascript:FormUpdater.save(); return false;"\n
title="Save" class="save" type="submit">\n
<span class="image"></span>\n
<span class="description">Save</span>\n
</button>\n
\n
<script type="text/javascript"\n
tal:content="python: \'\'\'Form.setCurrentFormId(\'%s\');;\'\'\' %current_form_id">\n
</script>\n
\n
<!-- get all tabs from server -->\n
<ul class="tabs">\n
<tal:block tal:repeat="action actions"> \n
<li style="cursor:pointer;"\n
tal:define="action_form python: action[\'url\'].split(\'/\')[-1]"\n
tal:attributes="id action_form;\n
class python: action == current_action and \'selected\' or \'not_selected\'">\n
\n
<a tal:attributes="onclick python: \'\'\'javascript: TabbularGadget.addNewTabGadget(\'%s\');; return false ;;\'\'\' %action_form">\n
<span i18n:translate=""\n
i18n:domain="ui"\n
tal:content="action/name">action_name</span>\n
</a>\n
</li>\n
</tal:block>\n
</ul>\n
\n
</div>\n
\n
<div class="content editable">\n
\n
<!--Form render goes here -->\n
<div id="form_gadget"\n
tal:attributes="gadget string:${current_form_id}/Form_asRenderJSGadget;\n
gadget:data-source string:Form_asJSON?form_id=${current_form_id};\n
gadget:property111 string: {&quot;cacheable&quot;: &quot;1&quot;, &quot;cache_id&quot;: &quot;${current_form_id}&quot;}">\n
</div>\n
\n
</div>\n
</div>\n
\n
</div>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>form</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>CheckBoxField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
\n
<input type="checkbox" \n
tal:attributes="name field_name"/>\n
\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>DateTimeField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
<input type="text"\n
tal:attributes="name field_name"/>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>EditorField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
<input type="text"\n
tal:attributes="name field_name"/>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>EmailField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
\n
<input type="text"\n
tal:attributes="name field_name"/>\n
\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>FileField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
<input type="file"\n
size="20"\n
tal:attributes="name field_name"/>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>FloatField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
\n
<input type="text"\n
tal:attributes="name field_name"/>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>FormBox</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
\n
<input type="text"\n
tal:attributes="name field_name"/>\n
\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ImageField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
\n
<img alt=""\n
src=""\n
tal:attributes="name field_name">\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>IntegerField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
\n
<input type="text"\n
tal:attributes="name field_name"/>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>LinesField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
<textarea \n
tal:attributes="name field_name"/>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ListBox</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
<table tal:attributes="id field_name">\n
<!-- Listbox content -->\n
</table>\n
<div tal:attributes="id string:${field_name}_pager">\n
<!-- Listbox navigation -->\n
</div>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ListField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
\n
<select tal:attributes="name field_name"\n
size="1">\n
</select>\n
\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>MultiRelationStringField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
<textarea\n
tal:attributes="name field_name"/>\n
<input type="image"\n
name="portal_selections/viewSearchRelatedDocumentDialog0:method"\n
value="update..." src="images/exec16.png">\n
\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ParallelListField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
<select tal:attributes="name string:subfield_${field_name}"\n
size="1">\n
</select>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>PasswordField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
<input type="password"\n
tal:attributes="name field_name"/>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>RadioField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
<input type="text"\n
tal:attributes="name field_name"/>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>RelationStringField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
\n
<input type="text"\n
tal:attributes="name field_name"/>\n
<input type="image" name="portal_selections/viewSearchRelatedDocumentDialog0:method"\n
value="update..." src="images/exec16.png">\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ReportBox</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
<input type="text"\n
tal:attributes="name field_name"/>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>StringField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
<input type="text"\n
tal:attributes="name field_name"/>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>TextAreaField</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block tal:define="field_name request/field_name | options/field_name">\n
\n
<textarea tal:attributes="name field_name" cols="30" rows="4"></textarea>\n
\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>top_menu</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<!-- Top menu -->\n
<div class="bars" id="bars">\n
<div class="main_bar" id="main_bar">\n
\n
<span class="first">\n
<span class="favourites" id="favourites">\n
<select onchange="submitAction(this.form,\'Base_doFavorite\')" name="select_favorite">\n
<option value="" selected="selected">My Favourites</option>\n
\n
<option disabled="disabled">-- Document Publication Workflow --</option>\n
\n
\n
\n
\n
\n
<option value="http://km:12001/erp5/ERP5Site_viewDocumentList?validation_state=draft&amp;local_roles=Owner&amp;portal_type=Discussion Thread&amp;portal_type:list=Drawing&amp;portal_type:list=File&amp;portal_type:list=Image&amp;portal_type:list=PDF&amp;portal_type:list=Presentation&amp;portal_type:list=RSS Feed&amp;portal_type:list=Spreadsheet&amp;portal_type:list=Text&amp;portal_type:list=URL Crawler&amp;portal_type:list=Web Page&amp;reset=1">Documents to Submit (3)</option>\n
\n
\n
\n
\n
<option disabled="disabled">-- Others --</option>\n
\n
\n
\n
\n
\n
\n
<option value="http://km:12001/erp5/portal_templates/view">Manage Business Templates</option>\n
\n
\n
\n
\n
\n
\n
<option value="http://km:12001/erp5/portal_categories/view">Configure Categories</option>\n
\n
\n
\n
\n
\n
\n
<option value="http://km:12001/erp5/ERP5Site_viewCreateModuleDialog">Create Module</option>\n
\n
\n
\n
\n
\n
\n
<option value="http://km:12001/erp5/portal_types/view">Configure Portal Types</option>\n
\n
\n
\n
\n
\n
\n
<option value="http://km:12001/erp5/portal_property_sheets/view">Configure Property Sheets</option>\n
\n
\n
\n
\n
\n
\n
<option value="http://km:12001/erp5/portal_gadgets">Configure Gadgets</option>\n
\n
\n
\n
\n
\n
\n
<option value="http://km:12001/erp5/portal_alarms/view">Configure Alarms</option>\n
\n
\n
\n
\n
\n
\n
<option value="http://km:12001/erp5/undo_form">Undo</option>\n
\n
\n
\n
\n
\n
\n
<option value="http://km:12001/erp5/ERP5Site_getToBeTranslatedMessageListFromEntireSystemAsPot">Generate POT File</option>\n
\n
\n
\n
<option disabled="disabled">-- User --</option>\n
<option value="http://km:12001/erp5/personalize_form">Preferences</option>\n
<option value="http://km:12001/erp5/logout">Log out</option>\n
\n
</select>\n
<button title="Select Favourite" name="Base_doFavorite:method" type="submit">\n
<span class="image"></span>\n
<span class="description">Select Favourite</span>\n
</button>\n
</span>\n
<span class="separator"><!--separator--></span>\n
<span class="modules" id="modules">\n
<select onchange="submitAction(this.form,\'Base_doModule\')" name="select_module">\n
<option value="" selected="selected">Modules</option>\n
<option value="/erp5/bar_module">Bars</option>\n
<option value="/erp5/bug_module">Bugs</option>\n
<option value="/erp5/campaign_module">Campaigns</option>\n
<option value="/erp5/credential_recovery_module">Credential Recoveries</option>\n
<option value="/erp5/credential_request_module">Credential Requests</option>\n
<option value="/erp5/credential_update_module">Credential Updates</option>\n
<option value="/erp5/currency_module">Currencies</option>\n
<option value="/erp5/discussion_thread_module">Discussion Threads</option>\n
<option value="/erp5/document_ingestion_module">Document Ingestion Messages</option>\n
<option value="/erp5/document_module">Documents</option>\n
<option value="/erp5/event_module">Events</option>\n
<option value="/erp5/external_source_module">External Sources</option>\n
<option value="/erp5/foo_module">Foos</option>\n
<option value="/erp5/foo_bar_module">Foos and Bars</option>\n
<option value="/erp5/glossary_module">Glossary</option>\n
<option value="/erp5/image_module">Images</option>\n
<option value="/erp5/knowledge_pad_module">Knowledge Pads</option>\n
<option value="/erp5/meeting_module">Meetings</option>\n
<option value="/erp5/notification_message_module">Notification Messages</option>\n
<option value="/erp5/organisation_module">Organisations</option>\n
<option value="/erp5/person_module">Persons</option>\n
<option value="/erp5/query_module">Queries</option>\n
<option value="/erp5/sale_opportunity_module">Sale Opportunities</option>\n
<option value="/erp5/support_request_module">Support Requests</option>\n
<option value="/erp5/web_page_module">Web Pages</option>\n
<option value="/erp5/web_site_module">Web Sites</option>\n
</select>\n
<button title="Select Module" name="Base_doModule:method" type="submit">\n
<span class="image"></span>\n
<span class="description">Select Module</span>\n
</button>\n
</span>\n
</span>\n
<span class="second">\n
<span class="language" id="language">\n
<select onchange="submitAction(this.form,\'Base_doLanguage\')" name="select_language">\n
<option value="">My Language</option>\n
\n
<option value="en" selected="selected">English</option>\n
\n
</select>\n
<button title="Select Language" name="Base_doLanguage:method" type="submit">\n
<span class="image"></span>\n
<span class="description">Select Language</span>\n
</button>\n
</span>\n
<span class="separator"><!--separator--></span>\n
<span class="search" id="search">\n
<input type="hidden" value="1" name="all_languages">\n
<input type="text" onkeypress="submitFormOnEnter(event, this.form, \'ERP5Site_viewQuickSearchResultList\');" onfocus="if (this.value==\'Search\') this.value=\'\'" value="Search" name="field_your_search_text" accesskey="4" class="quick_search_field">\n
<button title="Search" name="ERP5Site_viewQuickSearchResultList:method" type="submit">\n
<span class="image"></span>\n
<span class="description">Search</span>\n
</button>\n
</span>\n
</span>\n
<p class="clear"></p>\n
\n
\n
</div>\n
<div class="context_bar" id="context_bar">\n
\n
\n
\n
<span class="jump" id="jump">\n
<select onchange="submitAction(this.form,\'Base_doJump\')" name="select_jump">\n
<option value="" selected="selected">Jump...</option>\n
\n
<option value="http://km:12001/erp5/person_module/1/Base_jumpToRelatedObject?portal_type=Query&amp;base_category=agent">Queries</option>\n
\n
\n
<option value="http://km:12001/erp5/person_module/1/Base_jumpToRelatedObject?base_category=destination_decision&amp;portal_type=Credential+Request">Credential Request</option>\n
\n
\n
<option value="http://km:12001/erp5/person_module/1/Base_jumpToRelatedObject?base_category=destination_decision&amp;portal_type=Credential+Update">Credential Update</option>\n
\n
\n
</select>\n
<button title="Jump" name="Base_doJump:method" type="submit">\n
<span class="image"></span>\n
<span class="description">Jump</span>\n
</button>\n
</span>\n
\n
<span class="separator"><!--separator--></span>\n
\n
<span class="action" id="action">\n
<select onchange="submitAction(this.form,\'Base_doAction\')" name="select_action">\n
<option value="" selected="selected">Action...</option>\n
\n
<option value="add Credential Question">Add Credential Question</option>\n
\n
\n
<option value="add Address">Add Address</option>\n
\n
\n
<option value="add Assignment">Add Assignment</option>\n
\n
\n
<option value="add Bank Account">Add Bank Account</option>\n
\n
\n
<option value="add Career">Add Career</option>\n
\n
\n
<option value="add Chat Address">Add Chat Address</option>\n
\n
\n
<option value="add Credit Card">Add Credit Card</option>\n
\n
\n
<option value="add Email">Add Email</option>\n
\n
\n
<option value="add Embedded File">Add Embedded File</option>\n
\n
\n
<option value="add Fax">Add Fax</option>\n
\n
\n
<option value="add Link">Add Link</option>\n
\n
\n
<option value="add Telephone">Add Telephone</option>\n
\n
\n
<option disabled="disabled">-- Workflows --</option>\n
\n
<option value="workflow http://km:12001/erp5/person_module/1/Base_viewWorkflowActionDialog?workflow_action=validate_action">Validate</option>\n
\n
\n
<option value="workflow http://km:12001/erp5/person_module/1/Person_viewCreateUserActionDialog?workflow_action=create_user_action">Create User</option>\n
\n
<option disabled="disabled">-- Object --</option>\n
\n
<option value="object http://km:12001/erp5/person_module/1/Person_resetPassword">Reset Password</option>\n
\n
\n
<option value="object http://km:12001/erp5/person_module/1/Base_viewPostQueryDialog">Post a Query</option>\n
\n
\n
<option value="object http://km:12001/erp5/person_module/1/Person_shiftDefaultCareer">Terminate the Current Career Step</option>\n
\n
\n
<option value="object http://km:12001/erp5/person_module/1/Base_viewAddEventDialog">Create New Event</option>\n
\n
\n
\n
</select>\n
<button title="Action" name="Base_doAction:method" type="submit">\n
<span class="image"></span>\n
<span class="description">Action</span>\n
</button>\n
</span>\n
\n
\n
<span class="tool_buttons">\n
\n
<!-- XXX: exchange_actions seems to be bad condition -->\n
<span class="first">\n
<span class="separator"><!--separator--></span>\n
\n
\n
<button name="Base_createNewDocument:method" title="New" type="submit" class="new">\n
<span class="image"></span>\n
<span class="description">New</span>\n
</button>\n
<button name="Base_createCloneDocument:method" title="Clone" type="submit" class="clone">\n
<span class="image"></span>\n
<span class="description">Clone</span>\n
</button>\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
<span class="separator"><!--separator--></span>\n
\n
<a href="http://km:12001/erp5/person_module/1/Base_viewNewFileDialog?cancel_url=http%3A//km%3A12001/erp5/person_module/1/Person_view&amp;object_uid=5890&amp;form_id=Person_view&amp;object_path=/erp5/person_module/1">\n
<img title="Attach Document" alt="Attach Document" src="http://km:12001/erp5/images/attach.png">\n
</a>\n
\n
\n
\n
</span>\n
\n
<span class="second">\n
\n
\n
\n
</span>\n
</span>\n
<p class="clear"></p>\n
\n
\n
\n
</div>\n
</div>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_function</string> </key>
<value> <string>getListBoxRenderer</string> </value>
</item>
<item>
<key> <string>_module</string> </key>
<value> <string>HTML5</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>getListBoxRenderer</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>jqgrid</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts30690458.97</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>grid.locale-en.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="cdata"><![CDATA[
;(function($){\r\n
/**\r\n
* jqGrid English Translation\r\n
* Tony Tomov tony@trirand.com\r\n
* http://trirand.com/blog/ \r\n
* Dual licensed under the MIT and GPL licenses:\r\n
* http://www.opensource.org/licenses/mit-license.php\r\n
* http://www.gnu.org/licenses/gpl.html\r\n
**/\r\n
$.jgrid = {\r\n
\tdefaults : {\r\n
\t\trecordtext: "View {0} - {1} of {2}",\r\n
\t\temptyrecords: "No records to view",\r\n
\t\tloadtext: "Loading...",\r\n
\t\tpgtext : "Page {0} of {1}"\r\n
\t},\r\n
\tsearch : {\r\n
\t\tcaption: "Search...",\r\n
\t\tFind: "Find",\r\n
\t\tReset: "Reset",\r\n
\t\todata : [\'equal\', \'not equal\', \'less\', \'less or equal\',\'greater\',\'greater or equal\', \'begins with\',\'does not begin with\',\'is in\',\'is not in\',\'ends with\',\'does not end with\',\'contains\',\'does not contain\'],\r\n
\t\tgroupOps: [\t{ op: "AND", text: "all" },\t{ op: "OR", text: "any" }\t],\r\n
\t\tmatchText: " match",\r\n
\t\trulesText: " rules"\r\n
\t},\r\n
\tedit : {\r\n
\t\taddCaption: "Add Record",\r\n
\t\teditCaption: "Edit Record",\r\n
\t\tbSubmit: "Submit",\r\n
\t\tbCancel: "Cancel",\r\n
\t\tbClose: "Close",\r\n
\t\tsaveData: "Data has been changed! Save changes?",\r\n
\t\tbYes : "Yes",\r\n
\t\tbNo : "No",\r\n
\t\tbExit : "Cancel",\r\n
\t\tmsg: {\r\n
\t\t\trequired:"Field is required",\r\n
\t\t\tnumber:"Please, enter valid number",\r\n
\t\t\tminValue:"value must be greater than or equal to ",\r\n
\t\t\tmaxValue:"value must be less than or equal to",\r\n
\t\t\temail: "is not a valid e-mail",\r\n
\t\t\tinteger: "Please, enter valid integer value",\r\n
\t\t\tdate: "Please, enter valid date value",\r\n
\t\t\turl: "is not a valid URL. Prefix required (\'http://\' or \'https://\')",\r\n
\t\t\tnodefined : " is not defined!",\r\n
\t\t\tnovalue : " return value is required!",\r\n
\t\t\tcustomarray : "Custom function should return array!",\r\n
\t\t\tcustomfcheck : "Custom function should be present in case of custom checking!"\r\n
\t\t\t\r\n
\t\t}\r\n
\t},\r\n
\tview : {\r\n
\t\tcaption: "View Record",\r\n
\t\tbClose: "Close"\r\n
\t},\r\n
\tdel : {\r\n
\t\tcaption: "Delete",\r\n
\t\tmsg: "Delete selected record(s)?",\r\n
\t\tbSubmit: "Delete",\r\n
\t\tbCancel: "Cancel"\r\n
\t},\r\n
\tnav : {\r\n
\t\tedittext: "",\r\n
\t\tedittitle: "Edit selected row",\r\n
\t\taddtext:"",\r\n
\t\taddtitle: "Add new row",\r\n
\t\tdeltext: "",\r\n
\t\tdeltitle: "Delete selected row",\r\n
\t\tsearchtext: "",\r\n
\t\tsearchtitle: "Find records",\r\n
\t\trefreshtext: "",\r\n
\t\trefreshtitle: "Reload Grid",\r\n
\t\talertcap: "Warning",\r\n
\t\talerttext: "Please, select row",\r\n
\t\tviewtext: "",\r\n
\t\tviewtitle: "View selected row"\r\n
\t},\r\n
\tcol : {\r\n
\t\tcaption: "Select columns",\r\n
\t\tbSubmit: "Ok",\r\n
\t\tbCancel: "Cancel"\r\n
\t},\r\n
\terrors : {\r\n
\t\terrcap : "Error",\r\n
\t\tnourl : "No url is set",\r\n
\t\tnorecords: "No records to process",\r\n
\t\tmodel : "Length of colNames <> colModel!"\r\n
\t},\r\n
\tformatter : {\r\n
\t\tinteger : {thousandsSeparator: " ", defaultValue: \'0\'},\r\n
\t\tnumber : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: \'0.00\'},\r\n
\t\tcurrency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: \'0.00\'},\r\n
\t\tdate : {\r\n
\t\t\tdayNames: [\r\n
\t\t\t\t"Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat",\r\n
\t\t\t\t"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"\r\n
\t\t\t],\r\n
\t\t\tmonthNames: [\r\n
\t\t\t\t"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",\r\n
\t\t\t\t"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"\r\n
\t\t\t],\r\n
\t\t\tAmPm : ["am","pm","AM","PM"],\r\n
\t\t\tS: function (j) {return j < 11 || j > 13 ? [\'st\', \'nd\', \'rd\', \'th\'][Math.min((j - 1) % 10, 3)] : \'th\'},\r\n
\t\t\tsrcformat: \'Y-m-d\',\r\n
\t\t\tnewformat: \'d/m/Y\',\r\n
\t\t\tmasks : {\r\n
\t\t\t\tISO8601Long:"Y-m-d H:i:s",\r\n
\t\t\t\tISO8601Short:"Y-m-d",\r\n
\t\t\t\tShortDate: "n/j/Y",\r\n
\t\t\t\tLongDate: "l, F d, Y",\r\n
\t\t\t\tFullDateTime: "l, F d, Y g:i:s A",\r\n
\t\t\t\tMonthDay: "F d",\r\n
\t\t\t\tShortTime: "g:i A",\r\n
\t\t\t\tLongTime: "g:i:s A",\r\n
\t\t\t\tSortableDateTime: "Y-m-d\\\\TH:i:s",\r\n
\t\t\t\tUniversalSortableDateTime: "Y-m-d H:i:sO",\r\n
\t\t\t\tYearMonth: "F, Y"\r\n
\t\t\t},\r\n
\t\t\treformatAfterEdit : false\r\n
\t\t},\r\n
\t\tbaseLinkUrl: \'\',\r\n
\t\tshowAction: \'\',\r\n
\t\ttarget: \'\',\r\n
\t\tcheckbox : {disabled:true},\r\n
\t\tidName : \'id\'\r\n
\t}\r\n
};\r\n
})(jQuery);\r\n
]]></string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>3927</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>grid.locale-en.js</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>images_jqgrid</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>XXX: ugly fix must find way to cope with images folder all around skins</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts31121023.08</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>ui-bg_glass_75_d0e5f5_1x400.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAAQ0lEQVQ4je3PIQ6AQBBD0f97/yty
AxyCYFjUEgSehNS8pNOaYVn3EYBSym/ZjpMIROctQqI34xl1TlQis/3+mVLKGxe8GAvsJOTa6gAA
AABJRU5ErkJggg==</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>400</int> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>124</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>ui-bg_glass_75_d0e5f5_1x400.png</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts30695067.56</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>ui-bg_glass_85_dfeffc_1x400.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAAQklEQVQ4je3PMQqAMBBE0T9z/5Om
jpWEtTAiQnohTPP4W0yxtD7KACGEbTnOmqWbwraeU2BLswTY33q3/z8TQlhxAeVuCwDp/l1ZAAAA
AElFTkSuQmCC</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>400</int> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>123</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>ui-bg_glass_85_dfeffc_1x400.png</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts30695076.72</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>ui-bg_gloss-wave_55_5c9ccc_500x100.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">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</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>100</int> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>3457</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>ui-bg_gloss-wave_55_5c9ccc_500x100.png</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>500</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts31121124.96</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>ui-bg_inset-hard_100_f5f8f9_1x100.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAYAAABHLFpgAAAAL0lEQVQYlWP4+uPnfyYGBgaGYU0w
MjIwMDEwMDIwMeIUY4RLMDDC9DIOjHNpSwAAYLAEuHMRX+4AAAAASUVORK5CYII=</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>100</int> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>104</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>ui-bg_inset-hard_100_f5f8f9_1x100.png</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts31121082.88</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>ui-bg_inset-hard_100_fcfdfd_1x100.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAYAAABHLFpgAAAAH0lEQVQYlWP48/fvfyYGBgaGEUcw
4pRlZBwM7qMZAQB3GQS/3cDasAAAAABJRU5ErkJggg==</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>100</int> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>88</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>ui-bg_inset-hard_100_fcfdfd_1x100.png</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts31124774.74</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>ui-icons_217bc0_256x240.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts30695096.79</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>ui-icons_469bdd_256x240.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEVGm91Gm91Gm91Gm91Gm91G
m91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91G
m91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91G
m91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91G
m91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91Gm91K5IuoAAAA
TnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWN
qa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPj0lEQVR4nO1dC2PbthEGyUiq5YSSLWtp
7FpLOmfzkmxr126tmi2p03RJ1/X+/88ZAD5wDxCQLImSHXxKLB8BAncfj+AdAMlKJSQkHAAyyPat
wo6RQbgUDpyBNdUDbm5Gj4ABKc0wA4atfglhHsj0s0eYPqTclBITOQEZBDtg59tfe3UJ7oGSAG4B
NZFfQUFA8GyPNpmnxx1C6K+81zBQHmNQekBAnbou73GHEB6shIr8AksPCd9DYgwIKNC/B/gQHAMk
AVEEnwLMBfsfA+LYsTbsFur/KbB33P9AKCEhISEh4RNGeD7g8CHilLBBnuqh+YD9x0FcARHs88ic
Zf+8vqe6ICCjxRmt328o7FFAapyxclabZ0siOww058mee02GpAHeS8ZOYLWFwd2ERVM9sAT0N2pI
F/bdtKH5gOgtxJsLV+/bA7zI1rlk6zYnCvc8BsSx8/mAwzI3ISEhISEhIaFHbBb4x5eqYu1vnHhs
2IDQP2jQLRKlyAlyO4BQKNKaPBQ6Q6TH9sWq0NOhq8zfQVABT2m4f18LIYJEuWhMWCC7A1YIHYV1
g1IfdgJ0Fa7Qv0yXJWHdp3sa8FgQPz1QhRpY16Y+w6qLOSyhToSisAsHbyBP+/wK+U4Pu2i8h0Ch
OD96j3v2EAUmkFZokU8pRi9IpANxl8dK9/0U2PH5t9jRkZCQkJCQkPCJYPNtqRuGGVKBUOTii0Mj
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</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>240</int> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>4379</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>ui-icons_469bdd_256x240.png</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>256</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts30695084.95</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>ui-icons_6da8d5_256x240.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEVtqNVtqNVtqNVtqNVtqNVt
qNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVt
qNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVt
qNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVt
qNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVtqNVctR1uAAAA
TnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWN
qa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPj0lEQVR4nO1dC2PbthEGyUiq5YSSLWtp
7FpLOmfzkmxr126tmi2p03RJ1/X+/88ZAD5wDxCQLImSHXxKLB8BAncfj+AdAMlKJSQkHAAyyPat
wo6RQbgUDpyBNdUDbm5Gj4ABKc0wA4atfglhHsj0s0eYPqTclBITOQEZBDtg59tfe3UJ7oGSAG4B
NZFfQUFA8GyPNpmnxx1C6K+81zBQHmNQekBAnbou73GHEB6shIr8AksPCd9DYgwIKNC/B/gQHAMk
AVEEnwLMBfsfA+LYsTbsFur/KbB33P9AKCEhISEh4RNGeD7g8CHilLBBnuqh+YD9x0FcARHs88ic
Zf+8vqe6ICCjxRmt328o7FFAapyxclabZ0siOww058mee02GpAHeS8ZOYLWFwd2ERVM9sAT0N2pI
F/bdtKH5gOgtxJsLV+/bA7zI1rlk6zYnCvc8BsSx8/mAwzI3ISEhISEhIaFHbBb4x5eqYu1vnHhs
2IDQP2jQLRKlyAlyO4BQKNKaPBQ6Q6TH9sWq0NOhq8zfQVABT2m4f18LIYJEuWhMWCC7A1YIHYV1
g1IfdgJ0Fa7Qv0yXJWHdp3sa8FgQPz1QhRpY16Y+w6qLOSyhToSisAsHbyBP+/wK+U4Pu2i8h0Ch
OD96j3v2EAUmkFZokU8pRi9IpANxl8dK9/0U2PH5t9jRkZCQkJCQkPCJYPNtqRuGGVKBUOTii0Mj
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</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>240</int> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>4379</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>ui-icons_6da8d5_256x240.png</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>256</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts31123612.3</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>ui-icons_d8e7f3_256x240.png</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/png</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts30695186.22</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>jquery-ui-1.8.1.custom.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="cdata"><![CDATA[
/*\n
* jQuery UI CSS Framework\n
* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)\n
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.\n
*/\n
\n
/* Layout helpers\n
----------------------------------*/\n
.ui-helper-hidden { display: none; }\n
.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }\n
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }\n
.ui-helper-clearfix { display: inline-block; }\n
/* required comment for clearfix to work in Opera \\*/\n
* html .ui-helper-clearfix { height:1%; }\n
.ui-helper-clearfix { display:block; }\n
/* end clearfix */\n
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }\n
\n
\n
/* Interaction Cues\n
----------------------------------*/\n
.ui-state-disabled { cursor: default !important; }\n
\n
\n
/* Icons\n
----------------------------------*/\n
\n
/* states and images */\n
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }\n
\n
\n
/* Misc visuals\n
----------------------------------*/\n
\n
/* Overlays */\n
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n
\n
\n
/*\n
* jQuery UI CSS Framework\n
* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)\n
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.\n
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=02_glass.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px\n
*/\n
\n
\n
/* Component containers\n
----------------------------------*/\n
.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }\n
.ui-widget .ui-widget { font-size: 1em; }\n
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; }\n
.ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images_jqgrid/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; }\n
.ui-widget-content a { color: #222222; }\n
.ui-widget-header { border: 1px solid #4297d7; background: #5c9ccc url(images_jqgrid/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }\n
.ui-widget-header a { color: #ffffff; }\n
\n
/* Interaction states\n
----------------------------------*/\n
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #c5dbec; background: #dfeffc url(images_jqgrid/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2e6e9e; }\n
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2e6e9e; text-decoration: none; }\n
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #79b7e7; background: #d0e5f5 url(images_jqgrid/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1d5987; }\n
.ui-state-hover a, .ui-state-hover a:hover { color: #1d5987; text-decoration: none; }\n
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #79b7e7; background: #f5f8f9 url(images_jqgrid/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e17009; }\n
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #e17009; text-decoration: none; }\n
.ui-widget :active { outline: none; }\n
\n
/* Interaction Cues\n
----------------------------------*/\n
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fad42e; background: #fbec88 url(images_jqgrid/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x; color: #363636; }\n
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }\n
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images_jqgrid/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }\n
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }\n
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }\n
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n
\n
/* Icons\n
----------------------------------*/\n
\n
/* states and images */\n
.ui-icon { width: 16px; height: 16px; background-image: url(images_jqgrid/ui-icons_469bdd_256x240.png); }\n
.ui-widget-content .ui-icon {background-image: url(images_jqgrid/ui-icons_469bdd_256x240.png); }\n
.ui-widget-header .ui-icon {background-image: url(images_jqgrid/ui-icons_d8e7f3_256x240.png); }\n
.ui-state-default .ui-icon { background-image: url(images_jqgrid/ui-icons_6da8d5_256x240.png); }\n
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images_jqgrid/ui-icons_217bc0_256x240.png); }\n
.ui-state-active .ui-icon {background-image: url(images_jqgrid/ui-icons_f9bd01_256x240.png); }\n
.ui-state-highlight .ui-icon {background-image: url(images_jqgrid/ui-icons_2e83ff_256x240.png); }\n
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images_jqgrid/ui-icons_cd0a0a_256x240.png); }\n
\n
/* positioning */\n
.ui-icon-carat-1-n { background-position: 0 0; }\n
.ui-icon-carat-1-ne { background-position: -16px 0; }\n
.ui-icon-carat-1-e { background-position: -32px 0; }\n
.ui-icon-carat-1-se { background-position: -48px 0; }\n
.ui-icon-carat-1-s { background-position: -64px 0; }\n
.ui-icon-carat-1-sw { background-position: -80px 0; }\n
.ui-icon-carat-1-w { background-position: -96px 0; }\n
.ui-icon-carat-1-nw { background-position: -112px 0; }\n
.ui-icon-carat-2-n-s { background-position: -128px 0; }\n
.ui-icon-carat-2-e-w { background-position: -144px 0; }\n
.ui-icon-triangle-1-n { background-position: 0 -16px; }\n
.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n
.ui-icon-triangle-1-e { background-position: -32px -16px; }\n
.ui-icon-triangle-1-se { background-position: -48px -16px; }\n
.ui-icon-triangle-1-s { background-position: -64px -16px; }\n
.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n
.ui-icon-triangle-1-w { background-position: -96px -16px; }\n
.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n
.ui-icon-arrow-1-n { background-position: 0 -32px; }\n
.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n
.ui-icon-arrow-1-e { background-position: -32px -32px; }\n
.ui-icon-arrow-1-se { background-position: -48px -32px; }\n
.ui-icon-arrow-1-s { background-position: -64px -32px; }\n
.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n
.ui-icon-arrow-1-w { background-position: -96px -32px; }\n
.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n
.ui-icon-arrow-4 { background-position: 0 -80px; }\n
.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n
.ui-icon-extlink { background-position: -32px -80px; }\n
.ui-icon-newwin { background-position: -48px -80px; }\n
.ui-icon-refresh { background-position: -64px -80px; }\n
.ui-icon-shuffle { background-position: -80px -80px; }\n
.ui-icon-transfer-e-w { background-position: -96px -80px; }\n
.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n
.ui-icon-folder-collapsed { background-position: 0 -96px; }\n
.ui-icon-folder-open { background-position: -16px -96px; }\n
.ui-icon-document { background-position: -32px -96px; }\n
.ui-icon-document-b { background-position: -48px -96px; }\n
.ui-icon-note { background-position: -64px -96px; }\n
.ui-icon-mail-closed { background-position: -80px -96px; }\n
.ui-icon-mail-open { background-position: -96px -96px; }\n
.ui-icon-suitcase { background-position: -112px -96px; }\n
.ui-icon-comment { background-position: -128px -96px; }\n
.ui-icon-person { background-position: -144px -96px; }\n
.ui-icon-print { background-position: -160px -96px; }\n
.ui-icon-trash { background-position: -176px -96px; }\n
.ui-icon-locked { background-position: -192px -96px; }\n
.ui-icon-unlocked { background-position: -208px -96px; }\n
.ui-icon-bookmark { background-position: -224px -96px; }\n
.ui-icon-tag { background-position: -240px -96px; }\n
.ui-icon-home { background-position: 0 -112px; }\n
.ui-icon-flag { background-position: -16px -112px; }\n
.ui-icon-calendar { background-position: -32px -112px; }\n
.ui-icon-cart { background-position: -48px -112px; }\n
.ui-icon-pencil { background-position: -64px -112px; }\n
.ui-icon-clock { background-position: -80px -112px; }\n
.ui-icon-disk { background-position: -96px -112px; }\n
.ui-icon-calculator { background-position: -112px -112px; }\n
.ui-icon-zoomin { background-position: -128px -112px; }\n
.ui-icon-zoomout { background-position: -144px -112px; }\n
.ui-icon-search { background-position: -160px -112px; }\n
.ui-icon-wrench { background-position: -176px -112px; }\n
.ui-icon-gear { background-position: -192px -112px; }\n
.ui-icon-heart { background-position: -208px -112px; }\n
.ui-icon-star { background-position: -224px -112px; }\n
.ui-icon-link { background-position: -240px -112px; }\n
.ui-icon-cancel { background-position: 0 -128px; }\n
.ui-icon-plus { background-position: -16px -128px; }\n
.ui-icon-plusthick { background-position: -32px -128px; }\n
.ui-icon-minus { background-position: -48px -128px; }\n
.ui-icon-minusthick { background-position: -64px -128px; }\n
.ui-icon-close { background-position: -80px -128px; }\n
.ui-icon-closethick { background-position: -96px -128px; }\n
.ui-icon-key { background-position: -112px -128px; }\n
.ui-icon-lightbulb { background-position: -128px -128px; }\n
.ui-icon-scissors { background-position: -144px -128px; }\n
.ui-icon-clipboard { background-position: -160px -128px; }\n
.ui-icon-copy { background-position: -176px -128px; }\n
.ui-icon-contact { background-position: -192px -128px; }\n
.ui-icon-image { background-position: -208px -128px; }\n
.ui-icon-video { background-position: -224px -128px; }\n
.ui-icon-script { background-position: -240px -128px; }\n
.ui-icon-alert { background-position: 0 -144px; }\n
.ui-icon-info { background-position: -16px -144px; }\n
.ui-icon-notice { background-position: -32px -144px; }\n
.ui-icon-help { background-position: -48px -144px; }\n
.ui-icon-check { background-position: -64px -144px; }\n
.ui-icon-bullet { background-position: -80px -144px; }\n
.ui-icon-radio-off { background-position: -96px -144px; }\n
.ui-icon-radio-on { background-position: -112px -144px; }\n
.ui-icon-pin-w { background-position: -128px -144px; }\n
.ui-icon-pin-s { background-position: -144px -144px; }\n
.ui-icon-play { background-position: 0 -160px; }\n
.ui-icon-pause { background-position: -16px -160px; }\n
.ui-icon-seek-next { background-position: -32px -160px; }\n
.ui-icon-seek-prev { background-position: -48px -160px; }\n
.ui-icon-seek-end { background-position: -64px -160px; }\n
.ui-icon-seek-start { background-position: -80px -160px; }\n
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n
.ui-icon-seek-first { background-position: -80px -160px; }\n
.ui-icon-stop { background-position: -96px -160px; }\n
.ui-icon-eject { background-position: -112px -160px; }\n
.ui-icon-volume-off { background-position: -128px -160px; }\n
.ui-icon-volume-on { background-position: -144px -160px; }\n
.ui-icon-power { background-position: 0 -176px; }\n
.ui-icon-signal-diag { background-position: -16px -176px; }\n
.ui-icon-signal { background-position: -32px -176px; }\n
.ui-icon-battery-0 { background-position: -48px -176px; }\n
.ui-icon-battery-1 { background-position: -64px -176px; }\n
.ui-icon-battery-2 { background-position: -80px -176px; }\n
.ui-icon-battery-3 { background-position: -96px -176px; }\n
.ui-icon-circle-plus { background-position: 0 -192px; }\n
.ui-icon-circle-minus { background-position: -16px -192px; }\n
.ui-icon-circle-close { background-position: -32px -192px; }\n
.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n
.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n
.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n
.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n
.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n
.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n
.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n
.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n
.ui-icon-circle-zoomin { background-position: -176px -192px; }\n
.ui-icon-circle-zoomout { background-position: -192px -192px; }\n
.ui-icon-circle-check { background-position: -208px -192px; }\n
.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n
.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n
.ui-icon-circlesmall-close { background-position: -32px -208px; }\n
.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n
.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n
.ui-icon-squaresmall-close { background-position: -80px -208px; }\n
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n
\n
\n
/* Misc visuals\n
----------------------------------*/\n
\n
/* Corner radius */\n
.ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; }\n
.ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; border-top-right-radius: 5px; }\n
.ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }\n
.ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }\n
.ui-corner-top { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; border-top-right-radius: 5px; }\n
.ui-corner-bottom { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }\n
.ui-corner-right { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; border-top-right-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }\n
.ui-corner-left { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }\n
.ui-corner-all { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }\n
\n
/* Overlays */\n
.ui-widget-overlay { background: #aaaaaa url(images_jqgrid/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }\n
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images_jqgrid/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* Resizable\n
----------------------------------*/\n
.ui-resizable { position: relative;}\n
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}\n
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Accordion\n
----------------------------------*/\n
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }\n
.ui-accordion .ui-accordion-li-fix { display: inline; }\n
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }\n
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }\n
/* IE7-/Win - Fix extra vertical space in lists */\n
.ui-accordion a { zoom: 1; }\n
.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }\n
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }\n
.ui-accordion .ui-accordion-content-active { display: block; }/* Autocomplete\n
----------------------------------*/\n
.ui-autocomplete { position: absolute; cursor: default; }\t\n
.ui-autocomplete-loading { background: white url(\'images_jqgrid/ui-anim_basic_16x16.gif\') right center no-repeat; }\n
\n
/* workarounds */\n
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n
\n
/* Menu\n
----------------------------------*/\n
.ui-menu {\n
\tlist-style:none;\n
\tpadding: 2px;\n
\tmargin: 0;\n
\tdisplay:block;\n
}\n
.ui-menu .ui-menu {\n
\tmargin-top: -3px;\n
}\n
.ui-menu .ui-menu-item {\n
\tmargin:0;\n
\tpadding: 0;\n
\tzoom: 1;\n
\tfloat: left;\n
\tclear: left;\n
\twidth: 100%;\n
}\n
.ui-menu .ui-menu-item a {\n
\ttext-decoration:none;\n
\tdisplay:block;\n
\tpadding:.2em .4em;\n
\tline-height:1.5;\n
\tzoom:1;\n
}\n
.ui-menu .ui-menu-item a.ui-state-hover,\n
.ui-menu .ui-menu-item a.ui-state-active {\n
\tfont-weight: normal;\n
\tmargin: -1px;\n
}\n
/* Button\n
----------------------------------*/\n
\n
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\n
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n
.ui-button-icons-only { width: 3.4em; } \n
button.ui-button-icons-only { width: 3.7em; } \n
\n
/*button text element */\n
.ui-button .ui-button-text { display: block; line-height: 1.4; }\n
.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n
.ui-button-text-icon .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n
/* no icon support for input elements, provide padding by default */\n
input.ui-button { padding: .4em 1em; }\n
\n
/*button icon element(s) */\n
.ui-button-icon-only .ui-icon, .ui-button-text-icon .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n
.ui-button-text-icon .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n
\n
/*button sets*/\n
.ui-buttonset { margin-right: 7px; }\n
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n
\n
/* workarounds */\n
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n
\n
\n
\n
\n
\n
/* Dialog\n
----------------------------------*/\n
.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }\n
.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; }\n
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; } \n
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n
.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n
.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }\n
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n
.ui-draggable .ui-dialog-titlebar { cursor: move; }\n
/* Slider\n
----------------------------------*/\n
.ui-slider { position: relative; text-align: left; }\n
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n
\n
.ui-slider-horizontal { height: .8em; }\n
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n
.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n
.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n
\n
.ui-slider-vertical { width: .8em; height: 100px; }\n
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n
.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs\n
----------------------------------*/\n
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */\n
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }\n
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }\n
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }\n
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n
.ui-tabs .ui-tabs-hide { display: none !important; }\n
/* Datepicker\n
----------------------------------*/\n
.ui-datepicker { width: 17em; padding: .2em .2em 0; }\n
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n
.ui-datepicker .ui-datepicker-prev { left:2px; }\n
.ui-datepicker .ui-datepicker-next { right:2px; }\n
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n
.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }\n
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n
.ui-datepicker select.ui-datepicker-month, \n
.ui-datepicker select.ui-datepicker-year { width: 49%;}\n
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }\n
.ui-datepicker td { border: 0; padding: 1px; }\n
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n
\n
/* with multiple calendars */\n
.ui-datepicker.ui-datepicker-multi { width:auto; }\n
.ui-datepicker-multi .ui-datepicker-group { float:left; }\n
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n
.ui-datepicker-row-break { clear:both; width:100%; }\n
\n
/* RTL support */\n
.ui-datepicker-rtl { direction: rtl; }\n
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n
.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n
\n
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n
.ui-datepicker-cover {\n
display: none; /*sorry for IE5*/\n
display/**/: block; /*sorry for IE5*/\n
position: absolute; /*must have*/\n
z-index: -1; /*must have*/\n
filter: mask(); /*must have*/\n
top: -4px; /*must have*/\n
left: -4px; /*must have*/\n
width: 200px; /*must have*/\n
height: 200px; /*must have*/\n
}/* Progressbar\n
----------------------------------*/\n
.ui-progressbar { height:2em; text-align: left; }\n
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
]]></string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>31611</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>jquery-ui-1.8.1.custom.css</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts30690424.51</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>ui.jqgrid.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string>/*Grid*/\r\n
.ui-jqgrid {position: relative; font-size:11px;}\r\n
.ui-jqgrid .ui-jqgrid-view {position: relative;left:0px; top: 0px; padding: .0em;}\r\n
/* caption*/\r\n
.ui-jqgrid .ui-jqgrid-titlebar {padding: .3em .2em .2em .3em; position: relative; border-left: 0px none;border-right: 0px none; border-top: 0px none;}\r\n
.ui-jqgrid .ui-jqgrid-title { float: left; margin: .1em 0 .2em; }\r\n
.ui-jqgrid .ui-jqgrid-titlebar-close { position: absolute;top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height:18px;}.ui-jqgrid .ui-jqgrid-titlebar-close span { display: block; margin: 1px; }\r\n
.ui-jqgrid .ui-jqgrid-titlebar-close:hover { padding: 0; }\r\n
/* header*/\r\n
.ui-jqgrid .ui-jqgrid-hdiv {position: relative; margin: 0em;padding: 0em; overflow-x: hidden; border-left: 0px none !important; border-top : 0px none !important; border-right : 0px none !important;}\r\n
.ui-jqgrid .ui-jqgrid-hbox {float: left; padding-right: 20px;}\r\n
.ui-jqgrid .ui-jqgrid-htable {table-layout:fixed;margin:0em;}\r\n
.ui-jqgrid .ui-jqgrid-htable th {height:22px;padding: 0 2px 0 2px;}\r\n
.ui-jqgrid .ui-jqgrid-htable th div {overflow: hidden; position:relative; height:17px;}\r\n
.ui-th-column, .ui-jqgrid .ui-jqgrid-htable th.ui-th-column {overflow: hidden;white-space: nowrap;text-align:center;border-top : 0px none;border-bottom : 0px none;}\r\n
.ui-th-ltr, .ui-jqgrid .ui-jqgrid-htable th.ui-th-ltr {border-left : 0px none;}\r\n
.ui-th-rtl, .ui-jqgrid .ui-jqgrid-htable th.ui-th-rtl {border-right : 0px none;}\r\n
.ui-first-th-ltr {border-right: 1px solid; }\r\n
.ui-first-th-rtl {border-left: 1px solid; }\r\n
.ui-jqgrid .ui-th-div-ie {white-space: nowrap; zoom :1; height:17px;}\r\n
.ui-jqgrid .ui-jqgrid-resize {height:20px !important;position: relative; cursor :e-resize;display: inline;overflow: hidden;}\r\n
.ui-jqgrid .ui-grid-ico-sort {overflow:hidden;position:absolute;display:inline; cursor: pointer !important;}\r\n
.ui-jqgrid .ui-icon-asc {margin-top:-3px; height:12px;}\r\n
.ui-jqgrid .ui-icon-desc {margin-top:3px;height:12px;}\r\n
.ui-jqgrid .ui-i-asc {margin-top:0px;height:16px;}\r\n
.ui-jqgrid .ui-i-desc {margin-top:0px;margin-left:13px;height:16px;}\r\n
.ui-jqgrid .ui-jqgrid-sortable {cursor:pointer;}\r\n
.ui-jqgrid tr.ui-search-toolbar th { border-top-width: 1px !important; border-top-color: inherit !important; border-top-style: ridge !important }\r\n
tr.ui-search-toolbar input {margin: 1px 0px 0px 0px}\r\n
tr.ui-search-toolbar select {margin: 1px 0px 0px 0px}\r\n
/* body */ \r\n
.ui-jqgrid .ui-jqgrid-bdiv {position: relative; margin: 0em; padding:0; overflow: auto; text-align:left;}\r\n
.ui-jqgrid .ui-jqgrid-btable {table-layout:fixed; margin:0em; outline-style: none; }\r\n
.ui-jqgrid tr.jqgrow { outline-style: none; }\r\n
.ui-jqgrid tr.jqgroup { outline-style: none; }\r\n
.ui-jqgrid tr.jqgrow td {font-weight: normal; overflow: hidden; white-space: pre; height: 22px;padding: 0 2px 0 2px;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;}\r\n
.ui-jqgrid tr.jqgfirstrow td {padding: 0 2px 0 2px;border-right-width: 1px; border-right-style: solid;}\r\n
.ui-jqgrid tr.jqgroup td {font-weight: normal; overflow: hidden; white-space: pre; height: 22px;padding: 0 2px 0 2px;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;}\r\n
.ui-jqgrid tr.jqfoot td {font-weight: bold; overflow: hidden; white-space: pre; height: 22px;padding: 0 2px 0 2px;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;}\r\n
.ui-jqgrid tr.ui-row-ltr td {text-align:left;border-right-width: 1px; border-right-color: inherit; border-right-style: solid;}\r\n
.ui-jqgrid tr.ui-row-rtl td {text-align:right;border-left-width: 1px; border-left-color: inherit; border-left-style: solid;}\r\n
.ui-jqgrid td.jqgrid-rownum { padding: 0 2px 0 2px; margin: 0px; border: 0px none;}\r\n
.ui-jqgrid .ui-jqgrid-resize-mark { width:2px; left:0; background-color:#777; cursor: e-resize; cursor: col-resize; position:absolute; top:0; height:100px; overflow:hidden; display:none;\tborder:0 none;}\r\n
/* footer */\r\n
.ui-jqgrid .ui-jqgrid-sdiv {position: relative; margin: 0em;padding: 0em; overflow: hidden; border-left: 0px none !important; border-top : 0px none !important; border-right : 0px none !important;}\r\n
.ui-jqgrid .ui-jqgrid-ftable {table-layout:fixed; margin-bottom:0em;}\r\n
.ui-jqgrid tr.footrow td {font-weight: bold; overflow: hidden; white-space:nowrap; height: 21px;padding: 0 2px 0 2px;border-top-width: 1px; border-top-color: inherit; border-top-style: solid;}\r\n
.ui-jqgrid tr.footrow-ltr td {text-align:left;border-right-width: 1px; border-right-color: inherit; border-right-style: solid;}\r\n
.ui-jqgrid tr.footrow-rtl td {text-align:right;border-left-width: 1px; border-left-color: inherit; border-left-style: solid;}\r\n
/* Pager*/\r\n
.ui-jqgrid .ui-jqgrid-pager { border-left: 0px none !important;border-right: 0px none !important; border-bottom: 0px none !important; margin: 0px !important; padding: 0px !important; position: relative; height: 25px;white-space: nowrap;overflow: hidden;}\r\n
.ui-jqgrid .ui-pager-control {position: relative;}\r\n
.ui-jqgrid .ui-pg-table {position: relative; padding-bottom:2px; width:auto; margin: 0em;}\r\n
.ui-jqgrid .ui-pg-table td {font-weight:normal; vertical-align:middle; padding:1px;}\r\n
.ui-jqgrid .ui-pg-button { height:19px !important;}\r\n
.ui-jqgrid .ui-pg-button span { display: block; margin: 1px; float:left;}\r\n
.ui-jqgrid .ui-pg-button:hover { padding: 0px; }\r\n
.ui-jqgrid .ui-state-disabled:hover {padding:1px;}\r\n
.ui-jqgrid .ui-pg-input { height:13px;font-size:.8em; margin: 0em;}\r\n
.ui-jqgrid .ui-pg-selbox {font-size:.8em; line-height:18px; display:block; height:18px; margin: 0em;}\r\n
.ui-jqgrid .ui-separator {height: 18px; border-left: 1px solid #ccc ; border-right: 1px solid #ccc ; margin: 1px; float: right;}\r\n
.ui-jqgrid .ui-paging-info {font-weight: normal;height:19px; margin-top:3px;margin-right:4px;}\r\n
.ui-jqgrid .ui-jqgrid-pager .ui-pg-div {padding:1px 0;float:left;list-style-image:none;list-style-position:outside;list-style-type:none;position:relative;}\r\n
.ui-jqgrid .ui-jqgrid-pager .ui-pg-button { cursor:pointer; }\r\n
.ui-jqgrid .ui-jqgrid-pager .ui-pg-div span.ui-icon {float:left;margin:0 2px;}\r\n
.ui-jqgrid td input, .ui-jqgrid td select .ui-jqgrid td textarea { margin: 0em;}\r\n
.ui-jqgrid td textarea {width:auto;height:auto;}\r\n
.ui-jqgrid .ui-jqgrid-toppager {border-left: 0px none !important;border-right: 0px none !important; border-top: 0px none !important; margin: 0px !important; padding: 0px !important; position: relative; height: 25px !important;white-space: nowrap;overflow: hidden;}\r\n
/*subgrid*/\r\n
.ui-jqgrid .ui-jqgrid-btable .ui-sgcollapsed span {display: block;}\r\n
.ui-jqgrid .ui-subgrid {margin:0em;padding:0em; width:100%;}\r\n
.ui-jqgrid .ui-subgrid table {table-layout: fixed;}\r\n
.ui-jqgrid .ui-subgrid tr.ui-subtblcell td {height:18px;border-right-width: 1px; border-right-color: inherit; border-right-style: solid;border-bottom-width: 1px; border-bottom-color: inherit; border-bottom-style: solid;}\r\n
.ui-jqgrid .ui-subgrid td.subgrid-data {border-top: 0px none !important;}\r\n
.ui-jqgrid .ui-subgrid td.subgrid-cell {border-width: 0px 0px 1px 0px;}\r\n
.ui-jqgrid .ui-th-subgrid {height:20px;}\r\n
/* loading */\r\n
.ui-jqgrid .loading {position: absolute; top: 45%;left: 45%;width: auto;z-index:101;padding: 6px; margin: 5px;text-align: center;font-weight: bold;display: none;border-width: 2px !important;}\r\n
.ui-jqgrid .jqgrid-overlay {display:none;z-index:100;}\r\n
* html .jqgrid-overlay {width: expression(this.parentNode.offsetWidth+\'px\');height: expression(this.parentNode.offsetHeight+\'px\');}\r\n
* .jqgrid-overlay iframe {position:absolute;top:0;left:0;z-index:-1;width: expression(this.parentNode.offsetWidth+\'px\');height: expression(this.parentNode.offsetHeight+\'px\');}\r\n
/* end loading div */\r\n
/* toolbar */\r\n
.ui-jqgrid .ui-userdata {border-left: 0px none;\tborder-right: 0px none;\theight : 21px;overflow: hidden;\t}\r\n
/*Modal Window */\r\n
.ui-jqdialog { display: none; width: 300px; position: absolute; padding: .2em; font-size:11px; overflow:visible;}\r\n
.ui-jqdialog .ui-jqdialog-titlebar { padding: .3em .2em; position: relative; }\r\n
.ui-jqdialog .ui-jqdialog-title { margin: .1em 0 .2em; } \r\n
.ui-jqdialog .ui-jqdialog-titlebar-close { position: absolute; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\r\n
\r\n
.ui-jqdialog .ui-jqdialog-titlebar-close span { display: block; margin: 1px; }\r\n
.ui-jqdialog .ui-jqdialog-titlebar-close:hover, .ui-jqdialog .ui-jqdialog-titlebar-close:focus { padding: 0; }\r\n
.ui-jqdialog-content, .ui-jqdialog .ui-jqdialog-content { border: 0; padding: .3em .2em; background: none; height:auto;}\r\n
.ui-jqdialog .ui-jqconfirm {padding: .4em 1em; border-width:3px;position:absolute;bottom:10px;right:10px;overflow:visible;display:none;height:80px;width:220px;text-align:center;}\r\n
/* end Modal window*/\r\n
/* Form edit */\r\n
.ui-jqdialog-content .FormGrid {margin: 0px;}\r\n
.ui-jqdialog-content .EditTable { width: 100%; margin-bottom:0em;}\r\n
.ui-jqdialog-content .DelTable { width: 100%; margin-bottom:0em;}\r\n
.EditTable td input, .EditTable td select, .EditTable td textarea {margin: 0em;}\r\n
.EditTable td textarea { width:auto; height:auto;}\r\n
.ui-jqdialog-content td.EditButton {text-align: right;border-top: 0px none;border-left: 0px none;border-right: 0px none; padding-bottom:5px; padding-top:5px;}\r\n
.ui-jqdialog-content td.navButton {text-align: center; border-left: 0px none;border-top: 0px none;border-right: 0px none; padding-bottom:5px; padding-top:5px;}\r\n
.ui-jqdialog-content input.FormElement {padding:.3em}\r\n
.ui-jqdialog-content .data-line {padding-top:.1em;border: 0px none;}\r\n
\r\n
.ui-jqdialog-content .CaptionTD {text-align: left; vertical-align: middle;border: 0px none; padding: 2px;white-space: nowrap;}\r\n
.ui-jqdialog-content .DataTD {padding: 2px; border: 0px none; vertical-align: top;}\r\n
.ui-jqdialog-content .form-view-data {white-space:pre}\r\n
.fm-button { display: inline-block; margin:0 4px 0 0; padding: .4em .5em; text-decoration:none !important; cursor:pointer; position: relative; text-align: center; zoom: 1; }\r\n
.fm-button-icon-left { padding-left: 1.9em; }\r\n
.fm-button-icon-right { padding-right: 1.9em; }\r\n
.fm-button-icon-left .ui-icon { right: auto; left: .2em; margin-left: 0; position: absolute; top: 50%; margin-top: -8px; }\r\n
.fm-button-icon-right .ui-icon { left: auto; right: .2em; margin-left: 0; position: absolute; top: 50%; margin-top: -8px;}\r\n
#nData, #pData { float: left; margin:3px;padding: 0; width: 15px; }\r\n
/* End Eorm edit */\r\n
/*.ui-jqgrid .edit-cell {}*/\r\n
.ui-jqgrid .selected-row, div.ui-jqgrid .selected-row td {font-style : normal;border-left: 0px none;}\r\n
/* Tree Grid */\r\n
.ui-jqgrid .tree-wrap {float: left; position: relative;height: 18px;white-space: nowrap;overflow: hidden;}\r\n
.ui-jqgrid .tree-minus {position: absolute; height: 18px; width: 18px; overflow: hidden;}\r\n
.ui-jqgrid .tree-plus {position: absolute;\theight: 18px; width: 18px;\toverflow: hidden;}\r\n
.ui-jqgrid .tree-leaf {position: absolute;\theight: 18px; width: 18px;overflow: hidden;}\r\n
.ui-jqgrid .treeclick {cursor: pointer;}\r\n
/* moda dialog */\r\n
* iframe.jqm {position:absolute;top:0;left:0;z-index:-1;width: expression(this.parentNode.offsetWidth+\'px\');height: expression(this.parentNode.offsetHeight+\'px\');}\r\n
.ui-jqgrid-dnd tr td {border-right-width: 1px; border-right-color: inherit; border-right-style: solid; height:20px}\r\n
/* RTL Support */\r\n
.ui-jqgrid .ui-jqgrid-title-rtl {float:right;margin: .1em 0 .2em; }\r\n
.ui-jqgrid .ui-jqgrid-hbox-rtl {float: right; padding-left: 20px;}\r\n
.ui-jqgrid .ui-jqgrid-resize-ltr {float: right;margin: -2px -2px -2px 0px;}\r\n
.ui-jqgrid .ui-jqgrid-resize-rtl {float: left;margin: -2px 0px -1px -3px;}\r\n
.ui-jqgrid .ui-sort-rtl {left:0px;}\r\n
.ui-jqgrid .tree-wrap-ltr {float: left;}\r\n
.ui-jqgrid .tree-wrap-rtl {float: right;}\r\n
.ui-jqgrid .ui-ellipsis {text-overflow:ellipsis; -moz-binding:url(\'ellipsis-xbl.xml#ellipsis\');}\r\n
</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>11841</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>ui.jqgrid.css</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>jstorage</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts30948097.92</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>jstorage.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="cdata"><![CDATA[
/*\n
* ----------------------------- JSTORAGE -------------------------------------\n
* Simple local storage wrapper to save data on the browser side, supporting\n
* all major browsers - IE6+, Firefox2+, Safari4+, Chrome4+ and Opera 10.5+\n
*\n
* Copyright (c) 2010 Andris Reinman, andris.reinman@gmail.com\n
* Project homepage: www.jstorage.info\n
*\n
* Licensed under MIT-style license:\n
*\n
* Permission is hereby granted, free of charge, to any person obtaining a copy\n
* of this software and associated documentation files (the "Software"), to deal\n
* in the Software without restriction, including without limitation the rights\n
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n
* copies of the Software, and to permit persons to whom the Software is\n
* furnished to do so, subject to the following conditions:\n
*\n
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n
* SOFTWARE.\n
*/\n
\n
/**\n
* $.jStorage\n
*\n
* USAGE:\n
*\n
* jStorage requires Prototype, MooTools or jQuery! If jQuery is used, then\n
* jQuery-JSON (http://code.google.com/p/jquery-json/) is also needed.\n
* (jQuery-JSON needs to be loaded BEFORE jStorage!)\n
*\n
* Methods:\n
*\n
* -set(key, value)\n
* $.jStorage.set(key, value) -> saves a value\n
*\n
* -get(key[, default])\n
* value = $.jStorage.get(key [, default]) ->\n
* retrieves value if key exists, or default if it doesn\'t\n
*\n
* -deleteKey(key)\n
* $.jStorage.deleteKey(key) -> removes a key from the storage\n
*\n
* -flush()\n
* $.jStorage.flush() -> clears the cache\n
*\n
* -storageObj()\n
* $.jStorage.storageObj() -> returns a read-ony copy of the actual storage\n
*\n
* -storageSize()\n
* $.jStorage.storageSize() -> returns the size of the storage in bytes\n
*\n
* -index()\n
* $.jStorage.index() -> returns the used keys as an array\n
*\n
* -storageAvailable()\n
* $.jStorage.storageAvailable() -> returns true if storage is available\n
*\n
* -reInit()\n
* $.jStorage.reInit() -> reloads the data from browser storage\n
*\n
* <value> can be any JSON-able value, including objects and arrays.\n
*\n
**/\n
\n
(function($){\n
if(!$ || !($.toJSON || Object.toJSON || window.JSON)){\n
throw new Error("jQuery, MooTools or Prototype needs to be loaded before jStorage!");\n
}\n
\n
var\n
/* This is the object, that holds the cached values */\n
_storage = {},\n
\n
/* Actual browser storage (localStorage or globalStorage[\'domain\']) */\n
_storage_service = {jStorage:"{}"},\n
\n
/* DOM element for older IE versions, holds userData behavior */\n
_storage_elm = null,\n
\n
/* How much space does the storage take */\n
_storage_size = 0,\n
\n
/* function to encode objects to JSON strings */\n
json_encode = $.toJSON || Object.toJSON || (window.JSON && (JSON.encode || JSON.stringify)),\n
\n
/* function to decode objects from JSON strings */\n
json_decode = $.evalJSON || (window.JSON && (JSON.decode || JSON.parse)) || function(str){\n
return String(str).evalJSON();\n
},\n
\n
/* which backend is currently used */\n
_backend = false,\n
\n
/* Next check for TTL */\n
_ttl_timeout,\n
\n
/**\n
* XML encoding and decoding as XML nodes can\'t be JSON\'ized\n
* XML nodes are encoded and decoded if the node is the value to be saved\n
* but not if it\'s as a property of another object\n
* Eg. -\n
* $.jStorage.set("key", xmlNode); // IS OK\n
* $.jStorage.set("key", {xml: xmlNode}); // NOT OK\n
*/\n
_XMLService = {\n
\n
/**\n
* Validates a XML node to be XML\n
* based on jQuery.isXML function\n
*/\n
isXML: function(elm){\n
var documentElement = (elm ? elm.ownerDocument || elm : 0).documentElement;\n
return documentElement ? documentElement.nodeName !== "HTML" : false;\n
},\n
\n
/**\n
* Encodes a XML node to string\n
* based on http://www.mercurytide.co.uk/news/article/issues-when-working-ajax/\n
*/\n
encode: function(xmlNode) {\n
if(!this.isXML(xmlNode)){\n
return false;\n
}\n
try{ // Mozilla, Webkit, Opera\n
return new XMLSerializer().serializeToString(xmlNode);\n
}catch(E1) {\n
try { // IE\n
return xmlNode.xml;\n
}catch(E2){}\n
}\n
return false;\n
},\n
\n
/**\n
* Decodes a XML node from string\n
* loosely based on http://outwestmedia.com/jquery-plugins/xmldom/\n
*/\n
decode: function(xmlString){\n
var dom_parser = ("DOMParser" in window && (new DOMParser()).parseFromString) ||\n
(window.ActiveXObject && function(_xmlString) {\n
var xml_doc = new ActiveXObject(\'Microsoft.XMLDOM\');\n
xml_doc.async = \'false\';\n
xml_doc.loadXML(_xmlString);\n
return xml_doc;\n
}),\n
resultXML;\n
if(!dom_parser){\n
return false;\n
}\n
resultXML = dom_parser.call("DOMParser" in window && (new DOMParser()) || window, xmlString, \'text/xml\');\n
return this.isXML(resultXML)?resultXML:false;\n
}\n
};\n
\n
////////////////////////// PRIVATE METHODS ////////////////////////\n
\n
/**\n
* Initialization function. Detects if the browser supports DOM Storage\n
* or userData behavior and behaves accordingly.\n
* @returns undefined\n
*/\n
function _init(){\n
/* Check if browser supports localStorage */\n
var localStorageReallyWorks = false;\n
if("localStorage" in window){\n
try {\n
window.localStorage.setItem(\'_tmptest\', \'tmpval\');\n
localStorageReallyWorks = true;\n
window.localStorage.removeItem(\'_tmptest\');\n
} catch(BogusQuotaExceededErrorOnIos5) {\n
// Thanks be to iOS5 Private Browsing mode which throws\n
// QUOTA_EXCEEDED_ERRROR DOM Exception 22.\n
}\n
}\n
if(localStorageReallyWorks){\n
try {\n
if(window.localStorage) {\n
_storage_service = window.localStorage;\n
_backend = "localStorage";\n
}\n
} catch(E3) {/* Firefox fails when touching localStorage and cookies are disabled */}\n
}\n
/* Check if browser supports globalStorage */\n
else if("globalStorage" in window){\n
try {\n
if(window.globalStorage) {\n
_storage_service = window.globalStorage[window.location.hostname];\n
_backend = "globalStorage";\n
}\n
} catch(E4) {/* Firefox fails when touching localStorage and cookies are disabled */}\n
}\n
/* Check if browser supports userData behavior */\n
else {\n
_storage_elm = document.createElement(\'link\');\n
if(_storage_elm.addBehavior){\n
\n
/* Use a DOM element to act as userData storage */\n
_storage_elm.style.behavior = \'url(#default#userData)\';\n
\n
/* userData element needs to be inserted into the DOM! */\n
document.getElementsByTagName(\'head\')[0].appendChild(_storage_elm);\n
\n
_storage_elm.load("jStorage");\n
var data = "{}";\n
try{\n
data = _storage_elm.getAttribute("jStorage");\n
}catch(E5){}\n
_storage_service.jStorage = data;\n
_backend = "userDataBehavior";\n
}else{\n
_storage_elm = null;\n
return;\n
}\n
}\n
\n
_load_storage();\n
\n
// remove dead keys\n
_handleTTL();\n
}\n
\n
/**\n
* Loads the data from the storage based on the supported mechanism\n
* @returns undefined\n
*/\n
function _load_storage(){\n
/* if jStorage string is retrieved, then decode it */\n
if(_storage_service.jStorage){\n
try{\n
_storage = json_decode(String(_storage_service.jStorage));\n
}catch(E6){_storage_service.jStorage = "{}";}\n
}else{\n
_storage_service.jStorage = "{}";\n
}\n
_storage_size = _storage_service.jStorage?String(_storage_service.jStorage).length:0;\n
}\n
\n
/**\n
* This functions provides the "save" mechanism to store the jStorage object\n
* @returns undefined\n
*/\n
function _save(){\n
try{\n
_storage_service.jStorage = json_encode(_storage);\n
// If userData is used as the storage engine, additional\n
if(_storage_elm) {\n
_storage_elm.setAttribute("jStorage",_storage_service.jStorage);\n
_storage_elm.save("jStorage");\n
}\n
_storage_size = _storage_service.jStorage?String(_storage_service.jStorage).length:0;\n
}catch(E7){/* probably cache is full, nothing is saved this way*/}\n
}\n
\n
/**\n
* Function checks if a key is set and is string or numberic\n
*/\n
function _checkKey(key){\n
if(!key || (typeof key != "string" && typeof key != "number")){\n
throw new TypeError(\'Key name must be string or numeric\');\n
}\n
if(key == "__jstorage_meta"){\n
throw new TypeError(\'Reserved key name\');\n
}\n
return true;\n
}\n
\n
/**\n
* Removes expired keys\n
*/\n
function _handleTTL(){\n
var curtime, i, TTL, nextExpire = Infinity, changed = false;\n
\n
clearTimeout(_ttl_timeout);\n
\n
if(!_storage.__jstorage_meta || typeof _storage.__jstorage_meta.TTL != "object"){\n
// nothing to do here\n
return;\n
}\n
\n
curtime = +new Date();\n
TTL = _storage.__jstorage_meta.TTL;\n
for(i in TTL){\n
if(TTL.hasOwnProperty(i)){\n
if(TTL[i] <= curtime){\n
delete TTL[i];\n
delete _storage[i];\n
changed = true;\n
}else if(TTL[i] < nextExpire){\n
nextExpire = TTL[i];\n
}\n
}\n
}\n
\n
// set next check\n
if(nextExpire != Infinity){\n
_ttl_timeout = setTimeout(_handleTTL, nextExpire - curtime);\n
}\n
\n
// save changes\n
if(changed){\n
_save();\n
}\n
}\n
\n
////////////////////////// PUBLIC INTERFACE /////////////////////////\n
\n
$.jStorage = {\n
/* Version number */\n
version: "0.1.6.1",\n
\n
/**\n
* Sets a key\'s value.\n
*\n
* @param {String} key - Key to set. If this value is not set or not\n
* a string an exception is raised.\n
* @param value - Value to set. This can be any value that is JSON\n
* compatible (Numbers, Strings, Objects etc.).\n
* @returns the used value\n
*/\n
set: function(key, value){\n
_checkKey(key);\n
if(_XMLService.isXML(value)){\n
value = {_is_xml:true,xml:_XMLService.encode(value)};\n
}else if(typeof value == "function"){\n
value = null; // functions can\'t be saved!\n
}else if(value && typeof value == "object"){\n
// clone the object before saving to _storage tree\n
value = json_decode(json_encode(value));\n
}\n
_storage[key] = value;\n
_save();\n
return value;\n
},\n
\n
/**\n
* Looks up a key in cache\n
*\n
* @param {String} key - Key to look up.\n
* @param {mixed} def - Default value to return, if key didn\'t exist.\n
* @returns the key value, default value or <null>\n
*/\n
get: function(key, def){\n
_checkKey(key);\n
if(key in _storage){\n
if(_storage[key] && typeof _storage[key] == "object" &&\n
_storage[key]._is_xml &&\n
_storage[key]._is_xml){\n
return _XMLService.decode(_storage[key].xml);\n
}else{\n
return _storage[key];\n
}\n
}\n
return typeof(def) == \'undefined\' ? null : def;\n
},\n
\n
/**\n
* Deletes a key from cache.\n
*\n
* @param {String} key - Key to delete.\n
* @returns true if key existed or false if it didn\'t\n
*/\n
deleteKey: function(key){\n
_checkKey(key);\n
if(key in _storage){\n
delete _storage[key];\n
// remove from TTL list\n
if(_storage.__jstorage_meta &&\n
typeof _storage.__jstorage_meta.TTL == "object" &&\n
key in _storage.__jstorage_meta.TTL){\n
delete _storage.__jstorage_meta.TTL[key];\n
}\n
_save();\n
return true;\n
}\n
return false;\n
},\n
\n
/**\n
* Sets a TTL for a key, or remove it if ttl value is 0 or below\n
*\n
* @param {String} key - key to set the TTL for\n
* @param {Number} ttl - TTL timeout in milliseconds\n
* @returns true if key existed or false if it didn\'t\n
*/\n
setTTL: function(key, ttl){\n
var curtime = +new Date();\n
_checkKey(key);\n
ttl = Number(ttl) || 0;\n
if(key in _storage){\n
\n
if(!_storage.__jstorage_meta){\n
_storage.__jstorage_meta = {};\n
}\n
if(!_storage.__jstorage_meta.TTL){\n
_storage.__jstorage_meta.TTL = {};\n
}\n
\n
// Set TTL value for the key\n
if(ttl>0){\n
_storage.__jstorage_meta.TTL[key] = curtime + ttl;\n
}else{\n
delete _storage.__jstorage_meta.TTL[key];\n
}\n
\n
_save();\n
\n
_handleTTL();\n
return true;\n
}\n
return false;\n
},\n
\n
/**\n
* Deletes everything in cache.\n
*\n
* @return true\n
*/\n
flush: function(){\n
_storage = {};\n
_save();\n
return true;\n
},\n
\n
/**\n
* Returns a read-only copy of _storage\n
*\n
* @returns Object\n
*/\n
storageObj: function(){\n
function F() {}\n
F.prototype = _storage;\n
return new F();\n
},\n
\n
/**\n
* Returns an index of all used keys as an array\n
* [\'key1\', \'key2\',..\'keyN\']\n
*\n
* @returns Array\n
*/\n
index: function(){\n
var index = [], i;\n
for(i in _storage){\n
if(_storage.hasOwnProperty(i) && i != "__jstorage_meta"){\n
index.push(i);\n
}\n
}\n
return index;\n
},\n
\n
/**\n
* How much space in bytes does the storage take?\n
*\n
* @returns Number\n
*/\n
storageSize: function(){\n
return _storage_size;\n
},\n
\n
/**\n
* Which backend is currently in use?\n
*\n
* @returns String\n
*/\n
currentBackend: function(){\n
return _backend;\n
},\n
\n
/**\n
* Test if storage is available\n
*\n
* @returns Boolean\n
*/\n
storageAvailable: function(){\n
return !!_backend;\n
},\n
\n
/**\n
* Reloads the data from browser storage\n
*\n
* @returns undefined\n
*/\n
reInit: function(){\n
var new_storage_elm, data;\n
if(_storage_elm && _storage_elm.addBehavior){\n
new_storage_elm = document.createElement(\'link\');\n
\n
_storage_elm.parentNode.replaceChild(new_storage_elm, _storage_elm);\n
_storage_elm = new_storage_elm;\n
\n
/* Use a DOM element to act as userData storage */\n
_storage_elm.style.behavior = \'url(#default#userData)\';\n
\n
/* userData element needs to be inserted into the DOM! */\n
document.getElementsByTagName(\'head\')[0].appendChild(_storage_elm);\n
\n
_storage_elm.load("jStorage");\n
data = "{}";\n
try{\n
data = _storage_elm.getAttribute("jStorage");\n
}catch(E5){}\n
_storage_service.jStorage = data;\n
_backend = "userDataBehavior";\n
}\n
\n
_load_storage();\n
}\n
};\n
\n
// Initialize jStorage\n
_init();\n
\n
})(window.jQuery || window.$);
]]></string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>17169</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>jstorage.js</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts31551734.18</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>renderjs.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="cdata"><![CDATA[
var TabbularGadget = {\n
\n
addNewTabGadget: function(form_id){\n
\n
// add new gadget and render it\n
form_gadget = $("#form_gadget");\n
tab_container = form_gadget.parent();\n
form_gadget.remove();\n
// XXX: \n
html_string =[\'<div id="form_gadget" \',\n
\'gadget="\' + form_id + \'/Form_asRenderJSGadget" \',\n
\'gadget:data-source="Form_asJSON?form_id=\' + form_id + \'"\',\n
\'gadget:property="{&quot;cacheable&quot;: &quot;1&quot;, &quot;cache_id&quot;: &quot;\' + form_id + \'&quot;}"></div>\'].join(\'\\n\');\n
tab_container.append(html_string);\n
\n
form_gadget = $("#form_gadget");\n
Form.setCurrentFormId(form_id);\n
\n
// render new gadget\n
RenderJs.loadGadgetFromUrl(form_gadget);\n
\n
// Update it (XXX: how to know gadget loaded the DOM?)\n
window.setTimeout("RenderJs.updateGadgetData(form_gadget)", 500);\n
\n
// mark tab as active visually\n
$("li.selected").addClass("not_selected"); $("li.selected").removeClass("selected");\n
$("#"+form_id).addClass("selected"); $("#"+form_id).removeClass("not_selected")\n
\n
}\n
\n
}\n
\n
/*\n
Form field renderer\n
*/\n
var Form = {\n
\n
// elements marked with this class can be serizlized to server\n
SERIALIZE_ABLE_CLASS_NAME: "serialize-able",\n
\n
CURRENT_FORM_ID: "",\n
\n
getCurrentFormId: function (){\n
/* Get current form ID (return hard coded one for now) */\n
return Form.CURRENT_FORM_ID;\n
},\n
\n
setCurrentFormId: function (form_id){\n
/* Set current form ID (return hard coded one for now) */\n
Form.CURRENT_FORM_ID = form_id;\n
},\n
\n
\n
getFieldId: function(field_id){\n
/* Generate local form field id */\n
return "field_" + field_id;\n
},\n
\n
updateField: function (dom, field_dict){\n
/* General purpose field updater */\n
editable = Boolean(field_dict[\'editable\']);\n
if (editable){\n
dom.val(field_dict["value"]);}\n
else{\n
// if field is not editable just show its value\n
dom.replaceWith(field_dict["value"]);}\n
},\n
\n
addOptionTagList: function (index, value){\n
if(value[1]==field_value){\n
select_dom.append(\'<option selected value="\' + value[1] + \'">\' + value[0] + \'</option>\');}\n
else{\n
select_dom.append(\'<option value="\' + value[1] + \'">\' + value[0] + \'</option>\'); }\n
},\n
\n
BaseInputField: function (field_id, field_dict){\n
/* HTML based input field */\n
dom = $("[name=" + Form.getFieldId(field_id) + "]");\n
Form.updateField(dom, field_dict);\n
dom.attr("size", field_dict["display_width"]);\n
return dom;\n
},\n
\n
ListField: function (field_id, field_dict){\n
/* Select field */\n
field_value = field_dict["value"]\n
select_dom = $("select[name=" + Form.getFieldId(field_id) + "]");\n
$.each(field_dict["items"], Form.addOptionTagList);\n
return select_dom; \n
},\n
\n
ParallelListField: function (field_id, field_dict){\n
/* mutiple select fields */\n
// XXX: we render only first value but it can be many how to get them ?\n
field_value = field_dict["value"][0]\n
select_dom = $("select[name=subfield_field_" + field_id + "]");\n
$.each(field_dict["items"], Form.addOptionTagList);\n
return select_dom;\n
},\n
\n
CheckBoxField: function (field_id, field_dict){\n
/* CheckBoxField field */\n
checked = Boolean(field_dict["value"])\n
checkbox_dom = $("input[name=" + Form.getFieldId(field_id) + "]");\n
if (checked){\n
checkbox_dom.attr(\'checked\', true)}\n
return checkbox_dom;\n
},\n
\n
TextAreaField: function (field_id, field_dict){\n
/* TextArea field */\n
return Form.BaseInputField(field_id, field_dict);\n
},\n
\n
StringField: function (field_id, field_dict){\n
/* String field */\n
return Form.BaseInputField(field_id, field_dict);\n
},\n
\n
IntegerField: function (field_id, field_dict){\n
/* Int field */\n
return Form.BaseInputField(field_id, field_dict);\n
},\n
\n
PasswordField: function (field_id, field_dict){\n
/* PasswordField field */\n
return Form.BaseInputField(field_id, field_dict);\n
},\n
\n
DateTimeField: function (field_id, field_dict){\n
/* DateTimeField field */\n
//alert(field_id);\n
return Form.BaseInputField(field_id, field_dict);\n
},\n
\n
EmailField: function (field_id, field_dict){\n
/* Email field */\n
return Form.BaseInputField(field_id, field_dict);\n
},\n
\n
FormBox: function (field_id, field_dict){\n
/* Email field */\n
return Form.BaseInputField(field_id, field_dict);\n
},\n
\n
RelationStringField: function (field_id, field_dict){\n
/* Relation field */\n
return Form.BaseInputField(field_id, field_dict);\n
},\n
\n
ImageField: function (field_id, field_dict){\n
/* Image field */\n
dom = $("img[name=" + Form.getFieldId(field_id) + "]");\n
// XXX: image field should return details like quality, etc ...\n
dom.attr("src", field_dict["value"]+ "?quality=75.0&display=thumbnail&format=png");\n
},\n
\n
ListBox: function (field_id, field_dict){\n
/* Listbox field */\n
listbox_id = "field_" + field_id;\n
navigation_id = listbox_id + "_pager"; \n
listbox_table = jQuery("#"+listbox_id);\n
current_form_id = Form.getCurrentFormId();\n
\n
listbox_dict = field_dict[\'listbox\']\n
listbox_data_url = listbox_dict["listbox_data_url"]\n
colModel = []\n
column_title_list = [];\n
$.each(listbox_dict[\'columns\'],\n
function(i, value){\n
index = value[0];\n
title = value[1];\n
column_title_list.push(title);\n
column = {\'name\': index,\n
\'index\': index,\n
\'width\': 100,\n
\'align\': \'left\'}\n
colModel.push(column);\n
});\n
\n
listbox_table.jqGrid( {url:listbox_data_url + \'?form_id=\' + current_form_id + \'&amps;listbox_id=\' + field_id,\n
datatype: "json",\n
colNames: column_title_list,\n
colModel: colModel,\n
rowNum:listbox_dict[\'lines\'],\n
pager: \'#\'+navigation_id,\n
sortname: \'id\',\n
viewrecords: true,\n
sortorder: "desc",\n
caption: field_dict["title"] });\n
listbox_table.jqGrid(\'navGrid\', \'#\'+navigation_id, {edit:false,add:false,del:false});\n
return listbox_table;\n
},\n
\n
}\n
\n
/* Generic form updater */\n
var FormUpdater = {\n
\n
\n
update: function(data){\n
/* Update form values */\n
$.each(data[\'form_data\'],\n
function(field_id, field_dict){\n
type = field_dict["type"];\n
dom = undefined;\n
if (type=="ListField"){\n
dom = Form.ListField(field_id, field_dict);}\n
if (type=="ParallelListField"){\n
dom = Form.ParallelListField(field_id, field_dict);}\n
if (type=="TextAreaField"){\n
dom = Form.TextAreaField(field_id, field_dict);}\n
if (type=="StringField"){\n
dom = Form.StringField(field_id, field_dict);}\n
if (type=="IntegerField"){\n
dom = Form.IntegerField(field_id, field_dict);}\n
if (type=="EmailField"){\n
dom = Form.EmailField(field_id, field_dict);}\n
if (type=="FormBox"){\n
dom = Form.FormBox(field_id, field_dict);}\n
if (type=="RelationStringField"){\n
dom = Form.RelationStringField(field_id, field_dict);}\n
if (type=="CheckBoxField"){\n
dom = Form.CheckBoxField(field_id, field_dict);}\n
if (type=="ListBox"){\n
dom = Form.ListBox(field_id, field_dict);}\n
if (type=="ImageField"){\n
dom = Form.ImageField(field_id, field_dict);}\n
if (type=="PasswordField"){\n
dom = Form.PasswordField(field_id, field_dict);}\n
if (type=="DateTimeField"){\n
dom = Form.DateTimeField(field_id, field_dict);}\n
\n
// add a class that these fields are editable so asJSON\n
// can serialize for for sending to server\n
if (dom!=undefined||field_dict["editable"]){\n
dom.addClass(Form.SERIALIZE_ABLE_CLASS_NAME);} \n
\n
// mark required fields visually\n
if (field_dict["required"]){\n
dom.parent().parent().children("label").css("font-weight", "bold");}\n
\n
});\n
},\n
\n
save: function(){\n
/* save form to server*/\n
form_value_dict = {}\n
$("." + Form.SERIALIZE_ABLE_CLASS_NAME).each(function(index) {\n
// DOM can change values, i.e. alter checkbox (on / off)\n
element = $(this); \n
name = element.attr("name");\n
value = element.val();\n
type = element.attr("type");\n
if (type=="checkbox"){\n
value = element.is(":checked");\n
value = {true:1, false:0}[value];}\n
// XXX: how to handle file uploads ?\n
form_value_dict[name] = value;\n
});\n
console.log(form_value_dict);\n
\n
// add form_id as we need to know structure we\'re saving at server side\n
form_value_dict["form_id"] = Form.getCurrentFormId();\n
\n
// validation happens at server side\n
$.ajax({url:\'Form_save\',\n
data: form_value_dict,\n
dataType: "json",\n
success: function (data) {\n
field_errors = data.field_errors;\n
if (field_errors!=undefined){\n
console.log(field_errors);\n
$.each(field_errors, function(index, value){\n
dom = $("[name=" + Form.getFieldId(index) + "]");\n
dom.css("border", "1px solid red"); // XXX: use class / css\n
field = dom.parent().parent();\n
if (field.children("span.error").length > 0){\n
// just update message\n
field.children("span.error").html(value);}\n
else{\n
// no validation error message exists\n
field.append(\'<span class="error">\' + value + \'</span>\');}\n
}\n
);}\n
else{\n
// validation OK at server side\n
$("span.error").each(function(index) {\n
// delete validation messages\n
element = $(this);\n
element.parent().children("div.input").children("." +Form.SERIALIZE_ABLE_CLASS_NAME).css("border", "none");\n
element.remove();\n
});\n
// show a fading portal_status_message\n
$("#portal_status_message").toggle();\n
$("#portal_status_message p").html("Saved");\n
window.setTimeout( \'$("#portal_status_message").toggle()\', 4000);\n
}\n
}});\n
},\n
}\n
\n
/*\n
* Generic Gadget library renderer\n
*/\n
\n
var RenderJs = {\n
\n
// Local cache ID\n
APP_CACHE_ID : "app_cache10",\n
\n
bootstrap: function (root){\n
/* initial load application gadget */\n
RenderJs.loadGadgetFromUrl(root);\n
RenderJs.load(root);\n
},\n
\n
load: function (root) {\n
/* Load gadget layout by traversing DOM */\n
gadget_list = root.find("[gadget]");\n
// Load chilren\n
gadget_list.each(function(i,v){RenderJs.loadGadgetFromUrl($(this));});\n
},\n
\n
updateAndRecurse: function(gadget, data){\n
/* Update current gadget and recurse down */\n
gadget.append(data);\n
// a gadget may contain sub gadgets\n
RenderJs.load(gadget);\n
},\n
\n
loadGadgetFromUrl: function(gadget) {\n
/* Load gadget\'s SPECs from URL */\n
url = gadget.attr("gadget");\n
\n
// XXX: based on URL and more ? generate gadget uid?\n
\n
// XXX: How to know how long a form should be cached locally\n
// i.e. what happens if it changes at server side ?\n
\n
// handle caching\n
gadget_property = gadget.attr("gadget:property");\n
\n
cacheable = false;\n
if (gadget_property!=undefined){\n
gadget_property = $.parseJSON(gadget_property)\n
cacheable = Boolean(gadget_property.cacheable);}\n
//cacheable = false ; // to develop faster\n
if (cacheable){\n
// get from cache if possible, use last part from URL as cache_key\n
cache_id = gadget_property.cache_id\n
cache_id = RenderJs.APP_CACHE_ID + "_" + cache_id\n
app_cache = $.jStorage.get(cache_id, undefined);\n
\n
if(app_cache==undefined){\n
// not in cache so we pull from network and cache\n
//console.log("not in cache: " + cache_id + " " + url);\n
$.ajax({url:url,\n
yourCustomData: {"cache_id": cache_id},\n
success: function (data) {\n
cache_id = this.yourCustomData.cache_id;\n
console.log("set in cache: " + cache_id);\n
$.jStorage.set(cache_id, data)\n
RenderJs.updateAndRecurse(gadget, data);\n
}});\n
}\n
else{\n
// get from cache\n
//console.log("get from cache " +cache_id);\n
data = app_cache; //app_cache[cache_id];\n
RenderJs.updateAndRecurse(gadget, data);}\n
}\n
else{\n
// not to be cached\n
//console.log("Not to be cached " + url);\n
$.ajax({url:url,\n
success: function (data) {\n
RenderJs.updateAndRecurse(gadget, data);},});\n
}\n
\n
},\n
\n
update: function (root) {\n
/* update gadget with data from remote source */\n
root.find("[gadget]").each(function(i,v){RenderJs.updateGadgetData($(this));});\n
},\n
\n
updateGadgetData: function(gadget) {\n
/* Do real gagdet update here */\n
data_source = gadget.attr("gadget:data-source");\n
data_handler = gadget.attr("gadget:data-handler");\n
// acquire data and pass it to method handler\n
if (data_source!=undefined){\n
// XXX: what if we don\'t have a data-handler and all is in data-source?\n
$.getJSON(data_source,\n
function (result) {FormUpdater.update(result);});\n
}\n
}, \n
}\n
\n
\n
function test(){\n
RenderJs.update($("#content"));\n
}\n
\n
// init all when DOM is ready\n
$(document).ready(function() {\n
RenderJs.bootstrap($("#content"));\n
// XXX: we use timeouts as we do not know if gadget structure is yet ready, how to do that in a generic way?\n
window.setTimeout("test()", 500);\n
}); \n
]]></string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>16870</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>renderjs.js</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>underscore</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts31213850.7</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>underscore-min.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="cdata"><![CDATA[
// Underscore.js 1.3.1\n
// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.\n
// Underscore is freely distributable under the MIT license.\n
// Portions of Underscore are inspired or borrowed from Prototype,\n
// Oliver Steele\'s Functional, and John Resig\'s Micro-Templating.\n
// For all details and documentation:\n
// http://documentcloud.github.com/underscore\n
(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==\n
c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,\n
h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=\n
b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==\n
null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=\n
function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=\n
e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=\n
function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});\n
return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,\n
c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=\n
b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);\n
return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,\n
d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};\n
var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,\n
c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:\n
a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};\n
b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,\n
1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};\n
b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};\n
b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/\'/g,"&#x27;").replace(/\\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),\n
function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\\s\\S]+?)%>/g,interpolate:/<%=([\\s\\S]+?)%>/g,escape:/<%-([\\s\\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\\\\\/g,"\\\\").replace(/\\\\\'/g,"\'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push(\'"+a.replace(/\\\\/g,"\\\\\\\\").replace(/\'/g,"\\\\\'").replace(d.escape||t,function(a,b){return"\',_.escape("+\n
u(b)+"),\'"}).replace(d.interpolate||t,function(a,b){return"\',"+u(b)+",\'"}).replace(d.evaluate||t,function(a,b){return"\');"+u(b).replace(/[\\r\\n\\t]/g," ")+";__p.push(\'"}).replace(/\\r/g,"\\\\r").replace(/\\n/g,"\\\\n").replace(/\\t/g,"\\\\t")+"\');}return __p.join(\'\');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=\n
function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=\n
true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);\n
]]></string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>12140</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>underscore-min.js</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<tal:block xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal"\n
xmlns:i18n="http://xml.zope.org/namespaces/i18n">\n
<tal:block metal:define-macro="master">\n
<tal:block\n
tal:define="object_uid here/getUid | nothing;\n
object_path here/getPath | nothing;\n
form nocall: form | nothing;\n
form_id form/id | template/id | nothing;\n
portal here/getPortalObject;\n
form_action python: form and form.action not in (\'\', None) and portal.portal_membership.checkPermission(\'Modify portal content\', here) and form.action or nothing;\n
local_parameter_list local_parameter_list | python: {};\n
dummy python: local_parameter_list.update({\'object_uid\': object_uid, \'object_path\': object_path, \'form_id\': form_id});\n
title python: \'%s - %s\' % (portal.Base_translateString(template.title_or_id()), here.getTitle());\n
">\n
<tal:block metal:use-macro="here/main_template/macros/master">\n
<tal:block metal:fill-slot="context_bar">\n
<tal:block metal:use-macro="here/context_box_render/macros/master" />\n
</tal:block>\n
<tal:block metal:fill-slot="main">\n
\n
<!-- Experimental gadget form rendering -->\n
<!-- XXX: move to listbox gadget asap -->\n
<link rel="stylesheet" type="text/css" media="screen" href="jqgrid/ui.jqgrid.css" />\n
<link rel="stylesheet" type="text/css" media="screen" href="jqgrid/jquery-ui-1.8.1.custom.css" />\n
<script src="jqgrid/grid.locale-en.js" type="text/javascript"></script>\n
<script src="jquery/ui/js/jquery-ui.js" type="text/javascript"></script>\n
<script src="jqgrid/jquery.jqGrid.src.js" type="text/javascript"></script>\n
<script src="jstorage/jstorage.js" type="text/javascript"></script>\n
<script src="datetimepicker/jquery-ui-timepicker-addon.js" type="text/javascript"></script>\n
\n
\n
\n
<div id="content"\n
gadget="gadgets/content/gadget"\n
tal:attributes="gadget string:gadgets/content/gadget?object_path=${object_path}&current_form_id=${form_id}"></div>\n
\n
<!-- Underscore -->\n
<script src="underscore/underscore-min.js"></script>\n
\n
<!-- Gadget library goes here -->\n
<script src="renderjs.js"></script>\n
\n
</tal:block>\n
</tal:block>\n
</tal:block>\n
</tal:block>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>view_main_disable</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
2012-03-02 Ivan
* Initial work
\ No newline at end of file
erp5_jquery
erp5_jquery_ui
\ No newline at end of file
Ajax-zation of ERP5 UI.
Depends on jstorage (for localStorage).
Depends on jqgrid (listbox rendering).
To enable this bt5 after install remove "_disable" from ids of "form_view_disable" and "view_main_disable"
GPL
\ No newline at end of file
erp5_html5_style
\ No newline at end of file
erp5_html5_style
\ No newline at end of file
001
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment