bplist0008_WebSubresources_WebMainResource_WebSubframeArchives;"',16;@EJOTY^chmrw| !&+ _WebResourceResponse^WebResourceURL_WebResourceData_WebResourceMIMETypeObplist00fgX$versionX$objectsY$archiverT$top"()0!12JKLMNOPQRSTUVWXYZ[\`aU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_yhttps://img-ak.verticalresponse.com/styling/asset/1279143973/server.css?lib/css/vr.css,app/css/main.css,app/css/email.css*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A$3456@WNS.keysZNS.objects789:;<=>? ABCDEFGHIVServer]Cache-Control\Content-TypeWExpires]Last-ModifiedTDate^Content-LengthZConnectionTEtagVApache_max-age=31536000Xtext/css_Thu, 14 Jul 2011 23:14:35 GMT_Wed, 14 Jul 2010 23:14:19 GMT_Wed, 28 Jul 2010 00:17:53 GMTU87598Zkeep-alive_362c-9e5c-779c5718*+]^_NSMutableDictionary]_/\NSDictionaryV.*+bc_NSHTTPURLResponsede/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverhi_WebResourceResponse#-27X^y|[`ktz} #(7BGNaj !&:>R`ruj_yhttps://img-ak.verticalresponse.com/styling/asset/1279143973/server.css?lib/css/vr.css,app/css/main.css,app/css/email.cssOV./* Class declarations to assist JavaScript in vr.js (non-app-specific utilities) /* VR.Dialog */ .vrDialog { position: absolute; z-index: 1000; line-height: 13px; } .vrDialogHeader { } .vrDialogContent { padding: 0px 15px 7px 10px; } .vrDialogContent210 { background-image: url('/images/cobrand/vr/interface/v5/vr.dialog/vr.dialog.content.210.png'); } .vrDialogContent210 p{ margin: 8px auto; } .vrDialogContent350 { background-image: url('/images/cobrand/vr/interface/v5/vr.dialog/vr.dialog.content.350.png'); } .vrDialogFooter { } .vrDialogCloseLink { float: right; } /* VR.PopUp */ h3.vrlb_header { margin: 5px; padding: 5px; background-image: url('/images/cobrand/vr/main_nav/main_nav.bg.gif'); background-color: #369; font-weight: bold; font-size: 12px; color: #fff; clear: left; } .vrlb_content { padding: 10px; overflow: hidden; } .vrlb_close { float: right; padding: 9px 9px 0 0; } .vrlb_close img { border: 0; } /* VR.Shroud */ div.vr_shroud, div.vr_shroud div.vr_shroud_content{ position: fixed; top: 0; left: 0; bottom: 0; right: 0; height: 100%; width: 100%; border: none; overflow: hidden; z-index: 1000; } div.vr_shroud iframe.vr_shroud_iframe{ position: absolute; height: 250%; width: 250%; top: -5px; left: -5px; bottom: -5px; left: -5px; display: block; border: 0 solid black; background-color: black; opacity: 0.7; -moz-opacity: 0.7; filter:alpha(opacity=70); } /* VR.Modal */ div.vr_modal_frame { position: absolute; top: 50%; left: 50%; width: 0; height: 0; z-index: 1005; } div.vr_modal_frame div.vr_modal_hallow{ position: absolute; z-index: 1010; background-color: rgb(255, 255, 255); opacity: 0.4; -moz-opacity: 0.4; filter:alpha(opacity=40); z-index: 1010; } div.vr_modal_frame div.vr_modal_working{ background: transparent url('/cobrand/vr/indicators/indicator.bar.gif') no-repeat scroll center top; height: 19px; } div.vr_modal_frame div.vr_modal_content{ position: absolute; z-index: 1020; background-color: white; } /* VR.Input.InlineEditor */ .vr_input_inlineeditor { padding: 7px; background-color: #eeecd1; border: 1px solid #dedcc1; text-align: left; font-size: 11px; font-family: verdana; font-weight: normal; } .vr_input_inlineeditor_working_container { float: right; width: 20px; height: 40px; } .vr_input_inlineeditor_working { display: none; margin: 5px; float: right; } .vr_input_inlineeditor input.input { width: 98%; margin-bottom: 10px; } /* VR.ColorPicker */ #vr_colorpicker_opacity { position: absolute; background-color: #000; width: 240px; height: 260px; } #vr_colorpicker_plugin { background: #fff; color: #444; display: block; padding: 7px 10px 11px 10px; _padding-right: 0; z-index: 1; height: 220px; overflow: hidden; border: 1px solid #555; width: 199px; _width: 210px; _padding-right: 0px; } #vr_colorpicker_plugin br { clear: both; margin: 0; padding: 0; } #vr_colorpicker_plugin select { border: 1px solid #333; background: #FFF; position: relative; top: 4px; } #vr_colorpicker_plugHEX { float: left; position: relative; top: -1px; } #vr_colorpicker_plugHEX:hover, #vr_colorpicker_plugCLOSE:hover { color: #FFD000; } #vr_colorpicker_plugCUR { float: left; width: 10px; height: 10px; font-size: 1px; background: #fff; margin-right: 3px; } #vr_colorpicker_SV { background: #FF0000 url('/common/colorpicker/SatVal.png'); /* _background: #FF0000;*/ border: 1px solid #000; position: relative; cursor: crosshair; float: left; height: 166px; width: 165px; _width: 166px; margin-right: 10px; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/common/colorpicker/SatVal.png', sizingMethod='scale'); -moz-user-select: none; -khtml-user-select: none; user-select: none; } #vr_colorpicker_SVslide { background: url('/common/colorpicker/slide.gif'); height: 9px; width: 9px; position: absolute; _font-size: 1px; line-height: 1px; } #vr_colorpicker_H { border: 1px solid #000; cursor: crosshair; float: left; height: 165px; position: relative; width: 19px; padding: 0; top: 0px; -moz-user-select: none; -khtml-user-select: none; user-select: none; } #vr_colorpicker_Hslide { background: url('/common/colorpicker/slideHue.gif'); height: 5px; width: 33px; position: absolute; _font-size: 1px; line-height: 1px; } #vr_colorpicker_Hmodel { position: relative; } #vr_colorpicker_Hmodel div { height: 1px; width: 19px; font-size: 1px; line-height: 1px; margin: 0; padding: 0; }body { background-color: #f8f8f8; padding: 0; margin: 0; background-image: url('/cobrand/vr/layout/layout.bg.4.gif'); background-position: center; background-repeat: repeat-y; font-family: Verdana, Arial, Sans-serif; font-size: 11px; } body.help_popup { background-image: none; margin: 15px; } body.help_popup .tab_content_boxed { background-color: white; } body.legacy { background: none; background-color: #fff; } body.legacy .wrapper { width: 100%; margin: 0; } body.legacy #ib5_center_hack { width: 100%; } body.popup_window { background: none; } body.popup_window .header { margin: 0; } body.print { background: none; } td { font-family: Verdana, Arial, Sans-serif; font-size: 11px; } td.calendar { background-color: #ccc; border: 1px solid #ccc; text-align: center; font-size: 12px; } td.calendar a { text-decoration: none; display: block; } td.calendar:hover { background-color: #fff; border: 1px solid #ccc; font-size: 12px; } td.no_entities:hover { background-color: #fff; } form { margin: 0; padding: 0; } img { border: none; } a { color: #06b; } a:link { outline: none; color: #06b; } a:link img { border: none; } a:visited { color: #06b; } a:visited img { border: none; } a:active { outline: none; color: #06b; } a:hover { color: #06b; } a.creditdock_hover:link, a.creditdock_hover:active, a.creditdock_hover:visited { text-decoration: none; color: #666; } a.creditdock_hover:hover { text-decoration: underline; } a.create_link { color: #555; font-weight: bold; white-space: nowrap; padding: 6px 0 6px 0; } a.create_link:link, a.create_link:visited { color: #555; font-weight: bold; white-space: nowrap; padding: 6px 0 6px 0; } a.create_link a:hover, a.create_link:hover { color: #888; } a.page_button:link { border-left: 1px solid #777; border-top: 1px solid #777; border-right: 1px solid #666; border-bottom: 1px solid #666; padding: 4px 13px 4px 13px; color: #fff; text-decoration: none; font-weight: bold; font-size: 11px; background-image: url('/images/cobrand/vr/buttons/button.page_button.bg.gif'); border-left: 1px solid #777; border-top: 1px solid #777; border-right: 1px solid #666; border-bottom: 1px solid #666; padding: 4px 13px 4px 13px; color: #fff; text-decoration: none; font-weight: bold; font-size: 11px; background-image: url('/images/cobrand/vr/buttons/button.page_button.bg.gif'); } a.page_button:visited { border-left: 1px solid #777; border-top: 1px solid #777; border-right: 1px solid #666; border-bottom: 1px solid #666; padding: 4px 13px 4px 13px; color: #fff; text-decoration: none; font-weight: bold; font-size: 11px; background-image: url('/images/cobrand/vr/buttons/button.page_button.bg.gif'); } a.page_button:hover { text-decoration: underline; } a.page_button:active { background-image: url('/images/cobrand/vr/buttons/button.page_button.active.bg.gif'); } a.button:link, a.button:visited { font: bold 10px/25px Verdana, Arial, Helvetica, sans-serif; color: #FFF; text-decoration: none; padding: 4px 10px; white-space: nowrap; margin: 0px; background-image: url('/cobrand/vr/buttons/button.primary_submit.bg.gif'); border: 1px solid #369; } a.button:hover { font: bold 10px/25px Verdana, Arial, Helvetica, sans-serif; color: #FFF; text-decoration: none; white-space: nowrap; background-image: url('/cobrand/vr/buttons/button.primary_submit.hover.bg.gif'); } a.button:active { font: bold 10px/25px Verdana, Arial, Helvetica, sans-serif; color: #FFF; text-decoration: none; color: #369; white-space: nowrap; } button.primary_button span.button_border, button.secondary_button span.button_border { display: block /*opera*/; display: inline-block /*ie*/; display: -moz-inline-box /*ff*/; cursor: pointer; cursor: hand; line-height: 29px; font-family: arial; font-weight: bold; font-size: 12px; padding-right: 30px; color: #fff; } button.primary_button span.button_border span, button.secondary_button span.button_border span { background: url('/cobrand/vr/buttons/button.primary_button.gif') no-repeat left top; height: 29px; display: block; display: inline-block; padding-left: 30px; line-height: 29px; } button.primary_button:hover span.button_border, button.secondary_button:hover span.button_border { background-position: right -60px; } button.primary_button:hover span.button_border span, button.secondary_button:hover span.button_border span { background-position: left -60px; } button.primary_button:active span.button_border, button.secondary_button:active span.button_border { background-position: right -120px; } button.primary_button:active span.button_border span, button.secondary_button:active span.button_border span { background-position: left -120px; } button.primary_button, button.secondary_button { border: 0; border: none; background: transparent; overflow: visible; white-space: nowrap; padding: 0 2px; cursor: pointer; cursor: hand; } button.primary_button span.button_border { background: url('/cobrand/vr/buttons/button.primary_button.gif') no-repeat right top; } button.primary_button span.button_border span { background: url('/cobrand/vr/buttons/button.primary_button.gif') no-repeat left top; } button.secondary_button span.button_border { background: url('/cobrand/vr/buttons/button.secondary_button.2.gif') no-repeat right top; line-height: 28px; } button.secondary_button span.button_border span { background: url('/cobrand/vr/buttons/button.secondary_button.2.gif') no-repeat left top; line-height: 28px; } .print_block, .print_inline { display: none; } .wrapper { margin-left: auto; margin-right: auto; width: 1000px; background-color: #fff; } .page_body { clear: both; padding: 15px 16px 40px 16px; min-height: 350px; } .hidden { display: none; } .header { margin: 0 15px 0 15px; } .header_logo { padding-top: 10px; } .header_nav { padding-top: 3px; float: right; text-align: right; margin: 0 0 0 0; font-size: 8pt; line-height: 140%; } .header_nav h2 { font-size: 11pt; font-weight: bold; padding: 0 0 0 0; margin: 10px 0 3px 0; font-family: arial; } .subnav { white-space: nowrap; padding-top: 5px; } .subnav ul { list-style: none; height: 30px; padding: 0; margin: 0; margin-right: 250px; font-size: 8pt; } .subnav li { list-style: none; float: left; padding: 4px 8px 4px 4px; font-weight: bold; } .subnav li img { vertical-align: top; margin-right: 5px; } .app_bottombar { border-top: 5px solid #369; margin: 7px 0 0 0; clear: both; height: 20px; padding: 12px 10px 15px 10px; background-color: #f8f8f8; } .page_header { margin: 0 0 2px 8px; padding: 0; font-family: arial,verdana,sans-serif; letter-spacing: -1px; font-size: 18px; color: #000000; font-weight: bold; text-decoration: none; text-indent: 0; line-height: 20px; text-shadow: #ddd 1px 2px 0px; } .page_subheader { margin: 0 0 0px 8px; padding: 0; color: #555; } .action_links a { display: block; padding: 2px 0 2px 0; line-height: 14px; } .action_links a:link, .action_links a:visited { display: block; padding: 2px 0 2px 0; line-height: 14px; } .action_links a:hover { background-color: #ffc; } .action_links .action_disabled { color: #bbb; padding: 2px 0 2px 0; } .columnar_selector { border: 1px solid #ccc; background-color: #fff; overflow: hidden; } .columnar_selector_category_column { background-image: url('/cobrand/vr/columnar_selector/columnar_selector.content.bg.gif'); float: left; height: 270px; overflow: scroll; width: 220px; border-right: 1px solid #ccc; } .columnar_selector_category_column ul { list-style: none; margin: 0; padding: 0; } .columnar_selector_category_column li { list-style: none; margin: 0px; padding: 0px; border-bottom: 1px dotted #eee; } .columnar_selector_category_column li a:link, .columnar_selector_category_column li a:visited, .columnar_selector_category_column li a:focus { padding: 5px; display: block; text-decoration: none; outline: 0; color: #555; border-top: 1px; border-bottom: 1px; } .columnar_selector_category_column li a.active:link, .columnar_selector_category_column li a.active:visited { background-color: #3fa3e1; color: #ffffff; } .columnar_selector_content_column { height: 260px; background-image: url('/cobrand/vr/columnar_selector/columnar_selector.content.bg.gif'); padding: 5px; margin-left: 442px; } .ordered_instruction { background-image: url('/cobrand/vr/numbered_instruction/numbered_instruction.number.bg.gif'); background-repeat: no-repeat; padding-left: 8px; clear: both; } .ordered_instruction_number { border: 1px solid #95bcdd; padding: 6px 10px 6px 10px; float: left; color: #fff; margin-top: 8px; text-align: center; font-size: 14pt; font-weight: bold; background-image: url('/cobrand/vr/numbered_instruction/numbered_instruction.bg.gif'); } .ordered_instruction_title { margin: 0 0 10px 0; padding: 0; } .ordered_instruction_body { border-left: 1px solid #ddd; background-repeat: no-repeat; border-top: 1px solid #ddd; margin-left: 45px; background-color: #fff; padding: 15px; } .amoeba { border: 2px solid white; } .widget { margin-bottom: 10px; color: #444; width: 99%; background-image: url('/images/cobrand/vr/widgets/common/widgets.common.bg.gif'); } .widget h3 { margin: 0 0 13px 2px; color: #333; } .widget h3 img { margin-right: 6px; vertical-align: -.4em; } .widget h3 a.view_all:link, .widget h3 a.view_all:active, .widget h3 a.view_all:visited { color: #555; text-decoration: none; } .widget h3 a.view_all:hover { text-decoration: underline; } .widget ul { list-style: none; padding: 0px; margin: 0px; } .widget ul.vrlounge_rss { margin-left: 1.5em; list-style-image: none; list-style-position: outside; list-style-type: disc; marker-offset: auto; } .widget ul.vrlounge_rss li { display: list-item; float: none; padding-left: 0; list-style-image: none; list-style-position: outside; list-style-type: disc; marker-offset: auto; } .widget li { list-style: none; padding: 4px 8px 4px 4px; font-weight: bold; float: left; display: block; width: 145px; } .widget li img { vertical-align: middle; margin-right: 5px; border: none; } .widget .widget_biggest li { width: auto; } .widget .no_entities { margin: 20px; } .widget_working { display: none; vertical-align: top; margin-left: 5px; } .widget_footer { background-image: url('/images/cobrand/vr/widgets/common/widgets.common.bottom.bg.gif'); background-position: top left; background-repeat: no-repeat; height: 20px; } .widget_footer img { float: right; display: block; } .widget_content { background-image: url('/images/cobrand/vr/widgets/common/widgets.common.content.bg.gif'); background-position: right; background-repeat: repeat-y; padding: 5px 10px 2px 10px; } .widget_drag { border: 1px dashed #555; cursor: move; } .widget_links { margin: 15px 0 0 0; clear: left; height: 20px; } .widget_configuration { border-top: 1px solid #ccc; padding: 7px 0 0 0; margin-top: 10px; } .widget_create { float: right; margin-top: 5px; } .widget_smallest { padding: 7px; color: #555; } .widget_smallest .widget_create { margin-top: 0px; } .widget_biggest .widget_create { margin-top: 12px; } .widget_video { text-align: center; } * html .widget ul.vrlounge_rss { position: relative; top: .5em; } * html .widget ul.vrlounge_rss li { vertical-align: top; position: relative; top: -.5em; } *:first-child+html .widget ul.vrlounge_rss { position: relative; top: .5em; } *:first-child+html .widget ul.vrlounge_rss li { vertical-align: top; position: relative; top: -.5em; } .main_sub_nav { border-bottom: 1px solid #e3e3e3; padding: 10px 0; background: url('/images/cobrand/vr/interface/v5/subnav-bkg.gif'); font-family: arial; } .main_sub_nav a { text-decoration: none; padding: 10px; font-weight: bold; } .main_sub_nav a:link, .main_sub_nav a:visited { text-decoration: none; padding: 10px; font-weight: bold; } .main_sub_nav a:hover { padding: 10px; background: url('/cobrand/vr/main_sub_nav/main_sub_nav.marker-over.gif') no-repeat center bottom; } .main_sub_nav a.curTab { color: #000; padding: 10px; background: url('/cobrand/vr/main_sub_nav/main_sub_nav.marker-on.gif') no-repeat center bottom; } div.create_link { background-repeat: no-repeat; float: right; } div.create_link a { color: #555; font-weight: bold; white-space: nowrap; padding: 6px 0 6px 0; } div.create_link a:link, div.create_link a:visited { color: #555; font-weight: bold; white-space: nowrap; padding: 6px 0 6px 0; } div.create_link a:hover { color: #888; } div.graphs { margin: 0 auto; } h3 { font-size: 13px; } .please_wait { height: 153px; width: 500px; background: url('/cobrand/vr/please_wait/please_wait.bg.png') no-repeat; font-family: "Lucida Grande", Lucida, Verdana, sans-serif; font-weight: bold; font-size: 14px; color: #555; left: 50%; top: 20%; margin-left: -250px; text-align: center; position: absolute; position: fixed; z-index: 10000; } .please_wait span { display: block; float: left; padding: 68px 0 0 20px; } .please_wait img { float: left; padding: 58px 0 0 60px; } .creditdock { color: #666; text-align: right; margin: 3px 0 1px 0; } .menuBar { text-align: left; } .menuBar a.menuButton { background-color: transparent; cursor: default; left: 0px; position: relative; text-decoration: none; top: 0px; z-index: 100; } .menuBar a.menuButton:hover { background-color: transparent; } .menuBar a.menuButtonActive { background-image: url('/images/cobrand/vr/main_nav/main_nav.hover.bg.2.gif'); } .menuBar a.menuButtonActive:hover { background-image: url('/images/cobrand/vr/main_nav/main_nav.hover.bg.2.gif'); } .menu { left: 0px; position: absolute; visibility: hidden; z-index: 101; font-size: 9pt; font-family: arial; font-weight: bold; background-image: url('/images/cobrand/vr/main_nav/main_nav.dropdown.bg.png'); background-position: bottom left; width: 119px; padding-bottom: 24px; } .menu a.menuItem { color: #555; cursor: pointer; display: block; padding: 3px 6px 3px 6px; text-decoration: none; white-space: nowrap; margin: 4px 4px 3px 4px; border: 1px solid #eeeeee; } .menu a.menuItem:hover { background-image: url('/images/cobrand/vr/main_nav/main_nav.dropdown.highlight.bg.png'); background-repeat: repeat-x; border: 1px solid #ccc; background-color: #e0e0e0; } .menu a.menuItem span.menuItemArrow { float: right; } .menu a.menuItemHighlight { background-image: url('/images/cobrand/vr/main_nav/main_nav.dropdown.highlight.bg.png'); background-repeat: repeat-x; border: 1px solid #ccc; background-color: #e0e0e0; } .menu div.menuItemSep { border-top: 1px solid #909090; border-bottom: 1px solid #f0f0f0; margin: 4px 2px; } .menu div.menuSearch { padding: 5px; } .menu div.menuSearch input { width: 100px; padding: 3px; font-size: 7pt; color: #777; border: 1px solid #ccc; } .main_nav { overflow: hidden; clear: both; color: #369; background-color: #369; white-space: nowrap; margin-top: 7px; padding-left: 7px; background-image: url('/images/cobrand/vr/main_nav/main_nav.bg.gif'); height: 34px; } .main_nav a { font-weight: bold; font-family: arial; font-size: 15px; line-height: 18px; text-decoration: none; color: #fff; display: block; float: left; padding: 8px 10px 8px 10px; } .main_nav a:link, .main_nav a:visited { font-weight: bold; font-family: arial; font-size: 15px; text-decoration: none; color: #fff; } .main_nav a:active { color: #369; } .main_nav a.curTab { background-image: url('/images/cobrand/vr/main_nav/main_nav.curtab.bg.2.gif'); } .main_nav a.curTab:link, .main_nav a.curTab:visited, .main_nav a.curTab:hover, .main_nav a.curTab:active { background-image: url('/images/cobrand/vr/main_nav/main_nav.curtab.bg.2.gif'); } .main_nav a:hover { background: url('/images/cobrand/vr/main_nav/main_nav.hover.bg.2.gif'); } .calendarHeader { font-weight: bold; color: #000; } .calendarToday { background-color: #FFFF99; border: 1px solid #C00; } .calendar { background-color: #fff; border: 1px solid #ccc; font-size: 12px; } .preview_text { padding: 3px; font-family: verdana,arial,sans-serif; font-size: 12px; color: #FFFFFF; font-weight: bold; text-decoration: none; text-indent: 0; } .preview_text A { font-family: verdana,arial,sans-serif; font-size: 12px; color: #FFFFFF; font-weight: normal; text-decoration: none; text-indent: 0; background-color: #4A557B; } .preview_text A:link { font-family: verdana,arial,sans-serif; font-size: 12px; color: #FFFFFF; font-weight: normal; text-decoration: none; text-indent: 0; background-color: #4A557B; } .preview_text A:visited { font-family: verdana,arial,sans-serif; font-size: 12px; color: #FFFFFF; font-weight: normal; text-decoration: none; text-indent: 0; background-color: #4A557B; } .preview_text A:hover { font-family: verdana,arial,sans-serif; font-size: 12px; color: #FFFFFF; font-weight: bold; text-decoration: none; text-indent: 0; background-color: #4A557B; } .status_done { color: #555; } .status_not_done { color: #555; } .create_link img { border: 0; margin-right: 6px; vertical-align: middle; } .body_home div.create_link a { background-image: none; display: inline; color: #555; font-weight: bold; padding: 6px 0px 6px 0px; } .body_home div.create_link a:link, .body_home div.create_link a:visited { background-image: none; display: inline; color: #555; font-weight: bold; padding: 6px 0px 6px 0px; } .body_home a.create_link { background-image: none; display: inline; color: #555; font-weight: bold; padding: 6px 0px 6px 0px; } .body_home a.create_link:link, .body_home a.create_link:visited { background-image: none; display: inline; color: #555; font-weight: bold; padding: 6px 0px 6px 0px; } .body_home .widget .data_table_wrapper { width: 712px; overflow-x: auto; } .wizard_nav { background-image: url('/cobrand/vr/wizard/wizard.nav.bg.gif'); background-position: top right; background-repeat: no-repeat; list-style: none; height: 30px; padding: 0; margin: 0; color: #fff; font-weight: bold; } .wizard_nav li.wizard_nav_incomplete, .wizard_nav li.wizard_nav_current, .wizard_nav li.wizard_nav_complete, .wizard_nav li.wizard_nav_begin { padding: 8px 15px 9px 15px; float: left; display: block; margin: 0; background-position: bottom center; border-right: 1px solid #ccc; line-height: 13px; font-size: 8pt; } .wizard_nav li.wizard_nav_incomplete a:link, .wizard_nav li.wizard_nav_incomplete a:active, .wizard_nav li.wizard_nav_incomplete a:visited, .wizard_nav li.wizard_nav_current a:link, .wizard_nav li.wizard_nav_current a:active, .wizard_nav li.wizard_nav_current a:visited, .wizard_nav li.wizard_nav_complete a:link, .wizard_nav li.wizard_nav_complete a:active, .wizard_nav li.wizard_nav_complete a:visited, .wizard_nav li.wizard_nav_begin a:link, .wizard_nav li.wizard_nav_begin a:active, .wizard_nav li.wizard_nav_begin a:visited { color: #888; text-decoration: none; } .wizard_nav li.wizard_nav_incomplete a:hover, .wizard_nav li.wizard_nav_current a:hover, .wizard_nav li.wizard_nav_complete a:hover, .wizard_nav li.wizard_nav_begin a:hover { color: #555; } .wizard_nav li.wizard_nav_incomplete.wizard_nav_incomplete, .wizard_nav li.wizard_nav_current.wizard_nav_incomplete, .wizard_nav li.wizard_nav_complete.wizard_nav_incomplete, .wizard_nav li.wizard_nav_begin.wizard_nav_incomplete { color: #777; } .wizard_nav li.wizard_nav_incomplete.wizard_nav_current, .wizard_nav li.wizard_nav_current.wizard_nav_current, .wizard_nav li.wizard_nav_complete.wizard_nav_current, .wizard_nav li.wizard_nav_begin.wizard_nav_current { background-image: url('/cobrand/vr/wizard/wizard.nav.current.bg.1.png'); border-right: 1px solid #8be; text-shadow: #8be 1px 1px 0px; } .wizard_nav li.wizard_nav_incomplete.wizard_nav_current a:link, .wizard_nav li.wizard_nav_incomplete.wizard_nav_current a:active, .wizard_nav li.wizard_nav_incomplete.wizard_nav_current a:visited, .wizard_nav li.wizard_nav_current.wizard_nav_current a:link, .wizard_nav li.wizard_nav_current.wizard_nav_current a:active, .wizard_nav li.wizard_nav_current.wizard_nav_current a:visited, .wizard_nav li.wizard_nav_complete.wizard_nav_current a:link, .wizard_nav li.wizard_nav_complete.wizard_nav_current a:active, .wizard_nav li.wizard_nav_complete.wizard_nav_current a:visited, .wizard_nav li.wizard_nav_begin.wizard_nav_current a:link, .wizard_nav li.wizard_nav_begin.wizard_nav_current a:active, .wizard_nav li.wizard_nav_begin.wizard_nav_current a:visited { color: #fff; } .wizard_nav li.wizard_nav_incomplete.wizard_nav_current a:hover, .wizard_nav li.wizard_nav_current.wizard_nav_current a:hover, .wizard_nav li.wizard_nav_complete.wizard_nav_current a:hover, .wizard_nav li.wizard_nav_begin.wizard_nav_current a:hover { color: inherit; } .wizard_nav li.wizard_nav_incomplete.wizard_nav_complete, .wizard_nav li.wizard_nav_current.wizard_nav_complete, .wizard_nav li.wizard_nav_complete.wizard_nav_complete, .wizard_nav li.wizard_nav_begin.wizard_nav_complete { background-image: url('/cobrand/vr/wizard/wizard.nav.complete.bg.1.png'); border-right: 1px solid #369; color: #bcd; text-shadow: #579 1px 1px 0px; } .wizard_nav li.wizard_nav_incomplete.wizard_nav_complete a:link, .wizard_nav li.wizard_nav_incomplete.wizard_nav_complete a:active, .wizard_nav li.wizard_nav_incomplete.wizard_nav_complete a:visited, .wizard_nav li.wizard_nav_current.wizard_nav_complete a:link, .wizard_nav li.wizard_nav_current.wizard_nav_complete a:active, .wizard_nav li.wizard_nav_current.wizard_nav_complete a:visited, .wizard_nav li.wizard_nav_complete.wizard_nav_complete a:link, .wizard_nav li.wizard_nav_complete.wizard_nav_complete a:active, .wizard_nav li.wizard_nav_complete.wizard_nav_complete a:visited, .wizard_nav li.wizard_nav_begin.wizard_nav_complete a:link, .wizard_nav li.wizard_nav_begin.wizard_nav_complete a:active, .wizard_nav li.wizard_nav_begin.wizard_nav_complete a:visited { color: #fff; } .wizard_nav li.wizard_nav_incomplete.wizard_nav_complete a:hover, .wizard_nav li.wizard_nav_current.wizard_nav_complete a:hover, .wizard_nav li.wizard_nav_complete.wizard_nav_complete a:hover, .wizard_nav li.wizard_nav_begin.wizard_nav_complete a:hover { color: #ddd; } .wizard_nav li.wizard_nav_incomplete.wizard_nav_begin, .wizard_nav li.wizard_nav_current.wizard_nav_begin, .wizard_nav li.wizard_nav_complete.wizard_nav_begin, .wizard_nav li.wizard_nav_begin.wizard_nav_begin { background-image: url('/cobrand/vr/wizard/wizard.nav.begin.bg.gif'); background-repeat: no-repeat; background-position: left; padding-left: 6px; padding-right: 6px; width: 0px; } li.wizard_nav_top_buttons { float: right; padding: 8px 15px 0 0; } li.wizard_nav_top_buttons a { margin: 0 0 0 10px; font-weight: bold; } .wizard_nav_percent_complete { position: relative; height: 30px; border: 0px solid #999; float: right; width: 100px; margin: 0px 10px 0 0; background-image: url('/cobrand/vr/wizard/wizard.nav.percent_complete.bg.png'); } .wizard_nav_percent_complete .wizard_nav_percent_complete_status_bar { position: absolute; border-right: 1px solid #14880a; height: 30px; background-image: url('/cobrand/vr/wizard/wizard.nav.percent_complete.status.bg.png'); width: 0; } .wizard_nav_percent_complete .wizard_nav_percent_complete_status_bar_text { padding-top: 8px; position: absolute; width: 100px; color: #fff; font-family: arial; font-weight: bold; text-align: center; } .field_tip { color: #555533; position: absolute; } .field_tip .field_tip_content_frame { padding: 50px 50px 0 68px; width: 316px; background: url('/images/cobrand/vr/tips/tips.floating.bg.png') no-repeat; } .field_tip .field_tip_content_frame h4 { padding: 0 0 7px 28px; font-size: 10pt; margin: 0; font-weight: bold; font-family: arial; } .field_tip .field_tip_content_frame .field_tip_content { padding: 0 0 15px 0; min-height: 45px; } .field_tip .field_tip_footer { background: url('/images/cobrand/vr/tips/tips.floating.bottom.png') no-repeat; height: 51px; width: 424px; } .linear_workflow_noop_text { font-style: italic; } .linear_workflow_content_pane { min-height: 280px; position: relative; overflow: hidden; margin-top: 10px; font-size: 9pt; } .linear_workflow_content_pane fieldset.vrform { padding: 0; } .linear_workflow_content { position: absolute; background-color: #fff; } .linear_workflow_footer { background-image: url('/cobrand/vr/linear_workflow/linear_workflow.footer.left.bg.png'); height: 70px; margin-bottom: 40px; } .linear_workflow_footer a.linear_workflow_footer_cancel { float: left; font-weight: bold; margin: 20px 0 0 20px; } .linear_workflow_footer .linear_workflow_footer_buttons { background-image: url('/cobrand/vr/linear_workflow/linear_workflow.footer.right.bg.png'); background-position: top right; background-repeat: no-repeat; height: 70px; padding: 15px 10px; float: right; } .linear_workflow_footer .linear_workflow_footer_buttons a { font-weight: bold; margin: 0 10px 0 10px; } .linear_workflow_debug { clear: both; margin: 20px 0 40px 0; background-color: #eee; padding: 20px; } .submitfooter_help_left { background-image: url("/cobrand/vr/submitfooter/submitfooter.left.gif"); background-position: top left; float: left; } .submitfooter_help_right { background-image: url("/cobrand/vr/submitfooter/submitfooter.right.gif"); background-position: top right; text-align: right; float: right; } .submitfooter_buttons { padding: 0 10px 10px 10px; clear: both; } .submitfooter_help { width: 300px; color: #777; padding: 18px 15px 15px 15px; font-size: 8pt; margin: 0; background-repeat: no-repeat; } .submitfooter { background-image: url("/cobrand/vr/submitfooter/submitfooter.gif"); background-repeat: repeat-x; margin: 10px 0 40px 0; clear: both; } .submitfooter input { cursor: pointer; margin: 0 0 0 5px; } .paginator { color: #333; margin: 0 0 12px 0; } .paginator .double_arrow.first { margin-right: 0.25em; } .paginator .double_arrow.last { margin-left: 0.25em; } .paginator a { text-decoration: none; } .paginator a:hover { text-decoration: underline; } .paginator .dropdown { font-size: 10px; padding: 0; margin: 0; vertical-align: top; position: relative; top: -0.2em; } .paginator_links { float: right; } input.page_button, button.page_button { border-left: 1px solid #777; border-top: 1px solid #777; border-right: 1px solid #666; border-bottom: 1px solid #666; padding: 4px 13px 4px 13px; color: #fff; text-decoration: none; font-weight: bold; font-size: 11px; background-image: url('/images/cobrand/vr/buttons/button.page_button.bg.gif'); } input.page_button:hover, button.page_button:hover { text-decoration: underline; } input.button, button.button { font-family: Verdana, Arial, Helvetica, sans-serif; color: #FFF; font-weight: bold; font-size: 10px; background-image: url('/cobrand/vr/buttons/button.primary_submit.bg.gif'); border: 1px solid #369; padding: 4px 10px; } input.button:hover, button.button:hover { background-image: url('/cobrand/vr/buttons/button.primary_submit.hover.bg.gif'); } input.button:active, button.button:active { color: #369; } .two_columns { width: 100%; } .secondary_column { width: 250px; float: left; } .primary_column { width: 100%; float: right; margin-left: -250px; } .primary_column .primary_column_content { margin-left: 260px; } .product_widget { background-image: url('/cobrand/vr/widgets/product/widget.product.header.bg.gif'); background-repeat: no-repeat; margin-bottom: 20px; margin-bottom: 10px; } .product_widget ul { list-style: none; margin: 0; padding: 0; } .product_widget li { list-style: none; margin: 0; padding: 0; margin-bottom: 7px; } .product_widget h3 { background-image: url('/cobrand/vr/widgets/product/widget.product.header.right.bg.gif'); background-repeat: no-repeat; background-position: top right; border-bottom: 1px solid #dedcc1; padding: 6px 5px 4px 10px; margin: 0; font-size: 12px; color: #4b4933; font-family: arial; } .product_dashboard_report_widget { background-image: url('/cobrand/vr/widgets/product/widget.product.header.bg.gif'); background-repeat: no-repeat; margin-bottom: 20px; } .product_dashboard_report_widget h3 { background-image: url('/cobrand/vr/widgets/product/widget.product.header.right.bg.gif'); background-repeat: no-repeat; background-position: top right; border-bottom: 1px solid #dedcc1; padding: 6px 5px 4px 10px; margin: 0; font-size: 12px; color: #4b4933; font-family: arial; } .product_widget_content { background-color: #fff; padding: 10px; border-bottom: 1px solid #d2d6bd; border-right: 1px solid #d2d6bd; border-left: 1px solid #d2d6bd; } .product_dashboard_report_widget_content { background-color: #fff; padding: 10px; } .product_widget_ds { background-image: url('/cobrand/vr/widgets/product/widget.product.dropshadow.bg.gif'); background-repeat: no-repeat; height: 10px; } .product_widget_ds_right { background-image: url('/cobrand/vr/widgets/product/widget.product.dropshadow.right.gif'); background-repeat: no-repeat; float: right; height: 10px; width: 10px; } .product_widget_edit_link { font-size: 8pt; float: right; margin: 1px 5px 0 0; } .product_widget_edit_link a:link, .product_widget_edit_link a:visited, .product_widget_edit_link a:active { color: #4b4933; font-weight: normal; } .product_dashboard_titlebar { padding: 0px 10px 10px 13px; border-bottom: 1px solid #ccc; background-image: url('/cobrand/vr/product_dashboard/product_dashboard.titlebar.bg.gif'); clear: both; } .product_dashboard_titlebar h2 { font-family: arial; font-size: 14px; margin: 0 0 2px 0; padding: 0px; color: #333; } .product_dashboard_titlebar .product_description { margin-bottom: 5px; color: #555; } .product_dashboard_titlebar .product_url { margin-bottom: 15px; font-size: 8pt; } .product_dashboard_titlebar .status_bubble_closed { float: right; background-image: url('/cobrand/vr/status_bubble/status_bubble.live.bg.gif'); background-repeat: no-repeat; background-position: top right; text-align: center; padding: 14px 0 17px 0; width: 122px; font-weight: bold; text-align: center; font-size: 13px; color: #fff; margin: -4px -6px 0 0; background-image: url('/cobrand/vr/status_bubble/status_bubble.closed.bg.gif'); } .product_dashboard_titlebar .status_bubble_pending_launch, .product_dashboard_titlebar .status_bubble_pending_approval { float: right; background-image: url('/cobrand/vr/status_bubble/status_bubble.live.bg.gif'); background-repeat: no-repeat; background-position: top right; text-align: center; padding: 14px 0 17px 0; width: 122px; font-weight: bold; text-align: center; font-size: 13px; color: #fff; margin: -4px -6px 0 0; background-image: url('/cobrand/vr/status_bubble/status_bubble.pending.bg.gif'); width: 222px; } .product_dashboard_titlebar .status_bubble_live { float: right; background-image: url('/cobrand/vr/status_bubble/status_bubble.live.bg.gif'); background-repeat: no-repeat; background-position: top right; text-align: center; padding: 14px 0 17px 0; width: 122px; font-weight: bold; text-align: center; font-size: 13px; color: #fff; margin: -4px -6px 0 0; } .flexible_status_bubble { font-weight: bold; text-align: center; font-size: 13px; color: #fff; } .flexible_status_bubble .bubble_left { background-repeat: no-repeat; width: 9px; height: 40px; } .flexible_status_bubble.active .bubble_left { background-image: url('/cobrand/vr/status_bubble/status_bubble.active.lft.bg.png'); } .flexible_status_bubble.inactive .bubble_left { background-image: url('/cobrand/vr/status_bubble/status_bubble.inactive.lft.bg.png'); } .flexible_status_bubble.pending .bubble_left { background-image: url('/cobrand/vr/status_bubble/status_bubble.pending.lft.bg.png'); } .flexible_status_bubble.draft .bubble_left { background-image: url('/cobrand/vr/status_bubble/status_bubble.draft.lft.bg.png'); } .flexible_status_bubble .bubble_middle { background-repeat: repeat-x; padding: 11px 20px 0; height: 29px; width: 80px; margin: -40px 0 0 9px; } .flexible_status_bubble.active .bubble_middle { background-image: url('/cobrand/vr/status_bubble/status_bubble.active.mid.bg.png'); } .flexible_status_bubble.inactive .bubble_middle { background-image: url('/cobrand/vr/status_bubble/status_bubble.inactive.mid.bg.png'); } .flexible_status_bubble.pending .bubble_middle { background-image: url('/cobrand/vr/status_bubble/status_bubble.pending.mid.bg.png'); } .flexible_status_bubble.draft .bubble_middle { background-image: url('/cobrand/vr/status_bubble/status_bubble.draft.mid.bg.png'); } .flexible_status_bubble .bubble_right { background-repeat: no-repeat; width: 9px; height: 40px; margin: -40px 0 0 129px; } .flexible_status_bubble.active .bubble_right { background-image: url('/cobrand/vr/status_bubble/status_bubble.active.rgt.bg.png'); } .flexible_status_bubble.inactive .bubble_right { background-image: url('/cobrand/vr/status_bubble/status_bubble.inactive.rgt.bg.png'); } .flexible_status_bubble.pending .bubble_right { background-image: url('/cobrand/vr/status_bubble/status_bubble.pending.rgt.bg.png'); } .flexible_status_bubble.draft .bubble_right { background-image: url('/cobrand/vr/status_bubble/status_bubble.draft.rgt.bg.png'); } .product_dashboard_export { float: right; width: 50%; text-align: right; margin: 3px 0 0 0; padding-bottom: 3px; } .product_dashboard_updater { font-size: 8pt; color: #999; margin: 5px 0 20px 177px; } .product_dashboard_updater #last_updated { font-weight: bold; color: #d06611; } .product_dashboard_pending { text-align: center; font-weight: bold; padding: 100px 0 250px 0; } .product_dashboard_content_wl { padding: 8px 0 0 8px; min-height: 350px; background-image: url('/cobrand/vr/product_dashboard/product_dashboard.content.bg.gif'); background-repeat: no-repeat; } .product_dashboard_content_wl .product_dashboard_middle { width: 500px; } .product_dashboard_content_wl .product_dashboard_right { margin-left: 690px; padding-left: 10px; border-left: 1px solid #eee; } .product_dashboard_content_wl .product_dashboard_right h3 { font-family: arial; margin: 0; padding: 5px 0 0 0; font-size: 12pt; letter-spacing: -1px; } .product_dashboard_content_wr { padding: 8px 0 0 8px; min-height: 350px; background-image: url('/cobrand/vr/product_dashboard/product_dashboard.content.bg.gif'); background-repeat: no-repeat; } .product_dashboard_content_wr .product_dashboard_middle { width: 225px; } .product_dashboard_content_wr .product_dashboard_right { margin-left: 420px; } .product_dashboard_middle { float: left; margin-left: 10px; padding-left: 20px; } .product_dashboard_right { padding-left: 5px; } .product_dashboard_content_navigation { float: left; border-top: 1px solid #ddd; background: url('/images/cobrand/vr/interface/v5/subnav-bkg.gif') repeat-x; } .product_dashboard_content_navigation ul { list-style: none; width: 136px; margin: 3px; padding: 0; } .product_dashboard_content_navigation ul li { list-style: none; padding: 0; margin: 0 0 0 0; white-space: nowrap; border: 1px solid #fff; } .product_dashboard_content_navigation ul li.selected { padding: 3px 0 3px 4px; color: #555; border: 1px solid #ddd; } .product_dashboard_content_navigation ul li a { display: block; font-size: 8pt; margin: 0; padding: 3px 0 3px 5px; } .product_dashboard_content_navigation ul li a:hover { background-color: #e6f3ff; } .product_dashboard_content_navigation h4 { padding: 4px 0 0 0; font-family: arial; font-size: 9pt; margin: 5px 0 5px 8px; } .statistics_at_a_glance li { color: #555; height: 30px; } .statistics_at_a_glance li.highlighted_statistic { border: 1px solid #ccc; background-color: #f9f9f9; } .statistics_at_a_glance label { float: left; margin: 8px 0 0 8px; } .statistics_at_a_glance span { color: #222; font-size: 14pt; padding-right: 4px; font-family: arial; font-weight: bold; float: right; margin: 5px; } .contextual_help_text { margin-bottom: 25px; } .contextual_help_text img { float: left; margin: 5px 0 0 9px; } .contextual_help_text h3 { font-family: arial; letter-spacing: -1px; font-size: 13pt; padding: 0; margin: 0; } .contextual_help_text div { margin-left: 53px; } .contextual_warning_text { margin-bottom: 25px; border: 1px solid #ccc; background-color: #f9f9f9; padding-bottom: 15px; padding-top: 10px; } .contextual_warning_text img { float: left; margin: 5px 0 0 9px; } .contextual_warning_text h3 { font-family: arial; letter-spacing: -1px; font-size: 13pt; padding: 0; margin: 0; } .contextual_warning_text div { margin-left: 53px; } .application_help { font-size: 9pt; line-height: 175%; } .application_help h2 { font-family: arial; } .application_help h3 { font-family: arial; border-bottom: 3px solid #369; margin: 30px 0 15px 0; color: #369; padding: 0 0 7px 0; font-size: 11pt; } ul.tabs { list-style: none; padding: 0 13px 0 7px; margin: 0; font-family: "Lucida Grande", Lucida, Verdana, sans-serif; font-size: 11px; height: 28px; border-bottom: 1px solid #bbb; } ul.tabs img { border: 0; vertical-align: -4px; margin-right: 5px; } ul.tabs li { float: left; background-image: url('/cobrand/vr/tabs/tabs.active.left.gif'); margin: 0 0 -1px 6px; background-repeat: repeat-x; background-color: #e6f3ff; color: #369; font-weight: bold; font-size: 11px; line-height: 13px; cursor: pointer; } ul.tabs li a:hover { text-decoration: none; text-decoration: underline; } ul.tabs li a:link, ul.tabs li a:visited, ul.tabs li a:active { text-decoration: none; } ul.tabs li span { display: block; background-position: top right; background-repeat: no-repeat; } ul.tabs li.tabs_create_action { background-image: url('/cobrand/vr/tabs/tabs.create.left.gif'); float: right; border-bottom: 1px solid #bbb; } ul.tabs li.tabs_create_action:hover { background-image: url('/cobrand/vr/tabs/tabs.create.left.gif'); float: right; border-bottom: 1px solid #bbb; } ul.tabs li.tabs_create_action span { background-image: url('/cobrand/vr/tabs/tabs.create.right.gif'); padding: 7px 15px 5px 15px; } ul.tabs li.tabs_create_action a:link, ul.tabs li.tabs_create_action a:visited, ul.tabs li.tabs_create_action a:active { text-decoration: none; color: #555; } ul.tabs li.tabs_create_action a:hover { text-decoration: underline; } ul.tabs li.active { background-color: #ededed; color: #333; } ul.tabs li.active:hover { background-color: #ededed; color: #333; } ul.tabs li.active span { background-image: url('/cobrand/vr/tabs/tabs.active.right.gif'); padding: 8px 20px 8px 20px; } ul.tabs li.inactive { background-image: url('/cobrand/vr/tabs/tabs.inactive.left.gif'); border-bottom: 1px solid #bbb; } ul.tabs li.inactive span { background-image: url('/cobrand/vr/tabs/tabs.inactive.right.gif'); padding: 8px 20px 7px 20px; } ul.tabs_innernav { list-style: none; margin: 0; padding: 0 0 0 20px; height: 45px; font-family: arial; background-image: url('/cobrand/vr/tabs/tabs.innernav.bg.gif'); } ul.tabs_innernav li.inactive { float: left; font-weight: bold; font-size: 8pt; padding: 0 30px 0 0px; } ul.tabs_innernav li.inactive a:link, ul.tabs_innernav li.inactive a:visited, ul.tabs_innernav li.inactive a:active { text-decoration: none; color: #777; } ul.tabs_innernav li.inactive a:hover { text-decoration: underline; } ul.tabs_innernav li.active { float: left; font-weight: bold; font-size: 8pt; padding: 0 30px 0 0px; } ul.tabs_innernav li.active a:link, ul.tabs_innernav li.active a:visited, ul.tabs_innernav li.active a:active { color: #222; text-decoration: none; background: url('/cobrand/vr/tabs/tabs.innernav.active.bg.gif') no-repeat center top; } ul.tabs_innernav li a { display: block; font-size: 12px; padding: 12px 0 18px 0; } .tabs_innernav_tools { float: right; padding: 12px 8px 17px 10px; margin-left: -5px; background-image: url('/cobrand/vr/tabs/tabs.innernav.bg.gif'); } .tab_content_open { margin-top: 15px; margin-bottom: 20px; min-height: 200px; } .tab_content_boxed { padding: 10px; margin-bottom: 20px; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; } .dynamic_folders .tab_content_boxed { margin-bottom: 0; } fieldset.vrform { border: none; padding: 0 10px 10px 10px; margin: 0 0 0 0; } fieldset.vrform legend { display: none; } fieldset.vrform .intro { color: #333; padding: 0 10px; margin: 0; line-height: 1.3em; } fieldset.vrform dt { float: left; clear: left; width: 130px; padding: 14px 0; text-align: right; } fieldset.vrform dt label { color: #666; font-weight: bold; font-size: 12px; font-family: Arial,Helvetica,sans-serif; } fieldset.vrform dt.label_for_text, fieldset.vrform dt.label_for_text_with_errors { padding-top: 9px; } fieldset.vrform dt.field_with_errors label { color: red; } fieldset.vrform dl { padding: 0 0 0 0; margin: 0 0 10px 0; } fieldset.vrform dd { position: relative; margin-left: 140px; color: #000; padding: 9px 0 10px 0; } fieldset.vrform dd .field_error_message { float: right; padding: 7px 10px 7px 40px; color: #333; font-size: 8pt; color: #544; margin-top: -3px; background: #ffdddd url(/images/cobrand/vr/icons/error.gif) no-repeat 10px 50%; } fieldset.vrform dd p { margin: 0; line-height: 1.3em; } fieldset.vrform p { position: relative; } fieldset.vrform .form_group { margin-top: 10px; } fieldset.vrform .form_group h3 { background-color: #f5fafd; border: 1px solid #cce9fe; padding: 8px 16px 8px 10px; margin: 0 0 10px 0; } fieldset.vrform .formrow_focus dt label { color: #0066aa; } #social_sharing_form #networks { margin-bottom: -10px; } #social_sharing_form .formrow dt { width: 55px; } #social_sharing_form .formrow dd { margin-left: 75px; } #social_sharing_form .formrow dd textarea.social_sharing_post { max-height: 80px; min-height: 80px; max-width: 410px; min-width: 410px; overflow: auto; } #social_sharing_form .formrow dd p { padding-right: 25px; } #social_sharing_form .formrow dd p label { padding-left: 27px; } #social_sharing_form .formrow dd p .twitter { background: transparent url(/images/cobrand/vr/icons/twitter-icon.gif) no-repeat 5px 50%; padding-bottom: 3px; padding-top: 3px; } #social_sharing_form .formrow dd p .facebook { background: transparent url(/images/cobrand/vr/icons/facebook-icon.gif) no-repeat 5px 50%; padding-bottom: 3px; padding-top: 3px; } #social_sharing_form .formrow dd p.social_network_selection { margin-bottom: 10px; } #social_sharing_form .formrow dd p.social_sharing_char_counter { margin-top: 3px; margin-right: 5px; text-align: right; } dl { margin-top: 0; } dl.vrform { padding: 10px; } dl.vrform dt { float: left; clear: left; width: 130px; padding: 14px 0; text-align: right; } dl.vrform dt label { color: #666; font-weight: bold; font-size: 12px; font-family: Arial,Helvetica,sans-serif; } dl.vrform dd { margin-left: 140px; color: #000; padding: 9px 0 10px 0; } dl.vrform dd p { margin: 0; line-height: 1.3em; } dl.vrform dd td { padding: 0 5px 5px 0; } dl.vrform .formrow_focus dt label { color: #369; } .required { color: #f00; background-color: transparent; padding: 0; } .required_message { font-style: italic; } .formrow { clear: left; } .formrow_info_box { background-color: #eee; padding: 8px; } .formrow_copy_text { padding-top: 5px; } .simple_form .formrow { padding: 5px 0 5px 0; border-bottom: 0px; } .simple_form dt { float: left; text-align: right; width: 120px; padding-top: 5px; } .simple_form dd { margin-left: 140px; min-height: 25px; } dt.field_with_errors { color: red; } dt.label_for_text_field_with_errors label, dt.label_for_select_with_errors label { color: red; } dt.label_for_checkbox_with_errors label { color: red; } .form_tip { margin: 0; padding: 10px 0; color: #444; font: 11px Arial, Helvetica, Geneva, sans-serif; } .form_tip b { color: #000; } .form_error { background: #fdd; color: #333; padding: 3px; font-weight: bold; } .form_error input { border: 1px solid #f00; } .input { font-family: Verdana, arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; color: #333; border: 1px solid #999; padding: 4px; } .input:focus { font-weight: normal; color: #000; background-color: #ffe; border: 1px solid #000; } .textarea { font-size: 11px; font-weight: normal; color: #333; border: 1px solid #999; padding: 4px; } .textarea:focus { font-weight: normal; color: #000; background-color: #ffe; border: 1px solid #000; } .dropdown { border: 1px solid #999; color: #333; font-size: 11px; padding: 4px 4px 4px 4px; font-weight: normal; } .dropdown option { padding-right: 15px; } .dropdown:focus { font-weight: normal; color: #000; background-color: #ffe; border: 1px solid #000; } .checkbox { color: #333; padding: 3px 0 10px 0; line-height: 1.3em; } .submit { margin-left: 140px; } button.button { font-family: Verdana, Arial, Helvetica, sans-serif; color: #FFF; font-weight: bold; font-size: 10px; background-image: url('/cobrand/vr/buttons/button.primary_submit.bg.gif'); border: 1px solid #369; padding: 4px 10px; } button.button:hover { background-image: url('/cobrand/vr/buttons/button.primary_submit.hover.bg.gif'); } button.button:active { color: #369; } span.graph { float: left; } div.highlight { border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; margin-bottom: 15px; padding: 10px; font-size: 9pt; background-color: #fff1b5; } .comment, .success, .sorry, .system_message, .error { margin-bottom: 15px; padding: 10px 10px 10px 40px; color: #333; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; } .comment ul, .success ul, .sorry ul, .system_message ul, .error ul { list-style: none; margin: 0; padding: 0; margin: 0; } .comment li, .success li, .sorry li, .system_message li, .error li { margin-left: 15px; } .error { border: 1px solid #a33; background: #ffdddd url(/images/cobrand/vr/icons/error.gif) no-repeat 10px 50%; } .error li { list-style-image: url('/cobrand/vr/notice/notice.ul.bullet.error.gif'); } .system_message { border: 1px solid #a33; background: #eee url(/images/cobrand/vr/icons/system_message.gif) no-repeat 10px 50%; } .system_message li { list-style-image: url('/cobrand/vr/notice/notice.ul.bullet.system_message.gif'); } .comment { border: 1px solid #39f; background: #e8e8fe url(/images/cobrand/vr/icons/comment.gif) no-repeat 10px 50%; } .comment li { list-style-image: url('/cobrand/vr/notice/notice.ul.bullet.comment.gif'); } .success { border: 1px solid #008C00; background: #d7fbd1 url(/images/cobrand/vr/icons/success.gif) no-repeat 10px 50%; } .success li { list-style-image: url('/cobrand/vr/notice/notice.ul.bullet.success.gif'); } .sorry { border: 1px solid #e8a80a; background: #f0fed7 url(/images/cobrand/vr/icons/sorry.gif) no-repeat 10px 50%; } .sorry li { list-style-image: url('/cobrand/vr/notice/notice.ul.bullet.sorry.gif'); } table.data_table { color: #333; border-collapse: collapse; border-top: 1px solid #90aac6; } table.chartable { empty-cells: show; } table.chartable td { background-color: #F5F5F5; border-color: #EEEEEE rgb(204, 204, 204) rgb(204, 204, 204) rgb(238, 238, 238); border-style: solid; border-width: 1px; text-align: center; } .data_table caption { font-family: Arial, Helvetica, Geneva, sans-serif; font-weight: bold; text-align: left; padding: 4px 8px; font-size: 150%; letter-spacing: -1px; } .data_table thead th { background-color: #b7d4f1; background-image: url('/cobrand/vr/data_table/data_table.thead.bg.gif'); border-right: 1px solid #a0bad6; border-bottom: 1px solid #90aac6; font-weight: bold; color: #222; padding: 4px; height: 22px; text-align: left; } .data_table thead th.sorted { background-image: url('/cobrand/vr/data_table/data_table.thead.sorted.bg.gif'); background-position: top right; border-right: 1px solid #90aac6; } .data_table thead th.sorted_desc { background-image: url('/cobrand/vr/data_table/data_table.thead.sorted.bg.gif'); background-position: top right; border-right: 1px solid #90aac6; padding-right: 15px; background-image: url('/cobrand/vr/data_table/data_table.thead.sorted.desc.bg.gif'); } .data_table thead th.sorted_asc { background-image: url('/cobrand/vr/data_table/data_table.thead.sorted.bg.gif'); background-position: top right; border-right: 1px solid #90aac6; padding-right: 15px; background-image: url('/cobrand/vr/data_table/data_table.thead.sorted.asc.bg.gif'); } .data_table thead a { color: #06c; text-decoration: underline; } .data_table thead a:hover { color: #fff; text-decoration: underline; } .data_table tfoot th { background-color: #b7d4f1; background-image: url('/cobrand/vr/data_table/data_table.thead.bg.gif'); border-right: 1px solid #a0bad6; border-bottom: 1px solid #90aac6; font-weight: bold; color: #222; padding: 4px; height: 22px; text-align: left; } .data_table tfoot a { color: #06c; text-decoration: underline; } .data_table tfoot a:hover { color: #fff; text-decoration: underline; } .data_table tfoot td { background-color: #b7d4f1; font-weight: bold; color: #000; padding: 8px; background-image: url('/cobrand/vr/data_table/data_table.tfoot.bg.gif'); border-bottom: 1px solid #90aac6; } .data_table tbody tr.odd { background-color: #fafafa; } .data_table tbody tr.emphasized_row { background-image: url('/cobrand/vr/dtable/dtable.emphasized_row.bg.gif'); background-position: bottom; background-repeat: repeat-x; background-color: #fff; } .data_table tbody tr.highlight { background-color: #ffc; font-size: 90px; } .data_table tbody th { font-weight: bold; padding: 8px; text-align: left; border-bottom: 1px solid #ccc; border-right: 1px solid #ccc; } .data_table tbody td { padding: 6px 4px 6px 4px; } .data_table tbody td.highlight { background-color: #ffc; font-size: 90px; } .data_table tbody a { color: #06c; text-decoration: underline; } .data_table tbody a:hover { color: #39f; } .data_table td.numeric, .data_table td.align_right { text-align: right; } .data_table td.align_center { text-align: center; } .data_table th.align_right { text-align: right; } .data_table th.align_center { text-align: center; } .data_table_condensed { border-collapse: collapse; } .data_table_condensed td { padding: 4px 6px 4px 2px; font-size: 10px; } .data_table_condensed td.numeric { text-align: right; } .data_table_condensed td.align_right { text-align: right; } .data_table_condensed th { text-align: left; color: #555; padding: 4px 8px 4px 2px; background-color: #eee; font-size: 10px; } .data_table_condensed th.align_right { text-align: right; } .data_table_condensed tr.odd { background-color: #f9f9f9; } .data_table_condensed tr.even { background-color: #fff; } .data_table_condensed tbody tr:hover { background-color: #e6f3ff; } ._vrdt_cb { margin-right: 8px; float: left; } .data_table_toolbar_top { height: 38px; background: transparent url('/cobrand/vr/data_table/data_table.toolbar.topleft.gif') top left; overflow: hidden; } .data_table_toolbar_top ._vrdt_cb { margin: 8px; } .data_table_toolbar_top .paginator { background-image: url('/cobrand/vr/data_table/data_table.toolbar.topright.gif'); background-position: top right; background-repeat: no-repeat; margin-left: 8px; padding: 8px 8px 13px 0; } .data_table_toolbar_top .paginator_text { margin-top: 4px; } .data_table_toolbar_top select.dropdown, .data_table_toolbar_top a.button, .data_table_toolbar_top input.button { height: 22px; padding: 2px; } .data_table_toolbar_bottom { background: transparent url('/cobrand/vr/data_table/data_table.toolbar.bottomleft.gif') bottom left; border-top: 5px solid #e0e0e0; height: 38px; } .data_table_toolbar_bottom ._vrdt_cb { margin: 8px; } .data_table_toolbar_bottom .paginator { background-image: url('/cobrand/vr/data_table/data_table.toolbar.topright.gif'); background-position: top right; background-repeat: no-repeat; margin-left: 8px; padding: 8px 8px 13px 0; padding-bottom: 13px; background-image: url('/cobrand/vr/data_table/data_table.toolbar.bottomright.gif'); background-position: bottom right; } .data_table_toolbar_bottom .paginator_text { margin-top: 4px; } .data_table_toolbar_bottom select.dropdown, .data_table_toolbar_bottom a.button, .data_table_toolbar_bottom input.button { height: 22px; padding: 2px; } .data_table_search ul { list-style: none; padding: 0; margin: 0; } .data_table_search li { line-height: 170%; font-weight: bold; display: block; float: left; color: #555; margin: 0 20px 10px 0; } .smalltable td { padding: 3px; font-size: 8pt; border-bottom: 1px solid #ddd; } .smalltable td.smalltableSort { background-color: #f5f5f5; } .smalltable th { padding: 3px; font-size: 8pt; text-align: left; padding: 5px 3px 5px 3px; } .smalltable th a:link, .smalltable th a:visited { color: #333; } .smalltable th.smalltableSort { background-color: #ccc; color: #555; } .sample_code { padding: 20px; font-family: courier; color: #333; border: 1px solid #ccc; text-align: center; } .terms_of_service_copy { width: 635px; padding: 5px; font-size: 9pt; } .instructional_text { padding: 10px; } .no_entities { text-align: center; margin: 60px 0 100px 0; font-weight: bold; color: #555; } .no_entities .hide_help_video { float: left; } .page_copy_text { font-size: 9pt; line-height: 150%; } p.page_copy_text { padding: 0; margin: 5px 0 20px 0; } .no_break { white-space: nowrap; } .new_product_offer { background-color: #F9FE61; color: #FC0F0C; font-weight: bold; padding: 0pt 2px; font-size: 12px; } .splash { margin: 10px 50px 50px 47px; } .help_wrapper h2 { margin: 10px 0 0 0; font-size: 12pt; } .fancy_shadow { text-align: right; background-image: url('/images/cobrand/vr/fancy_shadow/fancy_shadow.bg.gif' ); } #iceDefaultPostalAddress pre { white-space: pre; margin: 1em 0; } #iceCustomPostalAddress { margin: 1em 0; } #iceCustomPostalAddress label { display: block; clear: both; text-transform: capitalize; } #iceCustomPostalAddress label span { display: block; float: left; width: 110px; padding-right: 0.5em; text-align: right; white-space: nowrap; } #iceCustomPostalAddress input { margin-bottom: 0.2em; } #campaign_subject_length_warning { font-size: small; color: red; } .social_sharing_loading { padding-left: 10px; } .social_sharing_promotion { float: right; position: relative; top: -10px; background-color: #FFFFFF; padding-left: 2px; } div.social_sharing_account_link .twitter { background: transparent url(/images/cobrand/vr/icons/twitter-icon.gif) no-repeat 0px 50%; padding-left: 25px; padding-bottom: 3px; padding-top: 3px; } div.social_sharing_account_link .facebook { background: transparent url(/images/cobrand/vr/icons/facebook-icon.gif) no-repeat 0px 50%; padding-left: 25px; padding-bottom: 3px; padding-top: 3px; } .tooManyChars { color: red; } .social_network_timeout { color: red; padding-top: 3px; } .debug_hostname { float: right; color: #fff; border: 1px solid #357; font-size: 7pt; margin: 9px 16px 0 0; padding: 2px 6px 2px 6px; background-color: #000; font-weight: bold; } hr { background: #DDDDDD none repeat scroll 0 0; border: medium none; color: #DDDDDD; height: 1px; } #password, #password2, #cms_user_password_new, #cms_user_password_confirmation { float: left; } .password_notice { margin-top: 3px; margin-left: 0px; padding-left: 5px; width: 15px; float: left; font-size: 1.2em; overflow: hidden; } .password_notice .valid { background: transparent url(/images/cobrand/vr/icons/success_trans.gif) no-repeat 0px 50%; } .password_notice .notvalid { background: transparent url(/images/cobrand/vr/icon-closewindow_16.gif) no-repeat 0px 50%; } .clear { clear: both; } .document_editor { clear: both; background-image: url('/cobrand/vr/email/email.builder.editor.bg.png'); background-repeat: repeat-x; background-color: #515151; border-top: 1px solid #ccc; min-height: 400px; padding-bottom: 25px; } .document_editor_workpane { padding: 25px 0px 24px 0px; background-image: url('/cobrand/vr/email/email.builder.editor.workpane.bottom.png'); background-repeat: no-repeat; background-position: bottom; } .document_editor_workpane .document_editor_workpane_title ul { height: 27px; margin: 0; padding: 0; list-style: none; margin: 0 15px 0 15px; overflow: hidden; } .document_editor_workpane .document_editor_workpane_title ul li { margin: 0 5px 0 0; padding: 7px 20px; float: left; background-color: #aaa; -moz-border-radius-topleft: 6px; -moz-border-radius-topright: 6px; -webkit-border-top-left-radius: 6px; -webkit-border-top-right-radius: 6px; border-top-left-radius: 6px; border-top-right-radius: 6px; font-size: 8pt; font-weight: bold; color: #505050; cursor: pointer; } .document_editor_workpane .document_editor_workpane_title ul li.tab_option { padding: 4px 0px; font-weight: normal; background-color: #515151; color: #ccc; cursor: normal; } .document_editor_workpane .document_editor_workpane_title ul li.right { margin: 0 0 0 5px; float: right; } .document_editor_workpane .document_editor_workpane_title ul li.selected { background-color: #f5f5f5; } .document_editor_workpane .document_editor_workpane_content { background: url('/cobrand/vr/email/email.builder.editor.workpane.bg.png') repeat-y; padding: 0 15px 0 15px; } .document_editor_toolbar { background-image: url('/cobrand/vr/email/email.builder.editor.toolbar.bg.png'); height: 53px; margin-top: 12px; font-size: 8pt; padding: 0 15px 0 15px; } #email_editor_action_spellcheck { height: 17px; border-right: 1px solid #bbbbbb; margin-right: 8px; padding-right: 13px; } #email_editor_action_spellcheck a { background: url(/styling/lib/js/ckeditor/vr/skins/3.3.1/vr/icons.gif) no-repeat 0 -193px; padding-left: 22px; height: 15px; display: block; } .document_editor_toolbar_node_left, .document_editor_toolbar_node_right { margin-top: 20px; } .document_editor_toolbar_node_right { float: right; padding: 5px; color: #666; } .document_editor_toolbar_node_left { float: left; padding: 5px 15px 5px 20px; } .document_editor_toolbar_node_left a, .document_editor_toolbar_node_left a.link, .document_editor_toolbar_node_left a.link:visited, .document_editor_toolbar_node_left a.link:active { color: #666; text-decoration: none; } .document_editor_toolbar_node_left.selected { padding: 4px 14px 4px 19px; background-color: #ddd; border: 1px solid #ccc; -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } .document_editor_drawer .document_editor_drawer_content { background: url('/cobrand/vr/email/email.builder.editor.drawer.bg.png'); margin: 0 15px 0 15px; padding: 25px 10px 15px 10px; -moz-border-radius-bottomleft: 8px; -moz-border-radius-bottomright: 8px; -webkit-border-bottom-left-radius: 8px; -webkit-border-bottom-right-radius: 8px; border-radius-bottom-left: 8px; border-radius-bottom-right: 8px; } .document_editor_drawer .email_editor_drawer_save { border-top: 1px solid #ccc; padding: 10px; text-align: right; } .rotating_tip_container { float: right; } .rotating_tip { background-image: url('/cobrand/vr/rotating_tip/rotating_tip.bg.png'); background-position: top center; background-repeat: no-repeat; width: 439px; -moz-border-radius: 7px; font-size: 8pt; color: #555; padding: 6px 6px 6px 6px; } .rotating_tip ul { width: 200px; list-style: none; margin: -3px 0 0 0; padding: 0 5px 0 0; float: right; font-size: 7pt; } .rotating_tip ul li { padding: 0 0 0 10px; margin: 0; float: right; } .rotating_tip ul a, .rotating_tip ul a:link, .rotating_tip ul a:visited { color: #553; } .rotating_tip h3 { color: #553; font-size: 9pt; padding: 0 0 3px 0; margin: 0 0 0 39px; font-family: arial; } .rotating_tip .rotating_tip_content { margin-left: 39px; } .rotating_tip_preview { cursor: pointer; height: 31px; position: static; left: 0; top: 0; margin-left: 0; min-height: 31px; } .rotating_tip_preview .rotating_tip_close { display: none; } .rotating_tip_full { background-position: bottom center; padding-bottom: 55px; position: absolute; left: 50%; } .rotating_tip_full .rotating_tip_close { display: block; margin: 8px 0 15px 39px; } .best_practices_form_tip { position: absolute; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; background-image: url('/cobrand/vr/icons/marketing_tip.png'); background-repeat: no-repeat; background-position: 13px 4px; margin: 0; width: 100px; } .best_practices_form_tip a { display: block; padding: 4px 0 8px 40px; font-size: 8pt; } a.image_selector_source, a.image_selector_source:link, a.image_selector_source:visited { margin: 0 5px 5px 5px; display: block; padding: 6px 0 9px 10px; height: 30px; border: 1px solid #ccc; -moz-border-radius: 7px; border-radius: 7px; -webkit-border-radius: 7px; text-decoration: none; line-height: 150%; color: #555; } a.image_selector_source strong, a.image_selector_source:link strong, a.image_selector_source:visited strong { color: #000; font-family: arial; font-size: 10pt; letter-spacing: -1px; } a.image_selector_source:hover { background-color: #f5f5f5; } #login_box { float: right; width: 465px; background: #f5f5f5; background: #f5f5f5 url(/cobrand/vr/login/login.loginbkg.png) repeat-x left bottom; margin: 10px 17px; border: 1px solid #daba4a; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; -moz-box-shadow: 0px 0px 10px #ccc; -webkit-box-shadow: 0px 0px 10px #ccc; box-shadow: 0px 0px 10px #ccc; padding-left: 16px; height: 60px; } .login_fields { float: left; margin: 2px 0px 10px 0px; padding-right: 10px; width: 160px; font: bold 11px/11px helvetica; color: #333; } #login { padding: 4px; margin: 0 auto; } .clearfix { display: inline-block; } .clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .new_email_flag { color: #06a; font-size: 8pt; } #email_builder .nonfeatured_email_editor { float: right; clear: right; } #email_builder .featured_email_editor { float: left; } #email_builder .nonfeatured_email_editor, #email_builder .featured_email_editor { border: 1px solid #fff; padding: 10px; margin-bottom: 5px; width: 47%; } #email_builder .nonfeatured_email_editor .why_wizard, #email_builder .featured_email_editor .why_wizard { color: #369; margin-bottom: 15px; font-weight: bold; } #email_builder .nonfeatured_email_editor ul, #email_builder .featured_email_editor ul { margin: 0 0 0 25px; padding: 0; } #email_builder .nonfeatured_email_editor ul li, #email_builder .featured_email_editor ul li { margin: 0 0 5px 0; padding: 0; } #email_builder .nonfeatured_email_editor img, #email_builder .featured_email_editor img { float: left; margin-right: 6px; } #email_builder .nonfeatured_email_editor .type_selector, #email_builder .featured_email_editor .type_selector { float: left; margin: 15px 11px 10px 0; } #email_builder .nonfeatured_email_editor h3, #email_builder .featured_email_editor h3 { font-family: arial; font-size: 18pt; font-weight: bold; letter-spacing: -1px; margin: 0; padding: 0; text-shadow: #aaa 2px 2px 5px; } #email_builder .nonfeatured_email_editor h3 span, #email_builder .featured_email_editor h3 span { font-size: 11pt; } #email_builder .selected_email_editor { background-color: #f5fafd; border: 1px solid #cce9fe; border-radius: 8px; -moz-border-radius: 8px; -webkit-border-radius: 8px; } #email_builder .button_action_item { height: 50px; } #email_builder .button_action_item .button_action_item_number { float: left; font-weight: bold; margin: 8px 15px 0 0; } #email_builder .button_action_item .button_action_item_button { float: left; } #email_builder .button_action_item .button_action_item_comment { float: left; margin: 8px 0 0 15px; } #email_builder .quick_canvas_text_version_editor textarea { padding: 5px; } #email_builder .email_editor_preview_image_toggle_container { float: right; } #email_builder #email_editor_wizard.document_editor_workpane { background-image: none; } #email_builder .email_editor_wizard_preview_dock, #email_builder .email_editor_wizard_richtext_panel, #email_builder .email_editor_wizard_content_item_panel { -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } #email_builder .email_editor_wizard_preview_dock { padding: 10px; background-color: #888; color: #fff; margin: 20px 0 0 0; } #email_builder .email_editor_wizard_preview_dock label { color: #eee; } #email_builder .email_editor_wizard_richtext_panel { background-color: #fff; padding: 10px 8px 10px 8px; margin: 20px 0 0 0; text-align: center; background-image: url('/cobrand/vr/email/email.builder.panel.bg.png'); } #email_builder .email_editor_wizard_content_item_panel { background-color: #fff; padding: 10px; margin: 20px 0 0 0; text-align: center; background-image: url('/cobrand/vr/email/email.builder.panel.bg.png'); } #email_builder .email_editor_wizard_content_item_panel a { margin-bottom: 5px; display: block; text-align: left; color: #333; } #email_builder .email_editor_wizard_content_item_panel a span { background-color: #fff; cursor: move; padding: 5px 10px; display: block; border: 1px solid #ccc; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; background-image: url('/images/cobrand/vr/email/email.builder.editor.draggable.bg.png'); background-position: right; background-repeat: no-repeat; } #email_builder .email_editor_wizard_content_item_panel a:hover { color: #39c; } #email_builder .email_editor_wizard_content_item_panel a:hover span { background-image: url('/images/cobrand/vr/email/email.builder.editor.draggable.hover.bg.png'); border-color: #39c; background-color: #f5fafd; } #email_builder .email_editor_wizard_content_item_panel p { margin: 0 0 8px 0; color: #777; font-size: 8pt; line-height: 15px; } #email_builder .email_editor_wizard_content_item_panel strong { color: #000; } #email_builder .email_launch_tasks { position: relative; top: -9px; padding: 5px 0px 0px 0px; margin-bottom: -9px; } #email_builder .email_launch_task { padding: 10px 0 10px 45px; color: #666; background-image: url('/cobrand/vr/email/email.builder.editor.not_done.png'); background-repeat: no-repeat; background-position: 15px 5px; } #email_builder .email_launch_task span { display: none; } #email_builder .email_launch_task strong { color: #000; } #email_builder .email_launch_task_done { background-image: url('/cobrand/vr/email/email.builder.editor.done.png'); } #email_builder .email_launch_task_done span.done { display: inline; } #email_builder .email_launch_task_not_done span.not_done { display: inline; color: red; } #email_builder .email_launch_task_highlight { background-color: #F5FAFD; } #email_builder .email_header_copy_with_rotating_tip { margin-bottom: 18px; } #email_builder .email_header_copy_with_rotating_tip h4 { padding: 0 0 5px 0; margin: 0; color: #06a; font-size: 12pt; font-family: arial; letter-spacing: -1px; } #email_builder .email_header_copy_with_rotating_tip p.page_copy_text { padding: 0; margin: 0px 0 19px 0; } #email_builder .total_size_of_lists_sentence { margin-bottom: 10px; } #email_builder .list_of_selected_lists { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; background-color: #f5f5f5; padding: 10px; margin: 5px 0 15px 0; } #email_builder .list_of_selected_lists ul { padding: 0; margin: 0 0 0 15px; } #email_builder .list_of_selected_lists ul span { color: #555; } strong.featured { color: #06a; font-size: 12pt; font-family: arial; letter-spacing: -1px; } .email_editor_workpane_mask { position: absolute; background-color: #515151; } .email_layout_selector .layout_preview { float: right; width: 261px; height: 407px; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; border-top: 1px solid #ccc; background-image: url('/cobrand/vr/email/email.builder.layout_selector.preview.bg.gif'); background-repeat: no-repeat; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-top-right-radius: 5px; -webkit-border-bottom-right-radius: 5px; } .email_layout_selector .layout_preview img { width: 230px; height: 300px; margin: 15px; } .email_layout_selector .layout_preview strong { display: block; text-align: center; padding: 15px; color: #555; } .email_layout_selector .layout_thumbnails { height: 391px; overflow-y: scroll; overflow-x: auto; border-bottom: 1px solid #ccc; border-top: 1px solid #ccc; padding: 8px; background-color: #fff; } .email_layout_selector .layout_thumbnails ul { margin: 0; padding: 0; list-style: none; } .email_layout_selector .layout_thumbnails ul li { float: left; cursor: pointer; margin: 0 5px 5px 0; border: 3px solid #fff; } .email_layout_selector .layout_thumbnails ul li.selected_layout { border: 3px solid #3fa3e1; } .email_layout_selector .layout_thumbnails .email_sub_category_header { font-weight: bold; color: #666; clear: both; background-color: #eeeeee; padding: 8px; border: 1px solid #ccc; -moz-border-radius-topleft: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-left-radius: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-left-radius: 4px; -webkit-border-bottom-right-radius: 4px; } .email_layout_selector .layout_thumbnails .email_sub_category_header .email_sub_category_header_arrow { float: right; margin-top: 4px; } .email_layout_selector .layout_thumbnails .collapsed { margin-bottom: 6px; } .email_layout_selector .layout_thumbnails .email_sub_category_layouts { clear: both; padding: 6px 5px 6px 4px; margin-bottom: 6px; } .email_layout_selector .layout_categories { float: left; width: 225px; background-color: #eeeeee; height: 407px; border-top: 1px solid #ccc; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; background-image: url('/cobrand/vr/email/email.builder.layout_selector.categories.bg.gif'); background-repeat: repeat-y; background-position: top right; -moz-border-radius-topleft: 5px; -moz-border-radius-bottomleft: 5px; -webkit-border-top-left-radius: 5px; -webkit-border-bottom-left-radius: 5px; } .email_layout_selector .layout_categories .layout_categories_paginator { padding: 7px 5px 7px 5px; margin: 10px; font-size: 8pt; border-top: 1px solid #ccc; } .email_layout_selector .layout_categories .layout_categories_paginator a.current, .email_layout_selector .layout_categories .layout_categories_paginator a:link.current, .email_layout_selector .layout_categories .layout_categories_paginator a:visited.current { text-decoration: none; font-weight: bold; color: #555; border: 1px solid #ccc; background-color: #ddd; padding: 1px 5px; } .email_layout_selector .layout_categories ul { margin: 0; padding: 0; list-style: none; } .email_layout_selector .layout_categories ul li { padding: 7px 5px 7px 5px; margin-left: 10px; font-size: 8pt; } .email_layout_selector .layout_categories ul li.selected_category { padding: 6px 5px 6px 4px; background-color: #fff; border-left: 1px solid #ccc; border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; -moz-border-radius-topleft: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-top-left-radius: 4px; -webkit-border-bottom-left-radius: 4px; } .email_layout_selector .layout_categories ul li.selected_category a:link, .email_layout_selector .layout_categories ul li.selected_category a:visited { text-decoration: none; color: #444; outline: none; } .compare_chart { width: 50%; float: left; } .compare_chart h3 { margin: 5px 10px 5px 0; padding: 0 0 5px 0; font-family: arial; } #email_comparison_working_indicator { text-align: center; padding: 75px 0 100px 0; font-size: 12pt; font-weight: bold; letter-spacing: -1px; font-family: arial; margin-top: 15px; } #email_selection_slots_none { text-align: center; font-size: 12pt; font-weight: bold; letter-spacing: -1px; color: #999; padding-top: 11px; } .email_selection_slots { height: 40px; overflow: hidden; background-color: #eee; font-family: arial; padding-left: 5px; } .email_selection_slot { overflow: hidden; white-space: nowrap; height: 30px; float: left; margin: 5px 0 5px 0; font-size: 12px; cursor: pointer; background-color: #fff; } .email_selection_slot_color { float: left; background-color: #ccc; border: 1px solid #eee; padding: 7px 10px 7px 10px; color: #fff; font-weight: bold; text-align: center; } .email_selection_slot_text { padding: 9px 4px 0 5px; font-size: 12px; margin-right: 5px; margin-left: 20px; overflow: hidden; white-space: nowrap; font-weight: bold; } #email_comparison_container { margin-top: 15px; padding-top: 10px; border-top: 1px solid #ccc; margin-bottom: 75px; } #email_selection_container { overflow: hidden; border-top: 1px solid #369; margin-bottom: 20px; } #email_selection_toolbar { padding: 5px; background-image: url('/cobrand/vr/interface/v5/subnav-bkg.gif'); border-left: 1px solid #369; border-right: 1px solid #369; border-bottom: 1px solid #369; } #email_selection_table_container { overflow-y: scroll; border-left: 1px solid #369; border-right: 1px solid #369; height: 264px; background: url('/cobrand/vr/interface/v5/subnav-bkg.gif') repeat-x; } .email_report_content { margin-left: 190px; padding-top: 10px; min-height: 400px; } .email_report_filters { float: left; width: 170px; margin-top: 10px; } .email_reporting_export_type { cursor: pointer; padding: 3px; clear: both; margin-bottom: 6px; border: 1px solid #fff; } .email_reporting_export_type img { vertical-align: middle; border: 0; margin: 5px 10px 10px 0; float: left; } .email_reporting_export_type_hover { background-color: #dce0c4; } .:email_dashboard_stat_table_label { padding: 7px 15px 7px 0; } .email_dashboard_overall_little_stats { border-top: 1px solid #ccc; margin-top: 15px; color: #777; } .email_dashboard_compare_avg { background-color: #f9f9f9; border-top: 1px solid #ccc; } .email_preview_header { width: 99%; background-color: #eee; border-top: 1px solid #ccc; border-left: 1px solid #ccc; border-right: 1px solid #ccc; } .email_preview_iframe { border: 1px solid #ccc; } .seed_list_switch .switch { float: left; margin: 0px; background: #444444 url("/cobrand/vr/seed_list/seed_list.switch.body.png") repeat-x; height: 20px; padding: 0px 17px; font-weight: bold; color: #777777; line-height: 150%; cursor: pointer; } .seed_list_switch .switch.selected { background: #6fa8e0 url("/cobrand/vr/seed_list/seed_list.switch.body.selected.png") repeat-x; color: white; cursor: default; } .seed_list_switch .cap_left { float: left; background: url("/cobrand/vr/seed_list/seed_list.switch.cap.left.png") no-repeat; width: 7px; height: 20px; -moz-border-radius-topleft: 5px; -moz-border-radius-bottomleft: 5px; -webkit-border-radius-topleft: 5px; -webkit-border-radius-bottomleft: 5px; } .seed_list_switch .cap_right { float: left; background: url("/cobrand/vr/seed_list/seed_list.switch.cap.right.png") no-repeat; width: 7px; height: 20px; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-radius-topright: 5px; -webkit-border-radius-bottomright: 5px; } .simple_seed_list_horizontal_controls { padding-right: 10px; } #simple_seed_list_menu { padding: 10px 0px 5px; margin-bottom: 10px; } #simple_seed_list_menu #simple_seed_list_select { padding-right: 5px; width: 323px; } #simple_seed_list_menu #edit_list_name { width: 323px; } #simple_seed_list_menu #simple_seed_list_controls { width: 323px; padding-top: 5px; padding-bottom: 3px; position: relative; } #simple_seed_list_menu #simple_seed_list_loading { position: absolute; left: 300px; top: 7px; } #simple_seed_list_member_controls { position: relative; bottom: 18px; left: 198px; } .field_error_message { background: #ffdddd url("/images/cobrand/vr/icons/error.gif") no-repeat 10px 50%; color: #554444; float: right; font-size: 8pt; margin-top: -3px; padding: 7px 10px 7px 40px; } #expandable_simple_seed_list input { width: 313px; } #merge_field_popup { border-top: 2px solid #38689B; padding: 10px 0px; } #merge_field_popup #merge_fields { margin-top: 10px; } #merge_field_popup #merge_fields td { height: 40px; } #merge_field_popup #merge_fields td input { min-width: 150px; height: 16px; } #merge_field_popup #merge_fields td select { min-width: 160px; } #merge_field_popup #merge_fields td .use_custom_link, #merge_field_popup #merge_fields td .use_standard_link { margin-left: 7px; } Xtext/css Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_fhttps://img-ak.verticalresponse.com/images/cobrand/vr/interface/v5/vr.dialog/vr.dialog.content.210.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#Aw3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Wed, 06 Jul 2011 13:18:47 GMT_Fri, 21 May 2010 20:57:27 GMTT3709_Wed, 28 Jul 2010 00:17:59 GMTZkeep-alive_"e7d-48720f04b1bc0"*+ab_NSMutableDictionaryac/\NSDictionary}*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~JOZcilr{&5:EJQWjt&).BFZhz}n_fhttps://img-ak.verticalresponse.com/images/cobrand/vr/interface/v5/vr.dialog/vr.dialog.content.210.pngO}PNG  IHDR~> pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATxA Pl]-:ݝ "_|9pq.|m0 uy)",kD B%N5 OZEHP$8( ꄴ>!AaH *.sOHy+"!E"$  B!B!@H@H $ $  B!B!!@H $@H $  BB!!@H $@H $   B!B!@H@H $ $  B!B!@H^ BB!!@H $@H $  BB!!@H@H $ $  B!B!@H@H $ $  BB!!@H $@H $  BB!!@H $@H $ $  B!B!@H@H $ $  BB!!@H $@H $  BB!!@H $@H $ $  B!B!@H@H $ $  B!B!!@H $@H $  BB!!@H $@H $ $  B!B!@H@H $ $  B!B!!@H $@H $  BB!!@H $@H $   B!B!@H@H $ $  B!B!@H^ BB!!@H $@H $  BB!!@H@H $ $ YZpx#JB:e!G C d!A'$iވ( /7[$!@H $<8#;d1IENDB`Yimage/png Oxbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Nhttps://img-ak.verticalresponse.com/images/cobrand/vr/main_nav/main_nav.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AƋ N3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Jul 2011 20:27:09 GMT_Thu, 01 Jul 2010 23:57:08 GMTS446_Wed, 28 Jul 2010 04:29:58 GMTZkeep-alive_"1be-48a5c3a627d00"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~27BKQTZclnu}"-29?R\| )-AOadzn|_Nhttps://img-ak.verticalresponse.com/images/cobrand/vr/main_nav/main_nav.bg.gifOGIF89a;-3f5h9l?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Jul 2011 20:27:16 GMT_Thu, 01 Jul 2010 23:57:08 GMTS756_Wed, 28 Jul 2010 04:29:58 GMTZkeep-alive_"2f4-48a5c3a627d00"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~).9BHKQZcelt$)06ISs  $8FX[qns_Ehttps://img-ak.verticalresponse.com/cobrand/vr/layout/layout.bg.4.gifOGIF89a!,@pH,Ȥ@` H` IpHMg ~J$!#-/ 1 % ) c \ VSQOM~MOPRTVXZ]_acegiknrtvÝ z0֤bOLr%˖ PF&X{Ü:w Iɓ(S\ɲw>+U=:5[ag+.8Q \ү`ÊKٳh۱P VԌpb:y+Т Ta B-@сE3\Ŗuk3k̹Ϡ!mv6ͻ'ЀD Had =㪒jpȓ+_μyp:ݜ;[(T o3E{ծu͹˟O_%L[:{~y7sSEcz]{!'Vhr (SO*{l N;Yimage/gif  !O~bplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Shttps://img-ak.verticalresponse.com/cobrand/vr/buttons/button.primary_submit.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A83456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:15:08 GMT_Fri, 09 Oct 2009 22:36:48 GMTT1687_Wed, 28 Jul 2010 00:13:36 GMTZkeep-alive_"697-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~7<GPVY_hqsz"'27>DWa/3GUgjn_Shttps://img-ak.verticalresponse.com/cobrand/vr/buttons/button.primary_submit.bg.gifOGIF89a"陿]Rg}vDbjͧ`ĚWM_h[QmЍle1TXZ]ׯ`:Jٳh*˶[ Kݻx˷߿ LÈ+^̸&"G@23,ٲe͙]킳iӠC.}:5&\oZ۷=ͻuN㓃+_|9rIHN: سcNB{N_Ϟ:˟O(v` 2 6J f ($h",0(c. 9>@)C#F&L.dPFITViUF\&`cdx flɦp)tiny|矀*蠄g&袌6o 3`饘f馜vi j*ꨥ꫰*무Jꪸ뮼R@@k,:$6{l,Vkm6pn+k覫+k,l',058G,Wlgw ,$l c,0,4l8<@-D3:"4KGQ/=X;]5XoY_ucmhlp-t]!|ͷ ~ n޷ /4 ? Wgw [n騧ꬷ H?<{>;|Wgw/oGOo[3<'? GoLgԮw&H vO~_WA :/cGHB5(LJ*]`~z17Z0<\H"HL qǼzM'A/X̢.noWEMe6p'F=1zux5 Q{w#GЏ$'IIK$IF2(GIJ.^dQ;O,,gIKq* J޹ e-Ibb#{_ϊ44)Kd~RxdhR5_ME&ӌSvfvM_j;O ;Yimage/gif #$%&Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Yhttps://img-ak.verticalresponse.com/cobrand/vr/buttons/button.primary_submit.hover.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:15:41 GMT_Fri, 09 Oct 2009 22:36:48 GMTT1665_Wed, 28 Jul 2010 00:13:40 GMTZkeep-alive_"681-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~=BMV\_enwy (-8=DJ]g !59M[mpn_Yhttps://img-ak.verticalresponse.com/cobrand/vr/buttons/button.primary_submit.hover.bg.gifOGIF89a"rÏzɎ؈ӿ담֊էۜެዳzș۴璹܈Ԍ}ƱどɢזهԍבډԝosÒۇӉԆҌגۑۆцoΝ}usČׄoքОԈԃo҄т}vų珷mn,"BG,2yl:PrZ,rzxL.ՂbnwjNxw~|ym)#$$ = o{KP? F|Hŋ3jȱǏI XrI-[L̛kC@ JѣH_hӧPFPAV5֭]ÊK,ׯWͪ]V-ڷpʝKݻxƝ@_. la|pǐc$<Ȓ)[.LYfĝ+nXpҁC^ͺװc˞M;۸sw?@8q +_μrУK9سkyËO,hXϾA~}ӏh_ 6F(VhѠj ($H(H"j01H36X@))hH&L6"PF) dP•W!` \ni˜del&g)gjfqΉ\矀*蠄j衈&袌@8D*餔Vj饘f¦n駕v饢)8ȠꪪZZëꬴj뭸뮼 ñ&l- f{mv+k;- Kk{o ,0' 7G,W\1&k ,r$o,(\)r+18<@-Dq9L74 PG-N+=5UgV_5`-dmv^lptk]w|݁ހ 7#w߆8ߍG8Ww砇.褗n騧 Nۮ 0/< / 'ߺ|켟Wogܷ/' ?ȯ>o׿L:'8A/K7HAO$ ؿu(L W*|3e/1 a mx@. CH"HLhD rpB z7".z t" !>61b"h"0ọ-HA@L" G֐s#JZzlAJĤ(GIjr#JJ򕰌eO r`(e^ʒ"L.K ӗLf%?\~1Ij摙+XNӚ giN:Sܤ8-;Yimage/gif ()*+O{bplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Phttps://img-ak.verticalresponse.com/cobrand/vr/buttons/button.primary_button.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 06 Jul 2011 05:38:30 GMT_Fri, 21 May 2010 20:57:26 GMTT3054_Tue, 27 Jul 2010 23:53:29 GMTZkeep-alive_"bee-48720f03bd980"*+ab_NSMutableDictionaryac/\NSDictionary *+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~49DMSV\enpw$/4;AT^~,0DRdg}n_Phttps://img-ak.verticalresponse.com/cobrand/vr/buttons/button.primary_button.gifO GIF89aNzݳsU?p dDl@BL"F:򑐌$'IJZ򒘌 6Nz (GIRL*WVҕbH fIZ̥.w^ 0IbӘ] f:Ќ4IjZ̦6nzӛ IrL:vz hGKҚMjWֺU- 09 N˭nw"Pp«DQ r:Ѝ.DE H*'LQEMz՛ SW)\a[ݒ~@<@ݮB*LA`'L [~Kd$әGL(F1~Ƶm-k0gLv@L"HN&;PL*[Xβ.{`L2K6pv|K:Ζ(_'" πMBЈNF;ѐg"PN{88@ӨNWp3հ^iZ{:]a>e;N}[i[;TMr{)CvQη~{7NO·N'N[|+7{ WK`(OW򖻼l gN8yƞ@ЇNt2ށҗ;Pz*'t8 v01L[Ͼ 4ay8d#+YO|㯽OoϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8K:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxh1;Yimage/gif -./0Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Thttps://img-ak.verticalresponse.com/cobrand/vr/buttons/button.secondary_button.2.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A)3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 06 Jul 2011 05:38:30 GMT_Fri, 21 May 2010 20:57:26 GMTT2533_Tue, 27 Jul 2010 23:53:29 GMTZkeep-alive_"9e5-48720f03bd980"*+ab_NSMutableDictionaryac/\NSDictionary *+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~8=HQWZ`irt{#(38?EXb04HVhkn_Thttps://img-ak.verticalresponse.com/cobrand/vr/buttons/button.secondary_button.2.gifO GIF89accaaBB;;QQppffΤ夺**$$zzLL׮ܿ::˞++^^ߑZZ""NNRRaa==WW@@MMHH\\DDffjjmm}}ddffqqmm؁uuiiyyڅ܈``݊YY00UUVV//YYRR__CCXXJJ++FFMMUU((ZZVV}}uuLLȓިCC__ׅ''ͣiivv**IIvvOO66Ӛ̉܉ooXXҠqqiikk''݌۳??jjnn22kkǖXXyyxx::ܗ22ةܮۺ\\\\33!,Hy :f_9[(uSq'da^& H*\Ȱ!'HNسkνËO|!_Ͼ˟OϿ 'h&(F(1HfY (h(a,袃+(4c8:#DhG!? Tt?`)dihlpƩF<'d|矀*Ij衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸뮼+k&6F+Vkfv+k覫+kÿ,l' 7G,ˆ:gw ,$l(p P4l8<@-Dm LTWmXg\w`-dm,@30 p-tmx|߀.=d 7G.Wngwywp n騧ꬷ.n_!z /o'7S!z Wogw/oC /oSX@L:'H ZZz GH(L W/<`@8̡w@ H"G|V&:PH*ZX̢.z_LT@2hL6pH:wD> IBL"F:!IJZ̤&7HI (GIR"ғL*WV,gIHN̥.i ]e/Ib3<2d2ԥ$jZ5MSbtd7INLjY ~ @ %І:DIF~YͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢRԦ:PTJժZXͪVծZQXJֲ؄ U @)?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:20:09 GMT_Fri, 09 Oct 2009 22:36:48 GMTT1879_Wed, 28 Jul 2010 00:11:16 GMTZkeep-alive_"757-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionaryW*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~JOZcilr{&5:EJQWjt&).BFZhz}n_fhttps://img-ak.verticalresponse.com/cobrand/vr/numbered_instruction/numbered_instruction.number.bg.gifOWGIF89ad!,d@bH,Ȥr,F4ǣ`BKBD6"dB`@A H$%%&(( 'opp ttwx{|~rsvxy}(q˭ϲ~׏uͯz{]ÖMOÊ;ܾsjb׎;mw>A5Z0f =eʉ$ (![7Rǁ4+j,TɳSK{/ɜiTɊ6P)RCjRZnǡTNDSN. jMe=00NwneR\CDG8`cVoL ᦆG4ꀫYG~2P-.75]ݻAv;[9qc5Z䌱'vO^ny{m9/vQ+>10eO{8f D]uy|ɇffG"q _u`XXWj !6[%WBؽՇAz&hyHah_y{DdrELe8cjG'xؐOfdg^f7+'ւё8ˊ͉e}hYgˆ)voc~2b''(I.ZL*Um{~c3ځY#Ԧy('(*>izW%r檵hnǡUUbb(:E*6f,N貣5kjsr(oBwnkk\N.gZ:%„gI(pyfְq}b< +};lE:m <3%~Ą:+nʪȆ6? MsZR-N2/=&RS]7 :jf(`+\Orqލperu[.ފ0^w/hSxȔ? yΜ|ϭ95 ezR"|d?~ bC= cuw|&~?+uCj}|<;(_5:܊; Lک&93=0īF`P`ćvl B"a Q5|#B`CatBlP=!1ӦARL[vEX /^M#c#(рj\cu5';."{#h 4#!Q`=oP!A-d"xEdL'8E$&ICh$JY@)J\겊¥#NAJ &LjLC |P3r( rfj3lD 2NSDcimRlڎyNE #YA}6!< g0ʈ^ ODYQr&F%]'CGt''LgO)NsґN=i$*TIO:RbԩHTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ ;Yimage/gif 789:Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base__https://img-ak.verticalresponse.com/cobrand/vr/numbered_instruction/numbered_instruction.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A$3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:20:08 GMT_Fri, 09 Oct 2009 22:36:48 GMTT1651_Wed, 28 Jul 2010 00:11:16 GMTZkeep-alive_"673-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionarys*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~CHS\bekt} .3>CJPcm"';?Sasvn__https://img-ak.verticalresponse.com/cobrand/vr/numbered_instruction/numbered_instruction.bg.gifOsGIF89ad(yitmuldzhijps~obo}ccygz~phcvg!,d(@zMzRRW%¾WR'ii|y,+,,FH%(\Ȑ!‡6(a(3jJ1Bɓ(S\iFc|x͛8sϟ?w  ϡHoBxbӧPJuZիWjʵWL݈KY]Ҫ]۷pʝKׄx'߿wLx0È#.̸qc:f09*.h̹FBMӡ?^Z uȞM;I۸sͻwMb|@h* 6F JhP l (?h(h#?!h8 @)=#H&$>P>1ŔTVIeX>qƖ\v`)YFh9 $8p:@tix橧q枀sha衈ڠ袌.裉6*餔Vj饌 t駠*jꩨꪬ* (Ԡì F+`Ű[l Ʋ6 F ôVŵfmv-_+~k߾B !8:ļkF,/,0![4f !Wlb_\$l2[,D,Jl8li-tM6jO |߀.n။ B4G.WnC砫褗n騧j}0nT/o 0 !agw} ?觯/Ooӯs0 LH  L؁: 4HA,@ `z HGHB(L ;X+ `w@ B:<"#hPHE(@.zU E:QhL4p6xT#;Yimage/gif <=>?Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Zhttps://img-ak.verticalresponse.com/images/cobrand/vr/widgets/common/widgets.common.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A,'"}3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 06 Jul 2011 17:16:37 GMT_Fri, 21 May 2010 20:57:26 GMTU15042_Tue, 27 Jul 2010 23:54:20 GMTZkeep-alive_"3ac2-48720f03bd980"*+ab_NSMutableDictionaryac/\NSDictionary:*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~>CNW]`foxz ).9>EK^h $8<P^psn_Zhttps://img-ak.verticalresponse.com/images/cobrand/vr/widgets/common/widgets.common.bg.gifO:GIF89a,p3Ijj:ШtJZجvzxL.zn|N~+DD KM|ό?(. H*\ȰÇ#JPE~dA  CIɓ(S\ɲ˗0cʜI͛8sɳ@ JѣH*]ʴӧPJJիXjʵ'(lُ]Ӫ]˶۷prKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠC=yH+$pYc˞M۸s Nȓ+_μУKNسkνËOӫ_Ͼ}! V, jϿ(h& 6F(Vhfv ($h(,0(4h !`k(DiH&dL6PF)TViXf\v`)dihlp)tix|)aqA&袌6裐F Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뮼+k&6F+Vkf]kk覫+k믰",l' 7G,Wlgw <A'"0,4l8笳@-DmH'L7PG-TWmXg\w`-dmhlݵ` @n|߀.n'7 G.Wngw砇.褗n騧ꬷ밋.[=/o'7G/Wogw/o觯/o?B4~HL@`'H Z1z 5(A&$QP'p g@Ɛ! ?hC0!HL&:P`H*p ,,bCT`hL6k!H:x#> IBR:!F:򑐌m(6RqT!/91$&N<*WiJN>,gIZ̥.gvD L2f:ԥ4IjZ̦6nz 'AAl2 ~ @JЂMBІ:D'JъZͨF7юz HGQ<^@ 0LgJӚ8ͩNwӞ@ PJԢHMRԦ:5BpA9/|I z` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬ^6ՔN x;eMjWֺlgKͭnw pKMr:ЍtKZͮvz x@@m|Kͯ~_LN; [ΰ7a G|ࡑ(NW_ W.yy`]L"Hd$ElX2}<_*{YOr|&@ 20VV f7ӹl_6g>r;{M泙l*WσvhEтs!:O:ӝ&7=eMԧ/1MjV-[MkY˅skM\7umh}s-.آ|c^5Wl:%l#/;ԖNp啀 `~NO;'N[ϸ7{ GN(OW0gN>PЇNHғ~#}Pԥ~GT7շt?^W=b:N}KW{ۇv}n;Ůs;.xN'ܹ~v3GxO+wCOݱ>Ẽ~S_ՋB/c_><۝oyχ~g{_}O_|OOΗz%s ,OϿ8Xx ؀8Xx؁ "8$X&x(*,؂X^%  1 ~-:<0@=8DXFxHJL؄NȄAO8<AHXZ\؅^`JhB(fxHHel؆Mdr8:txxzr|v8Xxs^؈hE%P 5( ~=؉艡xXx(8Xx=ȋXÈŘ،Θǘ˘xȊhx8X(ݘH؊昏XH8x8x  Xyy (*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9FY^ h)p1ppr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyi piIkٖYyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ隯9iIyp7Yz z ʠ *z9 !"z(* Z+0ʡJ%j2<ڣ>@Bڢ:*F 9:GLڤNz-JO:TZVZ"Z^`i9dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:ZzکY:zڪzZ:ګ:ZzȚʺڬ:Zzؚںڭ:ZZ^*?@ƴ :Zzگ;[{p售7튰;[{۱ "[ +(?#,۲.02;4[6{86[ )+@:B;D[F{HJL۴N+ <{ O[V{XZ\۵^`kQ۰Ja{hjl۶np;>r{xz|۷~tv{۸{;[{믑[۹;[{?;[[ۻ›k{țʻۼ|[;[{Л۽;;{蛾껾[;[ۿJ{<\L| <\|,֫ <$\&|¤+(,.o0<4\6|:+8<>@@=DB]H|JNLR=T}XV\ռ^b`=f}֠\hl-jpׄr]vmt}zh|׀~؄] dۺ،Ƀؐ3ؒ]ٖ]”}ٜٚ٠ڤ];ڦڪڮڰ=۴}]۸{ۺ۾ݻ=ukĝܕ= M]ڽ|ݒ޶-}޻Mފ޾+}=}7[ݲ^.~ s_^N~  $^0&*(.0>4>2^87<^;@?D^C^HGL.KPOT.S^XW\[`N_dc^h.glkpots^xw|~{^؃^ׇ^׋֏>֓^՗>՛頮ԟ>ԣ^ꨮӧ>ӫ갮ү>ҳ^ѷ^ѻп^^Ǟ^^^מ~~^^.O_o _/"_VL&O*H.C 2_oQZ^Y~a\6ivq^y>~pT8B4:xqDWys?>zuۢ_׾{w零?|yrŸW}{Mҿ?~}׿?m P%LPA \!% 1d 9I,DsDSQTYmUmV}UYi &ZqUWXn_`-;=Ve5#fVZ iV[ ѩm W0su-ueUvፗwEW}̗n߀ .ˁ NX'^l)vQ1ċ5c 9X QYnY]Yf`曝yN瞁ڿn-J裑礙nzZǠ뭹K;.l>[J鮛)%[ /T5\E|F!%r9A=̍EYEaevKh]ɝ߁/>O^/_Mǡ[^Ȟ7oWawO;+ן?0p$f@.n d@NlfA niAg"$ gfBe*d GBPc2 'fCPa:C Q_B$eD$.]JdD(N[ReE,nXZE0Wb$_eF4UjdCF8QSreGg;ṩuƓg={擟g?*O{gA:&YhC!ڷF^zhE1ꗋfwhGAʠEhIQ8yt)uNRn%3TjzS.%;QzS$C5jNzT$KuJTnSjzUf$[*tUc5@zV#ku+>V#sk:zW#{k6WR#53 {X #ul/X",*{Y͂'AWZc~liQӦXmkaƖ{mmqk斷}lo+-o\Hu.[v\r!ӵ{]J!.|]5L{^"5u/S^B5/U%tX%p{`W m[Gpl-|fXépKaV#lM|Yx+fc]XƇq{cU;k}|W yC&[|&Ygerd(USj|U,gy[S奆YG%szf4Tki|S8ysK|Y%sCg@wTЃh ]QD':ftCFZtziLSӛg=]OP:&u;M}tZdujXwSֳfm]M\:u3}d[$vyldReMKhGӦ6+}mTf[ۤvAmpsRdMItf7#nD[ބwyo|QcMG'8 ~p4&\ddxpsQb-NEg8=q$\D$yɁxrP+a]NC39 m~s\$yAssPC`эNA'Kg:tF]zxuO[_׽N?~c';~v]c{vsOs^n==|{^{LxOOG~w| &[^|y_]M_?ѧƨg}\^)}/w{}9?'~%_4~ |MOgn~}z_k##~[_A_ _oK 0i0C0&%1f4pS=:0]fI@aUdXc(a^p=md0= yb|shвp K `0 а % ^p Ю0 e ٰ p\(Ьp0  1Z hѪ!qJ-1X01è9Ѩ6EHQQTq]`1lil-uxQфqҐ1'mҜ3-Ө?QԴqK1Wmc-ՑرoQq{1m-  Rr!! 2"m"),"-#58##ARDr$ۭ$MP2%m%Y\%-&eh&&qRtr' '}2(n((#.)☲)/)Rr*;*2+Gn++S.,ŒȲ,_,Rr-k-2.wn...///Ss00 31n11.2%(221S4s3ˮ3=@34n4IL4.5UX55aSds6.675G77[7)3j88scs9G9C3:9:18GK;i:d3EG>3@3?>s?#@Te@y;!tA%A"!4B1rB)t#-B=2C54$9CICA$EtDUDM%Q4EarEYt&]Em2Fe4'iFyFq'utGG}(4HrHt)H2I4*II*tJJ+4KrKt,K2L4-ɴLL-tMMݴ.4NrNt/N2O40O O0uPP 15Q!sQu2Q-3R%53)R9R135uSES=4A5TQsTIu5MT]3UU56YUiUa6fuVK#Wu7WQW4uX9XU35Y1cY2Y WUeZZu;kU[#\1ȵ\ \U0u]]U5^^u/^=j^ _a_v v`_ vs5aba aa%6rbb1S"vcb=p46dbdI+LdicU\ReeaXvfdmnd6gۦfyV|geg)h*hqvihVn6jj'ju"k'kmkvloj͖V6m5m6m[em%n[so5Rovzzp=/n WTp9"qWp qq!$wr-q-7"07sbs9!>|ĿDM=J<1|YfP$eܚhcqܙn|ǵ};t*$>9wi,l"umf灞~^C>U^*'d>uA"~~ߢ~#> #_^>پY~M^5TC!~^ & ?[b*%O1S(A=#@?ILaUSaXCmp?šy~| _v?w"?? W?i"~!h<"%|B)jb-1l>5~9n=x8phtxdl5:>BFJNRVZ^bfjnrvz~j&. "*2 /37;?CGKOSW[_cgk{*oOu& K*d"Lp!ÆB(o&b̨q#ǎ? 9""OLr%˖._XAp1o̩s'Ϟ>"i0ТF"Mt)SBm6*u*ժVbb֮^ +v,Y+[MMv-۶nz+",*۬kM\A[,rۭzʂ;Z.벫/[{/즿\0P" 0Sckܱr#2')r{+<7GW3;\=m? ]ѩ}Kw4OCWg4[s=5vi=gU6k-mwQo]ݙ~ {}F ^ ~8CS^y9[`/9裓襣xyC?t:N޻qß<#߅3|O $!4B"2NL$#ѴFB2L$%4JbrJ$'NH %)}4RFL%+[VD%-?4ZC%/#^SA &14b"?L&3fB=ό&53jb<&7f=u3ڦ8r3d:)t3v3@ jH4DBH:4D+jIZ4ĨF;Iz4HKjJ4DJ[J4LkjK4ĩN{K4PjL5DRL:5҄TjMZ5ĪVMMz^˸JֳӬh]:J5p5Q\:O5ī^O5t+kX]`X5a6&l"Fm3DKô].TVރ-m6m-oW| .q"vM.s}rBύ.u0bW.w۰ /y%7Fz۫7U| 7K~k7QZ 8Np}:퍰K 7{ 1uGLbM0g81mwǫ OK"H&;PdLeZʊͲ .`ǜ2hNs\浺gJ:wxΪ\>9tSMEMFѐΩ']J[:tK7z% CJRwԨΨW]V:uCgM͵^Χ]b;Nv;t:匶IjsƦMn{73MndLvƥMz7+oTߤ AIsǤNɆ;8#'NqDZ̸ ǣGNǒ(O9Wr4dHs8ǢwNŞ@:Nt$DLҁPǡԧNê[X: uz$ AHshǠNp;Nw̻ǟO~O<x9䋼GkǞ7?{y=FOzKWg/_۾vϽj{ ⇗'o;?͏O}Aѵ)/Oǿ_Op~\sW [_`:P j M*`B`HZZ fU`^ra> Ӑ` zPa M `  ]` ! aP2!Y-LJ 9ajbhzTuaN*°aP¡PLڡa Lb!!""":"@b$:Q#RHM%K&jYb'j'"(Z'Db*>*+*+"b-zQ,@.K/b0010*<%c33B144Z8Uc6N6ry7f[8#c9~9:[;#c<<ң=[>#c?? @[A$!dBB29C&\DJ$QdE>EbiFV\Gz$ƁdHnHǙI\J$ɱdKK¤L\M$dNNO\P %eQQ")R]S:%AeT.TRYUF]Vj%qeW^W։Xv]Y%ءeZZٹ[]\%e]]^]_%f``a^b*&1fccBId6^eZ&affNfrygf^h&fi~ij^k&fllҦm^n&흗Xf3acp^ o' qo•r#s:g4%gttRuuj'pgwrwxt'>gzz?{d|'Ag}}B~6d'DhNEfd*(G2h~BHJ脖dZ(JbhrKzd(Mh䉢Nd狺(PhҨQ&e(Sh>T Ve)V"in2W:铆eJ)YRibZj閶ez)\i嘒]e)_i©`f)bi.cFf *ej^"f*vf:*hBjRiZꥦfj*krj槂lf*nj檲o[jjaj Mv*jƯk;Yimage/gif ABCDObplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_ahttps://img-ak.verticalresponse.com/images/cobrand/vr/widgets/common/widgets.common.bottom.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A,@3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 06 Jul 2011 17:16:37 GMT_Fri, 21 May 2010 20:57:26 GMTT2313_Tue, 27 Jul 2010 23:54:20 GMTZkeep-alive_"909-48720f03bd980"*+ab_NSMutableDictionaryac/\NSDictionary *+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~EJU^dgmv !05@ELReo!$)=AUcuxn_ahttps://img-ak.verticalresponse.com/images/cobrand/vr/widgets/common/widgets.common.bottom.bg.gifO GIF89a,, @#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]@*d谩իXjʵׯ`ÊKٳhӪ]˶ےO @pax˷߿ LÈ+^̸FέK5^ǘ3k̹ϠCMq -`סװc˞M۸sͻ Nȓ+_μܧKNس{\@D>Oӫ_Ͼ˟OϿ}Zx 6F(Vhfv !DddQ,0(4h8<@)DiH&L6PF)TViXf\v`)diG t <(tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤrꪬ꫰*무j뭸뮼+k챹  %Vkfv+k覫+k,l' ) 40udw ,$l(,0,4l8<@-DmH't6PG-TWmXg@0Axqdmhlp-tmx|߀.n $7G.Wngw砇.褗n騧/.n{ ?+/o'7G/Wogw/>o觯/oSۀ ߍL:'H Z̠7z GH(L" ," @|g8̡w@ H"HL&:PH*ZX!.z` H2hL6pH:x̣> IBL"ǧ;XdX̤&7Nz (GIRL*WV򕰌,gIZdw^ 0IbL2f:Ќ4DG>r0`8 8IrL:v~ @JkPD'JъZͨFcPiH DҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢT HMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺j TF `KMb:d'KZͬfiz hGKҚv;Yimage/gif FGHIObplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_bhttps://img-ak.verticalresponse.com/images/cobrand/vr/widgets/common/widgets.common.content.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A,*o3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 06 Jul 2011 17:16:37 GMT_Fri, 21 May 2010 20:57:26 GMTS146_Tue, 27 Jul 2010 23:54:20 GMTZkeep-alive_"92-48720f03bd980"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~FKV_ehnw "16AFMSfp "';?Sasvn_bhttps://img-ak.verticalresponse.com/images/cobrand/vr/widgets/common/widgets.common.content.bg.gifOGIF89a,G5TB2EeaSue[*ٞȚoj.*<8d8_֫Nds(eШ-*w( Rǃ;Yimage/gif KLMNO{bplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Qhttps://img-ak.verticalresponse.com/images/cobrand/vr/interface/v5/subnav-bkg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AƏ3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Jul 2011 20:27:09 GMT_Thu, 01 Jul 2010 23:57:08 GMTS533_Wed, 28 Jul 2010 04:29:58 GMTZkeep-alive_"215-48a5c3a627d00"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~5:ENTW]foqx %05<BU_,0DRdg}n_Qhttps://img-ak.verticalresponse.com/images/cobrand/vr/interface/v5/subnav-bkg.gifOGIF89ad!,dpH,@#l:bPxܰxLH2hfߠG!=|!!# /*TȠa#JȱGYɓ%?Xɲ˗0cʜI͛8sɳ2@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhe;Yimage/gif PQRSOxbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Mhttps://img-ak.verticalresponse.com/cobrand/vr/please_wait/please_wait.bg.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AYV3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Sun, 20 Mar 2011 05:14:02 GMT_Thu, 18 Mar 2010 20:13:39 GMTT4092_Tue, 27 Jul 2010 23:55:05 GMTZkeep-alive_"ffc-48218ddcf02c0"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~16AJPSYbkmt| !,18>Q[{ )-AOadzn|_Mhttps://img-ak.verticalresponse.com/cobrand/vr/please_wait/please_wait.bg.pngOPNG  IHDR@3tEXtSoftwareAdobe ImageReadyqe<IDATxKoGmh ,`3` {,Q$`H+ai XC"Lia#v4f}V׭W#\vTJ 0#%@Y4DROf-@혚l%@Ok%o@3E3eBDHK @鷕 e˳YzRFx30@1ke<gH2<@CVynHi" T7y*Ͼ$ҤU=>$,D2P6!f&(FI,CE\ m?}K N=;GI^¬tԤJə~aI+M,MS9ҫ.j_w,CD˼#N]'Kt6Jp%T"JtBd;, SY&я.WZiKtiK6Av}ߋ,=RЈ&K PDZ3]{,✥"Jʬ0KT:5uT%I 42D*$$EB.qٓܔ_RJ Mi2([qRM T,?}dzcx&VSNMM _,}M>4Iĕf(;TѼ~#U Ӕ&sK1Y\NybV\0}o),m)G$911ԩS_n߾7į,tV^~ﹹ'+i) >],C!irӴgϞϮ^'N|ە/vرWN#(E֮:VuE8??{ff懥4ԝe,MW&wëz.G/]tرcV-1"_>o}:xÇ?88k׮-$RcyN!_2KҌ}4HRnӕ+W.vbDLͮ=~Ϟ=޽{+?뤼ȳ6FI:~\_?,wb鉶׻]XTs#Ν̙3_ Ŝ:SiY%itӧO;22rnb=X#ġCO]uZZixHSŨJǏ5>>~D)t 2Ν;o>BHۛ׶~޽{GKBi*$K+Q4n:m۶t@b$f%vt}-l9RߐUz Ii ,h;yѷ-[Zg4d4 9zEx B{'Ekpwca] @'cW3>.y&rAĘ+r F1"F؟b(uY#bD1$Y<[B |1"FĈum#4"YDz1"FDA]9<ezC FĈ(k ToE=ðy@am7瓂 Y"Fڎ^=`eEdLcb 1T}Y;b:8D1!F3uD>1RAQ2i/2"m>]J,e@(XYQ,CCtu4MָH6u_TUC:pH}:bZ~E ڴ# Y"Fڎ# Y"Fڎ#B|G1RA]Է/,#6uٮ#lȊEGlW;c%6u#bDN~Y"Fv^:m] KKM]1"KH#}bDA!F扑/Ft uL}XӶYQP1!F^3YVq"FOCM켈l[YU}2bDGl[tYFS9c]#Fd([1vd#u#b1!F]!Fڎ,Xf]!Fڎ, b.bd#bdIٮ# K:0Ĉ#4R[CPc#Fdo!FĄ#O1i}:m"&H.884 &bDԧmT&YDA]Ąi;DEUe!XOb_KPy#.\(g|FP 1 UlкFG.YE=1esX1R Fn0OFEL1BcYZC$|L%&zL7([1v(-Ym5iqOUȂ (Ĉ#,C.i}O Qp~N1XRcnG#"=ʰJ< FĈlx$D%.iA#bD&œ,IRS#F:q-Y* MTtг,#bD.B!mnGZ8Js#bD@rT ZXiXL;x}r bG.N;G$}aaYK&LW4?|zmmmuppsH}چ?yRy+QNOOgAZ-J+'ի^x3IOEt`Eפ~X\\|~ /!Y# MiE?iG1zz ==0-'f;ӭ[n?|1R1"F?^ABhĒ2H)Jۍ7]uK7o޺_YRO"IJsn|م .9rdj:pm(+_>}z_XXx|ݕTLvOb!F2dǖR{LoL-|rĮSN}944t````7@3xήhJy=F?SñB&^+p; YӤ)@>=6$Nq(Mɱ6,Ӄ (]LN%D%@#>t"̘~4"JiH$MMDK=r8Ԕ!]Ǎ[)Α 0 q H>IISe/Hti&0Aʐ.M iK&yeI"PQ]ƾRfL9{Qi s sePlHiYy~aOBߪ;<:Vy,As*.EJ$Jf%L!CvkTYzKaAI%@񩲗;o2T÷ׄ$I P8m_^lԤK0uR>++IYҦO(LTbz]9J Wħ<$7e4Yz R2mMSx 0JWRed Laf$Mo xc qfK2,qV,:@fy.ʨL6@uo,M24}Ӡ@d2I*iyKyVHej#"4(YetYV?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Jul 2011 20:27:12 GMT_Thu, 01 Jul 2010 23:57:08 GMTR69_Wed, 28 Jul 2010 04:29:59 GMTZkeep-alive_"45-48a5c3a627d00"*+ab_NSMutableDictionaryac/\NSDictionaryE*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~:?JSY\bktv}%*5:AGZd.2FTfin_Vhttps://img-ak.verticalresponse.com/images/cobrand/vr/main_nav/main_nav.hover.bg.2.gifOEGIF89a2fm·!,2a؋޼HV;Yimage/gif Z[\]Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Whttps://img-ak.verticalresponse.com/images/cobrand/vr/main_nav/main_nav.dropdown.bg.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AƎ3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Wed, 20 Jul 2011 20:27:09 GMT_Thu, 01 Jul 2010 23:57:08 GMTS976_Wed, 28 Jul 2010 04:29:58 GMTZkeep-alive_"3d0-48a5c3a627d00"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~;@KTZ]cluw~ &+6;BH[e 26JXjmn_Whttps://img-ak.verticalresponse.com/images/cobrand/vr/main_nav/main_nav.dropdown.bg.pngOЉPNG  IHDRwҥ~*tEXtSoftwareAdobe ImageReadyqe<rIDATxؿn@a"$B P$ޠ;Qcj犎B3vW5FI\ǩg/J?ԑXaX\\\+++pWpWp .\\\\++ WpWpWp \\\+++ WpWpWp \\\+++pWpWpWp .\\\\+++pWpWp .\\\+++ WpWpWp \\\+++ WpWpWEt(ak~69k֣vtsIW?}yw[[[^lo?|a~{{{OWyqu]?6?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Sun, 20 Mar 2011 12:04:12 GMT_Thu, 18 Mar 2010 20:13:36 GMTS141_Wed, 28 Jul 2010 00:17:51 GMTZkeep-alive_"8d-48218dda13c00"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~EJU^dgmv !05@ELReo!&:>R`run_ahttps://img-ak.verticalresponse.com/images/cobrand/vr/main_nav/main_nav.dropdown.highlight.bg.pngOPNG  IHDR ;tEXtSoftwareAdobe ImageReadyqe</IDATxb|ĄKH###9m&^|BO@LNIENDB`Yimage/png defgO~bplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Whttps://img-ak.verticalresponse.com/images/cobrand/vr/main_nav/main_nav.curtab.bg.2.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#Aƌ13456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Jul 2011 20:27:16 GMT_Thu, 01 Jul 2010 23:57:08 GMTR69_Wed, 28 Jul 2010 04:29:58 GMTZkeep-alive_"45-48a5c3a627d00"*+ab_NSMutableDictionaryac/\NSDictionaryE*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~;@KTZ]cluw~ &+6;BH[e/3GUgjn_Whttps://img-ak.verticalresponse.com/images/cobrand/vr/main_nav/main_nav.curtab.bg.2.gifOEGIF89a2m·f!,2!S؋޼HV;Yimage/gif ijklOsbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Ghttps://img-ak.verticalresponse.com/cobrand/vr/wizard/wizard.nav.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AX]3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:20:08 GMT_Fri, 09 Oct 2009 22:36:48 GMTT5074_Tue, 27 Jul 2010 23:55:04 GMTZkeep-alive_"13d2-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~+0;DJMS\egnv&+28KUu $(<J\_unw_Ghttps://img-ak.verticalresponse.com/cobrand/vr/wizard/wizard.nav.bg.gifOGIF89a!,@pH,Ȥrl:ШtJZجvzxL.Ϗzn|N~gRĀ"# H*\ȰÇ#Eŋ3jȱ3CIɓ(S\ɲ˗0ct͛8sɳ@ JhH*]ʴӧPJ-jʵׯ`ÊKٳhӪ]˶۷pʝKݻx LÈ+^̸ǐ#KL˘3k̹ϠCMӨ ]ͺװc˞M۸sͻ Nȓ+_μУKNسkνYËOӫ_Ͼ˟OϿ(h& 6y'Vhfa[v (∏@(,g‹0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈 4裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰ j뭸뮼+k&6F+Vkf+k覫+k,lv 7G,Wl w ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhlp-tmx|43, n'7G.Wngw砇.褗n騧ꬷ.no'7G/Wo+?w/>o觯/o HL :'H Z̠7z GH(L W0 gH8̡w@ H"HL&:PH*ZX̢(Dz` H2hL6~0@H:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ & /@bL2f:Ќ4IjZ̦6nz 8IrL:v.SπMB9NF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^׮6MbNf;ЎMj[خsRn{MrNvMzη~NO;'N[ϸ7{ GN(OW0gN8Ϲw'^ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GwOWֻgOϽwOO{ 8ЏO[Ͼ{OOOg8Xx ؀8Xx؁ "8$X&x(*,h{,0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈0Xx؉8Xx؊8X(؋8XxȘʸ،8Xxؘڸ؍،Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ0 @B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhGlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙj9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ 0Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzPlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:zگ;[{ ۰;[{۱J";$[&{(*,۲.02;4[6{8:<۳< @B;D[F{HJL۴NP>;T[V{XZZ{^`b;d[f{hjl۶npr;t[v{xz|۷~m[{۸ۯ;[{۹;[{ۺ;[{ۻ;[f[țʻۼ;[{؛ڻ۽;[{蛾껾K;[{ۿ<\| <\|̾ "<$\&|(*,.02<4\6|8:<>@B@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xzUM@؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽν=]}؝ڽ=]}Ͻޮ]Ӹ {}kߞ!A;Yimage/gif nopqO{bplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Qhttps://img-ak.verticalresponse.com/cobrand/vr/wizard/wizard.nav.current.bg.1.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AYoY3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Sun, 20 Mar 2011 05:06:07 GMT_Thu, 18 Mar 2010 20:13:40 GMTS598_Tue, 27 Jul 2010 23:55:05 GMTZkeep-alive_"256-48218ddde4500"*+ab_NSMutableDictionaryac/\NSDictionaryV*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~5:ENTW]foqx %05<BU_,0DRdg}n_Qhttps://img-ak.verticalresponse.com/cobrand/vr/wizard/wizard.nav.current.bg.1.pngOVPNG  IHDR߇tEXtSoftwareAdobe ImageReadyqe<IDATxQN0 D7A!6| !жvc{0u,$K{mu Xw^fp,*T\v.j*}\(4mQ+?簒j6>|L⃣e _sVTu/NF.4š6i?(>8^04y?A~n]5бSWK:9c_.o G(FOJ}b[TxtKal$IENDB`Yimage/png stuvO|bplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Rhttps://img-ak.verticalresponse.com/cobrand/vr/wizard/wizard.nav.complete.bg.1.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AYDt3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Wed, 06 Jul 2011 13:01:39 GMT_Fri, 21 May 2010 20:57:26 GMTS421_Tue, 27 Jul 2010 23:55:05 GMTZkeep-alive_"1a5-48720f03bd980"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~6;FOUX^gpry!&16=CV`-1ESeh~n_Rhttps://img-ak.verticalresponse.com/cobrand/vr/wizard/wizard.nav.complete.bg.1.pngOPNG  IHDRtEXtSoftwareAdobe ImageReadyqe<GIDATxbt)^0à,o?~ t@1ѴE#@4m N4$$Wo?ѥ/@$2k Rlh(XFC=X1 0^LYhB:3 Lh " EwgKpr<7 a!,NXa%e 3GXz/@vh@@0Sbsη ; X`1F%X'*t&,WB 3a]*2a`y"~\[Y3IENDB`Yimage/png xyz{Owbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Mhttps://img-ak.verticalresponse.com/cobrand/vr/wizard/wizard.nav.begin.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AX3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:20:09 GMT_Fri, 09 Oct 2009 22:36:48 GMTS394_Tue, 27 Jul 2010 23:55:04 GMTZkeep-alive_"18a-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~16AJPSYbkmt| !,18>Q[{ (,@N`cyn{_Mhttps://img-ak.verticalresponse.com/cobrand/vr/wizard/wizard.nav.begin.bg.gifOGIF89a !, @dMf0@2t*] .^t&/h>SJ^ ~~(..)'' *  111 &0&0, ,22! ,2A;Yimage/gif }~Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Xhttps://img-ak.verticalresponse.com/cobrand/vr/wizard/wizard.nav.percent_complete.bg.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AXڠf3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Sun, 20 Mar 2011 05:06:06 GMT_Thu, 18 Mar 2010 20:13:40 GMTS244_Tue, 27 Jul 2010 23:55:04 GMTZkeep-alive_"f4-48218ddde4500"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~<ALU[^dmvx ',7<CI\f 15IWiln_Xhttps://img-ak.verticalresponse.com/cobrand/vr/wizard/wizard.nav.percent_complete.bg.pngOPNG  IHDR(tEXtSoftwareAdobe ImageReadyqe<IDATx C!Eawv?@T.AP2{jVȝ ֬ !:#!R"!J>*Vp  %DB$DB (Ͻ pm MֲSHhsH M{Bjei|IH(! FIENDB`Yimage/png Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_ahttps://img-ak.verticalresponse.com/cobrand/vr/linear_workflow/linear_workflow.footer.left.bg.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AXۯd3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Sun, 20 Mar 2011 05:06:06 GMT_Thu, 18 Mar 2010 20:13:40 GMTT7947_Tue, 27 Jul 2010 23:55:04 GMTZkeep-alive_"1f0b-48218ddde4500"*+ab_NSMutableDictionaryac/\NSDictionary *+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~EJU^dgmv !05@ELReo"%*>BVdvyn_ahttps://img-ak.verticalresponse.com/cobrand/vr/linear_workflow/linear_workflow.footer.left.bg.pngO PNG  IHDRS#tEXtSoftwareAdobe ImageReadyqe<IDATxV EjRkWĉ۲P#vCԜ// aIU)tϠ9n{8ѭ֚'^*٪_ ~ ut[%FCj<%9#G #r,'w( zz'0x͹& wʮR[EA)?9 mx ]RkHx[tZσ/NRG菴Q{[?uk!`8B_0g^u6i$H8coD㞜Z_9U쥳q@<8NӴ, d)9xQg2|Ot27?Rro,oܟWd+AbnO|ԤCc !5KAa,>7ػA H &&mJeدoSd_pTJ1OgG2r#(*_%td$vSTU@b 8s g|5t8!Cr:@\j/.poҼzl.z狦/1,8;ZFEq,#+^)ȤU-yg>n8N@b/# sjOq fF]Tx1Ll bx 3=vx3A2Jb HJnG&ڈ v*]ƶJ~0W9`4X99ս ^ S23\hEE:ffzĜރw*/e"IeقS͠^KM7Ϥ/nʂ5[@iNUx 'sFJ11es߁] /J?cg*ry kYEz}X3JD PdYt:I 2%SƲ`|fo{6t>XhJ<O GxuO5u][_7ԟ}a|QBTCā=jQVpmolwm;0bxV v`54I#[_˯ImEj;ly=R~I[$ϕ~l V-akwEuqp)KG呃T86L.~cgCJ`+/&a[͵?\+0[R4FV\Rf`]q0D A!VXcBE \:]2{ȊzS½7YS?,OTSs{R.utϐR^bX֖;qe*iINv+ u vHC'+[ ל,p>ckxBd@4;s^k$ X?jWƅ#vb)m.ٴ@~ 1Y!hqQJVKھ*j?vьƜ5Y}! %2u6\aȒ-hW5J7j$~|nLf\EXFI}y0Qݨw4k.pseɆA!'YW}d"hd+P})s^ǐJs4M(I@| |`hs*ܮ6^P/t{v^^{ߗ/N|l<=LZa3ԯ.*f՚ZΎ~p8Ŵ_}Nj>aNWP|GFXQhtL=?b=\h\ݵWQ8T|,7s0'Ag3Ajw)X)tX78RD(p &x!*,I2%x poN帊2ق1Xo4͙ %+[e,ܝ̑Otrrrrpwrrrr@`ږ#Ga(3l'vt,n].-$M=Gԅi@DޅY49mx|7 6΍Cn8sP[40iBgoК!' zfɚl%׀2(vDSImUQ6ipϢp[Adx "I߹1o<ЦVK!˒j|{rrdX[.]n#9Aۥ qYAy 1{#POHwg{_Nr`VCEp\a_ߠZwwZ@ (lHcunjSqKTGnCBգ-ZfΕ#YrL(Vo Sb8IEvTnf9:aLDJד,|;*$.mcƀ:chp$A;GGia6DzCalk gu\?oZ0[&G,UEf$1p)9J7æ񨷃q3vfph-[ph L.Xz@6p?c`=7MIf-{22!i Ek4->,J9Řt{D?Y\໴$ j ӐgpGrAI3 cHG kډ\:01YGqFeOmAIOд '=BEL ">'4<-;;!"ь]iJ%_T&t< ].Grq[&* aC*} e1Wzg2I\ސ'f7SnH b PuFȒ_q5E#:ylxWzbI= mD gXҠ&030_ԻˋkQpe,j.+՚U[ԩz|i0wp?y <5xM80ڏG[1ݚ:^EZV[r$b@s1b]DƧUJMmgLEű{Ռ"PO7sP lds8>bzuQQ;g4Va>Ian^'$S8YŮK%W|IYhgN=H5h{OOZK^sAGba[_&1v.*]UPt6t `^]K?9-ev{mW%>Bj3[YyB=gH[H BW.I˧{&rU3%p(7g ,wYSU øy z:CK=6U6sI-N) OF Pk UMO7p$ҏU+-xȊ0.m:=?0䴈VζKNm};"0Ԋ2EbZ~ޅ׶}’6Ĺ}Y4>zi4(aM/%LFGRE7RKcρ! ـz0.EHENQBS0]{eKdwn͵5D/J+k#bE`汥*˒ZK!Eu?*d4}*ڜv[eEH[#=c.WtS:ZJoZnl@nMkoZ\) ov4=k(jnkҪSx*Jn){L+@]7uh%A5ҿ2ء#8pf&ХfژZoZȧn IZ }-{תäӅZ<^޺(Ms§54$юwh!2?#e)44 sPؔZUQX;I1  U=FwYfS(, 6 hȥX阼:2k#X:o X8 E N ;AP*r.tܚbSjh.mA ;ڋ}!styh'#]5>|\6؆ӽڙE`l`b8=cgl@90wv*5pixTO뫃%Gbd1OTj;(,Cw㷪kX= Rpaq}^e/٬WmSqT~w]Ro"GKVmؚڢ3wi/=k9-ی;dXLO aWw{;a9+Nsto=}I0:o9H߁?Pܷ?Y.eXlJ֣Z#kO?%Ϋhv9Jn ̐:/cdV9ROE6! E?T-Jxme qW/R:H}PXgXoovt7$= `8Cl+qf~^Ku GvtXވ[H8S>6m>-fVkWkN{NKNt_VZYmW5stٗ4i[$.yAٛ : " _3!ò=y= |1lዌɜ<LVn:I hC=NV6lpB#(U \,TF*33͝ˋM .|b=eTXr`#(4ƴלAqTfSiIoĤGė$ e ƀgd2r{FʭlϼpyzisA3'f+61>r^__A4+ZTR 7p`v]ϟ=.],V ,,s`!kB Wl)sU*䍲z aUdD?}`8 sdKk\2lFgl+Z 9Jѡ a4a;bѫ0)P, *S̨D]5#S[OU ;-;xb}~rp;v3W$y)>AC?]oS9X ';HznF8t&+VF[3 v/wT7sA={鹃!f`;).eC>HvƺPbDP2d]0?H2* GJ%Я_~d=rlT&`s.p0%#ُU7Qk_9-/F"wBwk+'D -ϟ?S?Z坩%+2ΡFobPCHݘ5ZZdgF٣+0-LZ֯}Ezzs mDFO[ ;vyЁp,?~-[????o|뿏^'Iȷ#e)--nPKF S\v#$YAWL׳=5%>LdaWFORd ݋z8O\^b^s/c[s9ӑ9Wִq,|z\j[fy?wk(c6GM{"2Qko]ŀkL9]_TlRP^ŴdV0 vOGqGɕ}+ْGCSŶu55tHu;,Pig-yz P))%@O(l{mmu@)8!:pjgy(:52|ߖ|/Ik9l Dʖ~X/ L-*-ZtB&BLjSAaoJz}9H^i0s!Ĩ0JS%LERڊ!wJ2 aM?.W_ʰNʗgbzw<O 3hGgQ5{UBfS=FFHJү[ >h2;V0${1'H㳶 j^VϧUphtf`uzW77AA$     "   .  B'e^!#0IENDB`Yimage/png Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_bhttps://img-ak.verticalresponse.com/cobrand/vr/linear_workflow/linear_workflow.footer.right.bg.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AX3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Sun, 20 Mar 2011 05:06:06 GMT_Thu, 18 Mar 2010 20:13:40 GMTT2500_Tue, 27 Jul 2010 23:55:04 GMTZkeep-alive_"9c4-48218ddde4500"*+ab_NSMutableDictionaryac/\NSDictionary *+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~FKV_ehnw "16AFMSfp"%*>BVdvyn_bhttps://img-ak.verticalresponse.com/cobrand/vr/linear_workflow/linear_workflow.footer.right.bg.pngO ĉPNG  IHDRgSzϾtEXtSoftwareAdobe ImageReadyqe< fIDATxڄP !KQE=ilUlc{2a\eVI,'[Qjsr ~)hJDC{cL CI;,թm>ѿ'ꀣb*UDtݍ'F6)Gy$j%sK韹-8A8_c8ҁҦ<a73=\)<H]WNq]$5206lV#&7=?8jhpfq_RQQ#(`Jr a'.<۸bD3IpDo&d\Qd{Eo\8)Pr@YKPfQ&L$٭HY? +wqu)~@IQwֈrPHcsi]- K)pjvt?LU`HdTZX2oYKl[3zj:| RH:)xX9v3a9)--;sQ|EȦZİL<j C槌zJ8|}6lcw7͈2e1;]M{dϯN"OaK+˚ ARk+LVokfn Kn!YxGQfζmCA2 V uhZZbja|KB &/U-#L V6*BP񈷷Wr1 (UꪩJ,SʓMC`jK54I-CROe!do*|O;Y]WA_M C gK]zr<"wWnB ǟ޲ojIBIENDB`Yimage/png O|bplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Qhttps://img-ak.verticalresponse.com/cobrand/vr/submitfooter/submitfooter.left.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A7}3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:20:08 GMT_Fri, 09 Oct 2009 22:36:48 GMTT1067_Wed, 28 Jul 2010 00:11:03 GMTZkeep-alive_"42b-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary+*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~5:ENTW]foqx %05<BU_-1ESeh~n_Qhttps://img-ak.verticalresponse.com/cobrand/vr/submitfooter/submitfooter.left.gifO+GIF89a22!,22JCIJ JCBJ!JIDJ AJHJB H0`%*ÇFPŋ3Z,Ǐ ;Q"ɓ(S\$%bʜIL"8s3% JPHPBӧP:@իXP⠫ׯ`zJ %Ҫ]˶۷pզPݻx. %# L`+^81%"KL˘%PϠCMsΥSw.ºװ[P۸[P2AȋPRУKNݹ%kνËO>< %&ҫ_Ͼz˟O? %7¿hG4F VhVv 6!~((ޠ0(488ȏ@*DiH&-0 :TViXf /dihfEQ 'tix'B@H` j衈&袉DB< Ujg8(@=u駝4jLꪬ꫰*무j ;Yimage/gif O}bplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Rhttps://img-ak.verticalresponse.com/cobrand/vr/submitfooter/submitfooter.right.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A73456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:20:08 GMT_Fri, 09 Oct 2009 22:36:48 GMTT1062_Wed, 28 Jul 2010 00:11:03 GMTZkeep-alive_"426-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary&*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~6;FOUX^gpry!&16=CV`.2FTfin_Rhttps://img-ak.verticalresponse.com/cobrand/vr/submitfooter/submitfooter.right.gifO&GIF89a22!,22JCJICJ !JBIJD JJABS*-c˞M"rͻ N<+_μЕ+س[+Qӛ7+aWϿ(ڧ$$ 6F(FDfZ ($aJ,,~ 4hJ@Ɏ<*@)DiC&䃒L6PB+B d\v^ , lm *`DA,|矀 1 Dڢnvр)3Uj饕3)CrͧJjꩨꪬ꫰j ;Yimage/gif Owbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Lhttps://img-ak.verticalresponse.com/cobrand/vr/submitfooter/submitfooter.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A`3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:20:08 GMT_Fri, 09 Oct 2009 22:36:48 GMTT1808_Wed, 28 Jul 2010 00:11:03 GMTZkeep-alive_"710-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~05@IORXajls{  +07=PZz (,@N`cyn{_Lhttps://img-ak.verticalresponse.com/cobrand/vr/submitfooter/submitfooter.gifOGIF89a22!~,22W$5$FFW5F$W$F5F5$hhWhFhW5FԎh5WGhXX6Gh%%hGXh6%GXhih8|G(0 %ؐPC PHaÍ \@HN"IQ&MABeC&P!MN)_Tó$&dp K"!,XE 8dD'm5Izvnܷu9wW{8-]GcZ[hZМȌ/g%k " ԩa`˚ֳsȾJtFJ`ü5 ̷0r(C| HO%thCӷgs@ҷ6\KȜ{*F( 0n0EdD;|DF&"ntn;F+^h MB4$6$^@+@ e&WrdzkC&jʹ=p8h:ğo_p( =|N|=p \ Ǩ -èqj>ĩ>,P* B p̊jĶ`-q( rñ`8+rqd .00v@@Ğ[PFroq0ʡ 7Gr1 s4`14 X/l@ @h bD1G@<0<;s=s@#@>Gt>KtdAAuc_g5 bc=awfK1tQ1!1<@S<tL!t@ d0>7ނ]G 1z@z{^zBLQ騣>H" # )x"D@*DCp"$R;X*TxD$NLD(aVP0?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:11:48 GMT_Fri, 09 Oct 2009 22:36:48 GMTT1167_Wed, 28 Jul 2010 00:18:13 GMTZkeep-alive_"48f-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~?DOX^agpy{ */:?FL_i #7;O]orn_[https://img-ak.verticalresponse.com/cobrand/vr/widgets/product/widget.product.header.bg.gifOGIF89a 2־ֽ, 2@PxȤrl:ШtJZجvzxL.zn|N~MC" ٘B ! H*\ȰÇ#JHŋ3jȱǏ CIɓ(`I͛8sɳ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻ80`L LÈ+^̸ǐ#KL˘3kܔ!rMӨS^ͺװc˞MoE< Nȓ+_μ8E, سkνËO~ (_Ͼ˟O "(h& F(VhfO : ($h(hV*0(4hq,ި<@);HH&L6 TViXfNI`)di^lpƙZrix|*Eg*蠄j袌6裐ʗhVj饘f)gn駠*ꨤRiꪬ詮*무j+ު뮼 k6'l6F ٲVkfUn+nݎk覫.+k櫯,l'{/G,1p Olg n ,2al(2P%0lq2l8Ks< DmBL7hNG-T uXgN^`-6^mhljpgXvtm;Yimage/gif Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_ahttps://img-ak.verticalresponse.com/cobrand/vr/widgets/product/widget.product.header.right.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AєK3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:11:48 GMT_Fri, 09 Oct 2009 22:36:48 GMTS407_Wed, 28 Jul 2010 00:18:13 GMTZkeep-alive_"197-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~EJU^dgmv !05@ELReo #(<@Tbtwn_ahttps://img-ak.verticalresponse.com/cobrand/vr/widgets/product/widget.product.header.right.bg.gifOGIF89a2־ֽ!,2@pH,R j:'PhDehz"1$zn*A t`3yk!i"  y!w! ljmki¡ĜƖȐʊ̉΂ЁҝxۮٹɤA;Yimage/gif Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_bhttps://img-ak.verticalresponse.com/cobrand/vr/product_dashboard/product_dashboard.titlebar.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A*s3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 27 Oct 2010 11:53:23 GMT_Fri, 09 Oct 2009 22:36:48 GMTT1052_Wed, 28 Jul 2010 00:18:13 GMTZkeep-alive_"41c-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~FKV_ehnw "16AFMSfp"%*>BVdvyn_bhttps://img-ak.verticalresponse.com/cobrand/vr/product_dashboard/product_dashboard.titlebar.bg.gifOGIF89add!,dd@pH,Ȥrl:ШtJZجvzxL.zn|N~N#Ǿ  o*\ȰÇ#6\@ŋ3jȱǏ CI$ (S\ɲ˗0cʜI͛8s@ JѣC(]ʴӧPJJիXj*Uׯ`ÊKٳhӖ۷pʝKݻs˷߿ LÈ+^,؂ǐ#KL˘3WϠCMӨS^ͺ5c˞M۸s} NȓGУKNسkν; ËOӫ_˟Oח(h& 6H`F(Vhfr ($h(Xb,0(4h8?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:17:22 GMT_Fri, 09 Oct 2009 22:36:48 GMTT1683_Wed, 28 Jul 2010 00:18:13 GMTZkeep-alive_"693-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~:?JSY\bktv}%*5:AGZd 26JXjmn_Vhttps://img-ak.verticalresponse.com/cobrand/vr/status_bubble/status_bubble.live.bg.gifOGIF89ax,۪T]CWYl㭩ͮG[6KltŠϔ]f>J闼k|BN;Q:Kч+=2FPd鰅}ҵֹ pC G騧ꬷ.wi! ( A"! `'7G|0`dT$Ca觯ǯ>CAU~(A p 4L:h@ ArgA (L W0 gh p 6(Cd"@JHL&:P]PH !"0Z@H2hLF1 b<L, ~ȣ> I<"F:򑐌";Yimage/gif Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_ahttps://img-ak.verticalresponse.com/cobrand/vr/product_dashboard/product_dashboard.content.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#Aū3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:17:22 GMT_Fri, 09 Oct 2009 22:36:48 GMTT3823_Wed, 28 Jul 2010 00:18:13 GMTZkeep-alive_"eef-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~EJU^dgmv !05@ELReo!$)=AUcuxn_ahttps://img-ak.verticalresponse.com/cobrand/vr/product_dashboard/product_dashboard.content.bg.gifOGIF89a]!,]@pH,Ȥrl:Шh0B0xL.zn|N~pRLTVXZ\^`WY[]_aưQɲޕ- ǯ*\xÇǰŋ3j$uDǏ CIɓ(S\ɒ$mI͛8t̙G*1IѣHLCJJU?Kq:2KѬfp-`ڷp݇6Z"m)˷_au7È+`!KLrd-ϠC[To ~`h7!)(AhIaᇳih≕}x0h#_2E-?߆k.S֗>+ovn>o/>0mߓְ=Glhq^1E7UM\O(cƂ].lleᜎ<}-R}H7m08A]Tg=`q=`m}lǍ-]xM>'̎d4Gn9/GSxfT~^Z:BCs3n!;S 0.|gk7W?5o"/w/P~//>"ׯ?. PxȻb OnURhp )>BΉp$,N(r, _b4 ?mNqq+"'ĵ)qLlbٞ(JkT̄,"b\06m(BqAk#!ǝqtc(Hr $.Iir줿>P_:tle^yX\-o\aܖ/`Vks(1L9(sjfSVI3hOpx57hs N[ ,'ɆtSU\;Ixa=B~#N?}U@3ЄϠg@CQ3HtZhvU >JUGO =,KղҘ0 M t ~ T uDD-*LS¨hT5UլpHWa'u5,ΊVKlmJʕt]]ļi|u_Nq*aC)v]l Y1JR/˩jg?Тji]qjk []v-n[EX#ˬ ĕqbksr䪮uQ]uiwi ` ^nu^-/.˯E{+:l=})2s+ x/y sK׉ix> zk$.>O<S v2<6b|cX(qW|: Llq|1$Ecpk<s,RF.%,i벗Qeyvr2a=4K͐a3+ݜ/8oXs3Mv>͟yи*h0Zl4|ˬ1+lΒ4DeK̟֣PkW.E1zQB# kgӵ^/cZCങ{_z׍#_dNyf6nkiSŶ6}:hZ۷+qG6itsXc7]*sn^okrn7 k. HrK:@WFx\4h3q )hDOpsϜH@!j(W@.{'$`|/L`D{=->.:y|.̳Q.7y]rрIK o}^{|r3!G㢁'>-_09|K0l _`"g<-gT~%܇r(HvpקqDG8{ H WY}  $h{x K~6~+p7W 'HRƒrH~> d7`PF$MqM @U$WM`_Dm҄ Pg[ 7l&ne1xy#{qXXt&Mr}׈x`؉ q`A8}Z2(r!ȉp7%q8h0 P'HX  ("h\w$Ոwg$7rH Kxyx؏Y$r Z>Ґ (=q1(R  *ɒ )/13_6Y#7rDI 04 7EyR zKYP"UiqU [y"UIrAU zci 2hg "imi`r9Rqm{ɗR p 0y"7×Aiٌ "9| gi9qQ锞ٚiG~SȚ9rYzy !y y(ϙɛ rә9iqpC؜ɞ1r~{︞z! ڠz  Ppש¡ Jaq )+ʢpJ4j P2 =BqaJ:@FHJʤpO:Uz OZrQ[Cj#cZgj ldozqs u*ZyZO:r٧iz:꜊Ze4ڨp JT*-rڪ13 !z ګ;Yimage/gif Osbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Hhttps://img-ak.verticalresponse.com/cobrand/vr/tabs/tabs.active.left.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A% 3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Thu, 17 Mar 2011 17:05:46 GMT_Wed, 03 Mar 2010 21:52:45 GMTT1250_Wed, 28 Jul 2010 00:11:17 GMTZkeep-alive_"4e2-480ec80992540"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~,1<EKNT]fhow',39LVv $(<J\_unw_Hhttps://img-ak.verticalresponse.com/cobrand/vr/tabs/tabs.active.left.gifOGIF89a2,2@(Ȥrl:ШtJZجvzx<Z n|N~     H*\ȰÇ#JHŋ3jܸAYIɓ(S\ɲ˗0cʜI͛8sɳO$0ѣH*]ʴӧP# Xjʵׯ`ÊKٳhӪ]˶۷pʝ;W ˷߿ LÈ+^̸ǐ#KLe-D tH'PG-uNOmXG]u\w[-dvhgpvtms߭q߀w>'xш/97䔯,ygwĜ.N˝;lzǞ.;z;Yimage/gif Osbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Hhttps://img-ak.verticalresponse.com/cobrand/vr/tabs/tabs.create.left.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AO@3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:09:13 GMT_Fri, 09 Oct 2009 22:36:48 GMTT1283_Wed, 28 Jul 2010 00:17:54 GMTZkeep-alive_"503-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~,1<EKNT]fhow',39LVv $(<J\_unw_Hhttps://img-ak.verticalresponse.com/cobrand/vr/tabs/tabs.create.left.gifOGIF89a2,2O"A%Ȥrl:ШtJZجvzx<rTk|N~.67:,1#9/ V@H*\ȰÇ#JHŋ3jȱǏ%\D(S\ɲ˗0cʜI͛8sɳ@ :T$ &(]ʴӧPJJիXjʵׯ`ÊKY2T۷pʝKݻx˷߿ LÈ+VO "KL˘3k̹ϠCMӨS^ͺuk@@۸sͻ Nȓ+_μС_Q!سkνËOӫ_Ͼ˟?_=* Ͽ(h& 6F(VhJ  ($h(,0(4h8樣p ("DiH&L6G-TViXf\v`)dihlp)dPx|矀*蠄j衈&袌6裐F*餔JA馜v駠*ꨤjꩨꪬ꫰*무j@+k&6F+Vkf@t+k覫+ko ,l' 7G,Wlgn ,$l(̱,0,4q8<7,DmL7;+ TWmK\w5Z-drfl?vp-omxS]w|w{-x'Ň/xWgyߘomw-z騧>骷zѬ.9N(l{./<o<';;Yimage/gif Osbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Ihttps://img-ak.verticalresponse.com/cobrand/vr/tabs/tabs.create.right.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A^3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:09:13 GMT_Fri, 09 Oct 2009 22:36:48 GMTS447_Wed, 28 Jul 2010 00:17:54 GMTZkeep-alive_"1bf-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~-2=FLOU^gipx (-4:MWw $(<J\_unw_Ihttps://img-ak.verticalresponse.com/cobrand/vr/tabs/tabs.create.right.gifOGIF89a 2!, 2@p(| `T>Z{XƙFʴ+ |#=dN^0 3> 1: *!> #{ <q%.q'>O+>L7>24=>>?>T?h; SH … 6PŊ#ftb ;Yimage/gif Osbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Ihttps://img-ak.verticalresponse.com/cobrand/vr/tabs/tabs.active.right.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#An3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Thu, 17 Mar 2011 17:05:46 GMT_Wed, 03 Mar 2010 21:52:45 GMTS464_Wed, 28 Jul 2010 00:12:50 GMTZkeep-alive_"1d0-480ec80992540"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~-2=FLOU^gipx (-4:MWw $(<J\_unw_Ihttps://img-ak.verticalresponse.com/cobrand/vr/tabs/tabs.active.right.gifOGIF89a2!,2pHZ>l:ǣ4XXd P=C)@Ocn7Qx;&3|fc ~~~ttPNM JJI Xo Az &TB!⿆Zܷ_G?aȓ IKa;Yimage/gif Oubplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Jhttps://img-ak.verticalresponse.com/cobrand/vr/tabs/tabs.inactive.left.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AW3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:09:13 GMT_Fri, 09 Oct 2009 22:36:48 GMTT1308_Wed, 28 Jul 2010 00:17:54 GMTZkeep-alive_"51c-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~.3>GMPV_hjqy ).5;NXx  &*>L^awny_Jhttps://img-ak.verticalresponse.com/cobrand/vr/tabs/tabs.inactive.left.gifOGIF89a2,2ۍB5Ȥrl:ШtJZجvzx< &i|N~"!- $6+'Lx@*\ȰÇ#JHŋ3jȱǏ ?R `(S\ɲ˗0cʜI͛8sɳ@ J(,0ӧPJJիXjʵׯ`ÊKٳhю,…pʝKݻx˷߿ LÈ+^x$HL˘3k̹ϠCMӨS^ͺk"۸sͻ Nȓ+_μУGP kνËOӫ_Ͼ˟O~}8x(h& 6F(VhbH )`  ($h(,0(4h8?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:11:48 GMT_Fri, 09 Oct 2009 22:36:48 GMTS476_Wed, 28 Jul 2010 00:17:54 GMTZkeep-alive_"1dc-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~/4?HNQW`ikrz */6<OYy  &*>L^awny_Khttps://img-ak.verticalresponse.com/cobrand/vr/tabs/tabs.inactive.right.gifOGIF89a2!,2@pHdl-l2IN+0Ux<.hߩE!A|$l46$ 6 3!* '.6 +2&6065/ 667IH0 J ",† !2(!D 1.bEAr<8rǒQ~ `K!OɲLA;Yimage/gif Oobplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Ehttps://img-ak.verticalresponse.com/images/cobrand/vr/icons/error.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AƩ3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Thu, 21 Jul 2011 06:28:00 GMT_Thu, 01 Jul 2010 23:57:08 GMTS994_Wed, 28 Jul 2010 04:29:58 GMTZkeep-alive_"3e2-48a5c3a627d00"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~).9BHKQZcelt$)06ISs  $8FX[qns_Ehttps://img-ak.verticalresponse.com/images/cobrand/vr/icons/error.gifOGIF89aա=֣>X\բ>qӌ\hщl^ݡ)WҌQԅߤ+BUjӏWw Txݠ8ڛ%WƜRғD\WυWӼם}wW忈dDBXU[nݱGTb]ߩ\q ٖKVZܞ'ϣΫ֐Q֓ nעNh~71Ыт־X٘#ؔ`z$TbP9A͙-!, H@Z9p i4hFG5|L %HLTȝ-oh(|xq 2,h"Ls6Ar!h@˅ 05:8^p3"+?HCTqJ3E)P60|ɓ`K `H)N@*T9Ka@< F;Yimage/gif Oqbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Ghttps://img-ak.verticalresponse.com/images/cobrand/vr/icons/comment.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#Aƛnr3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Thu, 21 Jul 2011 06:28:00 GMT_Thu, 01 Jul 2010 23:57:08 GMTS257_Wed, 28 Jul 2010 04:29:58 GMTZkeep-alive_"101-48a5c3a627d00"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~+0;DJMS\egnv&+28KUu "&:HZ]snu_Ghttps://img-ak.verticalresponse.com/images/cobrand/vr/icons/comment.gifOGIF89av]wa|Zpӯ˰gHZqSe{!,~'dIzh5˃ ycz0YXTH2 A ,Ie `(`1ƒ@ :c9T,vdfr~w" 8';&'9!;Yimage/gif Orbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Ghttps://img-ak.verticalresponse.com/images/cobrand/vr/icons/success.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AƩ^3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Thu, 21 Jul 2011 06:28:00 GMT_Thu, 01 Jul 2010 23:57:08 GMTT1024_Wed, 28 Jul 2010 04:29:58 GMTZkeep-alive_"400-48a5c3a627d00"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~+0;DJMS\egnv&+28KUu #';I[^tnv_Ghttps://img-ak.verticalresponse.com/images/cobrand/vr/icons/success.gifOGIF89aܥؒrhw᯵zmnbB3I'?;D3lVLJˆѵˆڦ}fߛiʇ\;peܦזӛ΋еrוQ.yk?;p|d;'ydԍq[w`~o͈㶺۵&#֕ב&#pWiJodjPݪ̇㸇yuss\td}gthۨdL?;ۨ51oauhҐٵoaoYmW٥nXoXsflK߬\=51}fᰙ͊?,i*ƋpL H pI0G%v@0 h(@.$rѧJ(: AF`6qT'2=!pE8y:u $wtl$!*<ِpeS(NaE%"'8h 4$?Vqc 5R XHPʓI@DG"1  ;Yimage/gif Opbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Ehttps://img-ak.verticalresponse.com/images/cobrand/vr/icons/sorry.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#Aƨ3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Thu, 21 Jul 2011 06:28:00 GMT_Thu, 01 Jul 2010 23:57:08 GMTT1025_Wed, 28 Jul 2010 04:29:58 GMTZkeep-alive_"401-48a5c3a627d00"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~).9BHKQZcelt$)06ISs !%9GY\rnt_Ehttps://img-ak.verticalresponse.com/images/cobrand/vr/icons/sorry.gifOGIF89aSGC,ޠߡWhUޙ1!3cnhm`djdf\49h ;rޔ8|^J/ܗn-Sh٤.SpuhHVҧ+2@jۗ"uߞ{qT0h~ F{DԗҒߚkjYͼ1B.m$K;vֱ= *[?ޞ 0@P(ӏ x@U۝9|(ߊuުH%W ۚݦ(mQH,<ב֗uڛ֐4?xo{E~xT(0!,O H`A`HӆL8B㑂:d)9z$lxKA)UCӕ BX c@ LLQi=Fma!!DDJ0 JeDP3c2C.Y$p H+'Aip#$?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 06 Jul 2011 12:39:58 GMT_Fri, 21 May 2010 20:57:26 GMTT1070_Wed, 28 Jul 2010 00:10:22 GMTZkeep-alive_"42e-48720f03bd980"*+ab_NSMutableDictionaryac/\NSDictionary.*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~5:ENTW]foqx %05<BU_-1ESeh~n_Qhttps://img-ak.verticalresponse.com/cobrand/vr/data_table/data_table.thead.bg.gifO.GIF89aHBٳܹڨ߬ڭ۱!,HBpH,Ȥri 8ШtJZRvzxezn|N~o7 þ &PϞ?{( ‚Lt"B+.bǎ5z#H&Sr<2 "8X9S&Mdⴉ&M'ٳ̘A9<1f͙!*T!j)NM^JkRMvڶWV.[woߺ}Ր0Wq HZZvky!ʊXx,KԶ+k,l' 7G,Wlgw ,;Yimage/gif Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Xhttps://img-ak.verticalresponse.com/cobrand/vr/data_table/data_table.thead.sorted.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#Aߋ3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:12:18 GMT_Fri, 09 Oct 2009 22:36:48 GMTS936_Wed, 28 Jul 2010 00:17:54 GMTZkeep-alive_"3a8-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~<ALU[^dmvx ',7<CI\f 37KYknn_Xhttps://img-ak.verticalresponse.com/cobrand/vr/data_table/data_table.thead.sorted.bg.gifOGIF89aHB!,HB@pH,ȤriL9ШtJZجv˥ xL.an|N#~{   !"Do^wP#:(ŋ3jܸq(rd !O<9r䅗%[dR$H,clYrÄ 2P$|faПP}*`RVB 0@ٳgŢU+VmZƕ`nYp޵CÈ #^x_ F˗Kd̹4 @ӨMV}5jcnڵiקaӞ B}۷qƋF.y#?-:'kwO/>ϓ{(gw~}ϯ h__`}9X W!f(Y ס',>X!J8" ʨ8WarH_;ߊ)8b$88`' _*ʨ#46xeRV_Oy(!LVKYd_r&b(#Hqboޞ_"c&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸Zk;Yimage/gif Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_]https://img-ak.verticalresponse.com/cobrand/vr/data_table/data_table.thead.sorted.desc.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A93456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 06 Jul 2011 12:39:58 GMT_Fri, 21 May 2010 20:57:26 GMTT2108_Wed, 28 Jul 2010 00:17:54 GMTZkeep-alive_"83c-48720f03bd980"*+ab_NSMutableDictionaryac/\NSDictionary<*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~AFQZ`cir{},1<AHNak  %9=Q_qtn_]https://img-ak.verticalresponse.com/cobrand/vr/data_table/data_table.thead.sorted.desc.bg.gifOz˟OϿ(h& Fh U`fva †"(Z,b@b!(`"̸`hf lYpfqix|矀*蠄j衈&j )DÜ%P t`\P駠J)j^ *z꤯v0뭸ꮼRj,l뱸> Ш rL[.چ覫. KºKon֫믺l#\0k›0Ol_o \n .(,,l)24׌8缁<42D,?]E7DsK =54_3Z5N7 vdK5Y_@ p-tmt-ns7G8noW砇.褗n騧#n:;'@7G/#|g/csڟ`'?w߽ҋH@A F` %8"Ё̠-x@ jP1BP&l` OBr0Ġ g=Bφ7C@ H"qH=p&:PD)ZTL#fPb(1e<-pH:x̣h>1~ G<򐈄c!kF:򑐌 )J"rEI;ft$(HGҏTd!!Q\$,]IZq1I[eLHs1I)fQ2IirL# dr LqrLg$N_3e;LBSg!9~vf:ςDhKҡƄ/ jJ4b5%Ps2@XċV(&G?єs iJM M$H iPo2I}DMTڴOh97ԇV@miVϨvKX:Мғdm$7wR[5|&Z1ժTWԯi+_{j֓fTe+^V26]QNJTreٳ5%7OV*)2#N@^4-egKͭnw pKMr:ЍtKZͮvz xKMYz|Kͯ~LN;'L [ΰ7{ GL ;Yimage/gif Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Xhttps://img-ak.verticalresponse.com/cobrand/vr/data_table/data_table.toolbar.topleft.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A׈3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:09:22 GMT_Fri, 09 Oct 2009 22:36:48 GMTT1273_Wed, 28 Jul 2010 00:17:54 GMTZkeep-alive_"4f9-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~<ALU[^dmvx ',7<CI\f  48LZlon_Xhttps://img-ak.verticalresponse.com/cobrand/vr/data_table/data_table.toolbar.topleft.gifOGIF89a d! , d ̎  H@ȰÇ#JHŋ3jȱCIɓ(S\ɲ˗ œI͛8sɳϟ@Y JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸뮼+k&6F+Vkfv+k覫+k,l' 7G,WlVgw ,$l(,0,4l8<@-DmH'L7PG-TWmXgmQ ;Yimage/gif Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_[https://img-ak.verticalresponse.com/cobrand/vr/data_table/data_table.toolbar.bottomleft.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A_3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Thu, 17 Mar 2011 17:06:46 GMT_Wed, 03 Mar 2010 21:52:45 GMTT1270_Wed, 28 Jul 2010 00:17:54 GMTZkeep-alive_"4f6-480ec80992540"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~?DOX^agpy{ */:?FL_i #7;O]orn_[https://img-ak.verticalresponse.com/cobrand/vr/data_table/data_table.toolbar.bottomleft.gifOGIF89a d! , d H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸뮼+k&6F+Vkfv+k覫+k,l' 7G,WlSgw ,$l(|*첐,9@8Ø@9s `DaH0L7!HNWmu;Yimage/gif Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Vhttps://img-ak.verticalresponse.com/images/cobrand/vr/fancy_shadow/fancy_shadow.bg.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AXZ3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/gif_Wed, 20 Oct 2010 14:11:49 GMT_Fri, 09 Oct 2009 22:36:48 GMTT1953_Tue, 27 Jul 2010 23:55:04 GMTZkeep-alive_"7a1-475883724c000"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~:?JSY\bktv}%*5:AGZd 26JXjmn_Vhttps://img-ak.verticalresponse.com/images/cobrand/vr/fancy_shadow/fancy_shadow.bg.gifOGIF89a ոпέְ÷ϹҵѼ٫ǻܶ, HGGF  /!*40.(;&27фFE  @ $?,A"1:-+|H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JLt 3PQx(HC |9Dpׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠC;F:ExHS9la5 sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟Oߟt!uFƀSLPAQ $Dp?D(Vhfv ($h(,0(4h8<@)DiH&L6PF)T " Ԡ lp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬXfD 0jD4%0 !k&6F+Vkfv+k覫+k, IBL"F:򑐌$'IJZ̤&7NJI(GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8Ǚ%PL:v~ @jJsMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪV[;Yimage/gif Ozbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Phttps://img-ak.verticalresponse.com/cobrand/vr/email/email.builder.editor.bg.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AY 3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Sun, 20 Mar 2011 13:02:20 GMT_Thu, 18 Mar 2010 20:13:36 GMTS291_Tue, 27 Jul 2010 23:55:05 GMTZkeep-alive_"123-48218dda13c00"*+ab_NSMutableDictionaryac/\NSDictionary#*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~49DMSV\enpw$/4;AT^~+/CQcf|n~_Phttps://img-ak.verticalresponse.com/cobrand/vr/email/email.builder.editor.bg.pngO#PNG  IHDR\1HtEXtSoftwareAdobe ImageReadyqe<IDATxb411aQQQab@׃ЀPP @vvv EPP((@1" (777Q666bm"S -,,])'''JYYYT@4 A)@anbb/JCSikcl Rc433c6 ! ħv)CO$HuCQCib( 9)IENDB`Yimage/png     Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_]https://img-ak.verticalresponse.com/cobrand/vr/email/email.builder.editor.workpane.bottom.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AY3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Sun, 20 Mar 2011 13:02:20 GMT_Thu, 18 Mar 2010 20:13:36 GMTS447_Tue, 27 Jul 2010 23:55:05 GMTZkeep-alive_"1bf-48218dda13c00"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~AFQZ`cir{},1<AHNak $8<P^psn_]https://img-ak.verticalresponse.com/cobrand/vr/email/email.builder.editor.workpane.bottom.pngOPNG  IHDRCtEXtSoftwareAdobe ImageReadyqe<aIDATxA0"\_eihǍ"D6_aeYj<>6,Vm3cqUo}m"U5u$4M9w}n:̘oS?@am˶opja @amݲ\ڷ_c@U u[_뺭@Om]ohꋰTu=u]/.B.˼޹ 1Q&a @a+ۺTu^жN?5Nop/a 5 @Xa k @XW?M!IENDB`Yimage/png Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Yhttps://img-ak.verticalresponse.com/cobrand/vr/email/email.builder.editor.workpane.bg.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AY93456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Sun, 20 Mar 2011 13:02:20 GMT_Thu, 18 Mar 2010 20:13:36 GMTT4454_Tue, 27 Jul 2010 23:55:05 GMTZkeep-alive_"1166-48218dda13c00"*+ab_NSMutableDictionaryac/\NSDictionaryf*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~=BMV\_enwy (-8=DJ]g  "6:N\nqn_Yhttps://img-ak.verticalresponse.com/cobrand/vr/email/email.builder.editor.workpane.bg.pngOfPNG  IHDR@ctEXtSoftwareAdobe ImageReadyqe<IDATx10 @$;|fBE$ĀU: 꺮1|Z}/öm(`Ux zZŰ~޻3Kd95a, Ck-->A :˽oiu_ x ,m @Ϊ~1 kX[|a ſ_pa 5k@Xa  @X5k a 5k@Xa  @X5ka 5 @Xa k @X5ka 5 @X5k a 5k@Xa  @X5k a 5k+a 5 @Xa k @X5ka 5 @Xa k a 5k@Xa  @X5k a 5k@Xa  @X5ka 5 @Xa k @X5ka 5 @X5k a 5k@Xa  @X5k a 5 @Xa k @X5ka 5 @Xa k @X5k@Xa  @X5k a 5k@Xa  @X5ka 5 @Xa k @X5ka 5 @X5k a 5k@Xa  @X5k a 5k@Xa k @X5ka 5 @Xa k @X5ka  @X5k a 5k@Xa  @X5k 5ka 5 @Xa k @X5ka 5 @X5k a 5k@Xa  @X5k a 5k@Xa k @X5ka 5 @Xa k @X5ka  @X5k a 5k@Xa  @X5ka 5 @Xa k @X5ka 5 @Xa k a 5k@Xa  @X5k a 5k@Xa  @X5ka 5 @Xa k @X5ka  @X5k a 5k@Xa  @X5k a 5 @Xa k @X5ka 5 @Xa k @X5k@Xa  @X5k a 5k@Xa  @X @X5ka 5 @Xa k @X5ka  @X5k a 5k@Xa  @X5k a 5 @Xa k @X5ka 5 @Xa k @X5k@Xa  @X5k a 5k@Xa  @X5ka 5 @Xa k @X5ka 5 @X5k a 5k@Xa  @X5k a 5k@Xa k @X5ka 5 @Xa k @X5k@Xa  @X5k a 5k@Xa  @X5ka 5 @Xa k @X5ka 5 @Xa k a 5k@Xa  @X5k a 5k@Xa @Xa k @X5ka 5 @Xa k @X5k@Xa  @X5k a 5k@Xa  @X5ka 5 @Xa k @X5ka 5 @Xa k a 5k@Xa  @X5k a 5k@Xa k @X5ka 5 @Xa k @X5ka  @X5!JOt/IENDB`Yimage/png Obplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Xhttps://img-ak.verticalresponse.com/cobrand/vr/email/email.builder.editor.toolbar.bg.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AY3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Sun, 20 Mar 2011 13:02:20 GMT_Thu, 18 Mar 2010 20:13:36 GMTT9448_Tue, 27 Jul 2010 23:55:05 GMTZkeep-alive_"24e8-48218dda13c00"*+ab_NSMutableDictionaryac/\NSDictionary$*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~<ALU[^dmvx ',7<CI\f !59M[mpn_Xhttps://img-ak.verticalresponse.com/cobrand/vr/email/email.builder.editor.toolbar.bg.pngO$PNG  IHDR5eetEXtSoftwareAdobe ImageReadyqe<$IDATxU +Th(b6#1|SJGV!OF!5zo8͑fCyy)Đ#rAm=ޓ$&е(9q4MC/끘zBA11=TDɁ@1$˲teSc1ج^ Ǎo œe3ŕ_A5oμ9hFqob4ltZ V:ݓ,1LIv6agO2:`va(\!NmOO s3%3Sa|ˉm_ p|8uCj?ч-s_ Y%Ad0eTJQIܛ=9~hYYĻ?s~<P,dn*PV)wP}GyӬ faT i\v:s0J8A˺ur͠1tDC+MYV2 <8,txO#YZI&RI#BK4<!$=ʭTMpH`#hA.3Xn(7ɡMI]iO +-؝x-*Snf)Ji^٩q(!^gjS:f:3q-CUa݇?OZmg:PRyTB-,l^9p=O1ðI*mvs.**f?0d9)B Tţp_H2QpvDj0"bh/ɺ?+9N&Rp"/Q_a6C%d㦘R$n`M"1 wlQs`p<H~}V#?vr{(3=Td,Q/!Vhkr! w$.[ZݥxeM^e$o]UÓ4C?Wؽm+>76m澝(}M ]ll,7fO٦ڳi!;iB_e7gm hmn"H4!70(%4LlEH }0,Ŕ$I@z1C Ԋ1^9Np $A(Tg,%f6%5S12mJK~  QTAt VHBzUWJZI1Вx(`6L/cxcf/ ;q7qzchZĨhn?|3,zL &.R)@Q qO՚\.m3#`o7Nf&Ʈqc>tws㚅QGǹIDy5Rf2~RCd]n冬D> _jd[#(]Zs6wkr#2B4{agZ'{ 1\w}& gۑOµ3rߐFpln"ԁm\pA!0 ' %K䂢j93[4ze-f0ا1Вl r *ZEYHDq;rǦ%Jڈ t?P|n{n.2`As).U}U5A'T:&-IɘuoB_=\wW8:֔7eD[X@̄Y4W\QJVcofʆ8ʹb97EȘ.=CP1k`]m *&r>Ol O>˶ϏD-.(VP<!2H [+Q 0BZ*YwJsii2R:̟6/aG0#CPQ\">DVTt q} 'L!Nz1Ӈ:J0Φn\c]lczM} h,Iv!-yffѷj?$꩘YXlr ?$NS *͵$`M S*?k&E9fcc=KҨ]ZKU&4v08Sҙ  \H r`D]CIR_;иjBKm{a  qٌ$NDƎFxgy=틒45[]]m0?@8όA̬A 9_Mayk9>oH[\r&i" ASo?MES&*QKֲ_}v">}dʔw2yfESے#Wp\nkiE=-%TV +g\UuniOw­M:=BJKyUk_G6q  b&էZMuqNj]A7k3Q" ѽKj>#E˴$T&* ߖmש}^~'ف/^2֓\)>1S6c?~xd,p i)X}ء/v\&SˆQS P#Qb4]i,b$+jwi0X4S8Qȇ$@LU0ǀC@'ݟxC}bMV$ E"P{*N H9,D 9ec HDJ4Y=aE= %HQ͆s@-HχIjV '~Fkk+e3qԅZCF0g$J)`ya4Boᆰ)$˗;`667'Ca[tfeO64̱-0erн f3oԽخ_qKWV Vrqud;]rؐED(x+׫5k3l!;@)H Q0^7a7 V,{to]3MaHa 0hp-\w6;Re%3XuFc=Q|+EOQAFAzalzK F2n)iv{N=+0fK/^jIu#?]NDˬ a l?IX?^jcxʭ'Ɠjɻ]ݖadSFZ;:X,j`t̀Lzhݯ[#z)ZF?ЛB`8rGs8/!؆c r|ԧO!c6ΥfGYazJ:J>SwgkHf )!aFω6Ǐ|tWk@(OL*&9u ytte\÷ax"+ej\[Foh66vO7ـɔ1"m:Μ/º ź˦h `QvǑÇbJ7pX۫)qE1Aȕ^G4,=b\rx,[.?A8,ײ\0J$j:KlYwG٪DKl2U? i-sW6ddEPB2d gan%MdmZ_ ߿LvrE ܍,o =qP|܅(Bg2GiA^;,DZVB|0dHr^ی/_4|\>k7mn״STFqɆÉ&2SzK޽/k*Υ[sF& ٱKsߝbR/ ϩk^:x0ؤ5*BW"IU%XND;nNnCw6; _r!+[v AjSf'XN[2ӞY|uېdҋa'WU1zqo߆] '8 ;_b^Ya `csHn@I@z k'^CBNhbXF"PAƤX3 *HH)7A+#SE7o3ncǁ0'9Nn%[2cƹ[MAPSp-m 8dg 㗅E%b6[N*5<'drj(up"VBV1D-`[_VFOnW}cME+]{6{6S_}ު,`'n#Pө)@Nky$ ִ`YAr!ҩ%ރ-i.}O`d,FwuBY;`G$TRӬQ=sx= qeRzfȁT9Q7T_WJ|9Kاs>*9 &)}iFi^o/yBwc2K!92yGrF <͌l4 x%a798@nse={`i4rp1O58Xz_L(o4նU1/+/]%mc])L)[=*^v -@wRmt[zjW a{{{!6g*&{)fSIN<)n *c~Bi̽< c),^WKRME[}I 0hQVz^(T1}L [, LZNERCB|\1uK@ NnIx`JpÉzr3 ذ^ cqqz[1")d{v A ؓTdl!rG`VQA-9L`<3[\ӡn!c۷~] h]A;SЩ^\\+0HEWl`{މJRF }xǏC?~xX3sz ? h1nO[pSaTC'{u}u罃_ mx0L S&9֬]I\ =j(f(uc\i$G((kM]={ph@I)vIlËKlC|L&ŲC-mI\C`l}FNUDoEJ,-U/,4|%#ai 7VfdGd-!,9%[Ï3 Di=5+ȰpNp5噡雛7www>|8# 3[WfxzMNvjb 73 [gk/+. w֐G WH;}"kXH]oH&I,'CMͫ]0*`d["vB{;H; R( @Z+ =%^n Ӛ߸~XJ304 kDx2pdVzĬqVD ]8iVoB&I8)=O`Wm.+Ymna ]m9t`CO~ZuFd)mw8YjH#˸93*C8 j\H/<=]>hvM<Ճ Ӛ1as&*xXQ^7r\KDd_<:d w`o-F|K8O[ .@Qix\łJ͑Bt/{PQs}q -:6Soֻ'DTh!]q=q ԾO'nYJT'+=5zOww _Jn;g7ُ.!bգоu&݅cFmѮ|h/sFmv~>h]|G#[;= QzlՉ Xd U8M!f) rMoQBф -%$Y,=g V//3i卟0և{||PD`FlqP zp-0K*"t\u^M@3+V4/%9$pBt:&4[YZWVVQZ]zZ]}VMZl߿˷oߺq6hoKNwpq(鷽͇}C%oWF;yz(ʯLa/3k MkI,'˭fWi _CYȑ@.}JdE[:(Pݧsfq.:4c%фa@a@Y"Dx jv6͏29G'݀~(!j8mHsF /G(?zzƐen8Be"(4Q.||Y,b##W!ɴWt," p8He}scU`lTppڌ#Q\*%b)%EEF@݊e%xmH.m"OP{.+=t \ʼ\_Z GӁMpvّjEN:OzcPCTU#<}fiKq9'++)By+mӃ */'EƠBg<ֶUl)mΝ*f߿XbN/)Å}B|^OxB"B#;YvWUne%rl'r}DPp2u˛F P*rӑlRoQmX^ZWd\C)9<ևpIJDH.pMKeA&R|pN!p):8)|y6iY84Mezp!c"o>,QkèΑ`d\%lL3fA'׍#Λju0YAҺ`UY۰.phlQj1f1bDŽ zZd"OН%ȄG.+ ;)iw񟖋tg!q?tZ0+d߿|JcnDs5 D,5384;v'G_D}Ԋeًp)"T6Ngi f j9n.5osʦs1]jXTGx+hz]c6#m褦J\z*f\KPi݃fov$BtM0[Ӳof*p nWqf63m{A~EQeJvSubM~ g" 'q͐zمlRf}?u1?Ř,IENDB`Yimage/png Ozbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Ohttps://img-ak.verticalresponse.com/cobrand/vr/rotating_tip/rotating_tip.bg.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AYo_3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Sun, 20 Mar 2011 05:33:06 GMT_Thu, 18 Mar 2010 20:13:40 GMTT2518_Tue, 27 Jul 2010 23:55:05 GMTZkeep-alive_"9d6-48218ddde4500"*+ab_NSMutableDictionaryac/\NSDictionary *+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~38CLRU[dmov~#.3:@S]}+/CQcf|n~_Ohttps://img-ak.verticalresponse.com/cobrand/vr/rotating_tip/rotating_tip.bg.pngO ։PNG  IHDRXqtEXtSoftwareAdobe ImageReadyqe< xIDATxݱn#EYI{oDM# ހBB@<FBBJb/.7vlο4}o ߏ  b!be@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ C1@ 1CP C/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/+!xb?b+u}{wCpዏq>߯קakcw'gzusد3ob8*;׺Xly}x)~~Sx!;甲 .b֮XxXx>8k}/?Gy 񿯇ab24X<nsEqV,QA]Aa"5!/_7x 0 b`R,}1A1b80 BW-'2`z=w.h2q[b4%ۧn+a'ah[s]b+M b2JpUb-=aAAXΤz06g-FtOS1S%\ M)y`aJ_YFk/zop*aLl kX&BAXTFQc81OJ\qS0[!8]MDp]7]4 t֚`kMce"!]*)]Zt1 FWe]E"=5)ۥ ׳%:! bQ͝wKư5Jj%kE' F-k!LaTVVkE+X i 76}R S.mM~N>c(0S[VZ8)İ֔X=!'Zv3o İ'i"hqH={B g)b89۞=0S`/MuMSC87Sb8'L)M_:csAozch 'ƞ-̩sc87HCM1x⹁q>7Ix=O`y;w/Cº%/CxQb!b8^>| 0 )J1vIENDB`Yimage/png  Opbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Fhttps://img-ak.verticalresponse.com/cobrand/vr/icons/marketing_tip.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AYek3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Sun, 20 Mar 2011 05:15:22 GMT_Thu, 18 Mar 2010 20:13:37 GMTS782_Tue, 27 Jul 2010 23:55:05 GMTZkeep-alive_"30e-48218ddb07e40"*+ab_NSMutableDictionaryac/\NSDictionary*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~*/:CILR[dfmu%*17JTt !%9GY\rnt_Fhttps://img-ak.verticalresponse.com/cobrand/vr/icons/marketing_tip.pngOPNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDAT8˕KSq}ћHoLL܋"솒!PRtR&$^22p31RiSy7񶔍m^v6n9~.ZZ;MIENDB`Yimage/png "#$%Orbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Ghttps://img-ak.verticalresponse.com/cobrand/vr/login/login.loginbkg.png*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-Ranges]Cache-Control\Content-TypeWExpires]Last-Modified^Content-LengthTDateZConnectionTEtagVApacheUbytes_max-age=31536000Yimage/png_Thu, 14 Jul 2011 03:15:18 GMT_Thu, 01 Jul 2010 23:57:08 GMTT1400_Tue, 27 Jul 2010 23:53:29 GMTZkeep-alive_"578-48a5c3a627d00"*+ab_NSMutableDictionaryac/\NSDictionaryx*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~+0;DJMS\egnv&+28KUu #';I[^tnv_Ghttps://img-ak.verticalresponse.com/cobrand/vr/login/login.loginbkg.pngOxPNG  IHDRe$ztEXtSoftwareAdobe ImageReadyqe<IDATxڜXr0 $4omW$  Ȳb_s>x\O$Yō 8Yl-׻=X1}[mݶ뛃-]t}tlݷ]~c :܋Xo"$>ߺU-Œ[=ՙõ>߆0弿ago>H`y1;Tķږn"9uHR ;hd7n"ikbU(JV`.sJy[ܪWrʖr Us"W^9AAs~{ol<_;_zf ajp=tώivp;;=*٪͒!#4)YB8yKj= Zzl]uY]NYYĴ-,#vۑ R7V7:CzoDwr.uuI"4SPY _P6t{F(ՠ M@4rEvxN0EezJilj^sjP#sbhcM$!.]ғElu5L(_DX`i+],(v([/boM*7Фig'q>H<Zt!Rifm-{1՚{LqCwΉ0JOA# /kkB,$ٵ[62>6Hǣm-Dߨ^}o5|qbdd!l][g@65Nht ?^ۯU,E`-e!3gEu-1WvjS9zc±& 9;LSqm#w[PĚ85mfk֚_8 l@xo4Vg<0ׯ28JMCmݢ+ckՈr ŪA.9}{Ы \F`_!F~L\gůkO]RКFJnR9W+=:IENDB`Yimage/png '()*Olbplist00bcX$versionX$objectsY$archiverT$top"()0!12HIJKLMNOPQRSTUVWX\]U$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_https://img-ak.verticalresponse.com/styling/asset/1279143973/server.js?app/js/merged.js,lib/js/swfobject.js,lib/js/FusionCharts.js,app/js/vr.app.email.js*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A3456?WNS.keysZNS.objects789:;<=> @ABCDEFGVServerZConnectionUX-PadTDate]Last-Modified\Content-Type^Content-LengthTEtagVApacheZkeep-alive_avoid browser bug_Wed, 28 Jul 2010 00:17:53 GMT_Wed, 14 Jul 2010 21:46:13 GMT_text/javascriptV274453_89e6-770b-2040341f*+YZ_NSMutableDictionaryY[/\NSDictionary0*+^__NSHTTPURLResponse`a/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverde_WebResourceResponse#-27V\wz~y~  .;JOVau-1ESeh~f_https://img-ak.verticalresponse.com/styling/asset/1279143973/server.js?app/js/merged.js,lib/js/swfobject.js,lib/js/FusionCharts.js,app/js/vr.app.email.jsO0 var Prototype={Version:'1.6.0.3',Browser:{IE:!!(window.attachEvent&&navigator.userAgent.indexOf('Opera')===-1),Opera:navigator.userAgent.indexOf('Opera')>-1,WebKit:navigator.userAgent.indexOf('AppleWebKit/')>-1,Gecko:navigator.userAgent.indexOf('Gecko')>-1&&navigator.userAgent.indexOf('KHTML')===-1,MobileSafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/)},BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:!!window.HTMLElement,SpecificElementExtensions:document.createElement('div')['__proto__']&&document.createElement('div')['__proto__']!==document.createElement('form')['__proto__']},ScriptFragment:']*>([\\S\\s]*?)<\/script>',JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(x){return x}};if(Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions=false;var Class={create:function(){var parent=null,properties=$A(arguments);if(Object.isFunction(properties[0])) parent=properties.shift();function klass(){this.initialize.apply(this,arguments);} Object.extend(klass,Class.Methods);klass.superclass=parent;klass.subclasses=[];if(parent){var subclass=function(){};subclass.prototype=parent.prototype;klass.prototype=new subclass;parent.subclasses.push(klass);} for(var i=0;i0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length);}else{result+=source,source='';}} return result;},sub:function(pattern,replacement,count){replacement=this.gsub.prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0)return match[0];return replacement(match);});},scan:function(pattern,iterator){this.gsub(pattern,iterator);return String(this);},truncate:function(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?'...':truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this);},strip:function(){return this.replace(/^\s+/,'').replace(/\s+$/,'');},stripTags:function(){return this.replace(/<\/?[^>]+>/gi,'');},stripScripts:function(){return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'');},extractScripts:function(){var matchAll=new RegExp(Prototype.ScriptFragment,'img');var matchOne=new RegExp(Prototype.ScriptFragment,'im');return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||['',''])[1];});},evalScripts:function(){return this.extractScripts().map(function(script){return eval(script)});},escapeHTML:function(){var self=arguments.callee;self.text.data=this;return self.div.innerHTML;},unescapeHTML:function(){var div=new Element('div');div.innerHTML=this.stripTags();return div.childNodes[0]?(div.childNodes.length>1?$A(div.childNodes).inject('',function(memo,node){return memo+node.nodeValue}):div.childNodes[0].nodeValue):'';},toQueryParams:function(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match)return{};return match[1].split(separator||'&').inject({},function(hash,pair){if((pair=pair.split('='))[0]){var key=decodeURIComponent(pair.shift());var value=pair.length>1?pair.join('='):pair[0];if(value!=undefined)value=decodeURIComponent(value);if(key in hash){if(!Object.isArray(hash[key]))hash[key]=[hash[key]];hash[key].push(value);} else hash[key]=value;} return hash;});},toArray:function(){return this.split('');},succ:function(){return this.slice(0,this.length-1)+ String.fromCharCode(this.charCodeAt(this.length-1)+1);},times:function(count){return count<1?'':new Array(count+1).join(this);},camelize:function(){var parts=this.split('-'),len=parts.length;if(len==1)return parts[0];var camelized=this.charAt(0)=='-'?parts[0].charAt(0).toUpperCase()+parts[0].substring(1):parts[0];for(var i=1;i-1;},startsWith:function(pattern){return this.indexOf(pattern)===0;},endsWith:function(pattern){var d=this.length-pattern.length;return d>=0&&this.lastIndexOf(pattern)===d;},empty:function(){return this=='';},blank:function(){return/^\s*$/.test(this);},interpolate:function(object,pattern){return new Template(this,pattern).evaluate(object);}});if(Prototype.Browser.WebKit||Prototype.Browser.IE)Object.extend(String.prototype,{escapeHTML:function(){return this.replace(/&/g,'&').replace(//g,'>');},unescapeHTML:function(){return this.stripTags().replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');}});String.prototype.gsub.prepareReplacement=function(replacement){if(Object.isFunction(replacement))return replacement;var template=new Template(replacement);return function(match){return template.evaluate(match)};};String.prototype.parseQuery=String.prototype.toQueryParams;Object.extend(String.prototype.escapeHTML,{div:document.createElement('div'),text:document.createTextNode('')});String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text);var Template=Class.create({initialize:function(template,pattern){this.template=template.toString();this.pattern=pattern||Template.Pattern;},evaluate:function(object){if(Object.isFunction(object.toTemplateReplacements)) object=object.toTemplateReplacements();return this.template.gsub(this.pattern,function(match){if(object==null)return'';var before=match[1]||'';if(before=='\\')return match[2];var ctx=object,expr=match[3];var pattern=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;match=pattern.exec(expr);if(match==null)return before;while(match!=null){var comp=match[1].startsWith('[')?match[2].gsub('\\\\]',']'):match[1];ctx=ctx[comp];if(null==ctx||''==match[3])break;expr=expr.substring('['==match[3]?match[1].length:match[0].length);match=pattern.exec(expr);} return before+String.interpret(ctx);});}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable={each:function(iterator,context){var index=0;try{this._each(function(value){iterator.call(context,value,index++);});}catch(e){if(e!=$break)throw e;} return this;},eachSlice:function(number,iterator,context){var index=-number,slices=[],array=this.toArray();if(number<1)return array;while((index+=number)=result) result=value;});return result;},min:function(iterator,context){iterator=iterator||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||valueb?1:0;}).pluck('value');},toArray:function(){return this.map();},zip:function(){var iterator=Prototype.K,args=$A(arguments);if(Object.isFunction(args.last())) iterator=args.pop();var collections=[this].concat(args).map($A);return this.map(function(value,index){return iterator(collections.pluck(index));});},size:function(){return this.toArray().length;},inspect:function(){return'#';}};Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,filter:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray,every:Enumerable.all,some:Enumerable.any});function $A(iterable){if(!iterable)return[];if(iterable.toArray)return iterable.toArray();var length=iterable.length||0,results=new Array(length);while(length--)results[length]=iterable[length];return results;} if(Prototype.Browser.WebKit){$A=function(iterable){if(!iterable)return[];if(!(typeof iterable==='function'&&typeof iterable.length==='number'&&typeof iterable.item==='function')&&iterable.toArray) return iterable.toArray();var length=iterable.length||0,results=new Array(length);while(length--)results[length]=iterable[length];return results;};} Array.from=$A;Object.extend(Array.prototype,Enumerable);if(!Array.prototype._reverse)Array.prototype._reverse=Array.prototype.reverse;Object.extend(Array.prototype,{_each:function(iterator){for(var i=0,length=this.length;i1?this:this[0];},uniq:function(sorted){return this.inject([],function(array,value,index){if(0==index||(sorted?array.last()!=value:!array.include(value))) array.push(value);return array;});},intersect:function(array){return this.uniq().findAll(function(item){return array.detect(function(value){return item===value});});},clone:function(){return[].concat(this);},size:function(){return this.length;},inspect:function(){return'['+this.map(Object.inspect).join(', ')+']';},toJSON:function(){var results=[];this.each(function(object){var value=Object.toJSON(object);if(!Object.isUndefined(value))results.push(value);});return'['+results.join(', ')+']';}});if(Object.isFunction(Array.prototype.forEach)) Array.prototype._each=Array.prototype.forEach;if(!Array.prototype.indexOf)Array.prototype.indexOf=function(item,i){i||(i=0);var length=this.length;if(i<0)i=length+i;for(;i';},toJSON:function(){return Object.toJSON(this.toObject());},clone:function(){return new Hash(this);}}})());Hash.prototype.toTemplateReplacements=Hash.prototype.toObject;Hash.from=$H;var ObjectRange=Class.create(Enumerable,{initialize:function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive;},_each:function(iterator){var value=this.start;while(this.include(value)){iterator(value);value=value.succ();}},include:function(value){if(value1&&!((readyState==4)&&this._complete)) this.respondToReadyState(this.transport.readyState);},setRequestHeaders:function(){var headers={'X-Requested-With':'XMLHttpRequest','X-Prototype-Version':Prototype.Version,'Accept':'text/javascript, text/html, application/xml, text/xml, */*'};if(this.method=='post'){headers['Content-type']=this.options.contentType+ (this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005) headers['Connection']='close';} if(typeof this.options.requestHeaders=='object'){var extras=this.options.requestHeaders;if(Object.isFunction(extras.push)) for(var i=0,length=extras.length;i=200&&status<300);},getStatus:function(){try{return this.transport.status||0;}catch(e){return 0}},respondToReadyState:function(readyState){var state=Ajax.Request.Events[readyState],response=new Ajax.Response(this);if(state=='Complete'){try{this._complete=true;(this.options['on'+response.status]||this.options['on'+(this.success()?'Success':'Failure')]||Prototype.emptyFunction)(response,response.headerJSON);}catch(e){this.dispatchException(e);} var contentType=response.getHeader('Content-type');if(this.options.evalJS=='force'||(this.options.evalJS&&this.isSameOrigin()&&contentType&&contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse();} try{(this.options['on'+state]||Prototype.emptyFunction)(response,response.headerJSON);Ajax.Responders.dispatch('on'+state,this,response,response.headerJSON);}catch(e){this.dispatchException(e);} if(state=='Complete'){this.transport.onreadystatechange=Prototype.emptyFunction;}},isSameOrigin:function(){var m=this.url.match(/^\s*https?:\/\/[^\/]*/);return!m||(m[0]=='#{protocol}//#{domain}#{port}'.interpolate({protocol:location.protocol,domain:document.domain,port:location.port?':'+location.port:''}));},getHeader:function(name){try{return this.transport.getResponseHeader(name)||null;}catch(e){return null}},evalResponse:function(){try{return eval((this.transport.responseText||'').unfilterJSON());}catch(e){this.dispatchException(e);}},dispatchException:function(exception){(this.options.onException||Prototype.emptyFunction)(this,exception);Ajax.Responders.dispatch('onException',this,exception);}});Ajax.Request.Events=['Uninitialized','Loading','Loaded','Interactive','Complete'];Ajax.Response=Class.create({initialize:function(request){this.request=request;var transport=this.transport=request.transport,readyState=this.readyState=transport.readyState;if((readyState>2&&!Prototype.Browser.IE)||readyState==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(transport.responseText);this.headerJSON=this._getHeaderJSON();} if(readyState==4){var xml=transport.responseXML;this.responseXML=Object.isUndefined(xml)?null:xml;this.responseJSON=this._getResponseJSON();}},status:0,statusText:'',getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||'';}catch(e){return''}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders();}catch(e){return null}},getResponseHeader:function(name){return this.transport.getResponseHeader(name);},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders();},_getHeaderJSON:function(){var json=this.getHeader('X-JSON');if(!json)return null;json=decodeURIComponent(escape(json));try{return json.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin());}catch(e){this.request.dispatchException(e);}},_getResponseJSON:function(){var options=this.request.options;if(!options.evalJSON||(options.evalJSON!='force'&&!(this.getHeader('Content-type')||'').include('application/json'))||this.responseText.blank()) return null;try{return this.responseText.evalJSON(options.sanitizeJSON||!this.request.isSameOrigin());}catch(e){this.request.dispatchException(e);}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,container,url,options){this.container={success:(container.success||container),failure:(container.failure||(container.success?null:container))};options=Object.clone(options);var onComplete=options.onComplete;options.onComplete=(function(response,json){this.updateContent(response.responseText);if(Object.isFunction(onComplete))onComplete(response,json);}).bind(this);$super(url,options);},updateContent:function(responseText){var receiver=this.container[this.success()?'success':'failure'],options=this.options;if(!options.evalScripts)responseText=responseText.stripScripts();if(receiver=$(receiver)){if(options.insertion){if(Object.isString(options.insertion)){var insertion={};insertion[options.insertion]=responseText;receiver.insert(insertion);} else options.insertion(receiver,responseText);} else receiver.update(responseText);}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,container,url,options){$super(options);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=container;this.url=url;this.start();},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent();},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments);},updateComplete:function(response){if(this.options.decay){this.decay=(response.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=response.responseText;} this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency);},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options);}});function $(element){if(arguments.length>1){for(var i=0,elements=[],length=arguments.length;i';delete attributes.name;return Element.writeAttribute(document.createElement(tagName),attributes);} if(!cache[tagName])cache[tagName]=Element.extend(document.createElement(tagName));return Element.writeAttribute(cache[tagName].cloneNode(false),attributes);};Object.extend(this.Element,element||{});if(element)this.Element.prototype=element.prototype;}).call(window);Element.cache={};Element.Methods={visible:function(element){return $(element).style.display!='none';},toggle:function(element){element=$(element);Element[Element.visible(element)?'hide':'show'](element);return element;},hide:function(element){element=$(element);element.style.display='none';return element;},show:function(element){element=$(element);element.style.display='';return element;},remove:function(element){element=$(element);element.parentNode.removeChild(element);return element;},update:function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content))return element.update().insert(content);content=Object.toHTML(content);element.innerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;},replace:function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();else if(!Object.isElement(content)){content=Object.toHTML(content);var range=element.ownerDocument.createRange();range.selectNode(element);content.evalScripts.bind(content).defer();content=range.createContextualFragment(content.stripScripts());} element.parentNode.replaceChild(content,element);return element;},insert:function(element,insertions){element=$(element);if(Object.isString(insertions)||Object.isNumber(insertions)||Object.isElement(insertions)||(insertions&&(insertions.toElement||insertions.toHTML))) insertions={bottom:insertions};var content,insert,tagName,childNodes;for(var position in insertions){content=insertions[position];position=position.toLowerCase();insert=Element._insertionTranslations[position];if(content&&content.toElement)content=content.toElement();if(Object.isElement(content)){insert(element,content);continue;} content=Object.toHTML(content);tagName=((position=='before'||position=='after')?element.parentNode:element).tagName.toUpperCase();childNodes=Element._getContentFromAnonymousElement(tagName,content.stripScripts());if(position=='top'||position=='after')childNodes.reverse();childNodes.each(insert.curry(element));content.evalScripts.bind(content).defer();} return element;},wrap:function(element,wrapper,attributes){element=$(element);if(Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes||{});else if(Object.isString(wrapper))wrapper=new Element(wrapper,attributes);else wrapper=new Element('div',wrapper);if(element.parentNode) element.parentNode.replaceChild(wrapper,element);wrapper.appendChild(element);return wrapper;},inspect:function(element){element=$(element);var result='<'+element.tagName.toLowerCase();$H({'id':'id','className':'class'}).each(function(pair){var property=pair.first(),attribute=pair.last();var value=(element[property]||'').toString();if(value)result+=' '+attribute+'='+value.inspect(true);});return result+'>';},recursivelyCollect:function(element,property){element=$(element);var elements=[];while(element=element[property]) if(element.nodeType==1) elements.push(Element.extend(element));return elements;},ancestors:function(element){return $(element).recursivelyCollect('parentNode');},descendants:function(element){return $(element).select("*");},firstDescendant:function(element){element=$(element).firstChild;while(element&&element.nodeType!=1)element=element.nextSibling;return $(element);},immediateDescendants:function(element){if(!(element=$(element).firstChild))return[];while(element&&element.nodeType!=1)element=element.nextSibling;if(element)return[element].concat($(element).nextSiblings());return[];},previousSiblings:function(element){return $(element).recursivelyCollect('previousSibling');},nextSiblings:function(element){return $(element).recursivelyCollect('nextSibling');},siblings:function(element){element=$(element);return element.previousSiblings().reverse().concat(element.nextSiblings());},match:function(element,selector){if(Object.isString(selector)) selector=new Selector(selector);return selector.match($(element));},up:function(element,expression,index){element=$(element);if(arguments.length==1)return $(element.parentNode);var ancestors=element.ancestors();return Object.isNumber(expression)?ancestors[expression]:Selector.findElement(ancestors,expression,index);},down:function(element,expression,index){element=$(element);if(arguments.length==1)return element.firstDescendant();return Object.isNumber(expression)?element.descendants()[expression]:Element.select(element,expression)[index||0];},previous:function(element,expression,index){element=$(element);if(arguments.length==1)return $(Selector.handlers.previousElementSibling(element));var previousSiblings=element.previousSiblings();return Object.isNumber(expression)?previousSiblings[expression]:Selector.findElement(previousSiblings,expression,index);},next:function(element,expression,index){element=$(element);if(arguments.length==1)return $(Selector.handlers.nextElementSibling(element));var nextSiblings=element.nextSiblings();return Object.isNumber(expression)?nextSiblings[expression]:Selector.findElement(nextSiblings,expression,index);},select:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element,args);},adjacent:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element.parentNode,args).without(element);},identify:function(element){element=$(element);var id=element.readAttribute('id'),self=arguments.callee;if(id)return id;do{id='anonymous_element_'+self.counter++}while($(id));element.writeAttribute('id',id);return id;},readAttribute:function(element,name){element=$(element);if(Prototype.Browser.IE){var t=Element._attributeTranslations.read;if(t.values[name])return t.values[name](element,name);if(t.names[name])name=t.names[name];if(name.include(':')){return(!element.attributes||!element.attributes[name])?null:element.attributes[name].value;}} return element.getAttribute(name);},writeAttribute:function(element,name,value){element=$(element);var attributes={},t=Element._attributeTranslations.write;if(typeof name=='object')attributes=name;else attributes[name]=Object.isUndefined(value)?true:value;for(var attr in attributes){name=t.names[attr]||attr;value=attributes[attr];if(t.values[attr])name=t.values[attr](element,value);if(value===false||value===null) element.removeAttribute(name);else if(value===true) element.setAttribute(name,name);else element.setAttribute(name,value);} return element;},getHeight:function(element){return $(element).getDimensions().height;},getWidth:function(element){return $(element).getDimensions().width;},classNames:function(element){return new Element.ClassNames(element);},hasClassName:function(element,className){if(!(element=$(element)))return;var elementClassName=element.className;return(elementClassName.length>0&&(elementClassName==className||new RegExp("(^|\\s)"+className+"(\\s|$)").test(elementClassName)));},addClassName:function(element,className){if(!(element=$(element)))return;if(!element.hasClassName(className)) element.className+=(element.className?' ':'')+className;return element;},removeClassName:function(element,className){if(!(element=$(element)))return;element.className=element.className.replace(new RegExp("(^|\\s+)"+className+"(\\s+|$)"),' ').strip();return element;},toggleClassName:function(element,className){if(!(element=$(element)))return;return element[element.hasClassName(className)?'removeClassName':'addClassName'](className);},cleanWhitespace:function(element){element=$(element);var node=element.firstChild;while(node){var nextNode=node.nextSibling;if(node.nodeType==3&&!/\S/.test(node.nodeValue)) element.removeChild(node);node=nextNode;} return element;},empty:function(element){return $(element).innerHTML.blank();},descendantOf:function(element,ancestor){element=$(element),ancestor=$(ancestor);if(element.compareDocumentPosition) return(element.compareDocumentPosition(ancestor)&8)===8;if(ancestor.contains) return ancestor.contains(element)&&ancestor!==element;while(element=element.parentNode) if(element==ancestor)return true;return false;},scrollTo:function(element){element=$(element);var pos=element.cumulativeOffset();window.scrollTo(pos[0],pos[1]);return element;},getStyle:function(element,style){element=$(element);style=style=='float'?'cssFloat':style.camelize();var value=element.style[style];if(!value||value=='auto'){var css=document.defaultView.getComputedStyle(element,null);value=css?css[style]:null;} if(style=='opacity')return value?parseFloat(value):1.0;return value=='auto'?null:value;},getOpacity:function(element){return $(element).getStyle('opacity');},setStyle:function(element,styles){element=$(element);var elementStyle=element.style,match;if(Object.isString(styles)){element.style.cssText+=';'+styles;return styles.include('opacity')?element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]):element;} for(var property in styles) if(property=='opacity')element.setOpacity(styles[property]);else elementStyle[(property=='float'||property=='cssFloat')?(Object.isUndefined(elementStyle.styleFloat)?'cssFloat':'styleFloat'):property]=styles[property];return element;},setOpacity:function(element,value){element=$(element);element.style.opacity=(value==1||value==='')?'':(value<0.00001)?0:value;return element;},getDimensions:function(element){element=$(element);var display=element.getStyle('display');if(display!='none'&&display!=null) return{width:element.offsetWidth,height:element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight};},makePositioned:function(element){element=$(element);var pos=Element.getStyle(element,'position');if(pos=='static'||!pos){element._madePositioned=true;element.style.position='relative';if(Prototype.Browser.Opera){element.style.top=0;element.style.left=0;}} return element;},undoPositioned:function(element){element=$(element);if(element._madePositioned){element._madePositioned=undefined;element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right='';} return element;},makeClipping:function(element){element=$(element);if(element._overflow)return element;element._overflow=Element.getStyle(element,'overflow')||'auto';if(element._overflow!=='hidden') element.style.overflow='hidden';return element;},undoClipping:function(element){element=$(element);if(!element._overflow)return element;element.style.overflow=element._overflow=='auto'?'':element._overflow;element._overflow=null;return element;},cumulativeOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return Element._returnOffset(valueL,valueT);},positionedOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){if(element.tagName.toUpperCase()=='BODY')break;var p=Element.getStyle(element,'position');if(p!=='static')break;}}while(element);return Element._returnOffset(valueL,valueT);},absolutize:function(element){element=$(element);if(element.getStyle('position')=='absolute')return element;var offsets=element.positionedOffset();var top=offsets[1];var left=offsets[0];var width=element.clientWidth;var height=element.clientHeight;element._originalLeft=left-parseFloat(element.style.left||0);element._originalTop=top-parseFloat(element.style.top||0);element._originalWidth=element.style.width;element._originalHeight=element.style.height;element.style.position='absolute';element.style.top=top+'px';element.style.left=left+'px';element.style.width=width+'px';element.style.height=height+'px';return element;},relativize:function(element){element=$(element);if(element.getStyle('position')=='relative')return element;element.style.position='relative';var top=parseFloat(element.style.top||0)-(element._originalTop||0);var left=parseFloat(element.style.left||0)-(element._originalLeft||0);element.style.top=top+'px';element.style.left=left+'px';element.style.height=element._originalHeight;element.style.width=element._originalWidth;return element;},cumulativeScrollOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode;}while(element);return Element._returnOffset(valueL,valueT);},getOffsetParent:function(element){if(element.offsetParent)return $(element.offsetParent);if(element==document.body)return $(element);while((element=element.parentNode)&&element!=document.body) if(Element.getStyle(element,'position')!='static') return $(element);return $(document.body);},viewportOffset:function(forElement){var valueT=0,valueL=0;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body&&Element.getStyle(element,'position')=='absolute')break;}while(element=element.offsetParent);element=forElement;do{if(!Prototype.Browser.Opera||(element.tagName&&(element.tagName.toUpperCase()=='BODY'))){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;}}while(element=element.parentNode);return Element._returnOffset(valueL,valueT);},clonePosition:function(element,source){var options=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{});source=$(source);var p=source.viewportOffset();element=$(element);var delta=[0,0];var parent=null;if(Element.getStyle(element,'position')=='absolute'){parent=element.getOffsetParent();delta=parent.viewportOffset();} if(parent==document.body){delta[0]-=document.body.offsetLeft;delta[1]-=document.body.offsetTop;} if(options.setLeft)element.style.left=(p[0]-delta[0]+options.offsetLeft)+'px';if(options.setTop)element.style.top=(p[1]-delta[1]+options.offsetTop)+'px';if(options.setWidth)element.style.width=source.offsetWidth+'px';if(options.setHeight)element.style.height=source.offsetHeight+'px';return element;}};Element.Methods.identify.counter=1;Object.extend(Element.Methods,{getElementsBySelector:Element.Methods.select,childElements:Element.Methods.immediateDescendants});Element._attributeTranslations={write:{names:{className:'class',htmlFor:'for'},values:{}}};if(Prototype.Browser.Opera){Element.Methods.getStyle=Element.Methods.getStyle.wrap(function(proceed,element,style){switch(style){case'left':case'top':case'right':case'bottom':if(proceed(element,'position')==='static')return null;case'height':case'width':if(!Element.visible(element))return null;var dim=parseInt(proceed(element,style),10);if(dim!==element['offset'+style.capitalize()]) return dim+'px';var properties;if(style==='height'){properties=['border-top-width','padding-top','padding-bottom','border-bottom-width'];} else{properties=['border-left-width','padding-left','padding-right','border-right-width'];} return properties.inject(dim,function(memo,property){var val=proceed(element,property);return val===null?memo:memo-parseInt(val,10);})+'px';default:return proceed(element,style);}});Element.Methods.readAttribute=Element.Methods.readAttribute.wrap(function(proceed,element,attribute){if(attribute==='title')return element.title;return proceed(element,attribute);});} else if(Prototype.Browser.IE){Element.Methods.getOffsetParent=Element.Methods.getOffsetParent.wrap(function(proceed,element){element=$(element);try{element.offsetParent} catch(e){return $(document.body)} var position=element.getStyle('position');if(position!=='static')return proceed(element);element.setStyle({position:'relative'});var value=proceed(element);element.setStyle({position:position});return value;});$w('positionedOffset viewportOffset').each(function(method){Element.Methods[method]=Element.Methods[method].wrap(function(proceed,element){element=$(element);try{element.offsetParent} catch(e){return Element._returnOffset(0,0)} var position=element.getStyle('position');if(position!=='static')return proceed(element);var offsetParent=element.getOffsetParent();if(offsetParent&&offsetParent.getStyle('position')==='fixed') offsetParent.setStyle({zoom:1});element.setStyle({position:'relative'});var value=proceed(element);element.setStyle({position:position});return value;});});Element.Methods.cumulativeOffset=Element.Methods.cumulativeOffset.wrap(function(proceed,element){try{element.offsetParent} catch(e){return Element._returnOffset(0,0)} return proceed(element);});Element.Methods.getStyle=function(element,style){element=$(element);style=(style=='float'||style=='cssFloat')?'styleFloat':style.camelize();var value=element.style[style];if(!value&&element.currentStyle)value=element.currentStyle[style];if(style=='opacity'){if(value=(element.getStyle('filter')||'').match(/alpha\(opacity=(.*)\)/)) if(value[1])return parseFloat(value[1])/100;return 1.0;} if(value=='auto'){if((style=='width'||style=='height')&&(element.getStyle('display')!='none')) return element['offset'+style.capitalize()]+'px';return null;} return value;};Element.Methods.setOpacity=function(element,value){function stripAlpha(filter){return filter.replace(/alpha\([^\)]*\)/gi,'');} element=$(element);var currentStyle=element.currentStyle;if((currentStyle&&!currentStyle.hasLayout)||(!currentStyle&&element.style.zoom=='normal')) element.style.zoom=1;var filter=element.getStyle('filter'),style=element.style;if(value==1||value===''){(filter=stripAlpha(filter))?style.filter=filter:style.removeAttribute('filter');return element;}else if(value<0.00001)value=0;style.filter=stripAlpha(filter)+'alpha(opacity='+(value*100)+')';return element;};Element._attributeTranslations={read:{names:{'class':'className','for':'htmlFor'},values:{_getAttr:function(element,attribute){return element.getAttribute(attribute,2);},_getAttrNode:function(element,attribute){var node=element.getAttributeNode(attribute);return node?node.value:"";},_getEv:function(element,attribute){attribute=element.getAttribute(attribute);return attribute?attribute.toString().slice(23,-2):null;},_flag:function(element,attribute){return $(element).hasAttribute(attribute)?attribute:null;},style:function(element){return element.style.cssText.toLowerCase();},title:function(element){return element.title;}}}};Element._attributeTranslations.write={names:Object.extend({cellpadding:'cellPadding',cellspacing:'cellSpacing'},Element._attributeTranslations.read.names),values:{checked:function(element,value){element.checked=!!value;},style:function(element,value){element.style.cssText=value?value:'';}}};Element._attributeTranslations.has={};$w('colSpan rowSpan vAlign dateTime accessKey tabIndex '+'encType maxLength readOnly longDesc frameBorder').each(function(attr){Element._attributeTranslations.write.names[attr.toLowerCase()]=attr;Element._attributeTranslations.has[attr.toLowerCase()]=attr;});(function(v){Object.extend(v,{href:v._getAttr,src:v._getAttr,type:v._getAttr,action:v._getAttrNode,disabled:v._flag,checked:v._flag,readonly:v._flag,multiple:v._flag,onload:v._getEv,onunload:v._getEv,onclick:v._getEv,ondblclick:v._getEv,onmousedown:v._getEv,onmouseup:v._getEv,onmouseover:v._getEv,onmousemove:v._getEv,onmouseout:v._getEv,onfocus:v._getEv,onblur:v._getEv,onkeypress:v._getEv,onkeydown:v._getEv,onkeyup:v._getEv,onsubmit:v._getEv,onreset:v._getEv,onselect:v._getEv,onchange:v._getEv});})(Element._attributeTranslations.read.values);} else if(Prototype.Browser.Gecko&&/rv:1\.8\.0/.test(navigator.userAgent)){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1)?0.999999:(value==='')?'':(value<0.00001)?0:value;return element;};} else if(Prototype.Browser.WebKit){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1||value==='')?'':(value<0.00001)?0:value;if(value==1) if(element.tagName.toUpperCase()=='IMG'&&element.width){element.width++;element.width--;}else try{var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){} return element;};Element.Methods.cumulativeOffset=function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body) if(Element.getStyle(element,'position')=='absolute')break;element=element.offsetParent;}while(element);return Element._returnOffset(valueL,valueT);};} if(Prototype.Browser.IE||Prototype.Browser.Opera){Element.Methods.update=function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content))return element.update().insert(content);content=Object.toHTML(content);var tagName=element.tagName.toUpperCase();if(tagName in Element._insertionTranslations.tags){$A(element.childNodes).each(function(node){element.removeChild(node)});Element._getContentFromAnonymousElement(tagName,content.stripScripts()).each(function(node){element.appendChild(node)});} else element.innerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;};} if('outerHTML'in document.createElement('div')){Element.Methods.replace=function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content)){element.parentNode.replaceChild(content,element);return element;} content=Object.toHTML(content);var parent=element.parentNode,tagName=parent.tagName.toUpperCase();if(Element._insertionTranslations.tags[tagName]){var nextSibling=element.next();var fragments=Element._getContentFromAnonymousElement(tagName,content.stripScripts());parent.removeChild(element);if(nextSibling) fragments.each(function(node){parent.insertBefore(node,nextSibling)});else fragments.each(function(node){parent.appendChild(node)});} else element.outerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;};} Element._returnOffset=function(l,t){var result=[l,t];result.left=l;result.top=t;return result;};Element._getContentFromAnonymousElement=function(tagName,html){var div=new Element('div'),t=Element._insertionTranslations.tags[tagName];if(t){div.innerHTML=t[0]+html+t[1];t[2].times(function(){div=div.firstChild});}else div.innerHTML=html;return $A(div.childNodes);};Element._insertionTranslations={before:function(element,node){element.parentNode.insertBefore(node,element);},top:function(element,node){element.insertBefore(node,element.firstChild);},bottom:function(element,node){element.appendChild(node);},after:function(element,node){element.parentNode.insertBefore(node,element.nextSibling);},tags:{TABLE:['','
',1],TBODY:['','
',2],TR:['','
',3],TD:['
','
',4],SELECT:['',1]}};(function(){Object.extend(this.tags,{THEAD:this.tags.TBODY,TFOOT:this.tags.TBODY,TH:this.tags.TD});}).call(Element._insertionTranslations);Element.Methods.Simulated={hasAttribute:function(element,attribute){attribute=Element._attributeTranslations.has[attribute]||attribute;var node=$(element).getAttributeNode(attribute);return!!(node&&node.specified);}};Element.Methods.ByTag={};Object.extend(Element,Element.Methods);if(!Prototype.BrowserFeatures.ElementExtensions&&document.createElement('div')['__proto__']){window.HTMLElement={};window.HTMLElement.prototype=document.createElement('div')['__proto__'];Prototype.BrowserFeatures.ElementExtensions=true;} Element.extend=(function(){if(Prototype.BrowserFeatures.SpecificElementExtensions) return Prototype.K;var Methods={},ByTag=Element.Methods.ByTag;var extend=Object.extend(function(element){if(!element||element._extendedByPrototype||element.nodeType!=1||element==window)return element;var methods=Object.clone(Methods),tagName=element.tagName.toUpperCase(),property,value;if(ByTag[tagName])Object.extend(methods,ByTag[tagName]);for(property in methods){value=methods[property];if(Object.isFunction(value)&&!(property in element)) element[property]=value.methodize();} element._extendedByPrototype=Prototype.emptyFunction;return element;},{refresh:function(){if(!Prototype.BrowserFeatures.ElementExtensions){Object.extend(Methods,Element.Methods);Object.extend(Methods,Element.Methods.Simulated);}}});extend.refresh();return extend;})();Element.hasAttribute=function(element,attribute){if(element.hasAttribute)return element.hasAttribute(attribute);return Element.Methods.Simulated.hasAttribute(element,attribute);};Element.addMethods=function(methods){var F=Prototype.BrowserFeatures,T=Element.Methods.ByTag;if(!methods){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(Element.Methods.ByTag,{"FORM":Object.clone(Form.Methods),"INPUT":Object.clone(Form.Element.Methods),"SELECT":Object.clone(Form.Element.Methods),"TEXTAREA":Object.clone(Form.Element.Methods)});} if(arguments.length==2){var tagName=methods;methods=arguments[1];} if(!tagName)Object.extend(Element.Methods,methods||{});else{if(Object.isArray(tagName))tagName.each(extend);else extend(tagName);} function extend(tagName){tagName=tagName.toUpperCase();if(!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName]={};Object.extend(Element.Methods.ByTag[tagName],methods);} function copy(methods,destination,onlyIfAbsent){onlyIfAbsent=onlyIfAbsent||false;for(var property in methods){var value=methods[property];if(!Object.isFunction(value))continue;if(!onlyIfAbsent||!(property in destination)) destination[property]=value.methodize();}} function findDOMClass(tagName){var klass;var trans={"OPTGROUP":"OptGroup","TEXTAREA":"TextArea","P":"Paragraph","FIELDSET":"FieldSet","UL":"UList","OL":"OList","DL":"DList","DIR":"Directory","H1":"Heading","H2":"Heading","H3":"Heading","H4":"Heading","H5":"Heading","H6":"Heading","Q":"Quote","INS":"Mod","DEL":"Mod","A":"Anchor","IMG":"Image","CAPTION":"TableCaption","COL":"TableCol","COLGROUP":"TableCol","THEAD":"TableSection","TFOOT":"TableSection","TBODY":"TableSection","TR":"TableRow","TH":"TableCell","TD":"TableCell","FRAMESET":"FrameSet","IFRAME":"IFrame"};if(trans[tagName])klass='HTML'+trans[tagName]+'Element';if(window[klass])return window[klass];klass='HTML'+tagName+'Element';if(window[klass])return window[klass];klass='HTML'+tagName.capitalize()+'Element';if(window[klass])return window[klass];window[klass]={};window[klass].prototype=document.createElement(tagName)['__proto__'];return window[klass];} if(F.ElementExtensions){copy(Element.Methods,HTMLElement.prototype);copy(Element.Methods.Simulated,HTMLElement.prototype,true);} if(F.SpecificElementExtensions){for(var tag in Element.Methods.ByTag){var klass=findDOMClass(tag);if(Object.isUndefined(klass))continue;copy(T[tag],klass.prototype);}} Object.extend(Element,Element.Methods);delete Element.ByTag;if(Element.extend.refresh)Element.extend.refresh();Element.cache={};};document.viewport={getDimensions:function(){var dimensions={},B=Prototype.Browser;$w('width height').each(function(d){var D=d.capitalize();if(B.WebKit&&!document.evaluate){dimensions[d]=self['inner'+D];}else if(B.Opera&&parseFloat(window.opera.version())<9.5){dimensions[d]=document.body['client'+D]}else{dimensions[d]=document.documentElement['client'+D];}});return dimensions;},getWidth:function(){return this.getDimensions().width;},getHeight:function(){return this.getDimensions().height;},getScrollOffsets:function(){return Element._returnOffset(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop);}};var Selector=Class.create({initialize:function(expression){this.expression=expression.strip();if(this.shouldUseSelectorsAPI()){this.mode='selectorsAPI';}else if(this.shouldUseXPath()){this.mode='xpath';this.compileXPathMatcher();}else{this.mode="normal";this.compileMatcher();}},shouldUseXPath:function(){if(!Prototype.BrowserFeatures.XPath)return false;var e=this.expression;if(Prototype.Browser.WebKit&&(e.include("-of-type")||e.include(":empty"))) return false;if((/(\[[\w-]*?:|:checked)/).test(e)) return false;return true;},shouldUseSelectorsAPI:function(){if(!Prototype.BrowserFeatures.SelectorsAPI)return false;if(!Selector._div)Selector._div=new Element('div');try{Selector._div.querySelector(this.expression);}catch(e){return false;} return true;},compileMatcher:function(){var e=this.expression,ps=Selector.patterns,h=Selector.handlers,c=Selector.criteria,le,p,m;if(Selector._cache[e]){this.matcher=Selector._cache[e];return;} this.matcher=["this.matcher = function(root) {","var r = root, h = Selector.handlers, c = false, n;"];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){this.matcher.push(Object.isFunction(c[i])?c[i](m):new Template(c[i]).evaluate(m));e=e.replace(m[0],'');break;}}} this.matcher.push("return h.unique(n);\n}");eval(this.matcher.join('\n'));Selector._cache[this.expression]=this.matcher;},compileXPathMatcher:function(){var e=this.expression,ps=Selector.patterns,x=Selector.xpath,le,m;if(Selector._cache[e]){this.xpath=Selector._cache[e];return;} this.matcher=['.//*'];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){if(m=e.match(ps[i])){this.matcher.push(Object.isFunction(x[i])?x[i](m):new Template(x[i]).evaluate(m));e=e.replace(m[0],'');break;}}} this.xpath=this.matcher.join('');Selector._cache[this.expression]=this.xpath;},findElements:function(root){root=root||document;var e=this.expression,results;switch(this.mode){case'selectorsAPI':if(root!==document){var oldId=root.id,id=$(root).identify();e="#"+id+" "+e;} results=$A(root.querySelectorAll(e)).map(Element.extend);root.id=oldId;return results;case'xpath':return document._getElementsByXPath(this.xpath,root);default:return this.matcher(root);}},match:function(element){this.tokens=[];var e=this.expression,ps=Selector.patterns,as=Selector.assertions;var le,p,m;while(e&&le!==e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){if(as[i]){this.tokens.push([i,Object.clone(m)]);e=e.replace(m[0],'');}else{return this.findElements(document).include(element);}}}} var match=true,name,matches;for(var i=0,token;token=this.tokens[i];i++){name=token[0],matches=token[1];if(!Selector.assertions[name](element,matches)){match=false;break;}} return match;},toString:function(){return this.expression;},inspect:function(){return"#";}});Object.extend(Selector,{_cache:{},xpath:{descendant:"//*",child:"/*",adjacent:"/following-sibling::*[1]",laterSibling:'/following-sibling::*',tagName:function(m){if(m[1]=='*')return'';return"[local-name()='"+m[1].toLowerCase()+"' or local-name()='"+m[1].toUpperCase()+"']";},className:"[contains(concat(' ', @class, ' '), ' #{1} ')]",id:"[@id='#{1}']",attrPresence:function(m){m[1]=m[1].toLowerCase();return new Template("[@#{1}]").evaluate(m);},attr:function(m){m[1]=m[1].toLowerCase();m[3]=m[5]||m[6];return new Template(Selector.xpath.operators[m[2]]).evaluate(m);},pseudo:function(m){var h=Selector.xpath.pseudos[m[1]];if(!h)return'';if(Object.isFunction(h))return h(m);return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);},operators:{'=':"[@#{1}='#{3}']",'!=':"[@#{1}!='#{3}']",'^=':"[starts-with(@#{1}, '#{3}')]",'$=':"[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",'*=':"[contains(@#{1}, '#{3}')]",'~=':"[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",'|=':"[contains(concat('-', @#{1}, '-'), '-#{3}-')]"},pseudos:{'first-child':'[not(preceding-sibling::*)]','last-child':'[not(following-sibling::*)]','only-child':'[not(preceding-sibling::* or following-sibling::*)]','empty':"[count(*) = 0 and (count(text()) = 0)]",'checked':"[@checked]",'disabled':"[(@disabled) and (@type!='hidden')]",'enabled':"[not(@disabled) and (@type!='hidden')]",'not':function(m){var e=m[6],p=Selector.patterns,x=Selector.xpath,le,v;var exclusion=[];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in p){if(m=e.match(p[i])){v=Object.isFunction(x[i])?x[i](m):new Template(x[i]).evaluate(m);exclusion.push("("+v.substring(1,v.length-1)+")");e=e.replace(m[0],'');break;}}} return"[not("+exclusion.join(" and ")+")]";},'nth-child':function(m){return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ",m);},'nth-last-child':function(m){return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ",m);},'nth-of-type':function(m){return Selector.xpath.pseudos.nth("position() ",m);},'nth-last-of-type':function(m){return Selector.xpath.pseudos.nth("(last() + 1 - position()) ",m);},'first-of-type':function(m){m[6]="1";return Selector.xpath.pseudos['nth-of-type'](m);},'last-of-type':function(m){m[6]="1";return Selector.xpath.pseudos['nth-last-of-type'](m);},'only-of-type':function(m){var p=Selector.xpath.pseudos;return p['first-of-type'](m)+p['last-of-type'](m);},nth:function(fragment,m){var mm,formula=m[6],predicate;if(formula=='even')formula='2n+0';if(formula=='odd')formula='2n+1';if(mm=formula.match(/^(\d+)$/)) return'['+fragment+"= "+mm[1]+']';if(mm=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(mm[1]=="-")mm[1]=-1;var a=mm[1]?Number(mm[1]):1;var b=mm[2]?Number(mm[2]):0;predicate="[((#{fragment} - #{b}) mod #{a} = 0) and "+"((#{fragment} - #{b}) div #{a} >= 0)]";return new Template(predicate).evaluate({fragment:fragment,a:a,b:b});}}}},criteria:{tagName:'n = h.tagName(n, r, "#{1}", c); c = false;',className:'n = h.className(n, r, "#{1}", c); c = false;',id:'n = h.id(n, r, "#{1}", c); c = false;',attrPresence:'n = h.attrPresence(n, r, "#{1}", c); c = false;',attr:function(m){m[3]=(m[5]||m[6]);return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m);},pseudo:function(m){if(m[6])m[6]=m[6].replace(/"/g,'\\"');return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);},descendant:'c = "descendant";',child:'c = "child";',adjacent:'c = "adjacent";',laterSibling:'c = "laterSibling";'},patterns:{laterSibling:/^\s*~\s*/,child:/^\s*>\s*/,adjacent:/^\s*\+\s*/,descendant:/^\s/,tagName:/^\s*(\*|[\w\-]+)(\b|$)?/,id:/^#([\w\-\*]+)(\b|$)/,className:/^\.([\w\-\*]+)(\b|$)/,pseudo:/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,attrPresence:/^\[((?:[\w]+:)?[\w]+)\]/,attr:/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/},assertions:{tagName:function(element,matches){return matches[1].toUpperCase()==element.tagName.toUpperCase();},className:function(element,matches){return Element.hasClassName(element,matches[1]);},id:function(element,matches){return element.id===matches[1];},attrPresence:function(element,matches){return Element.hasAttribute(element,matches[1]);},attr:function(element,matches){var nodeValue=Element.readAttribute(element,matches[1]);return nodeValue&&Selector.operators[matches[2]](nodeValue,matches[5]||matches[6]);}},handlers:{concat:function(a,b){for(var i=0,node;node=b[i];i++) a.push(node);return a;},mark:function(nodes){var _true=Prototype.emptyFunction;for(var i=0,node;node=nodes[i];i++) node._countedByPrototype=_true;return nodes;},unmark:function(nodes){for(var i=0,node;node=nodes[i];i++) node._countedByPrototype=undefined;return nodes;},index:function(parentNode,reverse,ofType){parentNode._countedByPrototype=Prototype.emptyFunction;if(reverse){for(var nodes=parentNode.childNodes,i=nodes.length-1,j=1;i>=0;i--){var node=nodes[i];if(node.nodeType==1&&(!ofType||node._countedByPrototype))node.nodeIndex=j++;}}else{for(var i=0,j=1,nodes=parentNode.childNodes;node=nodes[i];i++) if(node.nodeType==1&&(!ofType||node._countedByPrototype))node.nodeIndex=j++;}},unique:function(nodes){if(nodes.length==0)return nodes;var results=[],n;for(var i=0,l=nodes.length;i0?[b]:[];return $R(1,total).inject([],function(memo,i){if(0==(i-b)%a&&(i-b)/a>=0)memo.push(i);return memo;});},nth:function(nodes,formula,root,reverse,ofType){if(nodes.length==0)return[];if(formula=='even')formula='2n+0';if(formula=='odd')formula='2n+1';var h=Selector.handlers,results=[],indexed=[],m;h.mark(nodes);for(var i=0,node;node=nodes[i];i++){if(!node.parentNode._countedByPrototype){h.index(node.parentNode,reverse,ofType);indexed.push(node.parentNode);}} if(formula.match(/^\d+$/)){formula=Number(formula);for(var i=0,node;node=nodes[i];i++) if(node.nodeIndex==formula)results.push(node);}else if(m=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(m[1]=="-")m[1]=-1;var a=m[1]?Number(m[1]):1;var b=m[2]?Number(m[2]):0;var indices=Selector.pseudos.getIndices(a,b,nodes.length);for(var i=0,node,l=indices.length;node=nodes[i];i++){for(var j=0;j+()\s-]+|\*|\[.*?\])+)\s*(,|$)/,function(m){expressions.push(m[1].strip());});return expressions;},matchElements:function(elements,expression){var matches=$$(expression),h=Selector.handlers;h.mark(matches);for(var i=0,results=[],element;element=elements[i];i++) if(element._countedByPrototype)results.push(element);h.unmark(matches);return results;},findElement:function(elements,expression,index){if(Object.isNumber(expression)){index=expression;expression=false;} return Selector.matchElements(elements,expression||'*')[index||0];},findChildElements:function(element,expressions){expressions=Selector.split(expressions.join(','));var results=[],h=Selector.handlers;for(var i=0,l=expressions.length,selector;i1)?h.unique(results):results;}});if(Prototype.Browser.IE){Object.extend(Selector.handlers,{concat:function(a,b){for(var i=0,node;node=b[i];i++) if(node.tagName!=="!")a.push(node);return a;},unmark:function(nodes){for(var i=0,node;node=nodes[i];i++) node.removeAttribute('_countedByPrototype');return nodes;}});} function $$(){return Selector.findChildElements(document,$A(arguments));} var Form={reset:function(form){$(form).reset();return form;},serializeElements:function(elements,options){if(typeof options!='object')options={hash:!!options};else if(Object.isUndefined(options.hash))options.hash=true;var key,value,submitted=false,submit=options.submit;var data=elements.inject({},function(result,element){if(!element.disabled&&element.name){key=element.name;value=$(element).getValue();if(value!=null&&element.type!='file'&&(element.type!='submit'||(!submitted&&submit!==false&&(!submit||key==submit)&&(submitted=true)))){if(key in result){if(!Object.isArray(result[key]))result[key]=[result[key]];result[key].push(value);} else result[key]=value;}} return result;});return options.hash?data:Object.toQueryString(data);}};Form.Methods={serialize:function(form,options){return Form.serializeElements(Form.getElements(form),options);},getElements:function(form){return $A($(form).getElementsByTagName('*')).inject([],function(elements,child){if(Form.Element.Serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child));return elements;});},getInputs:function(form,typeName,name){form=$(form);var inputs=form.getElementsByTagName('input');if(!typeName&&!name)return $A(inputs).map(Element.extend);for(var i=0,matchingInputs=[],length=inputs.length;i=0;}).sortBy(function(element){return element.tabIndex}).first();return firstByIndex?firstByIndex:elements.find(function(element){return['input','select','textarea'].include(element.tagName.toLowerCase());});},focusFirstElement:function(form){form=$(form);form.findFirstElement().activate();return form;},request:function(form,options){form=$(form),options=Object.clone(options||{});var params=options.parameters,action=form.readAttribute('action')||'';if(action.blank())action=window.location.href;options.parameters=form.serialize(true);if(params){if(Object.isString(params))params=params.toQueryParams();Object.extend(options.parameters,params);} if(form.hasAttribute('method')&&!options.method) options.method=form.method;return new Ajax.Request(action,options);}};Form.Element={focus:function(element){$(element).focus();return element;},select:function(element){$(element).select();return element;}};Form.Element.Methods={serialize:function(element){element=$(element);if(!element.disabled&&element.name){var value=element.getValue();if(value!=undefined){var pair={};pair[element.name]=value;return Object.toQueryString(pair);}} return'';},getValue:function(element){element=$(element);var method=element.tagName.toLowerCase();return Form.Element.Serializers[method](element);},setValue:function(element,value){element=$(element);var method=element.tagName.toLowerCase();Form.Element.Serializers[method](element,value);return element;},clear:function(element){$(element).value='';return element;},present:function(element){return $(element).value!='';},activate:function(element){element=$(element);try{element.focus();if(element.select&&(element.tagName.toLowerCase()!='input'||!['button','reset','submit'].include(element.type))) element.select();}catch(e){} return element;},disable:function(element){element=$(element);element.disabled=true;return element;},enable:function(element){element=$(element);element.disabled=false;return element;}};var Field=Form.Element;var $F=Form.Element.Methods.getValue;Form.Element.Serializers={input:function(element,value){switch(element.type.toLowerCase()){case'checkbox':case'radio':return Form.Element.Serializers.inputSelector(element,value);default:return Form.Element.Serializers.textarea(element,value);}},inputSelector:function(element,value){if(Object.isUndefined(value))return element.checked?element.value:null;else element.checked=!!value;},textarea:function(element,value){if(Object.isUndefined(value))return element.value;else element.value=value;},select:function(element,value){if(Object.isUndefined(value)) return this[element.type=='select-one'?'selectOne':'selectMany'](element);else{var opt,currentValue,single=!Object.isArray(value);for(var i=0,length=element.length;i=0?this.optionValue(element.options[index]):null;},selectMany:function(element){var values,length=element.length;if(!length)return null;for(var i=0,values=[];i<\/script>");$("__onDOMContentLoaded").onreadystatechange=function(){if(this.readyState=="complete"){this.onreadystatechange=null;fireContentLoadedEvent();}};}})();Hash.toQueryString=Object.toQueryString;var Toggle={display:Element.toggle};Element.Methods.childOf=Element.Methods.descendantOf;var Insertion={Before:function(element,content){return Element.insert(element,{before:content});},Top:function(element,content){return Element.insert(element,{top:content});},Bottom:function(element,content){return Element.insert(element,{bottom:content});},After:function(element,content){return Element.insert(element,{after:content});}};var $continue=new Error('"throw $continue" is deprecated, use "return" instead');var Position={includeScrollOffsets:false,prepare:function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;},within:function(element,x,y){if(this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element,x,y);this.xcomp=x;this.ycomp=y;this.offset=Element.cumulativeOffset(element);return(y>=this.offset[1]&&y=this.offset[0]&&x=this.offset[1]&&this.ycomp=this.offset[0]&&this.xcomp0;})._each(iterator);},set:function(className){this.element.className=className;},add:function(classNameToAdd){if(this.include(classNameToAdd))return;this.set($A(this).concat(classNameToAdd).join(' '));},remove:function(classNameToRemove){if(!this.include(classNameToRemove))return;this.set($A(this).without(classNameToRemove).join(' '));},toString:function(){return $A(this).join(' ');}};Object.extend(Element.ClassNames.prototype,Enumerable);Element.addMethods();String.prototype.parseColor=function(){var color='#';if(this.slice(0,4)=='rgb('){var cols=this.slice(4,this.length-1).split(',');var i=0;do{color+=parseInt(cols[i]).toColorPart()}while(++i<3);}else{if(this.slice(0,1)=='#'){if(this.length==4)for(var i=1;i<4;i++)color+=(this.charAt(i)+this.charAt(i)).toLowerCase();if(this.length==7)color=this.toLowerCase();}} return(color.length==7?color:(arguments[0]||this));};Element.collectTextNodes=function(element){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):''));}).flatten().join('');};Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,className))?Element.collectTextNodesIgnoreClass(node,className):''));}).flatten().join('');};Element.setContentZoom=function(element,percent){element=$(element);element.setStyle({fontSize:(percent/100)+'em'});if(Prototype.Browser.WebKit)window.scrollBy(0,0);return element;};Element.getInlineOpacity=function(element){return $(element).style.opacity||'';};Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}};var Effect={_elementDoesNotExistError:{name:'ElementDoesNotExistError',message:'The specified DOM element does not exist, but is required for this effect to operate'},Transitions:{linear:Prototype.K,sinoidal:function(pos){return(-Math.cos(pos*Math.PI)/2)+.5;},reverse:function(pos){return 1-pos;},flicker:function(pos){var pos=((-Math.cos(pos*Math.PI)/4)+.75)+Math.random()/4;return pos>1?1:pos;},wobble:function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+.5;},pulse:function(pos,pulses){return(-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2)+.5;},spring:function(pos){return 1-(Math.cos(pos*4.5*Math.PI)*Math.exp(-pos*6));},none:function(pos){return 0;},full:function(pos){return 1;}},DefaultOptions:{duration:1.0,fps:100,sync:false,from:0.0,to:1.0,delay:0.0,queue:'parallel'},tagifyText:function(element){var tagifyStyle='position:relative';if(Prototype.Browser.IE)tagifyStyle+=';zoom:1';element=$(element);$A(element.childNodes).each(function(child){if(child.nodeType==3){child.nodeValue.toArray().each(function(character){element.insertBefore(new Element('span',{style:tagifyStyle}).update(character==' '?String.fromCharCode(160):character),child);});Element.remove(child);}});},multiple:function(element,effect){var elements;if(((typeof element=='object')||Object.isFunction(element))&&(element.length)) elements=element;else elements=$(element).childNodes;var options=Object.extend({speed:0.1,delay:0.0},arguments[2]||{});var masterDelay=options.delay;$A(elements).each(function(element,index){new effect(element,Object.extend(options,{delay:index*options.speed+masterDelay}));});},PAIRS:{'slide':['SlideDown','SlideUp'],'blind':['BlindDown','BlindUp'],'appear':['Appear','Fade']},toggle:function(element,effect){element=$(element);effect=(effect||'appear').toLowerCase();var options=Object.extend({queue:{position:'end',scope:(element.id||'global'),limit:1}},arguments[2]||{});Effect[element.visible()?Effect.PAIRS[effect][1]:Effect.PAIRS[effect][0]](element,options);}};Effect.DefaultOptions.transition=Effect.Transitions.sinoidal;Effect.ScopedQueue=Class.create(Enumerable,{initialize:function(){this.effects=[];this.interval=null;},_each:function(iterator){this.effects._each(iterator);},add:function(effect){var timestamp=new Date().getTime();var position=Object.isString(effect.options.queue)?effect.options.queue:effect.options.queue.position;switch(position){case'front':this.effects.findAll(function(e){return e.state=='idle'}).each(function(e){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn;});break;case'with-last':timestamp=this.effects.pluck('startOn').max()||timestamp;break;case'end':timestamp=this.effects.pluck('finishOn').max()||timestamp;break;} effect.startOn+=timestamp;effect.finishOn+=timestamp;if(!effect.options.queue.limit||(this.effects.length=this.startOn){if(timePos>=this.finishOn){this.render(1.0);this.cancel();this.event('beforeFinish');if(this.finish)this.finish();this.event('afterFinish');return;} var pos=(timePos-this.startOn)/this.totalTime,frame=(pos*this.totalFrames).round();if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame;}}},cancel:function(){if(!this.options.sync) Effect.Queues.get(Object.isString(this.options.queue)?'global':this.options.queue.scope).remove(this);this.state='finished';},event:function(eventName){if(this.options[eventName+'Internal'])this.options[eventName+'Internal'](this);if(this.options[eventName])this.options[eventName](this);},inspect:function(){var data=$H();for(property in this) if(!Object.isFunction(this[property]))data.set(property,this[property]);return'#';}});Effect.Parallel=Class.create(Effect.Base,{initialize:function(effects){this.effects=effects||[];this.start(arguments[1]);},update:function(position){this.effects.invoke('render',position);},finish:function(position){this.effects.each(function(effect){effect.render(1.0);effect.cancel();effect.event('beforeFinish');if(effect.finish)effect.finish(position);effect.event('afterFinish');});}});Effect.Tween=Class.create(Effect.Base,{initialize:function(object,from,to){object=Object.isString(object)?$(object):object;var args=$A(arguments),method=args.last(),options=args.length==5?args[3]:null;this.method=Object.isFunction(method)?method.bind(object):Object.isFunction(object[method])?object[method].bind(object):function(value){object[method]=value};this.start(Object.extend({from:from,to:to},options||{}));},update:function(position){this.method(position);}});Effect.Event=Class.create(Effect.Base,{initialize:function(){this.start(Object.extend({duration:0},arguments[0]||{}));},update:Prototype.emptyFunction});Effect.Opacity=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)) this.element.setStyle({zoom:1});var options=Object.extend({from:this.element.getOpacity()||0.0,to:1.0},arguments[1]||{});this.start(options);},update:function(position){this.element.setOpacity(position);}});Effect.Move=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({x:0,y:0,mode:'relative'},arguments[1]||{});this.start(options);},setup:function(){this.element.makePositioned();this.originalLeft=parseFloat(this.element.getStyle('left')||'0');this.originalTop=parseFloat(this.element.getStyle('top')||'0');if(this.options.mode=='absolute'){this.options.x=this.options.x-this.originalLeft;this.options.y=this.options.y-this.originalTop;}},update:function(position){this.element.setStyle({left:(this.options.x*position+this.originalLeft).round()+'px',top:(this.options.y*position+this.originalTop).round()+'px'});}});Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}));};Effect.Scale=Class.create(Effect.Base,{initialize:function(element,percent){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:'box',scaleFrom:100.0,scaleTo:percent},arguments[2]||{});this.start(options);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle('position');this.originalStyle={};['top','left','width','height','fontSize'].each(function(k){this.originalStyle[k]=this.element.style[k];}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle('font-size')||'100%';['em','px','%','pt'].each(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType;}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=='box') this.dims=[this.element.offsetHeight,this.element.offsetWidth];if(/^content/.test(this.options.scaleMode)) this.dims=[this.element.scrollHeight,this.element.scrollWidth];if(!this.dims) this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];},update:function(position){var currentScale=(this.options.scaleFrom/100.0)+(this.factor*position);if(this.options.scaleContent&&this.fontSize) this.element.setStyle({fontSize:this.fontSize*currentScale+this.fontSizeType});this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale);},finish:function(position){if(this.restoreAfterFinish)this.element.setStyle(this.originalStyle);},setDimensions:function(height,width){var d={};if(this.options.scaleX)d.width=width.round()+'px';if(this.options.scaleY)d.height=height.round()+'px';if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=='absolute'){if(this.options.scaleY)d.top=this.originalTop-topd+'px';if(this.options.scaleX)d.left=this.originalLeft-leftd+'px';}else{if(this.options.scaleY)d.top=-topd+'px';if(this.options.scaleX)d.left=-leftd+'px';}} this.element.setStyle(d);}});Effect.Highlight=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({startcolor:'#ffff99'},arguments[1]||{});this.start(options);},setup:function(){if(this.element.getStyle('display')=='none'){this.cancel();return;} this.oldStyle={};if(!this.options.keepBackgroundImage){this.oldStyle.backgroundImage=this.element.getStyle('background-image');this.element.setStyle({backgroundImage:'none'});} if(!this.options.endcolor) this.options.endcolor=this.element.getStyle('background-color').parseColor('#ffffff');if(!this.options.restorecolor) this.options.restorecolor=this.element.getStyle('background-color');this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16)}.bind(this));this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]}.bind(this));},update:function(position){this.element.setStyle({backgroundColor:$R(0,2).inject('#',function(m,v,i){return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart());}.bind(this))});},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});Effect.ScrollTo=function(element){var options=arguments[1]||{},scrollOffsets=document.viewport.getScrollOffsets(),elementOffsets=$(element).cumulativeOffset();if(options.offset)elementOffsets[1]+=options.offset;return new Effect.Tween(null,scrollOffsets.top,elementOffsets[1],options,function(p){scrollTo(scrollOffsets.left,p.round());});};Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from:element.getOpacity()||1.0,to:0.0,afterFinishInternal:function(effect){if(effect.options.to!=0)return;effect.element.hide().setStyle({opacity:oldOpacity});}},arguments[1]||{});return new Effect.Opacity(element,options);};Effect.Appear=function(element){element=$(element);var options=Object.extend({from:(element.getStyle('display')=='none'?0.0:element.getOpacity()||0.0),to:1.0,afterFinishInternal:function(effect){effect.element.forceRerendering();},beforeSetup:function(effect){effect.element.setOpacity(effect.options.from).show();}},arguments[1]||{});return new Effect.Opacity(element,options);};Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle('position'),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};return new Effect.Parallel([new Effect.Scale(element,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:1.0,beforeSetupInternal:function(effect){Position.absolutize(effect.effects[0].element);},afterFinishInternal:function(effect){effect.effects[0].element.hide().setStyle(oldStyle);}},arguments[1]||{}));};Effect.BlindUp=function(element){element=$(element);element.makeClipping();return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(effect){effect.element.hide().undoClipping();}},arguments[1]||{}));};Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makeClipping().setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.element.undoClipping();}},arguments[1]||{}));};Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(effect){new Effect.Scale(effect.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity});}});}},arguments[1]||{}));};Effect.DropOut=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left'),opacity:element.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:0.5,beforeSetup:function(effect){effect.effects[0].element.makePositioned();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);}},arguments[1]||{}));};Effect.Shake=function(element){element=$(element);var options=Object.extend({distance:20,duration:0.5},arguments[1]||{});var distance=parseFloat(options.distance);var split=parseFloat(options.duration)/10.0;var oldStyle={top:element.getStyle('top'),left:element.getStyle('left')};return new Effect.Move(element,{x:distance,y:0,duration:split,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance,y:0,duration:split,afterFinishInternal:function(effect){effect.element.undoPositioned().setStyle(oldStyle);}});}});}});}});}});}});};Effect.SlideDown=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().setStyle({height:'0px'}).show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));};Effect.SlideUp=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:'box',scaleFrom:100,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));};Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping();}});};Effect.Grow=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case'top-left':initialMoveX=initialMoveY=moveX=moveY=0;break;case'top-right':initialMoveX=dims.width;initialMoveY=moveY=0;moveX=-dims.width;break;case'bottom-left':initialMoveX=moveX=0;initialMoveY=dims.height;moveY=-dims.height;break;case'bottom-right':initialMoveX=dims.width;initialMoveY=dims.height;moveX=-dims.width;moveY=-dims.height;break;case'center':initialMoveX=dims.width/2;initialMoveY=dims.height/2;moveX=-dims.width/2;moveY=-dims.height/2;break;} return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetup:function(effect){effect.element.hide().makeClipping().makePositioned();},afterFinishInternal:function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1.0,from:0.0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(effect){effect.effects[0].element.setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);}},options));}});};Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var moveX,moveY;switch(options.direction){case'top-left':moveX=moveY=0;break;case'top-right':moveX=dims.width;moveY=0;break;case'bottom-left':moveX=0;moveY=dims.height;break;case'bottom-right':moveX=dims.width;moveY=dims.height;break;case'center':moveX=dims.width/2;moveY=dims.height/2;break;} return new Effect.Parallel([new Effect.Opacity(element,{sync:true,to:0.0,from:1.0,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],Object.extend({beforeStartInternal:function(effect){effect.effects[0].element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle);}},options));};Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{},oldOpacity=element.getInlineOpacity(),transition=options.transition||Effect.Transitions.linear,reverser=function(pos){return 1-transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2)+.5);};return new Effect.Opacity(element,Object.extend(Object.extend({duration:2.0,from:0,afterFinishInternal:function(effect){effect.element.setStyle({opacity:oldOpacity});}},options),{transition:reverser}));};Effect.Fold=function(element){element=$(element);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};element.makeClipping();return new Effect.Scale(element,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(effect){new Effect.Scale(element,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(effect){effect.element.hide().undoClipping().setStyle(oldStyle);}});}},arguments[1]||{}));};Effect.Morph=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({style:{}},arguments[1]||{});if(!Object.isString(options.style))this.style=$H(options.style);else{if(options.style.include(':')) this.style=options.style.parseStyle();else{this.element.addClassName(options.style);this.style=$H(this.element.getStyles());this.element.removeClassName(options.style);var css=this.element.getStyles();this.style=this.style.reject(function(style){return style.value==css[style.key];});options.afterFinishInternal=function(effect){effect.element.addClassName(effect.options.style);effect.transforms.each(function(transform){effect.element.style[transform.style]='';});};}} this.start(options);},setup:function(){function parseColor(color){if(!color||['rgba(0, 0, 0, 0)','transparent'].include(color))color='#ffffff';color=color.parseColor();return $R(0,2).map(function(i){return parseInt(color.slice(i*2+1,i*2+3),16);});} this.transforms=this.style.map(function(pair){var property=pair[0],value=pair[1],unit=null;if(value.parseColor('#zzzzzz')!='#zzzzzz'){value=value.parseColor();unit='color';}else if(property=='opacity'){value=parseFloat(value);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)) this.element.setStyle({zoom:1});}else if(Element.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);unit=(components.length==3)?components[2]:null;} var originalValue=this.element.getStyle(property);return{style:property.camelize(),originalValue:unit=='color'?parseColor(originalValue):parseFloat(originalValue||0),targetValue:unit=='color'?parseColor(value):value,unit:unit};}.bind(this)).reject(function(transform){return((transform.originalValue==transform.targetValue)||(transform.unit!='color'&&(isNaN(transform.originalValue)||isNaN(transform.targetValue))));});},update:function(position){var style={},transform,i=this.transforms.length;while(i--) style[(transform=this.transforms[i]).style]=transform.unit=='color'?'#'+ (Math.round(transform.originalValue[0]+ (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart()+ (Math.round(transform.originalValue[1]+ (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart()+ (Math.round(transform.originalValue[2]+ (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart():(transform.originalValue+ (transform.targetValue-transform.originalValue)*position).toFixed(3)+ (transform.unit===null?'':transform.unit);this.element.setStyle(style,true);}});Effect.Transform=Class.create({initialize:function(tracks){this.tracks=[];this.options=arguments[1]||{};this.addTracks(tracks);},addTracks:function(tracks){tracks.each(function(track){track=$H(track);var data=track.values().first();this.tracks.push($H({ids:track.keys().first(),effect:Effect.Morph,options:{style:data}}));}.bind(this));return this;},play:function(){return new Effect.Parallel(this.tracks.map(function(track){var ids=track.get('ids'),effect=track.get('effect'),options=track.get('options');var elements=[$(ids)||$$(ids)].flatten();return elements.map(function(e){return new effect(e,Object.extend({sync:true},options))});}).flatten(),this.options);}});Element.CSS_PROPERTIES=$w('backgroundColor backgroundPosition borderBottomColor borderBottomStyle '+'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth '+'borderRightColor borderRightStyle borderRightWidth borderSpacing '+'borderTopColor borderTopStyle borderTopWidth bottom clip color '+'fontSize fontWeight height left letterSpacing lineHeight '+'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+'maxWidth minHeight minWidth opacity outlineColor outlineOffset '+'outlineWidth paddingBottom paddingLeft paddingRight paddingTop '+'right textIndent top width wordSpacing zIndex');Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;String.__parseStyleElement=document.createElement('div');String.prototype.parseStyle=function(){var style,styleRules=$H();if(Prototype.Browser.WebKit) style=new Element('div',{style:this}).style;else{String.__parseStyleElement.innerHTML='
';style=String.__parseStyleElement.childNodes[0].style;} Element.CSS_PROPERTIES.each(function(property){if(style[property])styleRules.set(property,style[property]);});if(Prototype.Browser.IE&&this.include('opacity')) styleRules.set('opacity',this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);return styleRules;};if(document.defaultView&&document.defaultView.getComputedStyle){Element.getStyles=function(element){var css=document.defaultView.getComputedStyle($(element),null);return Element.CSS_PROPERTIES.inject({},function(styles,property){styles[property]=css[property];return styles;});};}else{Element.getStyles=function(element){element=$(element);var css=element.currentStyle,styles;styles=Element.CSS_PROPERTIES.inject({},function(results,property){results[property]=css[property];return results;});if(!styles.opacity)styles.opacity=element.getOpacity();return styles;};} Effect.Methods={morph:function(element,style){element=$(element);new Effect.Morph(element,Object.extend({style:style},arguments[2]||{}));return element;},visualEffect:function(element,effect,options){element=$(element);var s=effect.dasherize().camelize(),klass=s.charAt(0).toUpperCase()+s.substring(1);new Effect[klass](element,options);return element;},highlight:function(element,options){element=$(element);new Effect.Highlight(element,options);return element;}};$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+'pulsate shake puff squish switchOff dropOut').each(function(effect){Effect.Methods[effect]=function(element,options){element=$(element);Effect[effect.charAt(0).toUpperCase()+effect.substring(1)](element,options);return element;};});$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(function(f){Effect.Methods[f]=Element[f];});Element.addMethods(Effect.Methods);Amoeba=Class.create({dragOpacity:.77,classPre:'amoeba',onArrange:null,onPlace:null,onPlacePrep:null,onRequest:null,onLoad:null,onCancel:null,cloneDragDimensions:false,ignoreInDragInit:['A'],lockX:false,lockY:false,allVertical:false,activeBorder:'2px dashed #f00',restBorder:'2px solid #fff',hotElms:[],sandboxElms:[],dragClass:'',dragState:false,dragOutlineElm:null,dragHandles:null,dragElm:null,initialize:function(opt){$H(opt).each(function(o){this[o.key]=o.value}.bind(this));this.eventDropListener=this._eventDrop.bindAsEventListener(this);this.eventMoveListener=this._eventMove.bindAsEventListener(this);this.eventDownListener=this._eventDown.bindAsEventListener(this);this._init();this.dragOutlineElm=this._c('div',{html:' ',className:this.dragClass,style:{backgroundColor:'#fff',display:'none',position:'absolute',border:'1px dotted #000'}});this._opacity(this.dragOutlineElm,.27);document.body.appendChild(this.dragOutlineElm);Event.observe(this.dragOutlineElm,'mouseup',this.eventDropListener);Event.observe(document.body,'mousemove',this.eventMoveListener);},teardown:function(){this.dragOutlineElm.remove();Event.stopObserving(this.dragOutlineElm,'mouseup',this.eventDropListener);Event.stopObserving(document.body,'mousemove',this.eventMoveListener);this.dragHandles.each(function(elm){elm.stopObserving('mousedown',this.eventDownListener);}.bind(this));},reload:function(){this._init();},getLayout:function(){return this._getLayout();},_init:function(){this.sandboxElms=$H();this.hotElms=[];this.dragHandles=$H();this.dragHandles=$$('.'+this.classPre+'DragHandle');this.dragHandles.each(function(elm){this._registerElm(elm);}.bind(this));$$('.'+this.classPre+'Sandbox').each(function(elm){this.sandboxElms.set(elm.id,elm);}.bind(this));this.currentLayout=this._getLayout();this._cacheAmoebaDimensions();if(this.onLoad) this.onLoad(this);},_getLayout:function(){var layout={};this.sandboxElms.each(function(nv){layout[nv.key]=[];$(nv.value).getElementsBySelector('.'+this.classPre).each(function(elm){layout[nv.key].push(elm.id);}.bind(this));}.bind(this));return layout;},_registerElm:function(dh,forceInto){dh._am_amoeba=this._domUp(dh,this.classPre);dh._am_amoeba._am_dh=dh;dh._am_amoeba._am_sandbox=(typeof forceInto==='undefined')?this._domUp(dh,this.classPre+'Sandbox'):forceInto;if(!this._isFixed(dh._am_amoeba)) this._noSel(dh._am_amoeba._am_dh) this.sandboxElms.set(dh._am_amoeba._am_sandbox.id,dh._am_amoeba._am_sandbox);Event.observe(dh,'mousedown',this.eventDownListener);this.hotElms.push(dh._am_amoeba);},_eventMove:function(e){if(this.dragState&&!this.calculatingDrop){this.calculatingDrop=true;this._setDragOutline(e);var isDropped=false;var cx=Event.pointerX(e);var cy=Event.pointerY(e)+this.dragElm._am_sandbox.scrollTop;this.hotElms.each(function(elm){if(!isDropped&&elm!=this.dragElm&&cx>=elm._am_x1&&cx<=elm._am_x2&&cy>=elm._am_y1&&cy<=elm._am_y2&&!elm._am_sandbox.hasClassName(this.classPre+'SandboxNoDrop')){this.dragState++;if((cysb_y+sb_h&&cx>sb_x&&cx-1,IE7:navigator.userAgent.indexOf('MSIE 7')>-1,IE8:navigator.userAgent.indexOf('MSIE 8')>-1,OS:{Windows:navigator.platform.indexOf('Win')!=-1,Linux:navigator.platform.indexOf('Linux')!=-1,Mac:navigator.platform.indexOf('Mac')!=-1}});VR.emptyFunction=function emptyFunction(){};VR.CSS={};VR.CSS.StyleSheet={};VR.CSS.StyleSheet.setProperty=function(sheet,selector,property,value){if(!document.styleSheets){return;} $A(document.styleSheets).each(function(ss){if(ss.href&&ss.href.match(new RegExp('\/'+sheet+'$'))){var rules=[];if(ss.cssRules){rules=ss.cssRules;}else if(ss.rules){rules=ss.rules;}else{return;} $A(rules).each(function(r){if(r.cssText&&r.cssText.match(new RegExp('^'+selector+'[ ,{]'))){r.style[property]=value;}else if(r.selectorText.match(new RegExp('^'+selector+'$'))){r.style[property]=value;}});}});};VR.Window={scrollOffsets:function(){var xy=(typeof window.pageXOffset=='number')?[window.pageXOffset,window.pageYOffset]:[document.documentElement.scrollLeft,document.documentElement.scrollTop];xy.x=xy[0];xy.y=xy[1];return xy;},viewportSize:function(){var size=[0,0];if(typeof window.innerWidth!='undefined'){size=[window.innerWidth,window.innerHeight];}else if(typeof document.documentElement!='undefined'&&typeof document.documentElement.clientWidth!='undefined'&&document.documentElement.clientWidth!==0){size=[document.documentElement.clientWidth,document.documentElement.clientHeight];}else{size=[document.body.clientWidth,document.body.clientHeight];} size.x=size[0];size.y=size[1];return size;},popup:function(url,name,attr){var popup=window.open(url,name,attr);if(!popup){alert('Popups must be enabled in order to use this feature.');} return popup;}};Element.addMethods({disableSelection:function(element){element.onselectstart=function(){return false;};element.unselectable='on';element.style.MozUserSelect='none';return element;},scroll:function(element,amount){var factor=2;var at=0;var pe=new PeriodicalExecuter(function(pe){if(at>=Math.abs(amount)){pe.stop();}else{at+=factor;element.scrollTop+=(amount>0)?factor:factor*-1;}},0.01);return element;}});VR.Element={setOpacity:Element.Methods.setOpacity,disableSelection:Element.Methods.disableSelection,scroll:Element.Methods.scroll};VR.Input={disable:function(elm){if($(elm)){$(elm).style.cursor='default';$(elm)._vr_disabled=true;VR.Element.setOpacity(elm,0.5);}},enable:function(elm){if($(elm)){$(elm).removeClassName('input_disabled');$(elm)._vr_disabled=false;VR.Element.setOpacity(elm,1);}}};VR.Input.InlineTextEditor=Class.create({initialize:function(elm,opt){this.elm=$(elm);this.opt=opt;this.editorValueIsSet=false;this.editorCacheIsSet=false;this.maskElms=[null,null,null,null];if(this.opt.onRequest&&this.opt.onRequest(this)){this._init();}else if(!this.opt.onRequest){this._init();}},_init:function(){this.cachedOnclick=this.elm.onclick;if(!this.editorValueIsSet){this.setEditorText(this.elm.innerHTML);} if(!this.editorCacheIsSet){this.setEditorCache(this.elm.innerHTML);} this.elm.onclick=null;this._render();if(this.opt.onCreate){this.opt.onCreate(this);}},filterKeystroke:function(e){if(this.opt.type=='text'&&e.keyCode==Event.KEY_RETURN){Event.stop(e);this.save();} else if(e.keyCode==Event.KEY_ESC){Event.stop(e);this.cancel();} return true;},setEditorText:function(txt){txt=txt.replace(/^[ \r\n\t]+/g,'');txt=txt.replace(/[ \r\n\t]+$/g,'');txt=txt.replace(/^\ \;$/g,'');if(this.opt.type=='text'){txt=txt.replace(/[\n\r]/g,'');} this.editorValue=txt;this.editorValueIsSet=true;},setEditorCache:function(txt){this.editorCache=txt;this.editorCacheIsSet=true;},save:function(e){if(this.opt.onSave){this.opt.onSave(this);}else{this.replaceAndDestroy();} return false;},hasChanged:function(){return(this.editorCache!=this.sanitizeValue(this.getContents()))?true:false;},cancel:function(e){if(this.opt.onCancel){this.opt.onCancel(this);}else{this.revertAndDestroy();} return false;},wysiwygDestroyPrep:function(){if(this.opt.type=='wysiwyg'){tinyMCE.triggerSave();tinyMCE.execCommand('mceRemoveControl',false,'inline_editor_textarea');}},revertAndDestroy:function(){this.wysiwygDestroyPrep();this.elm.update(this.sanitizeValue(this.editorCache));this.destroy();},replaceAndDestroy:function(){this.wysiwygDestroyPrep();this.elm.update(this.sanitizeValue(this.getContents()));this.destroy();},getContents:function(){return(this.opt.type=='text')?this.inputElm.value.stripTags():this.inputElm.value;},sanitizeValue:function(txt){return(txt.length>0)?txt:' ';},destroy:function(){setTimeout(function(){this.elm.onclick=this.cachedOnclick;this.cachedValue=null;this.editorValueIsSet=false;this.editorCacheIsSet=false;}.bind(this),1);return this;},showIndicator:function(){this.workingElm.style.display='block';},hideIndicator:function(){this.workingElm.style.display='none';},_render:function(){this.editorElm=$C('div',{classes:['vr_input_inlineeditor']});this.workingContElm=$C('div',{classes:['vr_input_inlineeditor_working_containter']});this.workingElm=$C('img',{src:VR_IMAGE_HOST+'/cobrand/vr/icons/inline_editor_working.gif',classes:['vr_input_inlineeditor_working']});if(this.opt.type=='textarea'||this.opt.type=='wysiwyg'){this.inputElm=$C('textarea',{style:{width:'98%',height:'150px',marginBottom:'10px'},classes:[this.opt.inputClass],onkeypress:this.filterKeystroke.bind(this),value:this.editorValue,id:'inline_editor_textarea'});}else{this.inputElm=$C('input',{type:'text',classes:[this.opt.inputClass],onkeypress:this.filterKeystroke.bind(this),value:this.editorValue,onblur:this.blur.bindAsEventListener(this)});} this.elm.update('');this.workingContElm.appendChild(this.workingElm);this.editorElm.appendChild(this.inputElm);if(!this.opt.formOnly){this.saveElm=$C('a',{type:'button',onclick:this.save.bind(this),classes:[this.opt.buttonClass],html:'Save'});this.cancelElm=$C('a',{type:'button',onclick:this.cancel.bind(this),html:'Cancel'});this.editorElm.appendChild($C('br'));this.editorElm.appendChild($T(' '));this.editorElm.appendChild(this.saveElm);this.editorElm.appendChild($T(' | '));this.editorElm.appendChild(this.cancelElm);} this.elm.appendChild(this.editorElm);this.inputElm.focus();if(this.opt.type=='text'){this.inputElm.select();} if(this.opt.type=='wysiwyg'){tinyMCE.execCommand('mceAddControl',false,'inline_editor_textarea');}},blur:function(e){if(this.opt.cancelOnBlur){this.cancel();}else if(this.opt.saveOnBlur){this.save();}}});Element.addMethods('SELECT',{setOptions:function(selectElement,opt,selected){selectElement.length=0;opt.length.times(function(i){var option=new Option(opt[i][1],opt[i][0]);if(opt[i][2]&&opt[i][2].style) option.setStyle(opt[i][2].style);selectElement.options[i]=option;if(selected==opt[i][0]) selectElement.selectedIndex=i;});return selectElement;},setSelected:function(selectElement,value){selectElement.options.length.times(function(i){if(selectElement.options[i].value==value){selectElement.selectedIndex=i;}}.bind(this));}});VR.Select={setOptions:Element.Methods.ByTag.SELECT.setOptions,setSelected:Element.Methods.ByTag.SELECT.setSelected};Number.prototype.humanize=Number.prototype.humanize||function(rounding,delimiter,separator){rounding=(typeof rounding!='undefined')?rounding:2;delimiter=(typeof delimiter!='undefined')?delimiter:',';separator=(typeof separator!='undefined')?separator:'.';var round_by=Math.pow(10,rounding);var value=(Math.round(this*(round_by))/round_by);parts=value.toString().split('.');parts[0]=parts[0].gsub(/(\d)(?=(\d\d\d)+(?!\d))/,"#{1}"+delimiter);return parts.join(separator);};Number.prototype.delimiter=Number.prototype.delimiter||function(delimiter){return this.humanize(undefined,delimiter);};String.prototype.toNumber=String.prototype.toNumber||function(){return(parseFloat(this).toString()==this)?parseFloat(this):null;};String.prototype.toFloat=String.prototype.toFloat||function(){return parseFloat(this);};String.prototype.toInt=String.prototype.toInt||function(){return parseInt(this,10);};String.prototype.humanize=String.prototype.humanize||function(){return(typeof this.toNumber()=='number')?this.toNumber().humanize.apply(this,$A(arguments)):this;};String.prototype.pad=String.prototype.pad||function(length,str,direction){var val=this.toString();if(val.length0){return func(this.first());}};Array.prototype.sum=Array.prototype['sum']||function(){var sum=0;this.each(function(n){return sum+=n;});return sum;} Array.prototype.isEmpty=Array.prototype.isEmpty||function(){return this.length==0;};Array.prototype.subtract=Array.prototype.subtract||function(subtrahend){return this.reject(function(n){return subtrahend.member(n);});};Array.prototype.hashify=Array.prototype.hashify||function(transform){var h={};for(var i=0;i]*on(load|unload|mouseover|mouseout|mouseup|mousedown|mousemove|keydown|keyup|keypress|select|resize|reset|change|submit|focus|blur|abort|click|dblclick|error)/i)){return true;} return false;};VR.String={escapeQuotes:function(string){return string.escapeQuotes(string);},isEmail:function(string){return string.isEmail(string);},toJSON:function(string){return string.toJSON(string);},checkXSS:function(string){return string.checkXSS(string);}};VR.Image={};VR.Image.Loader=Class.create({initialize:function(images){images.each(function(imgUrl){var img=new Image();img.src=imgUrl;});}});VR.Ajax=Class.create(Ajax.Request,{initialize:function($super,url,ajax_options){VR.Ajax.connections.push(this);$super(url,ajax_options);},abort:function(){this.transport.abort();}});VR.Ajax.connections=[];VR.Ajax.abortOpenConnections=function(){VR.Ajax.connections=VR.Ajax.connections.map(function(connection){if(connection.getStatus()==0) connection.abort();else return null;}).compact();};VR.RESTAPI={prefix:'/api/2.0',callbacks:{},Request:Class.create(VR.Ajax,{initialize:function($super,url,ajax_options){ajax_options=$H(VR.RESTAPI.callbacks).merge($H(ajax_options)).toObject();$super(url,ajax_options);}}),urlFor:function(url){return VR.RESTAPI.prefix+url;}};var _vrcp=null;VR.ColorPicker=Class.create({maxValue:{h:360,s:100,v:100},HSV:{0:360,1:100,2:100},hSV:165,wSV:162,hH:163,slideHSV:{0:360,1:100,2:100},zINDEX:15,stop:1,initialize:function(valueElm,opt){if(_vrcp){_vrcp.destroy();} _vrcp=this;this.valueElm=valueElm;this.cv='ffffff';this.opt=opt;this._render();},_render:function(){var pos=Position.cumulativeOffset(this.valueElm);var x=pos.left+this.valueElm.getWidth()+40;var y=pos.top;var shtml='';this.opElm=$C('div',{id:'vr_colorpicker_opacity',style:{top:(y-10)+'px',left:(x-10)+'px'}});this.elm=$C('div',{style:{position:'absolute',top:y+'px',left:x+'px'}});this.elm.update('
'+'
'+'
ffffff
'+'
'+'
'+'

'+'
'+'
'+'

'+'
'+'
'+'
'+' | '+'Cancel'+'
');VR.Element.setOpacity(this.opElm,0.5);document.body.appendChild(this.opElm);document.body.appendChild(this.elm);this.loadSV();},save:function(){this.valueElm.value=this.cv;if(this.opt.onselect){if(typeof this.opt.onselect==='string') eval(this.opt.onselect);else this.opt.onselect()} this.destroy();},cancel:function(){this.destroy();},destroy:function(){Element.remove(this.opElm);Element.remove(this.elm);_vrcp=null;},absPos:function(o){var r={x:o.offsetLeft,y:o.offsetTop};if(o.offsetParent){var v=this.absPos(o.offsetParent);r.x+=v.x;r.y+=v.y;} return(r);},agent:function(v){return(Math.max(navigator.userAgent.toLowerCase().indexOf(v),0));},toggle:function(v){$S(v).display=($S(v).display=='none'?'block':'none');},within:function(v,a,z){return((v>=a&&v<=z)?true:false);},XY:function(e,v){var z=[Event.pointerX(e),Event.pointerY(e)];return(z[this.zero(v)]);},zero:function(v){v=parseInt(v,10);return!isNaN(v)?v:0;},tXY:function(e){this.tY=this.XY(e,1)-this.ab.y;this.tX=this.XY(e)-this.ab.x;},mkHSV:function(a,b,c){return(Math.min(a,Math.max(0,Math.ceil((parseInt(c,10)/b)*a))));},ckHSV:function(a,b){if(this.within(a,0,b)){return(a);}else if(a>b){return(b);}else if(a<0){return('-'+this.oo);}},drag:function(e){if(this.stop){return;} if(this.d!='vr_colorpicker_drag'){this.tXY(e);} if(this.d=='vr_colorpicker_SVslide'){this.ds.left=this.ckHSV(this.tX-this.oo,this.wSV)+'px';this.ds.top=this.ckHSV(this.tY-this.oo,this.wSV)+'px';this.slideHSV[1]=this.mkHSV(100,this.wSV,this.ds.left);this.slideHSV[2]=100-this.mkHSV(100,this.wSV,this.ds.top);this.HSVupdate(this.slideHSV);}else if(this.d=='vr_colorpicker_Hslide'){var ck=this.ckHSV(this.tY-this.oo,this.hH),j,r='hsv',z={};this.ds.top=(ck-5)+'px';this.slideHSV[0]=this.mkHSV(360,this.hH,ck);for(var i=0;i<=r.length-1;i++){j=r.substr(i,1);z[i]=(j=='h')?this.maxValue[j]-this.mkHSV(this.maxValue[j],this.hH,ck):this.HSV[i];} this.HSVupdate(z);$S('vr_colorpicker_SV').backgroundColor='#'+this.hsv2hex([this.HSV[0],100,100]);}else if(this.d=='vr_colorpicker_drag'){this.ds.left=this.XY(e)+this.oX-this.eX+'px';this.ds.top=this.XY(e,1)+this.oY-this.eY+'px';}},HSVslide:function(d,o,e){this.d=d;if(this.stop){this.stop='';this.ds=$S(d!='vr_colorpicker_drag'?d:o);if(this.d=='vr_colorpicker_drag'){this.oX=parseInt(this.ds.left,10);this.oY=parseInt(this.ds.top,10);this.eX=this.XY(e);this.eY=this.XY(e,1);$S(o).zIndex=this.zINDEX++;} else{this.ab=this.absPos($(o));this.tX=null;this.tY=null;this.oo=(this.d=='vr_colorpicker_Hslide')?2:4;this.ab.x+=10;this.ab.y+=22;if(this.d=='vr_colorpicker_SVslide'){this.slideHSV[0]=this.HSV[0];} document.onmousemove=this.drag.bindAsEventListener(this);document.onmouseup=function(){_vrcp.stop=1;document.onmousemove='';document.onmouseup='';};this.drag(e);}}},HSVupdate:function(v){v=this.hsv2hex((this.HSV=v)?v:this.slideHSV);this.cv=v;$('vr_colorpicker_plugHEX').innerHTML=v;$S('vr_colorpicker_plugCUR').background='#'+v;return(v);},loadSV:function(){var z='';for(var i=this.hSV;i>=0;i--){z+="

<\/div>";} $('vr_colorpicker_Hmodel').innerHTML=z;},toHex:function(v){v=Math.round(Math.min(Math.max(0,v),255));return("0123456789ABCDEF".charAt((v-v%16)/16)+"0123456789ABCDEF".charAt(v%16));},rgb2hex:function(r){return(this.toHex(r[0])+this.toHex(r[1])+this.toHex(r[2]));},hsv2hex:function(h){return(this.rgb2hex(this.hsv2rgb(h)));},hsv2rgb:function(r){var R,B,G,S=r[1]/100,V=r[2]/100,H=r[0]/360;if(S>0){if(H>=1){H=0;} H=6*H;F=H-Math.floor(H);A=Math.round(255*V*(1.0-S));B=Math.round(255*V*(1.0-(S*F)));C=Math.round(255*V*(1.0-(S*(1.0-F))));V=Math.round(255*V);switch(Math.floor(H)){case 0:R=V;G=C;B=A;break;case 1:R=B;G=V;B=A;break;case 2:R=A;G=V;B=C;break;case 3:R=A;G=B;B=V;break;case 4:R=C;G=A;B=V;break;case 5:R=V;G=A;B=B;break;} return([R?R:0,G?G:0,B?B:0]);}else{return[(V=Math.round(V*255)),V,V];}}});VR.ColorPicker.cleanUp=function(){if(_vrcp){_vrcp.destroy();}} var _vrlb=null;VR.PopUp=Class.create({overflowX:'auto',overflowY:'auto',initialize:function(width,height,opt){if(_vrlb instanceof VR.PopUp){_vrlb.destroy();} _vrlb=this;this.width=width;this.height=height;this.opt=opt;this.border=20;this._render();this._size();Event.observe(window,'resize',this._size.bindAsEventListener(this));Event.observe(window,'scroll',this._size.bindAsEventListener(this));},resizeY:function(height){this.height=height;this.popupElm.style.height=this.height+'px';this.behindElm.style.height=this._getBorderSize(this.height);},resizeX:function(width){this.width=width;this.popupElm.style.width=this.width+'px';this.behindElm.style.width=this._getBorderSize(this.width);},cancel:function(){this.destroy();if(this.opt.onCancel)this.opt.onCancel();},destroy:function(){if(!this.visible())return;this.hideWorking();VR.Shroud.hide();Element.remove(this.popupElm);Element.remove(this.behindElm);this._onscroll();if(this.opt.onDestroy){this.opt.onDestroy(this);} _vrlb=null;this._dead=true;if(!this.opt.skipCloseEvent){$(document).fire('VR:PopUp:close');}},visible:function(){return!this._dead;},setHeader:function(){var header='';if(this.opt.closeLink){header+='';} if(this.opt.title){header+='

'+this.opt.title+'

';} this.popupElm.update(header);},setContent:function(content){this.setHeader();this.appendChild((typeof content==='string')?$C('div',{html:content}):content);return this;},appendChild:function(element){this.popupElm.appendChild(element);return this;},showWorking:function(message){message=(typeof message==='undefined')?'Loading; please wait...':message;this.workingElm=$C('div',{html:' '+ message,style:{top:'0px',right:'0px',color:'#fff',backgroundColor:'#444',padding:'4px 15px 4px 8px',position:'absolute'}});this.popupElm.appendChild(this.workingElm);return this;},hideWorking:function(){if(this.workingElm&&this.workingElm.parentNode)this.workingElm.remove();return this;},_getBorderSize:function(size){return(size+this.border*2)+'px';},_onscroll:function(){this._html().style.overflowX=this.overflowX;this._html().style.overflowY=this.overflowY;},_offscroll:function(){this._html().style.overflowY='hidden';this._html().style.overflowX='hidden';},_html:function(){return document.body;},_legacy:function(){return(VR.Browser.IE)?true:false;},_render:function(){VR.Shroud.show();this.behindElm=$C('div',{html:' ',style:{zIndex:1010,width:this._getBorderSize(this.width),height:this._getBorderSize(this.height),position:'absolute',backgroundColor:'#fff',textAlign:'center','-webkitBorderRadius':'16px','MozBorderRadius':'16px','borderRadius':'16px'}});this.popupElm=$C('div',{html:' ',style:{zIndex:1020,backgroundColor:'#ffffff',width:this.width+'px',height:this.height+'px',lineHeight:'13px',position:'absolute'}});if(this._smallResMode()){} else if(this._legacy()) this._offscroll();else{this.behindElm.style.position='fixed';this.popupElm.style.position='fixed';} this._size();this._opacity(this.behindElm,0.4);this._opacity(this.popupElm,1);document.body.appendChild(this.behindElm);document.body.appendChild(this.popupElm);if(this.opt.onCreate){this.opt.onCreate(this);}},_opacity:function(elm,o){$(elm).setOpacity(o);},_smallResMode:function(){return(VR.Window.viewportSize()[1]');doc.close();}.bind(iframe),0.5);} VR.Shroud.iframe=iframe;} function render_shroud(){render_iframe();this.container=$C('div').addClassName('vr_shroud');this.content=$C('div').addClassName('vr_shroud_content');if(VR.Browser.IE6){this.container.setStyle({position:'absolute'});this.content.setStyle({position:'absolute'});var position=function(){var size=VR.Window.viewportSize();var scroll=VR.Window.scrollOffsets();this.content.setStyle({top:scroll.y+'px',left:scroll.x+'px',height:size.y+'px',width:size.x+'px'});this.container.setStyle({height:parseInt(document.body.clientHeight,10)+'px',width:parseInt(document.body.clientWidth,10)+'px'});}.bind(this);position();Event.observe(window,'resize',position);Event.observe(window,'scroll',position);} this.container.appendChild(this.iframe);this.iframe.show();this.container.appendChild(this.content);document.body.appendChild(this.container);} return{show:function(){if(!this.container){render_shroud.bind(this)();} if(document.body.lastChild!=this.containter){document.body.appendChild(this.container);} this.container.show();return this;},hide:function(){if(this.container){this.container.remove();} return this;},update:function(content){this.content.update(content);return this;},appendChild:function(element){this.content.appendChild(element);return this;}};})();VR.Modal=Class.create();VR.Modal.instance=null;VR.Modal.prototype=(function(){function render(){this.elements={};var e=this.elements;var o=this.options;VR.Shroud.show();e.frame=$C('div').addClassName('vr_modal_frame');e.hallow=$C('div').addClassName('vr_modal_hallow').setStyle((function(){var height=(o.height+(o.hallowSize*2))+'px';var width=(o.width+(o.hallowSize*2))+'px';var top=(parseFloat(height)/2*-1)+'px';var left=(parseFloat(width)/2*-1)+'px';return{height:height,width:width,top:top,left:left};})());e.working=$C('div').addClassName('vr_modal_working');if(!this.options.working){e.working.hide();} this.working=e.working;e.content=$C('div').addClassName('vr_modal_content').setStyle({top:(o.height/2*-1)+'px',left:(o.width/2*-1)+'px',height:o.height+'px',width:o.width+'px'});e.hallow.appendChild(e.working);e.frame.appendChild(e.content);e.frame.appendChild(e.hallow);VR.Shroud.appendChild(e.frame);} var addFeature={closeLink:function(){this.elements.closeLink=$C('a',{href:'javascipr:void(null)'}).observe('click',function(event){Event.stop(event);this.destroy();}.bindAsEventListener(this)).update('');var wrapper=$C('div').addClassName('vrlb_close');wrapper.appendChild(this.elements.closeLink);this.elements.content.appendChild(wrapper);return this;},title:function(title){this.elements.title=$C('h3').addClassName('vrlb_header').update(this.options.title).observe('mousedown',Event.stop.bindAsEventListener(this)).observe('mouseup',Event.stop.bindAsEventListener(this));this.elements.content.appendChild(this.elements.title);return this;}};function shift(x,y){x=x||0;y=y||0;this.elements.content.setStyle({top:(parseInt(this.elements.content.getStyle('top'),10)+y)+'px',left:(parseInt(this.elements.content.getStyle('left'),10)+x)+'px'});this.elements.hallow.setStyle({top:(parseInt(this.elements.hallow.getStyle('top'),10)+y)+'px',left:(parseInt(this.elements.hallow.getStyle('left'),10)+x)+'px'});} var defaults={height:200,width:300,hallowSize:20,title:false,closeLink:false,working:false,onCreate:VR.emptyFunction,onDestroy:VR.emptyFunction,beforeDestroy:function(){return true;}};return{shift:function(x,y){shift.bind(this)(x,y);},initialize:function(options,content){if(VR.Modal.instance){VR.Modal.instance.destroy();} this.options=Object.extend(defaults,(options||{}));render.bind(this)();VR.Modal.instance=this;if(typeof content!='undefined'){this.update(content);}else{this.working.show();} this.options.onCreate(this);},destroy:function(){if(!this.options.beforeDestroy()){return false;} this.elements.frame.remove();VR.Shroud.hide();VR.Modal.instance=null;this.options.onDestroy(this);return this;},update:function(content){this.elements.content.innerHTML='';if(this.options.closeLink){addFeature.closeLink.bind(this)();} if(this.options.title){addFeature.title.bind(this)();} if(typeof content=='string'){this.elements.content.appendChild($C('div').update(content));}else if(typeof content=='object'&content.nodeType==1){this.elements.content.appendChild(content);} return this;}};})();VR.Modal.destroy=function(){return(this.instance)?this.instance.destroy():false;};var _vrd_imgpre=new VR.Image.Loader([VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.header.1.210.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.header.2.210.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.header.3.210.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.header.4.350.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.content.210.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.content.350.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.footer.4.350.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.footer.2.210.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.content.350.png',VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.content.210.png']);var _vrd=null;VR.Dialog=Class.create({initialize:function(element,width,height,html,type,opt){if(_vrd){_vrd.destroy();} _vrd=this;var cOff=Position.cumulativeOffset(element)[1];var vHeight=VR.Window.viewportSize()[1];var sOff=VR.Window.scrollOffsets()[1];if(type==2&&((cOff-sOff)+height)+50>vHeight){type=3;} this.html=html;this.height=height;this.width=width;this.type=type;this.elmSource=element;this.opt=opt||{};this.dead=false;this.draw();Event.observe(window,'resize',this.place.bindAsEventListener(this));Event.observe(document,'mousedown',this.filterDestroy.bindAsEventListener(this));},place:function(){var t,l;var offset=Position.cumulativeOffset(this.elmSource);if(this.type==1){t=offset[1]+10;l=offset[0]+10;} else if(this.type==2){t=offset[1]+15;l=offset[0]-this.width;} else if(this.type==3){t=offset[1]-20-this.height;l=offset[0]-this.width;} else if(this.type==4){t=offset[1]-0-this.height;l=offset[0]+20;} this.elm.style.top=t+'px';this.elm.style.left=l+'px';this.elmMask.style.top=this.elm.style.top;this.elmMask.style.left=this.elm.style.left;},draw:function(){this.elm=$C('div',{classes:['vrDialog','vrDialog'+this.type]});this.elmHeader=$C('div',{classes:['vrDialogHeader']});this.elmFooter=$C('div',{style:{height:36+'px',width:(this.width-195)+'px'},classes:['vrDialogFooter']});this.elmContent=$C('div',{style:{height:this.height-64+'px'},classes:['vrDialogContent','vrDialogContent'+this.width]});this.elmHeaderImg=$C('img',{style:{width:this.width,height:36},src:VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.header.'+this.type+'.'+this.width+'.png'});this.elmFooterImg=$C('img',{style:{width:this.width+'px',height:'36px'},src:VR_IMAGE_HOST+'/cobrand/vr/interface/v5/vr.dialog/vr.dialog.footer.'+this.type+'.'+this.width+'.png'});this.elmMask=$C('div');this.elm.setStyle({width:this.width+'px',height:this.height+'px'});this.elmMask.setStyle({width:this.elm.style.width,height:this.elm.style.height,position:'absolute'});this.place();this.elmHeader.appendChild(this.elmHeaderImg);this.elmFooter.appendChild(this.elmFooterImg);this.elm.appendChild(this.elmHeader);this.elm.appendChild(this.elmContent);this.elm.appendChild(this.elmFooter);if(VR.Browser.Gecko&&VR.Browser.OS.Mac){this.elmMask.style.overflow='auto';} document.body.appendChild(this.elmMask);document.body.appendChild(this.elm);this.setContents(this.html);if(this.opt.onmouseover){Event.observe(this.elmContent,'mouseover',this.opt.onmouseover,true);} if(this.opt.onmouseout){Event.observe(this.elmContent,'mouseout',this.opt.onmouseout,true);} return true;},setContents:function(html){this.elmContent.innerHTML=''+'';this.elmContent.innerHTML+=html;},filterDestroy:function(e){var elm=Event.element(e);if(!this.dead&&_vrd&&$(elm).ancestors&&!Element.up($(elm),'.vrDialog')){this.destroy();}},destroy:function(){Event.stopObserving(document,'resize',this.place);Event.stopObserving(document,'mousedown',this.filterDestroy);if(this.opt.ondestroy){this.opt.ondestroy();} $(this.elm).remove();$(this.elmMask).remove();_vrd=null;this.dead=true;}});VR.Jumper=Class.create({initialize:function(elm,force){this.parentElm=$(elm);this.elm=$C('div');this.parentElm.childElements().each(function(elm){this.elm.appendChild(elm);}.bind(this));this.parentElm.appendChild(this.elm);this.scrollObserver=this.jump.bind(this);Event.observe(window,'scroll',this.scrollObserver);this.jump();},destroy:function(){Event.stopObserving(window,'scroll',this.scrollObserver);this.elm.remove();},jump:function(){if(!this.pe){this.pe=new PeriodicalExecuter(function(pe){pe.stop();this.pe=null;var offset=this.parentElm.cumulativeOffset()[1];var difference=VR.Window.scrollOffsets()[1]-offset;var bottom=$(this.parentElm.parentNode).cumulativeOffset()[1]+$(this.parentElm.parentNode).getHeight();if(difference<0) this.parentElm.setStyle({paddingTop:'0px'});else if(difference>0&&offset+difference+this.elm.getHeight()');this.image=this.element.down('img');this.setPercentage(0);},toElement:function(){return this.element;},setPercentage:function(newPercentage){if(typeof newPercentage=='undefined'){throw"0 arguments passed to newPercentage";} this.percent=newPercentage;this.image.setAttribute('alt',this.percent+"% complete");this.image.setAttribute('title',this.percent+"% complete");this.image.setAttribute('src',this.images[(Math.round((this.images.size()-1)*(this.percent/100)))]);return this;},images:[VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/0-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/10-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/20-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/25-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/30-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/45-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/50-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/65-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/70-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/75-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/80-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/90-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/95-percent.gif',VR_IMAGE_HOST+'/cobrand/vr/icons/loading/wheel/100-percent.gif']});VR.Menu={activeButton:null,pageMousedown:function(event){var el;if(VR.Menu.activeButton==null) return;if(VR.Browser.IE) el=window.event.srcElement;else el=(event.target.tagName?event.target:event.target.parentNode);if(el==VR.Menu.activeButton) return;if(VR.Menu.getContainerWith(el,"DIV","menu")==null){VR.Menu.resetButton(VR.Menu.activeButton);VR.Menu.activeButton=null;}},buttonClick:function(event,menuId){var button;if(VR.Browser.IE) button=window.event.srcElement;else button=event.currentTarget;button.blur();if(button.menu==null){button.menu=document.getElementById(menuId);if(button.menu.isInitialized==null) VR.Menu.menuInit(button.menu);} if(VR.Menu.activeButton!=null) VR.Menu.resetButton(VR.Menu.activeButton);if(button!=VR.Menu.activeButton){VR.Menu.depressButton(button);VR.Menu.activeButton=button;} else VR.Menu.activeButton=null;return false;},buttonMouseover:function(event,menuId){var button;if(VR.Browser.IE) button=window.event.srcElement;else button=event.currentTarget;if(VR.Menu.activeButton!=null&&VR.Menu.activeButton!=button) VR.Menu.buttonClick(event,menuId);},depressButton:function(button){var x,y;button.className+=" menuButtonActive";x=VR.Menu.getPageOffsetLeft(button);y=VR.Menu.getPageOffsetTop(button)+button.offsetHeight;if(VR.Browser.IE){x+=button.offsetParent.clientLeft;y+=button.offsetParent.clientTop;} button.menu.style.left=x+"px";button.menu.style.top=y+"px";button.menu.style.visibility="visible";if(button.menu.iframeEl!=null) {button.menu.iframeEl.style.left=button.menu.style.left;button.menu.iframeEl.style.top=button.menu.style.top;button.menu.iframeEl.style.width=button.menu.offsetWidth+"px";button.menu.iframeEl.style.height=button.menu.offsetHeight+"px";button.menu.iframeEl.style.display="";}},resetActiveButton:function(){VR.Menu.resetButton(VR.Menu.activeButton);},resetButton:function(button){if(!button)return;VR.Menu.removeClassName(button,"menuButtonActive");if(button.menu!=null){VR.Menu.closeSubMenu(button.menu);button.menu.style.visibility="hidden";if(button.menu.iframeEl!=null) button.menu.iframeEl.style.display="none";}},menuMouseover:function(event){var menu;if(VR.Browser.IE) menu=VR.Menu.getContainerWith(window.event.srcElement,"DIV","menu");else menu=event.currentTarget;if(menu&&menu.activeItem!=null) VR.Menu.closeSubMenu(menu);},menuItemMouseover:function(event,menuId){var item,menu,x,y;if(VR.Browser.IE) item=VR.Menu.getContainerWith(window.event.srcElement,"A","menuItem");else item=event.currentTarget;menu=VR.Menu.getContainerWith(item,"DIV","menu");if(menu.activeItem!=null) VR.Menu.closeSubMenu(menu);menu.activeItem=item;item.className+=" menuItemHighlight";if(item.subMenu==null){item.subMenu=document.getElementById(menuId);if(item.subMenu.isInitialized==null) VR.Menu.menuInit(item.subMenu);} x=VR.Menu.getPageOffsetLeft(item)+item.offsetWidth;y=VR.Menu.getPageOffsetTop(item);var maxX,maxY;if(VR.Browser.IE){maxX=Math.max(document.documentElement.scrollLeft,document.body.scrollLeft)+ (document.documentElement.clientWidth!=0?document.documentElement.clientWidth:document.body.clientWidth);maxY=Math.max(document.documentElement.scrollTop,document.body.scrollTop)+ (document.documentElement.clientHeight!=0?document.documentElement.clientHeight:document.body.clientHeight);} if(VR.Browser.Opera){maxX=document.documentElement.scrollLeft+window.innerWidth;maxY=document.documentElement.scrollTop+window.innerHeight;} if(VR.Browser.Gecko){maxX=window.scrollX+window.innerWidth;maxY=window.scrollY+window.innerHeight;} maxX-=item.subMenu.offsetWidth;maxY-=item.subMenu.offsetHeight;if(x>maxX) x=Math.max(0,x-item.offsetWidth-item.subMenu.offsetWidth +(menu.offsetWidth-item.offsetWidth));y=Math.max(0,Math.min(y,maxY));item.subMenu.style.left=x+"px";item.subMenu.style.top=y+"px";item.subMenu.style.visibility="visible";if(item.subMenu.iframeEl!=null) {item.subMenu.iframeEl.style.left=item.subMenu.style.left;item.subMenu.iframeEl.style.top=item.subMenu.style.top;item.subMenu.iframeEl.style.width=item.subMenu.offsetWidth+"px";item.subMenu.iframeEl.style.height=item.subMenu.offsetHeight+"px";item.subMenu.iframeEl.style.display="";} if(Browser.IE) window.event.cancelBubble=true;else event.stopPropagation();},closeSubMenu:function(menu){if(menu==null||menu.activeItem==null) return;if(menu.activeItem.subMenu!=null){VR.Menu.closeSubMenu(menu.activeItem.subMenu);menu.activeItem.subMenu.style.visibility="hidden";if(menu.activeItem.subMenu.iframeEl!=null) menu.activeItem.subMenu.iframeEl.style.display="none";menu.activeItem.subMenu=null;} VR.Menu.removeClassName(menu.activeItem,"menuItemHighlight");menu.activeItem=null;},menuInit:function(menu){var itemList,spanList;var textEl,arrowEl;var itemWidth;var w,dw;var i,j;if(VR.Browser.IE){menu.style.lineHeight="2.5ex";spanList=menu.getElementsByTagName("SPAN");for(i=0;i0) itemWidth=itemList[0].offsetWidth;else return;for(i=0;iTip').setStyle({top:offsetT+'px',left:offsetL+'px'}).appear({duration:0.5});}).bind(this).delay(0.3);},showExpandedTip:function(e){e.stop();var os=e.element().cumulativeOffset();var xOffset=-20;var yOffset=-63;this.expandedTip=new VR.App.FieldTip(this.currentTipTag,{x:os[0]+xOffset,y:os[1]+yOffset,title:this.currentTipTitle});},teardown:function(){if(this.tipElm)this.tipElm.remove();},resetErrors:function(){this.resetExpandedTip();this.elm.select('.formrow').each(function(elm){if(elm.id)this.resetError(elm.id);}.bind(this));},resetError:function(field){if(this.errorCount)this.errorCount-=1;var row=$('formrow_'+field)||$(field);row.down('dt').removeClassName('field_with_errors');row.select('.field_error_message').each(function(elm){elm.remove()});},addError:function(field,message){this.errorCount+=1;var row=$('formrow_'+field)||$(field);var errorElm=$C('div',{classes:['field_error_message'],html:message});row.down('dt').addClassName('field_with_errors');row.down('dd').insertBefore(errorElm,row.down('dd').firstDescendant());}});VR.App.RotatingTip=Class.create({initialize:function(containerElm,opt){VR.App.RotatingTip.instance=this;this.containerElm=containerElm;this.opt=$H({title:'Email Creation Tip',tips:[],suppress_offsite:false}).merge($H((typeof opt==='undefined')?{}:opt)).toObject();this.contentElm=this.containerElm.down('.rotating_tip_content');this.textElm=this.containerElm.down('.rotating_tip_text');this.offsiteElm=this.containerElm.down('.rotating_tip_offsite');this.elm=this.containerElm.down('.rotating_tip');this.containerElm.down('a.rotating_tip_next').observe('click',this.next.bind(this));this.containerElm.down('a.rotating_tip_previous').observe('click',this.previous.bind(this));this.containerElm.down('a.rotating_tip_close').observe('click',function(e){e.stop();this.to('preview');}.bind(this));this.elm.observe('click',this.click.bind(this));this.tip=0;this.to('preview');},next:function(e){this.setTip((this.tip==this.opt.tips.length-1)?0:this.tip+1);e.stop();},previous:function(e){this.setTip((this.tip==0)?this.opt.tips.length-1:this.tip-1);e.stop();},setTip:function(tip){this.tip=tip;var update=function(text,offsite){this.textElm.update(text);if(!this.opt.suppress_offsite&&offsite&&this.mode=='full'){this.offsiteElm.writeAttribute({href:offsite});this.offsiteElm.show();} else{this.offsiteElm.hide();}}.bind(this);if(this.mode=='preview'){update(this.opt.tips[this.tip].teaser+' [+]');} else{if(this.opt.tips[this.tip].tip){update(this.opt.tips[this.tip].tip,this.opt.tips[this.tip].offsite);} else{update('Loading...');VR.App.API.Request('/app/content/show.json?items[]='+this.opt.tips[this.tip].tag,{},{onSuccess:function(transport,json){this.opt.tips[this.tip].tip=json.items[this.opt.tips[this.tip].tag] update(this.opt.tips[this.tip].tip,this.opt.tips[this.tip].offsite);}.bind(this)});}}},destroy:function(){if(this.elm.parentNode){this.elm.remove();VR.App.RotatingTip.instance=null;}},click:function(){this.to((this.mode=='preview')?'full':'preview');},to:function(mode){this.mode=mode;this[mode](function(){this.setTip(this.tip);}.bind(this));},preview:function(callback){this.elm.setStyle({top:'0px',left:0});this.contentElm.setStyle({minHeight:0});this.elm.addClassName('rotating_tip_preview');this.elm.removeClassName('rotating_tip_full');this.containerElm.appendChild(this.elm);callback();},full:function(callback){this.elm.setStyle({top:this.containerElm.cumulativeOffset()[1]+'px',left:this.containerElm.cumulativeOffset()[0]+'px'});this.elm.removeClassName('rotating_tip_preview');this.elm.addClassName('rotating_tip_full');document.body.appendChild(this.elm);this.contentElm.morph('min-height: 75px',{duration:0.25,afterFinish:callback.bind(this)});}});VR.App.FieldTip=Class.create({initialize:function(tag,opt){this.tag=tag;this.opt=$H({title:'Email Creation Tip',style:'pointer',x:0,y:0}).merge($H((typeof opt==='undefined')?{}:opt)).toObject();this.render()&&this.position()&&this.populate();},destroy:function(){this.tipElm.remove();},visible:function(){return!!this.tipElm.parentNode;},render:function(){this.contentElm=$C('div',{classes:['field_tip_content_frame']});this.tipElm=$C('div',{classes:['field_tip marketing_tip_'+this.opt.style]});this.tipElm.appendChild(this.contentElm);this.tipElm.appendChild($C('div',{classes:['field_tip_footer']}));document.body.appendChild(this.tipElm);return true;},position:function(){this.tipElm.setStyle({top:this.opt.y+'px',left:this.opt.x+'px'});return true;},populate:function(){var textElm=$C('div',{classes:['field_tip_content'],html:'Loading; one moment...'}) this.contentElm.update('

'+this.opt.title+'

');this.contentElm.appendChild(textElm);this.contentElm.appendChild($C('a',{html:'Close Tip',onclick:this.destroy.bind(this)}));VR.App.API.Request('/app/content/show.json?items[]='+this.tag,{},{onSuccess:function(transport,json){textElm.update(json.items[this.tag]);}.bind(this)});return true;}});VR.App.DataTable=Class.create({initialize:function(elm){this.elm=$(elm);if((this.celm=this.elm.down('._vrdt_global_sel'))&&this.celm){Event.observe(this.celm,'click',this.toggleAllFormCheckboxes.bind(this));} this.elm.getElementsBySelector('._vrdt_sel').each(function(ielm){Event.observe(ielm,'click',this.updateContext.bind(this));}.bind(this));this.cbElms=$A(this.elm.getElementsBySelector('._vrdt_cb'));this.updateContext();},toggleAllFormCheckboxes:function(){$A(this.celm.form.elements).each(function(elm){if(elm.type=='checkbox'&&elm.disabled===false){elm.checked=this.celm.checked;}}.bind(this));this.updateContext();return true;},updateContext:function(e){var num=0;if(this.celm){if(e&&this.celm&&!Event.element(e).checked){this.celm.checked=false;} $A(this.celm.form.elements).each(function(elm){if(elm.type=='checkbox'&&elm.checked&&elm.name!='all'){num+=1;}}.bind(this));} this.cbElms.each(function(belm){belm=belm.childNodes[0];var getValue=function(elm){if(elm.nodeName=='BUTTON') return $(elm).down('span').down('span').innerHTML;else return elm.value;};var setValue=function(elm,text){if(elm.nodeName=='BUTTON') elm.down('span').down('span').update(text);else elm.value=text};var btext=getValue(belm).replace(/ \([0-9]+\)$/,'');if(num>0){VR.Input.enable(belm);if(this.cbElms.length==1){setValue(belm,btext+' ('+num+')');}} else{VR.Input.disable(belm);if(this.cbElms.length==1){setValue(belm,btext);}}}.bind(this));}});VR.App.DataTableSearch=Class.create({advancedEnabled:false,initialize:function(opt){this.opt=opt;this.elm=$(opt.id);this.sessionKey='vrdtss_'+opt.id;this.frmElm=$(opt.id);this.advElm=$('_vrdt_search_advanced');this.colLink=$('_vrdt_search_hide');this.expLink=$('_vrdt_search_show');this.advLink=$('_vrdt_search_advanced_link');if(this.advLink){Event.observe(this.advLink,'click',this.toggleAdvanced.bind(this));if(opt.expand_advanced){this.expandAdvanced(1);}else{this.collapseAdvanced();}} if(this.colLink){Event.observe(this.colLink,'click',this.collapseSearch.bind(this));} if(this.expLink){Event.observe(this.expLink,'click',this.expandSearch.bind(this));} if(VR.App.SessionStore.get(this.sessionKey)=='off'){this.collapseSearch();}else{this.expandSearch();}},toggleAdvanced:function(){return(this.advancedEnabled)?this.collapseAdvanced():this.expandAdvanced(0);},expandAdvanced:function(quick){if(quick){this.advElm.show();}else{Effect.Appear(this.advElm);} this.advLink.update('Hide Advanced');this.advancedEnabled=true;},collapseAdvanced:function(){this.advElm.hide();this.advLink.update('Advanced');this.advancedEnabled=false;this.advElm.getElementsBySelector('input').each(function(elm){if(elm.type=='checkbox'||elm.type=='radio'){elm.checked=false;}else{elm.value='';}});this.advElm.getElementsBySelector('select').each(function(elm){elm.selectedIndex=0;});},expandSearch:function(){if(this.colLink){this.colLink.show();} if(this.expLink){this.expLink.hide();} this.frmElm.show();VR.App.SessionStore.set(this.sessionKey,'on');return false;},collapseSearch:function(){if(this.colLink){this.colLink.hide();} if(this.expLink){this.expLink.show();} this.frmElm.hide();VR.App.SessionStore.set(this.sessionKey,'off');return false;}});(function(){VR.emptyFunction=function emptyFunction(){};})();VR.RESTAPI.callbacks.onFailure=function(failure_transport){if(failure_transport.getStatus()==401){var onComplete=failure_transport.request.options.onComplete;failure_transport.request.options.onComplete=null;return VR.App.API.Request('/app/rest_api_session/create.json',{},{asynchronous:false,onFailure:function(session_transport){alert('We experienced an error while communicating with our servers.');location.reload(true);},onSuccess:function(session_transport){failure_transport.request.retry_request=new VR.RESTAPI.Request(failure_transport.request.url,$H(failure_transport.request.options).merge($H({onComplete:onComplete})).toObject());}});}};VR.App.API=Class.create();VR.App.API.Request=function(url,parameters,opt){if(Object.isFunction(opt)){opt={onSuccess:arguments[2]||VR.emptyFunction,onFailure:arguments[3]||VR.emptyFunction,onValidationError:arguments[4]||VR.emptyFunction,method:arguments[5]||'post'};} opt=$H({onSuccess:VR.emptyFunction,onFailure:VR.emptyFunction,onValidationError:VR.emptyFunction,method:'post'}).merge(opt);['onSuccess','onFailure','onValidationError'].each(function(on){if(!Object.isFunction(opt.get(on))){throw new Error("Expected "+on+" for VR.App.API.Request to be a function. found '"+(typeof opt.get(on))+"'");}});if(!Object.isString(opt.get('method'))){throw new Error("expected 'method' for VR.App.API.Request to be a string. found '"+(typeof opt.get('method'))+"'");} if(Object.isString(parameters)){parameters+='&authenticity_token='+VR.ENV.formAuthenticityToken;}else{parameters=$H(parameters);parameters.set('authenticity_token',VR.ENV.formAuthenticityToken);} return new VR.Ajax(url,{parameters:parameters,requestHeaders:{'X-Request-Context':'AJAX'},method:opt.get('method'),onSuccess:function(transport,json){if(transport.getStatus()==0&&opt.get('onAbort')) opt.get('onAbort')(transport);else if(transport.getHeader('X-Request-Error')&&opt.get('onValidationError')){opt.get('onValidationError')(transport,transport.responseJSON);}else{opt.get('onSuccess')(transport,transport.responseJSON);}}.bind(this),onFailure:function(transport){if(transport.getHeader('X-Request-Status')==526){alert('Unable to process request.');}else if(Object.isFunction(opt.get('onFailure'))){opt.get('onFailure')(transport);}},onException:function(transport,exception){(transport.options.onFailure||VR.emptyFunction)(transport);setTimeout(function(){throw exception;},1);}});};VR.App.API.prototype={initialize:function(){},findListMemberByEmailAddress:function(emailAddress,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/list_management/member/list.json',{'conditions[][field_name]':'email_address','conditions[][operator]':'EQ','conditions[][value]':emailAddress},onSuccess,onFailure,onError);},copySurvey:function(surveyId,newName,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/survey/copy/'+surveyId+'.json',$H({'survey[name]':newName}).toQueryString(),onSuccess,onFailure,onError);},saveSurveyAppearance:function(surveyId,params,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/survey/save_survey_appearance/'+surveyId+'.json',params,onSuccess,onFailure,onError);},deleteSurveyPage:function(pageId,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/page/delete/'+pageId+'.json',{},onSuccess,onFailure,onError);},moveSurveyPageUp:function(pageId,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/page/move_up/'+pageId+'.json',{},onSuccess,onFailure,onError);},moveSurveyPageDown:function(pageId,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/page/move_down/'+pageId+'.json',{},onSuccess,onFailure,onError);},addSurveyPageAfter:function(pageId,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/page/create_after/'+pageId+'.json',{},onSuccess,onFailure,onError);},addSurveyPageBreakAfter:function(pageId,questionId,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/page/break_after/'+pageId+'.json',$H({break_after_question:questionId}).toQueryString(),onSuccess,onFailure,onError);},saveSurveyPageName:function(surveyId,pageId,pageName,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/page/save/'+pageId+'.json',$H({survey_id:surveyId,page_name:pageName}),onSuccess,onFailure,onError);},saveSurveyPagePreambleText:function(surveyId,pageId,pagePreambleText,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/page/save/'+pageId+'.json',$H({survey_id:surveyId,preamble_text:pagePreambleText}),onSuccess,onFailure,onError);},buildSurveyQuestionForm:function(questionId,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/question/build/'+questionId+'.json',{},onSuccess,onFailure,onError);},editSurveyQuestion:function(questionId,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/question/edit/'+questionId+'.json',{},onSuccess,onFailure,onError);},copySurveyQuestion:function(questionId,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/question/copy/'+questionId+'.json',{},onSuccess,onFailure,onError);},saveSurveyQuestion:function(questionId,formData,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/question/save/'+questionId+'.json',$H(formData).toQueryString(),onSuccess,onFailure,onError);},createSurveyQuestion:function(pageId,previousQuestionId,questionType,formData,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/question/create.json',$H({previous_question_id:previousQuestionId,page_id:pageId,question_type:questionType}).merge(formData).toQueryString(),onSuccess,onFailure,onError);},deleteSurveyQuestion:function(questionId,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/question/delete/'+questionId+'.json',{},onSuccess,onFailure,onError);},setSurveyQuestionOrdinals:function(rawOrdinals,onSuccess,onFailure,onError){var ordinals={};$H(rawOrdinals).each(function(page){$H(page.value).each(function(question){ordinals['ordinals['+page.key+']['+question.key+']']=question.value;});});return new VR.App.API.Request('/app/surveys/question/save_ordinals.json',Object.toQueryString(ordinals),onSuccess,onFailure,onError);},newSurveyQuestion:function(surveyId,pageId,questionType,onSuccess,onFailure,onError){return new VR.App.API.Request('/app/surveys/question/new.json',$H({survey_id:surveyId,page_id:pageId,question_type:questionType}),onSuccess,onFailure,onError);},saveWidgetArrangement:function(page,arrangement,onSuccess,onFailure){var layout=$H({'page':page});$H(arrangement).each(function(p){layout.set('column['+p.key+']',p.value.join(','));});return new VR.App.API.Request('/app/connector/save_widget_arrangement',layout.toQueryString(),onSuccess,onFailure);},saveWidgetStateDataAndReturnNewRendering:function(widget_id,state,fromController,fromAction,onSuccess,onFailure){var qstring={widget_id:widget_id,from_controller:fromController,from_action:fromAction};$H(state).each(function(pair){qstring['widget_state['+pair.key+']']=pair.value;});return new VR.App.API.Request('/app/connector/save_widget_state_data_and_return_new_rendering',qstring,onSuccess,onFailure);},getPAYGRateQuotation:function(product_type,campaign_id,quantity,promotion_code,onSuccess,onFailure){return new VR.App.API.Request('/app/account/purchase/get_payg_rate_quotation.json',$H({product_type:product_type,campaign_id:campaign_id,quantity:quantity+'',promotion_code:promotion_code}).toQueryString(),onSuccess,onFailure);},getCreditCardDetailsForm:function(cardId,onSuccess,onFailure){return new VR.App.API.Request('/app/credit_card/details_form/'+cardId,'',onSuccess,onFailure);},customFieldsByList:function(lists,onSuccess){return new VR.App.API.Request('/app/connector/custom_fields_by_list',$H({list:lists.join(',')}).toQueryString(),onSuccess);},customFieldsByCampaign:function(campaigns,onSuccess){return new VR.App.API.Request('/app/connector/custom_fields_by_campaign',$H({campaign:campaigns.join(',')}).toQueryString(),onSuccess);},backgroundTaskStatus:function(taskId,onSuccess){return new VR.App.API.Request('/app/connector/background_task_status',$H({task_id:taskId}).toQueryString(),onSuccess);}};VR.App.BackgroundTaskPoller=Class.create();VR.App.BackgroundTaskPoller.TIMING_HANDLERS={standard:function(){return((new Date()-this.lastPolled)/(this.pollingFrequency*1000));},decending:function(){if(this.requests<5){return 5;} if(this.requests<15){return 10;} if(this.requests>20){return 30;} if(this.requests>30){return 60;} return false;}};VR.App.BackgroundTaskPoller.prototype=(function(){DEFAULT_OPTIONS={timeout:60,pollingFrequency:5,timingHandler:VR.App.BackgroundTaskPoller.TIMING_HANDLERS.standard,onIncomplete:VR.emptyFunction,onComplete:VR.emptyFunction,onTimeout:VR.emptyFunction,onError:VR.emptyFunction,onException:VR.emptyFunction};return{startTime:undefined,complete:undefined,requests:0,taskId:undefined,expirationTime:undefined,initialize:function(taskId,options){this.taskId=taskId;Object.extend(this,Object.clone(DEFAULT_OPTIONS).extend(options));this.expirationTime=new Date((new Date().getTime())+(this.timeout*1000));this.restart();},stop:function(){this.complete=true;return this;},restart:function(){this.startTime=this.lastPolled=new Date();this.complete=false;this.requests=0;this.request();return this;},status:function(){return this.status;},request:function(){if(this.complete){return this;} this.requests+=1;this.status='requesting';var request=new VR.App.API.Request('/app/connector/background_task_status',$H({task_id:this.taskId,version:'2.0'}).toQueryString(),function(transport,response){try{if(response.error){this.status='errored';return this.onError(response.error,transport,this);} if(response.status=='complete'){this.status='complete';var result;try{result=response.response_body;}catch(err){result=null;} return this.onComplete(result,response,transport,this);} if(this.expirationTimemaxTwitterPostChars){var chars=charCount-maxTwitterPostChars;countMessage=charPluralize(chars)+" over the limit for Twitter. (Post will be cut off on Twitter)";this._elmCounter.addClassName('tooManyChars');}else{var chars=maxTwitterPostChars-charCount;countMessage=charPluralize(chars)+" left for Twitter.";this._elmCounter.removeClassName('tooManyChars');} this._elmCounter.innerHTML=countMessage;}else{this._elmCounter.innerHTML=" ";}},destroy:function(){}});var _vrwe=null;VR.App.WidgetEditor=Class.create({initialize:function(pageName,controller,action){this.page=pageName;this.controller=controller;this.action=action;this.working=false;},spawnEditor:function(){_vrlb=new VR.PopUp(700,400,{onCreate:this.loadEditor.bind(this),onDestroy:this.destroy.bind(this)});},requestDrag:function(){return!this.working;},cancelConfiguration:function(elm){$(elm).up('._widget').getElementsByClassName('_widget_configuration')[0].hide();},saveConfiguration:function(elm){if(this.working){alert('Please wait until the last save is completed.');} this.cancelConfiguration(elm);var widget=elm.up('._widget');var widget_state=widget.getElementsByClassName('_widget_configuration')[0];var coords=this.getWidgetLocation(widget);var state={};widget_state.getElementsBySelector('._widget_state').each(function(elm){state[elm.name]=$F(elm);});this.setWorking(widget);(new VR.App.API()).saveWidgetStateDataAndReturnNewRendering(widget.id.replace('widget_',''),state,this.controller,this.action,function(transport){widget.update(transport.responseText);this.unsetWorking(widget);_am.reload();}.bind(this),function(transport){this.unsetWorking(widget);alert('Unable to save configuration.');}.bind(this));},getWidgetLocation:function(elm){var sandbox=$(elm).up('.amoebaSandbox');return{column:sandbox.id,ordinal:$(sandbox).immediateDescendants().indexOf($(elm))};},configureWidget:function(elm){$(elm).up('._widget').getElementsByClassName('_widget_configuration')[0].toggle();},setWorking:function(elm){this.working=true;((elm)?elm:document).getElementsBySelector('.widget_working').each(function(e){e.style.display='inline';});},unsetWorking:function(elm){this.working=false;((elm)?elm:document).getElementsBySelector('.widget_working').each(function(e){e.style.display='none';});},openPrefs:function(){$('homePrefs').style.display='block';},closePrefs:function(){$('homePrefs').style.display='none';},arrangeWidgets:function(rawArrangement,elm){arrangement={};$H(rawArrangement).each(function(nv){arrangement[nv[0].replace('column_','')]=nv[1].map(function(w){return w.replace('widget_','');});});this.setWorking(elm);(new VR.App.API()).saveWidgetArrangement(this.page,$H(arrangement),function(transport){this.unsetWorking(elm);}.bind(this),function(transport){this.unsetWorking();}.bind(this));},contextualizeWidgets:function(){document.getElementsBySelector('._widget').each(function(elm){this.contextualizeWidget(elm);}.bind(this));},preparePlace:function(elm,container){this._contextualizeWidget(elm,container);},contextualizeWidget:function(elm){this._contextualizeWidget(elm,elm.parentNode);},_contextualizeWidget:function(elm,container){$(container).classNames().each(function(cl){matches=cl.match(/^_widget_sandbox_([0-9]+)_([n0-9]+)$/);if(matches){w=matches[1];}});if(w=='n'){w=1000000;} elm.getElementsBySelector('._widget_content').each(function(cElm){cElm.classNames().each(function(cn){matches=cn.match(/^_widget_content_([0-9]+)_([n0-9]+)$/);if(matches&&((matches[2]!='n'&&w>=parseInt(matches[1],10)&&w<=parseInt(matches[2],10))||(matches[2]=='n'&&w>=parseInt(matches[1],10)))){$(cElm).show();}else{$(cElm).hide();}});});}});VR.App.Prompt=Class.create({opt:[],template:new Template('
'+'

'+'#{text}'+'

'+''+'
'+'
'+''+'
'+'
 
'+' | '+'Cancel '+'
'+'
'+'
'),initialize:function(title,text,field,value,onCancel,onSubmit,opt){this.opt=(opt===undefined)?{}:opt;this.title=title;this.text=text;this.field=field;this.value=value;this.onCancel=onCancel;this.onSubmit=onSubmit;this.working=false;this.render();},getValue:function(){return $('prompt_form_value').value;},render:function(){this.lb=new VR.PopUp(550,200,{onCreate:function(lb){lb.setContent(this.template.evaluate({text:this.text,field:this.field,maxlength:this.opt.maxlength}));if(this.opt.maxlength){$('prompt_form_value').maxlength=40;} $('prompt_form_value').value=this.value;Event.observe($('prompt_form_save'),'click',this.doSave.bind(this));Event.observe($('prompt_form_value'),'keyup',function(e){if(e.keyCode==Event.KEY_RETURN){this.doSave();}}.bind(this));Event.observe($('prompt_form_value'),'focus',function(e){Event.element(e).select();}.bind(this));Event.observe($('prompt_form_cancel'),'click',function(e){lb.destroy();this.onCancel(this);}.bind(this));$('prompt_form_value').focus();}.bind(this),closeLink:true,title:this.title});},doSave:function(){if(!this.working){this.startWorking();this.onSubmit(this.getValue(),this);}},destroy:function(){this.lb.destroy();},startWorking:function(){this.working=true;this.lb.showWorking();VR.Input.disable($('prompt_form_value'));VR.Input.disable($('prompt_form_save'));},stopWorking:function(){return new PeriodicalExecuter(function(pe){pe.stop();this.working=false;this.lb.hideWorking();VR.Input.enable($('prompt_form_value'));VR.Input.enable($('prompt_form_save'));}.bind(this),0.1);}});VR.App.Confirm=Class.create({opt:[],initialize:function(boldText,message,onCancel,onConfirm,opt){_vrc=this;this.opt=$H({height:225,width:470,title:'Confirmation',okText:'OK',cancelText:'Cancel'}).merge($H(opt));this.onCancel=onCancel;this.onConfirm=onConfirm;this.boldText=boldText;this.message=message;this.render();},render:function(){_vrlb=new VR.PopUp(this.opt.get('width'),this.opt.get('height'),{onCreate:function(lb){lb.setContent('

'+'

'+''+this.boldText+'

'+ this.message+'


'+' '+''+'

');}.bind(this),onDestroy:function(){},closeLink:true,title:this.opt.get('title')});},destroy:function(e){_vrlb.destroy();},cancel:function(e){this.destroy();this.onCancel();},confirm:function(e){this.onConfirm();}});VR.App.Rename=Class.create({initialize:function(id,name,opt){this.id=id;this.name=name;this.opt=(opt===undefined)?{}:opt;if(this.initializeDefaults){this.initializeDefaults();} if(_vrd){_vrd.destroy();} if(id&&name&&document.body){this.render();}},render:function(){(new VR.App.Prompt(this.title,this.text,this.field,this.name,function(){},this.submit.bind(this),{maxlength:this.opt.maxlength}));}});VR.App.Rename.Email=Class.create(VR.App.Rename,{title:'Rename Email',text:'Enter the new email name below:',field:'New Email Name',initializeDefaults:function(){if(VR.App.Rename.Email.cache[this.id]){this.name=VR.App.Rename.Email.cache[this.id];} this.opt.maxlength=40;},submit:function(txt,c){VR.App.API.Request('/app/emails/email/save/'+this.id+'.json?legacy='+Number(this.opt.legacy),{'email[name]':txt},function(transport,json){VR.App.Rename.Email.cache[this.id]=json.email.name;var txt=json.email.name.escapeHTML();this.opt.updateElements.each(function(elm){$(elm).innerHTML=txt;});c.destroy();if(this.opt.onComplete){this.opt.onComplete(json.email.name);}}.bind(this),function(transport,json){c.stopWorking();alert('A temporary error occurred. Please try again.');},function(transport,json){c.stopWorking();alert(json.error_message+"\n\nPlease click \"OK\" and provide a new name.");});}});VR.App.Rename.Email.cache={};VR.App.Actions=Class.create({initialize:function(elm,id,opt){this.elm=elm;this.id=id;this.opt=opt;if(!this.opt){this.opt={};} if(!this.opt.query_string_params){this.opt.query_string_params='';} if(elm&&this.canDisplay()){this.render();}},canDisplay:function(){return!(typeof(_am)!='undefined'&&_am.dragState);},render:function(){this.tr=$(this.elm).up('tr');if(this.tr){this.tr.style.backgroundColor='#ffc';} return new VR.Dialog(this.elm,210,this.getHeight(),this.getContent(),2,{ondestroy:this.destroy.bind(this)});},getContent:function(){},destroy:function(){if(this.tr){this.tr.style.backgroundColor='';}}});VR.App.Actions.Email=Class.create(VR.App.Actions,{getHeight:function(){if(this.opt.context_status=='active'){return 230;}else if(this.opt.unlaunch_only){return 115;}else{return 247;}},renameLink:function(){var name=VR.String.escapeQuotes(this.opt.name.escapeHTML());var url='Rename';return url;},getContent:function(){var t=new Template('#{name}');function l(href,name,title,onclick){return t.evaluate({href:(href)?href:'javascript:void(null)',onclick:(onclick)?' onclick="'+onclick+'"':'',name:name,title:(title)?title:name});} var deleteLink=((this.opt.legacy_email_schema)?l(null,'Delete',null,'_vrd.destroy();if (confirm(\'Are you sure you want to delete this email?\')) window.location=\'/app/emails/email/delete/'+this.id+'?legacy=1&'+this.opt.query_string_params+'\'; return false;'):l(null,'Delete',null,'_vrd.destroy();if (confirm(\'Are you sure you want to delete this email?\')) window.location=\'/app/emails/email/delete/'+this.id+'?'+this.opt.query_string_params+'\'; return false;')) if(this.opt.context_status=='active'){if(!this.opt.legacy_email_schema){return'';} else{return'';}}else if(this.opt.unlaunch_only){return'';}else{return'';}}});VR.App.Actions.Postcard=Class.create(VR.App.Actions,{getHeight:function(){return(this.opt.context_status=='active')?240:155;},getContent:function(){if(this.opt.context_status=='active'){return'';}else{return'';}}});VR.App.Actions.DBSeg=Class.create(VR.App.Actions,{getHeight:function(){return 200;},getContent:function(){return'';}});VR.App.Actions.OptinForm=Class.create(VR.App.Actions,{getHeight:function(){return 125;},getContent:function(){return'';}});VR.App.Actions.LegacyList=Class.create(VR.App.Actions,{getHeight:function(){return 210;},getContent:function(){return'';}});VR.App.Actions.List=Class.create(VR.App.Actions,{getHeight:function(){return 175;},getContent:function(){return'';}});VR.App.Actions.ListMember=Class.create(VR.App.Actions,{getHeight:function(){return 180;},getContent:function(){return'';}});VR.App.Actions.Survey=Class.create(VR.App.Actions,{getHeight:function(){return 205;},getContent:function(){return'';}});VR.App.Actions.Autoresponder=Class.create(VR.App.Actions,{getHeight:function(){return 148;},getContent:function(){var status=this.opt.status.toLowerCase();return'';}});VR.App.Actions.Autoresponder.Email=Class.create(VR.App.Actions,{getHeight:function(){return 100;},getContent:function(){var status=this.opt.status.toLowerCase();return'';}});VR.App.Actions.Subscription=Class.create(VR.App.Actions,{getHeight:function(){var height=122;return height;},getContent:function(){return'';}});VR.App.DynamicTabNav=Class.create({initialize:function(id){this.id=id;var parent=this;var folders=$('dfolders-'+id).getElementsBySelector('div.dynamic_folder');this.folders=folders;var folders_by_name=folders.inject({},function(folders,folder){folders[folder.getAttribute('name')]=folder;return folders;});var tabs=[];var default_tab=null;$('dtabs-'+id).getElementsBySelector('li.dynamic_tab').each(function(tab,i){tab=$(tab);var name=tab.getAttribute('name');var folder=folders_by_name[name];if(!folder){return;} tabs.push(new VR.App.DynamicTabNav.Tab(name,tab,folder,tabs));if(tab.getAttribute('is_default')!==null){default_tab=(tabs.length-1);}});this.tabs=tabs;var tab_matching_hash=tabs.pluck('name').find(function(name){return('#'+name==window.location.hash);});if(!!tab_matching_hash){this.findTabByName(tab_matching_hash).activate();}else if(default_tab){tabs[default_tab].activate();}else{tabs.first().activate();}},activeTab:function(){var index=tabs.invoke('isActive').indexOf(true);return(index==-1)?null:this.tabs[index];},findTabByName:function(name){return this.tabs.find(function(tab){return(tab.name==name);});}});VR.App.DynamicTabNav.Tab=Class.create({initialize:function(name,element,folder,siblings){this.name=name;this.element=element=$(element);if(!this.element){throw new Error('VR.App.DynamicTabNav.Tab requires argument 1 to be a valid dom element.');} this.folder=folder=$(folder);if(!this.folder){throw new Error('VR.App.DynamicTabNav.Tab requires argument 2 to be a valid dom element.');} this.siblings=siblings;element.addClassName('dynamic_tab').observe('click',function(event){Event.stop(event);this.activate();}.bindAsEventListener(this));},activate:function(){this.siblings.each(function(tab){if(tab.element!=this.element){tab.deactivate();}});this.element.removeClassName('inactive').addClassName('active');this.folder.show();window.location.hash='#'+this.name;},deactivate:function(){this.element.removeClassName('active').addClassName('inactive');this.folder.hide();},isActive:function(){return this.element.hasClassName('active');}});VR.App.PleaseWait={pwBox:null,show:function(msg,elm){this.hide();var vp=VR.Window.viewportSize();this.pwBox=$C('div',{classes:['please_wait'],html:''+msg+''});if(typeof elm==='undefined') document.body.appendChild(this.pwBox);else elm.appendChild(this.pwBox);},hide:function(){if(this.pwBox){this.pwBox.remove();} this.pwBox=null;}};VR.App.Templates={templates:{},get:function(name){return this.templates[name];},set:function(name,template){this.templates[name]=template;}};VR.App.ExpandableTextFields=Class.create({count:0,onAdd:function(){},onSubtract:function(){},opts:{min:1,max:0,initial:1,size:25},initialize:function(values,opts){values=values||[];opts=opts||{};this.opts=$H(this.opts).merge($H(opts)).toObject();this.id='expandable_'+(this.opts.id?this.opts.id:'text_fields');this.opts.min=(this.opts.min<=this.opts.max)?this.opts.min:this.opts.max;var initCount=this.opts.initial;initCount=initCount>values.length?initCount:values.length;initCount=this.opts.min>initCount?this.opts.min:initCount;initCount=((this.opts.max>0)&&(this.opts.max0&&this.count>=this.opts.max){return;} value=(typeof value=='string')?value:null;var domElm=$C('div',{classes:[this.id+'_row'],id:this.id+'_'+this.count,style:{marginBottom:'10px'}});var textElm=$C('input',{type:'text',size:this.opts.size,classes:['input'],value:value?value:'',name:this.id+'[]',style:{marginRight:'5px'}});var delElm=$C('a',{title:'Remove Field',html:'Remove field',href:'javascript:void(0)',classes:[this.id+'_remove_field']});this.count+=1;$(domElm).insert(textElm);$(domElm).insert(delElm);$(this.id).insert(domElm);$(domElm).down('.'+this.id+'_remove_field').observe('click',this.subtract.bind(this));this.toggleDeleteVisibility();this.updateCounterDisplay();this.onAdd(domElm);},toggleDeleteVisibility:function(){var textFields=$$('.'+this.id+'_row');$$('.'+this.id+'_remove_field').each(function(elm){(textFields.length<=this.opts.min)?elm.hide():elm.show();}.bind(this));(textFields.length==0)?$(this.id+'_empty').show():$(this.id+'_empty').hide();},subtract:function(e){var domElm=Event.element(e).up('.expandable_simple_seed_list_row');this.onSubtract(domElm);$(domElm).down('.'+this.id+'_remove_field').stopObserving('click');$(domElm).remove();this.count-=1;this.toggleDeleteVisibility();this.updateCounterDisplay();},updateCounterDisplay:function(){if(this.opts.max>0&&this.count>=this.opts.max){$(this.id+'_add_field').hide();$(this.id+'_full').show();} else{$(this.id+'_add_field').show();$(this.id+'_full').hide();}},disableInterface:function(){$$('.'+this.id+'_remove_field').each(function(elm){elm.setStyle({opacity:0.3,cursor:'default'});elm.stopObserving('click');}.bind(this));$(this.id).select('input').each(function(elm){elm.disable();});$(this.id+'_add_field').setStyle({opacity:0.3,cursor:'default'});$(this.id+'_add_field').stopObserving('click');},enableInterface:function(){this.disableInterface();$$('.'+this.id+'_remove_field').each(function(elm){elm.setStyle({opacity:1.0,cursor:'pointer'});elm.observe('click',this.subtract.bind(this));}.bind(this));$(this.id).select('input').each(function(elm){elm.enable();});$(this.id+'_add_field').setStyle({opacity:1.0,cursor:'pointer'});$(this.id+'_add_field').observe('click',this.add.bind(this));this.toggleDeleteVisibility();this.updateCounterDisplay();},registerListener:function(func,callback){this[func]=callback;}});IMLState=function(){this.setState=function(relPathField,httpPathField,previewContainer){this.isValid=true;this.relPathField=relPathField;this.httpPathField=httpPathField;this.previewContainer=previewContainer;} this.resetState=function(){this.isValid=false;this.relPathField=null;this.httpPathField=null;this.previewContainer=null;} this.setValues=function(relPath,httpPath,previewContainer){document.getElementById(this.relPathField).value=relPath;document.getElementById(this.httpPathField).value=httpPath;document.getElementById(this.previewContainer).innerHTML=previewContainer;} this.resetState();};var imlState=new IMLState();function imlSelector(relPathField,httpPathField,previewContainer){imlState.setState(relPathField,httpPathField,previewContainer);window.open('/mlibrary/select.html','imlselector','status=1,toolbar=1,location=0,resizable=1,menubar=0,width=700,height=500');} function imlSearchSelector(relPathField,httpPathField,previewContainer){imlState.setState(relPathField,httpPathField,previewContainer);window.open('/app/image_search/splash?context=library','imlselector','status=1,toolbar=1,location=0,resizable=1,menubar=0,width=824,height=600');} function postcardSearchSelector(relPathField,httpPathField,previewContainer){imlState.setState(relPathField,httpPathField,previewContainer);window.open('/app/image_search/splash?context=postcard','imlselector','status=1,toolbar=1,location=0,resizable=0,menubar=0,width=824,height=600');} var _vr_footer_state=null;VR.App.LiveSupport={live_support_timeout:null,supportAgentsAvailable:function(){document.getElementById('smartbutton').innerHTML='';return true;},supportAgentsNotAvailable:function(support_email){document.getElementById('smartbutton').innerHTML='';return true;},timeSupportFooter:function(display_chat,support_email){VR.App.LiveSupport.live_support_timeout=window.setTimeout('VR.App.LiveSupport.showSupportFooter('+display_chat+', "'+support_email+'")',625);},untimeSupportFooter:function(){window.clearTimeout(VR.App.LiveSupport.live_support_timeout);},showSupportFooter:function(display_chat,support_email){var elm=$('supportFooter');var liveChat='';_vr_support_lock=false;_vr_support_out=null;if(display_chat){liveChat='
'+'';} var supportDialog=new VR.Dialog($('footerLink'),350,150,elm.innerHTML+liveChat,4);},hideSupportFooter:function(){if(typeof _vrd!='undefined'&&typeof _vrd.destroy=='function'){_vrd.destroy();}}} function runWizard(h,w,content){oNewWindow=window.open(content,null,"height="+h+",width="+w+",status=no,toolbar=yes,resizable=yes,menubar=no,location=no,scrollbars=yes");} function sortCollectionByAttribute(collection,sortByAttribute,sortOrder,sortCase){collection=collection.sortBy(function(element){if('insensitive'==sortCase.toLowerCase()){try{return element[sortByAttribute].toLowerCase();} catch(e){return element[sortByAttribute];}}else{return element[sortByAttribute];}});if('desc'==sortOrder.toLowerCase()){collection.reverse();} return collection;} function previewCampaign(campaignId,addVars,showNav){if(campaignId){var prevWin=window.open('/campaign/preview_mailing.html?'+'cmpid='+campaignId+'&'+'addvars='+((addVars)?'true':'')+'&'+'shownav='+((showNav)?'true':''),'preview_email','height=500,width=770,status=yes,toolbar=yes,resizable=yes,menubar=yes,location=yes,scrollbars=yes');}} function CreateBookmarkLink(title,url){if(window.sidebar){window.sidebar.addPanel(title,url,"");}else if(window.external){window.external.AddFavorite(url,title);} else if(window.opera&&window.print){return true;}} function showVRConnectProgramHint(){var message=$('vr_connect_hint');var vrConnectHintDialog=new VR.Dialog($('vr_connect_hint_link'),350,200,message.innerHTML,4);} VR.App.Validation={validateMergeFields:function(content,defined_merge_field_struct){var re=/{[^\|}]+[\|}]/g;var parsed_merge_field_tokens=content.match(re) if(parsed_merge_field_tokens==null||parsed_merge_field_tokens.length==0) return[];var user_entered_merge_field_names=[];parsed_merge_field_tokens.each(function(token){user_entered_merge_field_names.push(token.substring(1,token.length-1));});var defined_merge_field_names=[];var undefined_merge_field_names=[];defined_merge_field_struct.each(function(field){defined_merge_field_names.push(field[0].toUpperCase());});user_entered_merge_field_names.each(function(user_entered_name){if(!defined_merge_field_names.include(user_entered_name.toUpperCase())) undefined_merge_field_names.push(user_entered_name);});return undefined_merge_field_names;},Signup:{validatePassword:function(password,cbSuccess,cbFailure,passwordPolicy){var defaultPasswordPolicy={maximumLength:32,minimumLength:8,minimumScore:2,rules:[[/\d+/,1],[/[A-Z]+/,1],[/[a-z]+/,1],[/[\\\/.,<>\?\*\+\-\[\]\{\}~`!@#\$%\^&\*\(\)_=\|'"]+/,1],[/\s/,-100]]};if(passwordPolicy==undefined)passwordPolicy=defaultPasswordPolicy;var score=0;if(password){for(var i=0;i=passwordPolicy.minimumLength)&&(password.length<=passwordPolicy.maximumLength)&&(score>=passwordPolicy.minimumScore)){if(cbSuccess)cbSuccess();return true;} if(cbFailure)cbFailure();} return false;},passwordsMatch:function(elmPassword,elmConfirmation){var password=elmPassword.value;var confirmation=elmConfirmation.value;var elmSubmit=$('submit_tag');var valid=function(){$$('#password_match .valid').first().show();$$('#password_match .notvalid').first().hide();if(elmSubmit)VR.Input.enable(elmSubmit);};var invalid=function(){$$('#password_match .valid').first().hide();$$('#password_match .notvalid').first().show();if(elmSubmit)VR.Input.disable(elmSubmit);};var reset=function(){$$('#password_match .valid').first().hide();$$('#password_match .notvalid').first().hide();if(elmSubmit)VR.Input.disable(elmSubmit);};if([password,confirmation].all()){if(password.length>confirmation.length){password=password.substr(0,confirmation.length);if(password!=confirmation)invalid();else reset();return;}else if(password.length==confirmation.length){if(password==confirmation)valid();else invalid();return;} invalid();return;} reset();},passwordValidated:function(){$$('#password_valid .valid').first().show();$$('#password_valid .notvalid').first().hide();},passwordNotValidated:function(){$$('#password_valid .valid').first().hide();$$('#password_valid .notvalid').first().show();}}}; if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="";_19+="";var _1d=this.getParams();for(var key in _1d){_19+="";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="";}_19+="";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",encodeURIComponent(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();if(!(navigator.plugins&&navigator.mimeTypes.length))window[this.getAttribute('id')]=document.getElementById(this.getAttribute('id'));return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.majorfv.major){return true;}if(this.minorfv.minor){return true;}if(this.rev=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject; if(typeof infosoftglobal=="undefined")var infosoftglobal=new Object();if(typeof infosoftglobal.FusionChartsUtil=="undefined")infosoftglobal.FusionChartsUtil=new Object();infosoftglobal.FusionCharts=function(swf,id,w,h,debugMode,registerWithJS,c,scaleMode,lang,detectFlashVersion,autoInstallRedirect){if(!document.getElementById){return;} this.initialDataSet=false;this.params=new Object();this.variables=new Object();this.attributes=new Array();if(swf){this.setAttribute('swf',swf);} if(id){this.setAttribute('id',id);} debugMode=debugMode?debugMode:0;this.addVariable('debugMode',debugMode);this.addParam('wmode','transparent');w=w.toString().replace(/\%$/,"%25");if(w){this.setAttribute('width',w);} h=h.toString().replace(/\%$/,"%25");if(h){this.setAttribute('height',h);} if(c){this.addParam('bgcolor',c);} this.addParam('quality','high');this.addParam('allowScriptAccess','always');this.addVariable('chartWidth',w);this.addVariable('chartHeight',h);this.addVariable('DOMId',id);registerWithJS=registerWithJS?registerWithJS:0;this.addVariable('registerWithJS',registerWithJS);scaleMode=scaleMode?scaleMode:'noScale';this.addVariable('scaleMode',scaleMode);lang=lang?lang:'EN';this.addVariable('lang',lang);this.detectFlashVersion=detectFlashVersion?detectFlashVersion:1;this.autoInstallRedirect=autoInstallRedirect?autoInstallRedirect:1;this.installedVer=infosoftglobal.FusionChartsUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){infosoftglobal.FusionCharts.doPrepUnload=true;}} infosoftglobal.FusionCharts.prototype={setAttribute:function(name,value){this.attributes[name]=value;},getAttribute:function(name){return this.attributes[name];},addParam:function(name,value){this.params[name]=value;},getParams:function(){return this.params;},addVariable:function(name,value){this.variables[name]=value;},getVariable:function(name){return this.variables[name];},getVariables:function(){return this.variables;},getVariablePairs:function(){var variablePairs=new Array();var key;var variables=this.getVariables();for(key in variables){variablePairs.push(key+"="+variables[key]);} return variablePairs;},getSWFHTML:function(){var swfNode="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){swfNode='0){swfNode+='flashvars="'+pairs+'"';} swfNode+='/>';}else{swfNode='';swfNode+='';var params=this.getParams();for(var key in params){swfNode+='';} var pairs=this.getVariablePairs().join("&");if(pairs.length>0){swfNode+='';} swfNode+="";} return swfNode;},setDataURL:function(strDataURL){if(this.initialDataSet==false){this.addVariable('dataURL',strDataURL);this.initialDataSet=true;}else{var chartObj=infosoftglobal.FusionChartsUtil.getChartObject(this.getAttribute('id'));if(!chartObj.setDataURL) {__flash__addCallback(chartObj,"setDataURL");} chartObj.setDataURL(strDataURL);}},encodeDataXML:function(strDataXML){var regExpReservedCharacters=["\\$","\\+"];var arrDQAtt=strDataXML.match(/=\s*\".*?\"/g);if(arrDQAtt){for(var i=0;i=0){var axo=1;var counter=3;while(axo){try{counter++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+counter);PlayerVersion=new infosoftglobal.PlayerVersion([counter,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");PlayerVersion=new infosoftglobal.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(PlayerVersion.major==6){return PlayerVersion;}} try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}} if(axo!=null){PlayerVersion=new infosoftglobal.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}} return PlayerVersion;} infosoftglobal.PlayerVersion=function(arrVersion){this.major=arrVersion[0]!=null?parseInt(arrVersion[0]):0;this.minor=arrVersion[1]!=null?parseInt(arrVersion[1]):0;this.rev=arrVersion[2]!=null?parseInt(arrVersion[2]):0;} infosoftglobal.FusionChartsUtil.cleanupSWFs=function(){var objects=document.getElementsByTagName("OBJECT");for(var i=objects.length-1;i>=0;i--){objects[i].style.display='none';for(var x in objects[i]){if(typeof objects[i][x]=='function'){objects[i][x]=function(){};}}}} if(infosoftglobal.FusionCharts.doPrepUnload){if(!infosoftglobal.unloadSet){infosoftglobal.FusionChartsUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",infosoftglobal.FusionChartsUtil.cleanupSWFs);} window.attachEvent("onbeforeunload",infosoftglobal.FusionChartsUtil.prepUnload);infosoftglobal.unloadSet=true;}} if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];}} if(Array.prototype.push==null){Array.prototype.push=function(item){this[this.length]=item;return this.length;}} infosoftglobal.FusionChartsUtil.getChartObject=function(id) {var chartRef=null;if(navigator.appName.indexOf("Microsoft Internet")==-1){if(document.embeds&&document.embeds[id]) chartRef=document.embeds[id];else chartRef=window.document[id];} else{chartRef=window[id];} if(!chartRef) chartRef=document.getElementById(id);return chartRef;} var getChartFromId=infosoftglobal.FusionChartsUtil.getChartObject;var FusionCharts=infosoftglobal.FusionCharts; VR.App.Email=Class.create();VR.App.Email.Compare=Class.create();VR.App.Email.Compare.prototype={emailLimit:25,maxCompare:5,slotPadding:8,initialize:function(opt){this.opt=opt;this.emailIds=opt.emailIds;this.suppressedEmailIds=[];this.emailNames=opt.emailNames;this.cache={};Event.observe($('email_selection_sort'),'change',this.displayEmails.bind(this));Event.observe($('email_selection_page'),'change',this.displayEmails.bind(this));Event.observe($('email_selection_reset'),'click',this.reset.bind(this));$$('.email_selection_toggle').each(function(elm){Event.observe(elm,'click',this.toggleEmailSelector.bind(this));}.bind(this));this.displayPctStats();this.setMode(this.opt.mode);this.updateEmailSlots();Event.observe(window,'resize',this.updateEmailSlots.bind(this));},displayPctStats:function(){this.statDisplayCallback=this.displayPctStats;$$('.email_compare_stat_count').each(function(elm){elm.hide();});$$('.email_compare_stat_pct').each(function(elm){elm.show();});},displayCountStats:function(){this.statDisplayCallback=this.displayCountStats;$$('.email_compare_stat_pct').each(function(elm){elm.hide();});$$('.email_compare_stat_count').each(function(elm){elm.show();});},reset:function(){this.emailIds=[];if(this.mode=='display') this.setMode('select');else{$$('.email_selector_checkbox').each(function(elm){elm.checked=false;});this.updateEmailSlots();}},removeEmail:function(id){this.emailIds=this.emailIds.without(id);this.updateEmailSlots();if(this.mode=='display')this.renderComparison();},toggleEmailSlotSuppress:function(elm,slot){var emailId=this.emailIds[slot];if(this.suppressedEmailIds.indexOf(emailId)>=0) this.unsuppressSlot(slot);else this.suppressSlot(slot);if(this.mode=='display')this.renderComparison();},suppressSlot:function(slot){this.suppressedEmailIds.push(this.emailIds[slot]);this.updateEmailSlots();},unsuppressSlot:function(slot){this.suppressedEmailIds=this.suppressedEmailIds.without(this.emailIds[slot]);this.updateEmailSlots();},toggleEmailSelector:function(e){if(this.mode=='display') this.setMode('select');else{if(this.emailIds.length<=1) alert('You must select at least two emails.') else this.setMode('display');} Event.stop(e);},setMode:function(mode){this.mode=mode;if(this.mode=='display'){$('email_selection_container').hide();$('email_selection_toggle_down').hide();$('email_selection_toggle_right').show();$('email_comparison_container').show();this.renderComparison();} else{$('email_selection_container').show();$('email_selection_toggle_down').show();$('email_selection_toggle_right').hide();if(this.emailIds.length<=1) $('email_comparison_container').hide();this.displayEmails();}},startWorking:function(){$('email_comparison_working_indicator').show();$('email_comparison_data').hide();},stopWorking:function(){$('email_comparison_working_indicator').hide();$('email_comparison_data').show();},renderComparison:function(){var event_types=$$('.event_types').map(function(elm){return(elm.checked)?elm.value:null}).compact();if(event_types.length==0){$('email_comparison_data').update('
No events were selected for comparison
');return;} if(this.emailIds.length==0){$('email_comparison_data').update('
No emails were selected for comparison
');return;} this.startWorking();if($('display_type_count').checked){$('display_type_count_label').style.fontWeight='bold';$('display_type_percent_label').style.fontWeight='';} else{$('display_type_count_label').style.fontWeight='';$('display_type_percent_label').style.fontWeight='bold';} VR.App.API.Request('/app/emails/report/compare/'+this.opt.id+'.json',{display_type:($('display_type_count').checked)?'count':'percent',email_ids:this.emailIds.join(','),suppressed_email_ids:this.suppressedEmailIds.join(','),event_types:event_types.join(',')},function(transport,json){this.stopWorking();$('email_comparison_data').update(json.comparison_html);$('email_comparison_data').show();this.statDisplayCallback();$H(json.chart_xml).each(function(nv){if(nv.value.length==0)return;var elm=$('compare_chart_'+nv.key);var f_chart=new FusionCharts('/app/fusioncharts/'+(($('display_type_count').checked)?'MSLine.swf':'MSBar3D.swf'),'chart_'+nv.key,390,250,0,1);f_chart.setDataXML(nv.value);f_chart.render(elm);}.bind(this));this.updateEmailSlots();}.bind(this),function(transport){this.stopWorking();}.bind(this),function(transport,json){this.stopWorking();}.bind(this));},addEmail:function(e){var elm=Event.element(e);if(elm.checked){if(this.emailIds.length==this.maxCompare){elm.checked=false;alert('You can only compare up to '+this.maxCompare+' emails.');} else this.emailIds.push($F(elm));} else{this.emailIds=this.emailIds.without(elm.value) this.suppressedEmailIds=this.suppressedEmailIds.without(elm.value)} this.updateEmailSlots();},updateEmailSlots:function(){if(this.emailIds.length==0) $('email_selection_slots_none').show();else $('email_selection_slots_none').hide();for(f=0;f=0) VR.Element.setOpacity($('email_selection_slot_'+f),.25);else VR.Element.setOpacity($('email_selection_slot_'+f),1);} else slotElm.hide();} var width=Math.floor(($('email_selection_slots').getWidth()-this.slotPadding)/this.emailIds.length);$$('.email_selection_slot').each(function(elm){elm.style.width=width+'px' elm.getElementsBySelector('.email_selection_slot_text').first().setStyle({width:(width-46)+'px'});}.bind(this));$$('.email_selector_checkbox').each(function(elm){elm.disabled=(this.emailIds.length>=this.maxCompare)?!elm.checked:false;}.bind(this));},renderEmails:function(html){$('email_selection_table_container').update(html);$$('#email_selection_table_container input.email_selector_checkbox').each(function(elm){if(this.emailIds.indexOf(elm.value.toInt())>=0) elm.checked=true;Event.observe(elm,'click',this.addEmail.bind(this));}.bind(this));},displayEmails:function(){$('email_selection_table_container').update('Loading sent emails...');this.emailThreshhold=$F('email_selection_page');this.emailSort=$F('email_selection_sort');var cacheKey=this.emailSort+'-'+this.emailLimit+'-'+this.emailThreshhold;if(this.cache[cacheKey]){this.renderEmails(this.cache[cacheKey]);this.updateEmailSlots();return;} VR.App.API.Request('/app/emails/report/compare_emails_table',{sort:this.emailSort,limit:this.emailLimit,threshhold:this.emailThreshhold},function(transport,json){this.cache[cacheKey]=json.html;this.renderEmails(this.cache[cacheKey]);json.emails.each(function(email){this.emailNames[email.id]=email.name;}.bind(this));pages=[];tcount=$('total_results_count').value;for(var p=0;p0)$('print_and_export').hide();if($('last_updated')){this.resetCounter();}},updateListStats:function(d){$$('.email_list_stat_'+d).each(function(elm){elm.show();});$$('.email_list_stat_'+((d=='pct')?'count':'pct')).each(function(elm){elm.hide();});},confirmAndDelete:function(){if(confirm('Are you sure you want to delete this email?')){window.location='/app/emails/email/delete/'+this.opt.email.id+'?redirect_with[status]=sent';}},editName:function(){new VR.App.Rename.Email(this.opt.email.id,this.opt.email.name,{onComplete:function(name){this.updateStatistics();}.bind(this),updateElements:['email_title','page_header']});return false;},editSupportEmail:function(){(new VR.App.Prompt('Change Reply Address','This email address will receive all replies to this email:','Reply-to Address',this.opt.email.support_email||this.opt.email.reply_to_email,function(){},function(txt,c){VR.App.API.Request('/app/emails/email/save/'+this.opt.email.id+'.json',{'email[support_email]':txt},function(transport,json){c.destroy();this.opt.email=json.email;if($('reply_to_address')) $('reply_to_address').update(txt.escapeHTML());else alert('Reply-to address changed.');}.bind(this),function(transport,json){alert('A temporary error occurred. Please try again.');c.stopWorking();},function(transport,json){alert(json.error_message);c.stopWorking();});}.bind(this),{maxlength:128}));},refreshPage:function(){window.location='/app/emails/email/show/'+this.opt.email.id+'?activity_timespan='+$F('activity_timespan');},updateStatistics:function(todo){if(this.exportFormat)return;if(!this.enableUpdate){this.refreshPage();return;} if(todo===undefined)todo=this.allTodo;this.indicatorsFor(todo).each(function(elm){elm.style.display='inline'});VR.App.API.Request(this.opt.email.id+'.json',{todo:todo,activity_timespan:$('activity_timespan').value},function(transport,json){todo['content'].each(function(w){if(json['html'][w])$(w+'_content').update(json['html'][w]);});todo['graphs'].each(function(w){if(json['graphs'][w]){this.opt[w+'_xml']=json['graphs'][w];this.renderChart(w);}}.bind(this));this.updateListStats('pct');this.indicatorsFor(todo).each(function(elm){elm.style.display='none'});this.resetCounter();}.bind(this),function(){},function(){});},indicatorsFor:function(todo){ind=[];$$('.product_dashboard_widget_indicator').each(function(elm){var widget=elm.id.replace(/_indicator$/,'');if($A(todo['content']).indexOf(widget)>=0||$A(todo['graphs']).indexOf(widget)>=0) ind.push(elm);});return ind;},resetCounter:function(){if(this.counter){this.counter.stop();this.counter_minutes=0;} if(this.updater) this.updater.stop();$('last_updated').update('Now');this.counter=new PeriodicalExecuter(function(){this.counter_minutes+=1;$('last_updated').update(this.counter_minutes+' minute'+((this.counter_minutes==1)?'':'s')+' ago');}.bind(this),60);if(this.enableUpdate) this.updater=new PeriodicalExecuter(function(pe){pe.stop();this.updateStatistics();}.bind(this),360);},renderCharts:function(){$H(this.charts).keys().each(function(chart){if(this.opt[chart+'_xml']) new PeriodicalExecuter(function(pe){if(window.frames[chart+'_frame']&&window.frames[chart+'_frame'].document&&window.frames[chart+'_frame'].document.renderMe){pe.stop();this.renderChart(chart);}}.bind(this),.1);}.bind(this));},renderChart:function(chart){window.frames[chart+'_frame'].document.renderMe(this.fcpath+this.charts[chart].name,this.charts[chart].width,this.charts[chart].height,this.opt[chart+'_xml']);},exportView:function(format){this.exportFormat=format;this.exportedCharts=[];VR.Shroud.show();VR.App.PleaseWait.show('Saving charts, please wait...');$H(this.charts).keys().each(function(f){frames[f+'_frame'].document.printMe();});},exportChartCallback:function(chart_type,image_url){this.exportedCharts.push([chart_type,image_url]);new PeriodicalExecuter(function(pe){pe.stop();this.renderCharts();VR.App.PleaseWait.show('Your download will begin momentarily.');var url='/app/emails/email/show/'+this.opt.email.id+'.'+this.exportFormat+'?use_print_layout=1&'+ this.exportedCharts.map(function(c){return c[0]+'='+c[1];}).join('&');VR.Window.popup(url,'export_popup','status=1,toolbar=1,location=1,resizable=1,scrollbars=1,menubar=1,width=900,height=500');this.exportFormat=null;new PeriodicalExecuter(function(pe){pe.stop();VR.App.PleaseWait.hide();VR.Shroud.hide();},8);}.bind(this),1);},changeLinkURL:function(linkHash,link,text){VR.App.Email.changeLinkURL(this.opt.email.id,linkHash,link,text,function(txt,c){this.updateStatistics({content:['show_clicks'],graphs:[]});c.destroy()}.bind(this));},shareEmail:function(emailId){_vrlb=new VR.PopUp(500,200,{onCreate:function(lb){lb.setContent('goodbye');},closeLink:true,title:'Share Email'});}} VR.App.Email.changeLinkURL=function(emailId,linkHash,link,text,onComplete){var cElm=$('email_popup_content_link');(new VR.App.Prompt('Edit Link URL','To change the click-through URL, enter the new one below:','New URL',link,function(){},function(txt,c){var params={url_hash:linkHash,url:txt} VR.App.API.Request('/app/emails/email/change_url/'+emailId+'.json',params,function(transport,json){onComplete(txt,c);}.bind(this),function(transport,json){c.stopWorking();alert('A temporary error occurred. Please try again.');},function(transport,json){c.stopWorking();alert(json.error_message);});}.bind(this),{maxlength:128}));} VR.App.Email.LayoutSelector=Class.create({messages:{confirmation:{canvas:'Are you sure you want to import this template? All existing content will be erased.',wizard:false}},categoriesPerPage:5,categories:{},subCategories:{},subCategoryMap:{},layouts:{},layoutMap:{},layoutCategoryMap:{},initialize:function(layoutId,emailType,opt){this.page=-1;this.layout={layout_id:layoutId};this.emailType=emailType;this.opt=$H(opt);this.cached={};if(this.opt.get('dontRender')==undefined||this.opt.get('dontRender')==false) this.render();},render:function(){this.opt.get('onStartWorking')('load');var cleanUp=function(){this.opt.get('onStopWorking')();};VR.App.API.Request('/app/emails/layout_selector/index',{layout_id:this.layout.layout_id},{onAbort:function(transport){cleanUp.call(this);}.bind(this),onSuccess:function(transport,response){this.layouts={} this.subCategories=response.sub_categories;$H(this.subCategories).values().flatten().each(function(subCategory){this.subCategoryMap[subCategory.category_id]=subCategory.parent_category_id;}.bind(this));var contentToRender='
'+response.interface_html+'
';if(this.opt.get('lightbox')!=undefined){this.opt.get('lightbox').setContent(contentToRender);this.opt.set('elm',this.opt.get('lightbox').popupElm);} else if(this.opt.get('elm')!=undefined) this.opt.get('elm').update(contentToRender);response.categories.each(function(category){$$('#email_category_'+category.category_id+' a')[0].observe('click',function(e){e.stop();this.selectCategory(category.category_id);}.bind(this));this.categories[category.category_id]=category;}.bind(this));$('select_layout_trigger').observe('click',this.importLayout.bindAsEventListener(this));if(this.opt.get('hideCancel')) $('cancel_layout_trigger').hide();else $('cancel_layout_trigger').observe('click',function(e){e.stop();this.opt.get('onCancel')()}.bind(this));this.opt.get('elm').select('.layout_category_paginate').each(function(elm){elm.observe('click',function(e){e.stop();this.selectPage(elm.getAttribute('category_id'));}.bind(this));}.bind(this));cleanUp.call(this);if(this.layout.layout_id){if(this.subCategoryMap[response.layout.layout_category]) this.selectCategory(this.subCategoryMap[response.layout.layout_category],this.layout.layout_id) else if(!this.categories[response.layout.layout_category]) this.selectCategory(response.categories[0].category_id);else this.selectCategory(response.layout.layout_category,this.layout.layout_id)} else if(response.categories.length!=0){this.selectCategory(response.categories[0].category_id);}}.bind(this)});},selectPage:function(page){this.page=page;this.opt.get('elm').select('.layout_category_page').each(function(elm){elm.hide();});$('layout_category_page_'+this.page).show();this.opt.get('elm').select('.layout_category_paginate').each(function(elm){elm.removeClassName('current');});$('layout_category_paginate_'+this.page).addClassName('current');if(this.categoryId&&this.page!=this.pageForCategory(this.categoryId)){this.selectCategory($('layout_category_page_'+this.page).down('.email_category').getAttribute('category_id'));}},loadLayouts:function(categoryId,callback){if(this.cached[categoryId]){callback();return;} var categories=[categoryId];if(this.subCategories[categoryId]) this.subCategories[categoryId].each(function(c){categories.push(c.category_id);});var cleanUp=function(){this.opt.get('onStopWorking')();};this.opt.get('onStartWorking')('load');VR.App.API.Request('/app/emails/layout_selector/layouts_by_category',categories.map(function(id){return'category_ids[]='+id;}).join('&'),{onAbort:function(transport){cleanUp.call(this);}.bind(this),onSuccess:function(transport,json){this.layouts=$H(this.layouts).merge($H(json.layouts)).toObject();$H(json.layouts).values().flatten().each(function(layout){this.layoutMap[layout.layout_id]=layout;this.layoutCategoryMap[layout.layout_id]=layout.layout_category;}.bind(this));this.cached[categoryId]=true;cleanUp.call(this);callback();}.bind(this)});},selectCategory:function(categoryId,layoutId){this.loadLayouts(categoryId,function(){var page=this.pageForCategory(categoryId);if(this.page!=page)this.selectPage(page);$$('li.email_category').each(function(elm){elm.removeClassName('selected_category');});$('email_category_'+categoryId).addClassName('selected_category');$('layout_thumbnails').update();this.categoryId=categoryId;if(!this.layouts[categoryId]&&!this.subCategories[categoryId]){$('layout_thumbnails').update('This category contains no layouts.');this.selectLayout(null);} else if(!this.subCategories[categoryId]){this.renderThumbnails(this.layouts[categoryId],layoutId,$('layout_thumbnails'));if(!layoutId) this.selectLayout(this.layouts[categoryId][0]);} else this.renderSubCategories(this.subCategories[categoryId],categoryId,layoutId);}.bind(this));},pageForCategory:function(categoryId){return $('email_category_'+categoryId).up('.layout_category_page').getAttribute('page');},selectLayout:function(layout){$$('li.email_layout').each(function(elm){elm.removeClassName('selected_layout');});if(!layout){$('layout_preview_thumbnail').hide();this.layout=false;VR.Input.disable($('select_layout_trigger'));return;} VR.Input.enable($('select_layout_trigger'));$('email_layout_'+layout.layout_id).addClassName('selected_layout');$('layout_preview_thumbnail').show();$('layout_preview_thumbnail').src=layout.large_thumbnail_path;this.layout=layout;},importLayout:function(){if(this.layout&&(!this.messages.confirmation[this.emailType]||confirm(this.messages.confirmation[this.emailType]))){this.opt.get('onStartWorking')('import');VR.App.API.Request('/app/emails/layout_selector/render_for_'+this.emailType+'.json',{layout_id:this.layout.layout_id},{onAbort:function(transport){this.opt.get('onStopWorking')();}.bind(this),onSuccess:function(transport,response){this.opt.get('onSelect')(this.layout.layout_id,response.layout_html,response.subjects);this.opt.get('onStopWorking')();}.bind(this)});}},renderSubCategories:function(subCategories,parentCategoryId,layoutId){if(this.layouts[parentCategoryId]) subCategories=[this.categories[parentCategoryId]].concat(subCategories);subCategories.each(function(subCategory){var subCategoryHeader=$C('div',{id:'email_sub_category_header_'+subCategory.category_id,classes:['email_sub_category_header'],onclick:function(){if($('email_sub_category_layouts_'+subCategory.category_id).visible()) $('email_sub_category_header_'+subCategory.category_id).addClassName('collapsed');else $('email_sub_category_header_'+subCategory.category_id).removeClassName('collapsed');$('email_sub_category_layouts_'+subCategory.category_id).toggle();}}).update(subCategory['category_name']);var subCategoryLayouts=$C('div',{id:'email_sub_category_layouts_'+subCategory.category_id,classes:['email_sub_category_layouts','clearfix']});var arrow=$C('img',{src:VR_IMAGE_HOST+'/cobrand/vr/email/email.builder.drawer.indicator.png',classes:['email_sub_category_header_arrow']});$('layout_thumbnails').appendChild(subCategoryHeader);subCategoryHeader.insert({top:arrow});$('layout_thumbnails').appendChild(subCategoryLayouts);if(!this.layouts[subCategory['category_id']]){subCategoryLayouts.update('This sub category contains no templates.');this.selectLayout(null);} else this.renderThumbnails(this.layouts[subCategory['category_id']],layoutId,subCategoryLayouts);}.bind(this));if(!layoutId&&this.layouts[subCategories[0].category_id]) this.selectLayout(this.layouts[subCategories[0].category_id][0]);else this.selectLayout(this.layoutMap[layoutId]);},renderThumbnails:function(layouts,layoutId,elm){var listElm=$C('ul');var selectedLayout=null;layouts=layouts.sort(function(a,b){return(a.layout_id>b.layout_id)?-1:1;});layouts.each(function(layout){var itemElm=$C('li',{id:'email_layout_'+layout.layout_id,classes:['email_layout'],onclick:function(){this.selectLayout(layout);}.bind(this)});itemElm.appendChild($C('img',{style:{height:'110px',width:'80px'},src:layout.small_thumbnail_path}));listElm.appendChild(itemElm);if(layoutId==layout.layout_id)selectedLayout=layout;}.bind(this));elm.update(listElm);this.selectLayout(selectedLayout);}});_text/javascript ,-./O2bplist00bcX$versionX$objectsY$archiverT$top"()0!12HIJKLMNOPQRSTUVWX\]U$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_bhttps://img-ak.verticalresponse.com/styling/asset/1279143973/server.js?app/js/vr.app.htmleditor.js*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#Am3456?WNS.keysZNS.objects789:;<=> @ABCDEFGVServerZConnectionUX-Pad\Content-Type]Last-Modified^Content-LengthTDateTEtagVApacheZkeep-alive_avoid browser bug_text/javascript_Wed, 14 Jul 2010 21:46:13 GMTU18660_Wed, 28 Jul 2010 00:18:27 GMT_6e6d-e06d-5cb41eb4*+YZ_NSMutableDictionaryY[/\NSDictionaryH*+^__NSHTTPURLResponse`a/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverde_WebResourceResponse#-27V\wz~BGR[adjs|~*>Ppv +.DfF_bhttps://img-ak.verticalresponse.com/styling/asset/1279143973/server.js?app/js/vr.app.htmleditor.jsOHVR.App.HTMLEditor = Class.create({ default_options: { ckeditor: { toolbarCanCollapse: false, fullPage: true, enterMode: (typeof CKEDITOR === 'undefined') ? null : CKEDITOR.ENTER_P, shiftEnterMode: (typeof CKEDITOR === 'undefined') ? null : CKEDITOR.ENTER_BR, tabSpaces: 4, undoStackSize: 50, dialog_backgroundCoverOpacity: 0.7, dialog_backgroundCoverColor: '#000', fontSize_sizes: '8pt/8pt;10pt/10pt;12pt/12pt;14pt/14pt;18pt/18pt;24pt/24pt;36pt/36pt', removePlugins: 'filebrowser,flash,forms,image', extraPlugins: 'vr_global_styles,vr_merge_fields,vr_image', browserContextMenuOnCtrl: false, scayt_autoStartup: false, scayt_contextCommands: 'ignore|ignoreall', scayt_uiTabs: '1,1,0', scayt_customerid: '1:1ggTb3-FJNOR3-FTgdt3-4PEmu4-ZkUPd-jv9rI3-Mdu9t-imt9j2-p5unF-7Kw3z' } }, toolbars: { default_toolbar: [ ['Undo','Redo'], ['Find','Replace'], ['Cut','Copy','Paste','PasteText','PasteFromWord'], ['VRImage','Link','Unlink','Anchor','SpecialChar','HorizontalRule'], ['Table'], ['TextColor','BGColor'], ['SpellChecker','Scayt'], '/', ['Format','Font','FontSize'], ['Bold','Italic','Underline','Strike'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'], ['Maximize', 'ShowBlocks'], ['SelectAll','RemoveFormat'] ], email_canvas_vr: [ ['Cut','Copy','Paste','PasteText','PasteFromWord'], ['Undo','Redo'], ['Find','Replace'], ['Scayt'], ['Bold','Italic','Underline','Strike'], ['Table'], ['VRImage'], ['Link','Unlink','Anchor','SpecialChar','HorizontalRule'], ['VRGlobalStyles'], '/', ['VRMergeFields','Format','Font','FontSize'], ['TextColor','BGColor'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['BulletedList','NumberedList'], ['Outdent','Indent','Blockquote'], ['RemoveFormat'] ], email_canvas_intuit: [ ['Font','FontSize'], ['Undo','Redo'], ['Link','Unlink'], ['RemoveFormat'], ['Bold','Italic','Underline'], ['TextColor'], ['Scayt'] ], word_sanitizer: [ ['PasteFromWord'] ] }, // Make a textarea a WYSIWYG or HTML Code editor initialize: function(elm, opt) { this.element = elm; this.editor = opt['editor']; this.editor_version = opt['version']; if (this.editor == 'ckeditor') this.htmlEditor = this.setupCKEditor(opt); else if (this.editor == 'smarkup'){ this.htmlEditor = this.setupSmarkup(opt); } }, setupCKEditor: function(opt) { opt = $H({ toolbar: 'default_toolbar', height: 350, width: 938, version: '3.3.1', merge_field_config: { survey_link: false, forward_to_a_friend: false, hosted_version: false, fields: { } }, choose_layout_callback: function() { } }).merge($H(opt)); this.initialContent = opt.get('initial_content'); ckoptions = $H(this.default_options[this.editor]); ckoptions.update( $H({ skin: 'vr,/ckeditor/vr/skins/' + opt.get('version') + '/vr/', height: opt.get('height'), resize_minHeight: opt.get('height'), resize_maxWidth: opt.get('width'), resize_minWidth: opt.get('width'), merge_field_config: opt.get('merge_field_config'), choose_layout_callback: opt.get('choose_layout_callback'), toolbar: this.toolbars[opt.get('toolbar')] }) ); // Listen to dialogDefinition incase the lang file is reloaded without us knowing it CKEDITOR.on('dialogDefinition', function() { CKEDITOR.lang['en']['common']['confirmCancel'] = "Some of the options have been changed. Are you sure you want to close this dialog?" ; }); return CKEDITOR.replace(this.element.id, ckoptions.toObject()); }, setupSmarkup: function(opt) { opt = $H({ config: 'vr_html', height: 350, merge_field_config: { survey_link: false, forward_to_a_friend: false, hosted_version: false, fields: { } } }).merge($H(opt)); this.config = opt.get('config'); SMarkUp.bind(this.element.id, opt.get('config'), opt.get('height')); if (this.config == 'vr_html' || this.config == 'vr_text_only'){ $$('div#id-smarkup-' + this.element.id + ' ul.smarkup-toolbar a.insert_merge_field_dropdown')[0].replace(this.smarkupMergeFieldsConfig(opt.get('merge_field_config'))); } return SMarkUp.getInstance(this.element.id); }, smarkupMergeFieldsConfig: function(merge_field_config){ var mergeFieldDropdown = new Element('select', { 'class': 'dropdown insert_merge_field_dropdown', style: 'max-width: 150px;'}); mergeFieldDropdown.insert(''); if (merge_field_config['survey_link']){ var surveyLinkOption = new Element('option', {value: '__sv'}).update('Survey Link'); mergeFieldDropdown.insert(surveyLinkOption); } if (merge_field_config['forward_to_a_friend']){ var forwardLinkOption = new Element('option', {value: '__ff'}).update('Forward to a Friend Link'); mergeFieldDropdown.insert(forwardLinkOption); } if (merge_field_config['hosted_version']){ var hostedLinkOption = new Element('option', {value: '__ho'}).update('Hosted Version Link'); mergeFieldDropdown.insert(hostedLinkOption); } merge_field_config['fields'].each(function(field){ mergeFieldOption = new Element('option', {value: field[0]}).update(field[1]); mergeFieldDropdown.insert(mergeFieldOption); }); mergeFieldDropdown.observe('change', function(event){ var value = Event.element(event).value; // Forward to a friend HTML if (value == '__ff') { selectedMergeField = { url: '{VR_F2AF_LINK}', field: 'Forward this message to a friend' }; } // Unsubscribe HTML else if (value == '__un') { selectedMergeField = { url: '#', field: 'Click to unsubscribe' }; } // Hosted email HTML else if (value == '__ho') { selectedMergeField = { url: '{VR_HOSTED_LINK}', field: 'Click to view this email in a browser' }; } // Merge Field and Survey merge field // These are ones that make an AJAX request that needs to be handled by the calling editor else if (value != ''){ selectedMergeField = { field: value }; } if (selectedMergeField && selectedMergeField['url']){ if (this.config == 'vr_text_only'){ this.htmlEditor.insert({ open: '', placeholder: selectedMergeField['field'], close: ' - ' + selectedMergeField['url'] }); } else if (this.config == 'vr_html'){ this.htmlEditor.insert({ open: '', placeholder: selectedMergeField['field'], close: '' }); } } else if (selectedMergeField){ // Survey link HTML if (selectedMergeField['field'] == '__sv') { new VR.App.SurveySelector('tinymce', function(survey_hash, link_text) { if (this.config == 'vr_text_only'){ this.htmlEditor.paste( link_text + ' - {VR_SURVEY_LINK(' + survey_hash + ')}' ); } else if (this.config == 'vr_html'){ this.htmlEditor.paste( '' + link_text + '' ); } }.bind(this), function() { } ); } // Merge Field else if (selectedMergeField['field'] != ''){ new VR.App.MergeFieldCreator('tinymce', selectedMergeField['field'], function(selected_merge_field) { this.htmlEditor.paste( selected_merge_field ); }.bind(this), function() { } ); } } Event.element(event).value = ''; }.bind(this)); return mergeFieldDropdown; }, destroy: function() { if (this.editor == 'ckeditor') { if (!this.htmlEditor.theme) this.htmlEditor.theme = { destroy: function() { }}; // Bug fix/hack for "this.theme is undefined" error this.htmlEditor.destroy(true); } else if (this.editor == 'smarkup') this.htmlEditor.remove(); }, // Trigger a save event. Accepts an options has that can contain the following: // // onClean -- function to clean HTML. signature is function(html) { return cleanHtml; } save: function(opt) { if (typeof opt !== 'undefined' && opt.onClean) { if (this.editor == 'ckeditor') { opt.onClean($(CKEDITOR.instances[this.element.id].document.$)); } }; // only need to save on ckeditor since smarkup edits the text area directly if (this.editor == 'ckeditor'){ this.element.value = this.addDocType(this.htmlEditor.getData()); } else{ // this.element.value = this.addDocType(clean(this.element.value)); } }, // Add XHTML doc type to the html addDocType: function(content){ // never add DocType to text-only version if (this.config == 'vr_text_only') return content; var reg = new RegExp("<\!DOCTYPE"); if(reg.test(content) == false) content = '' + content; return content; }, // Return the editor's contents after saving the editor getContent: function(opt) { this.save(opt); return this.element.value; }, // Set the editor's contents setContent: function(htmlContent) { this.save(); if (this.editor == 'ckeditor'){ this.htmlEditor.setData(htmlContent); // this.save(); } else if (this.editor == 'smarkup'){ this.htmlEditor.value(htmlContent); } }, // Get the length of the HTML for the editor contentLength: function() { return this.getContent().length; }, // Convert and return the text only version of the editor textContent: function(){ return VR.App.HTMLEditor.htmlToText(this.getContent()); } }); VR.App.HTMLEditor.htmlToText = function(textContent) { var specialCharacters = [ ['160','nbsp'],['161','iexcl'],['162','cent'],['163','pound'],['164','curren'], ['165','yen'],['166','brvbar'],['167','sect'],['168','uml'],['169','copy'],['170','ordf'],['171','laquo'],['172','not'], ['173','shy'],['174','reg'],['175','macr'],['176','deg'],['177','plusmn'],['178','sup2'],['179','sup3'],['180','acute'], ['181','micro'],['182','para'],['183','middot'],['184','cedil'],['185','sup1'],['186','ordm'],['187','raquo'], ['188','frac14'],['189','frac12'],['190','frac34'],['191','iquest'],['192','Agrave'],['193','Aacute'], ['194','Acirc'],['195','Atilde'],['196','Auml'],['197','Aring'],['198','AElig'],['199','Ccedil'],['200','Egrave'], ['201','Eacute'],['202','Ecirc'],['203','Euml'],['204','Igrave'],['205','Iacute'],['206','Icirc'],['207','Iuml'], ['208','ETH'],['209','Ntilde'],['210','Ograve'],['211','Oacute'],['212','Ocirc'],['213','Otilde'],['214','Ouml'], ['215','times'],['216','Oslash'],['217','Ugrave'],['218','Uacute'],['219','Ucirc'],['220','Uuml'],['221','Yacute'], ['222','THORN'],['223','szlig'],['224','agrave'],['225','aacute'],['226','acirc'],['227','atilde'],['228','auml'], ['229','aring'],['230','aelig'],['231','ccedil'],['232','egrave'],['233','eacute'],['234','ecirc'],['235','euml'], ['236','igrave'],['237','iacute'],['238','icirc'],['239','iuml'],['240','eth'],['241','ntilde'],['242','ograve'], ['243','oacute'],['244','ocirc'],['245','otilde'],['246','ouml'],['247','divide'],['248','oslash'],['249','ugrave'], ['250','uacute'],['251','ucirc'],['252','uuml'],['253','yacute'],['254','thorn'],['255','yuml'],['402','fnof'], ['913','Alpha'],['914','Beta'],['915','Gamma'],['916','Delta'],['917','Epsilon'],['918','Zeta'],['919','Eta'], ['920','Theta'],['921','Iota'],['922','Kappa'],['923','Lambda'],['924','Mu'],['925','Nu'],['926','Xi'],['927','Omicron'], ['928','Pi'],['929','Rho'],['931','Sigma'],['932','Tau'],['933','Upsilon'],['934','Phi'],['935','Chi'],['936','Psi'], ['937','Omega'],['945','alpha'],['946','beta'],['947','gamma'],['948','delta'],['949','epsilon'],['950','zeta'], ['951','eta'],['952','theta'],['953','iota'],['954','kappa'],['955','lambda'],['956','mu'],['957','nu'],['958','xi'], ['959','omicron'],['960','pi'],['961','rho'],['962','sigmaf'],['963','sigma'],['964','tau'],['965','upsilon'], ['966','phi'],['967','chi'],['968','psi'],['969','omega'],['977','thetasym'],['978','upsih'],['982','piv'], ['8226','bull'],['8230','hellip'],['8242','prime'],['8243','Prime'],['8254','oline'],['8260','frasl'], ['8472','weierp'],['8465','image'],['8476','real'],['8482','trade'],['8501','alefsym'],['8592','larr'], ['8593','uarr'],['8594','rarr'],['8595','darr'],['8596','harr'],['8629','crarr'],['8656','lArr'],['8657','uArr'], ['8658','rArr'],['8659','dArr'],['8660','hArr'],['8704','forall'],['8706','part'],['8707','exist'],['8709','empty'], ['8711','nabla'],['8712','isin'],['8713','notin'],['8715','ni'],['8719','prod'],['8721','sum'],['8722','minus'], ['8727','lowast'],['8730','radic'],['8733','prop'],['8734','infin'],['8736','ang'],['8743','and'],['8744','or'], ['8745','cap'],['8746','cup'],['8747','int'],['8756','there4'],['8764','sim'],['8773','cong'],['8776','asymp'], ['8800','ne'],['8801','equiv'],['8804','le'],['8805','ge'],['8834','sub'],['8835','sup'],['8836','nsub'],['8838','sube'], ['8970','lfloor'],['8971','rfloor'],['9001','lang'],['9002','rang'],['9674','loz'],['9824','spades'], ['9827','clubs'],['9829','hearts'],['9830','diams'],['38','amp'],['338','OElig'], ['339','oelig'],['352','Scaron'],['353','scaron'],['376','Yuml'],['710','circ'],['732','tilde'],['8194','ensp'], ['8195','emsp'],['8201','thinsp'],['8204','zwnj'],['8205','zwj'],['8206','lrm'],['8207','rlm'],['8211','ndash'], ['8212','mdash'],['8216','lsquo'],['8217','rsquo'],['8218','sbquo'],['8220','ldquo'],['8221','rdquo'], ['8222','bdquo'],['8224','dagger'],['8225','Dagger'],['8240','permil'],['8249','lsaquo'],['8250','rsaquo'], ['8364','euro'],['60','lt'],['62','gt'],['34','quot'] ]; textContent = textContent.replace(/< *head *>([\s\S]*)<\/ *head *>/im, ''); // delete everything before and after the body tags // textContent = textContent.replace(/([\s\S]*)<[^>]*body[^>]*>/im, ''); // textContent = textContent.replace(/<\/[^>]*body[^>]*>([\s\S]*)/im, ''); // Remove carriage returns, tabs, and silly amounts of whitespace textContent = textContent.replace(/[\r\t]/gi, ""); textContent = textContent.replace(/\n/gi, " "); // textContent = textContent.replace(/^\n+|\n+$/g, ""); // Convert closing

tags into 2 line breaks textContent = textContent.replace(/<\/* *p *>/gi, "\n\n"); // Convert closing
tags into a line break textContent = textContent.replace(/<\/* *div *>/gi, "\n"); // Convert
tags in to a line break textContent = textContent.replace(/< *br *\/*>/gi, "\n"); // Remove style textContent = textContent.replace(/<[^>]*style[^>]*>[^<]*<\/[^>]*style[^>]*>/gi, ""); // Remove script textContent = textContent.replace(/<[^>]*script[^>]*>[^<]*<\/[^>]*script[^>]*>/gi, ""); // Convert tags to "text [url]" textContent = textContent.replace(/]*href=[\"']*([^\"']*)[\"']*[^>]*>([^<]*)(<*)/ig, function (strMatch, p1, p2, p3){ var IECleanURL = /IECleanURL=[\"']*([^\"']*)[\"']/ig var cleanURL = IECleanURL.exec(strMatch); if(cleanURL){ p1 = cleanURL[1]; } var URLHash = /^(#[\w\-]+)$/; p1 = p1.replace(/^mailto:/, ''); if(URLHash.test(p1)){ return p2 + ' ' + p3; } else{ if(p1 == p2) return p2 + ' ' + p3; else return p2 + ' - ' + p1.replace(' ', '%20') + ' ' + p3; } }); textContent = textContent.replace(/<\/?[^>]+(>|$)/g, ''); // Convert   to a space textContent = textContent.replace(/\ /gi, ' '); // Remove crap that makes the customer think we are incompetant textContent = textContent.replace(/^[ \r\n\t]+Untitled document[ \r\n\t]+/gi, ''); // Replace single, double quotes, dashes textContent = textContent.replace(/\&[lr]squo;/gi, '\''); textContent = textContent.replace(/\'/gi, '\''); textContent = textContent.replace(/\&[lr]dquo;/gi, '"'); textContent = textContent.replace(/\—/gi, '--'); textContent = textContent.replace(/\–/gi, '-'); textContent = textContent.replace(/\…/gi, '...'); textContent = textContent.replace(/\&/gi, '&'); textContent = textContent.replace(/ *\n */gi, "\n"); textContent = textContent.replace(/\n\n+/gi, "\n\n"); textContent = textContent.replace(/^\n+|\n+$/g, ""); for(var i = 0; i < specialCharacters.length; i++){ textContent = textContent.replace(new RegExp('&' + specialCharacters[i][1] + ';', 'gi'), String.fromCharCode(specialCharacters[i][0])); } return textContent; }; VR.App.HTMLEditor.sanitizeWord = function(content, callback) { var ckeditorVersion = '3.3.1'; var pluginURL = VR.ENV.imageHost + '/styling/asset/0/server.js?lib/js/ckeditor/' + ckeditorVersion + '/plugins/pastefromword/filter/default.js'; content = content.strip(); if (content.length == 0) { callback(''); return; } // Enter Ninja var wrapper = $C('div', { style: { display: 'none' }}); var fauxditer = $C('textarea', { id: 'fauxditor_' + Math.random(10000), style: { display: 'none' }}); wrapper.appendChild(fauxditer); document.body.appendChild(wrapper); CKEDITOR.scriptLoader.load(pluginURL, function() { var editor = new VR.App.HTMLEditor(fauxditer, { editor: 'ckeditor', version: ckeditorVersion, toolbar: 'word_sanitizer' }); var cleanHTML = CKEDITOR.cleanWord.call(CKEDITOR.instances[fauxditer.id], content, CKEDITOR.instances[fauxditer.id]); (function() { editor.destroy(); }).delay(2); (function() { wrapper.remove(); }).delay(2); callback(cleanHTML); }.bind(this), null, false, true ); // Exit Ninja }; _text/javascript12 34567_WebResourceFrameName_WebResourceTextEncodingName_Ahttps://app.verticalresponse.com/app/emails/email/view/1536004161]preview_emailUUTF-8O VerticalResponse: Emails
Ytext/html9_:Y;@EJOT <=>?O\bplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Ihttps://8d716a75cb-custmedia.vresp.com/67af2349ca/SyndicateSpeaksBlog.jpg*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AUe3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-RangesZConnection\Content-TypeTDate]Last-Modified^Content-LengthTVaryTEtagZKeep-AliveVApacheUbytesZKeep-AliveZimage/jpeg_Wed, 28 Jul 2010 04:32:21 GMT_Sun, 27 Jun 2010 23:19:25 GMTV159612THost_"26f7c-48a0b3c225940"_timeout=3, max=512*+ab_NSMutableDictionaryac/\NSDictionaryo|*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~-2=FLOU^gipx'.4?Jj %3EH^n`_Ihttps://8d716a75cb-custmedia.vresp.com/67af2349ca/SyndicateSpeaksBlog.jpgOo|JFIFHH$3ExifMM*nv(1~2i ' 'Adobe Photoshop CS4 Macintosh2010:06:27 18:18:14 *2(:"HHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?w/ߋӰTMc=7znۻ.";trU--}5/olSҳѲV}Tͬ=ŷER,>kn~m626Uo.} `%;Zxo߼`&ց@*zn2vMX\5vGw{}oRg?:E%v_2沷bwݿf\>= t&]sޛ"&1w}Gt8MΞw_} 7``c=Mog~opuU>nѰ6m5Yg՛im;oQl;wR͵:+i2:7;]h.ddC0GĿUA2#t 6jhyCwAI۬ >uRm%̬-Y_]-̏4VЬV1}kDovԸWbފ-%wHᗋ){ZKI#vEY{Z ocv9ZFQwSgGc7?:4% ?>DO>Kmkcq41KMTCn/{Yot0r:xm aNʳ>G$}W l6㥏oZ,9%>|쎮Xϸ\ޤXϐ+澓CKk;4RSuAqޮ #ݩ>scvo%6φGVYm-ᕏ.lo ́%<+:]cÚe<柣N=ЗSus]G$ߔgX?X8ЗS箿;BGCw3G^6В8sz|?ha]9&7n͐A-+}\r I Enh>zFpFhD5h4v=˼oն;1'6yqf&<^q](J:HؽE< }p~egIUNA^S+m^],l?o9z/~0z#?d;?Ah`zߛuj:cku#]MmmҚewѡWS2coOܪ}M,o Gq~8.8z02};CV k0.%Xm9p{?hXmsZ^}WY^S/۷ۋW:jǯ דղ gi /MfPٺ~>lv-=O;hwl}Mg?M龵K*oRm\)$Mk&7VWhPO.XgtKvf>_sK^ kW}7Ws=Jw2?¥;=_%KԻeײ-Wc?b:ީmޝTGl_cXM~k(FuEzq]ײ'RN__ӥA\r ޏgۓE4}<Uξ>@NYW?hYdTc?{VV17uϭcvֻxߥO-ORcm/W_k{*OIDe-fΣq w wY]?E~g?UwC:c4OQWKY8~>>u92ؑd :Tek`_e-z^DS.s|w, m|?)/j ?Eg VX}82^kZ79?֪g Kvn2z-eγnª>5eӟ6%93=ŷmfO\G1c^cUlnqǤۃ a\?9W̎mmŏOaזmz7>]u[jelpZg)߻y#/T|5V*XcscPm$Vb}M_Uj{} iwع#?-t.kn=G"zQyusD5}ps[}Asnۻf鈴F7U5 cwr=k1Cl۽̥7lgmL  Vxk"⧛_Z~% G'!{_n_ξ}SZbt0ׂ`5/T?mt?I wƇ~ֹͥw_]+W V/6dž`[cZK[gKwXz{*wߤ7F~oQk6,8[[e0z~[Yt'=W6t2V[ցA J 97%2ᵹ uoZﱌGomc/ݏVd2ʚFE!XEsl}goZABHyLdӒ6 ns?b*u l!:ڇWu4U{%[lsZ0nce5}ɢS=>'c.(. ?ǚ'&H?G/E[,Kg͕UMTkv;i}k\\R]_E@e-[~= 6 YkG}ӛU,%zVzoM1~kqu~hRGN߽/O\PaskÜ7voϵwdF[e՚z^?Eu69Muiekr2(v{=,~znE 9pmuw=c>^%8@}T6q_!F̽?zC*{Ŏc@/ -nw%$,aOd,JOtrum$n1;$4XiE^ݯer5&ODa@)m>3SoqhGJ?)vN#o.pUoZNKZ?;MMX8akv85ݳ = }7VEoKw /Mޥl-sGl 8Y֊pUۚѵii$m=)[YuX̖>leLo<$3&+ȩߦc*t Ϳ{oKZЧ-s:{[]3%^~?ڹn-.1Ƹ"\$ԯfzLf!lwnmN.g^wzYHe4-+һ -;[c[,U,FlǴE`p=Qǧ6w c7]lu7'ck79ޓ\n}ס[[?Wq69X@n2n?z?+ n5!դV6{}FڒS ne62bEO (7zdnS}7No!CWuNc*#KA=ܖoPw5hk,c# ?oj+).D;cNkp3mȻZ^e5ʙ^;{K?fW릺SS h hGRÑyqc*k wXw~B.ߑwYCXFc+izv=oG?f>\#Lbj̓&P[O_[f7cO{*qޯ.UL5e4M69̰`m[cMmz"27ֵ,s?J]mTvZW}~ِ ׾\FVl vwٽK}zgrpB@:DG,y|9_#1J2zse1C_ m6:LZv&6OӇ Wbq̬KcKz~j=\]eG-(Ƕ~=NCVi^[eWW]>+5\ւuw16~X|y>ic|e?Ta[23ꇺ-,u=J+lf %VT2Iu-ߣz?e{M*֬P(X9cݿ`cweE>:^1OHpqOI1Q]OLJ\gV=Wz]gD~;<~mzJL//YDq|zg= cE3YXk}bon6{6Z 6.u-v0W>cc7UsԌc [==,,f*s__G2Oֆ {qֆvֽEHl2\=[oqEemWeoMgnAH3cjxn$[MfMMu6q{Gi5imoٷn{iȢ;BSM4Zǖ\^ꪦ?FBT#jCGUɽYENS]'N}O^OӪc=HhOퟣ>_Irk0Y`*uuUk-{v̷zuIֳ }oZ[_x麟%J?۫e]g3qe-s)~G3qo=51N;_oW΋}j፫[zE^=?Mh3`~ǵXx{WfEޝ=?~ԬyoX, Ʈ~˜ѹѥJrq=Vzc2RƃPm?ggk+=Vכ~ͻCz8ٶuLHuhgk-ߛ=M2:M9W^Uw6]XfKvvׅgyeo(fd' W/Pmr9+0 QM^5MH>"wX1K09H{_쥕[ZuL)|쵎cm?ͩCNGV?-gjg#tL F_PϢe0iaV懵7֧s=m٭j- ..\j{qX2UB]_֌R"ЏʘSKu dב%͵ YhpeGI4H4WJ"BtcShkIAswΏkhBZl#ޘvta,1IrA0Ԉn,{V'SWVIꎺMMkk|]>ϹtSWWS|YraR]_ .O;{/,6~not$Q@hn)wV۲s7ˬ`],oeu NFׇW쥻;[ne?e$;XuzˎF]CNۿGt`mT?2ms+ ;_ ҽ ]9x!Hk3w9{_V?}z@@;'\= vƎV⽮l[Ydz^l}Sm=Oiv܈^[[=]U7(w%ʾl~Eg[ҹ֗C1?~WOs/T.s^,@m;۶cY,IFmk0zಿVcrZ?f$4i;~IQc_cO=KͲ6?q&Ldc!!$A9Uu5-c^kX=ٰKӳUOEjkf3|mvTok"b7pCW/D?ǟ ]s8b,yTi&}' JܧVEgf7OTxqMZ8~,aX9~< iF#>28ycX}wn~f?\HF|k?Yt -,?`r>w}su2u|ULsKI9ӏlݿZI)R69_4_ݮun{Xw(SoFycX-ym~oeyg} 愒S7Cm=z{? \K_W;ua~?H߳N$)wB }-kwo\Mw6W8/7m,}Vz~޷eZI)U[SҳѲV}Tͬ=ŷER,>kn~m626Uo.} `%;Zxo߼`&ց@*zn2vMX\5vGw{}oRg?:E%v_2沷bwݿf\>= t&]sޛ"&1w}Gt8MΞw_} 7``c=Mog~opuU>nѰ6m5Yg՛im;oQl;wR͵:+i2:7;]h.ddC0GĿUA2#t 6jhyCwAI۬ >uRm%̬-Y_]-̏4VЬV1}kDovԸWbފ-%wHᗋ){ZKI#vEY{Z ocv9ZFQwSgGc7?:4% ?>DO>Kmkcq41KMTCn/{Yot0r:xm aNʳ>G$}W l6㥏oZ,9%>|쎮Xϸ\ޤXϐ+澓CKk;4RSuAqޮ #ݩ>scvo%6φGVYm-ᕏ.lo ́%<+:]cÚe<柣N=ЗSus]G$ߔgX?X8ЗS箿;BGCw3G^6В8sz|?ha]9&7n͐A-+}\r I Enh>zFpFhD5h4v=˼oն;1'6yqf&<^q](J:HؽE< }p~egIUNA^S+m^],l?o9z/~0z#?d;?Ah`zߛuj:cku#]MmmҚewѡWS2coOܪ}M,o Gq~8.8z02};CV k0.%Xm9p{?hXmsZ^}WY^S/۷ۋW:jǯ דղ gi /MfPٺ~>lv-=O;hwl}Mg?M龵K*oRm\)$Mk&7VWhPO.XgtKvf>_sK^ kW}7Ws=Jw2?¥;=_%KԻeײ-Wc?b:ީmޝTGl_cXM~k(FuEzq]ײ'RN__ӥA\r ޏgۓE4}<Uξ>@NYW?hYdTc?{VV17uϭcvֻxߥO-ORcm/W_k{*OIDe-fΣq w wY]?E~g?UwC:c4OQWKY8~>>u92ؑd :Tek`_e-z^DS.s|w, m|?)/j ?Eg VX}82^kZ79?֪g Kvn2z-eγnª>5eӟ6%93=ŷmfO\G1c^cUlnqǤۃ a\?9W̎mmŏOaזmz7>]u[jelpZg)߻y#/T|5V*XcscPm$Vb}M_Uj{} iwع#?-t.kn=G"zQyusD5}ps[}Asnۻf鈴F7U5 cwr=k1Cl۽̥7lgmL  Vxk"⧛_Z~% G'!{_n_ξ}SZbt0ׂ`5/T?mt?I wƇ~ֹͥw_]+W V/6dž`[cZK[gKwXz{*wߤ7F~oQk6,8[[e0z~[Yt'=W6t2V[ցA J 97%2ᵹ uoZﱌGomc/ݏVd2ʚFE!XEsl}goZABHyLdӒ6 ns?b*u l!:ڇWu4U{%[lsZ0nce5}ɢS=>'c.(. ?ǚ'&H?G/E[,Kg͕UMTkv;i}k\\R]_E@e-[~= 6 YkG}ӛU,%zVzoM1~kqu~hRGN߽/O\PaskÜ7voϵwdF[e՚z^?Eu69Muiekr2(v{=,~znE 9pmuw=c>^%8@}T6q_!F̽?zC*{Ŏc@/ -nw%$,aOd,JOtrum$n1;$4XiE^ݯer5&ODa@)m>3SoqhGJ?)vN#o.pUoZNKZ?;MMX8akv85ݳ = }7VEoKw /Mޥl-sGl 8Y֊pUۚѵii$m=)[YuX̖>leLo<$3&+ȩߦc*t Ϳ{oKZЧ-s:{[]3%^~?ڹn-.1Ƹ"\$ԯfzLf!lwnmN.g^wzYHe4-+һ -;[c[,U,FlǴE`p=Qǧ6w c7]lu7'ck79ޓ\n}ס[[?Wq69X@n2n?z?+ n5!դV6{}FڒS ne62bEO (7zdnS}7No!CWuNc*#KA=ܖoPw5hk,c# ?oj+).D;cNkp3mȻZ^e5ʙ^;{K?fW릺SS h hGRÑyqc*k wXw~B.ߑwYCXFc+izv=oG?f>\#Lbj̓&P[O_[f7cO{*qޯ.UL5e4M69̰`m[cMmz"27ֵ,s?J]mTvZW}~ِ ׾\FVl vwٽK}zgrpB@:DG,y|9_#1J2zse1C_ m6:LZv&6OӇ Wbq̬KcKz~j=\]eG-(Ƕ~=NCVi^[eWW]>+5\ւuw16~X|y>ic|e?Ta[23ꇺ-,u=J+lf %VT2Iu-ߣz?e{M*֬P(X9cݿ`cweE>:^1OHpqOI1Q]OLJ\gV=Wz]gD~;<~mzJL//YDq|zg= cE3YXk}bon6{6Z 6.u-v0W>cc7UsԌc [==,,f*s__G2Oֆ {qֆvֽEHl2\=[oqEemWeoMgnAH3cjxn$[MfMMu6q{Gi5imoٷn{iȢ;BSM4Zǖ\^ꪦ?FBT#jCGUɽYENS]'N}O^OӪc=HhOퟣ>_Irk0Y`*uuUk-{v̷zuIֳ }oZ[_x麟%J?۫e]g3qe-s)~G3qo=51N;_oW΋}j፫[zE^=?Mh3`~ǵXx{WfEޝ=?~ԬyoX, Ʈ~˜ѹѥJrq=Vzc2RƃPm?ggk+=Vכ~ͻCz8ٶuLHuhgk-ߛ=M2:M9W^Uw6]XfKvvׅgyeo(fd' W/Pmr9+0 QM^5MH>"wX1K09H{_쥕[ZuL)|쵎cm?ͩCNGV?-gjg#tL F_PϢe0iaV懵7֧s=m٭j- ..\j{qX2UB]_֌R"ЏʘSKu dב%͵ YhpeGI4H4WJ"BtcShkIAswΏkhBZl#ޘvta,1IrA0Ԉn,{V'SWVIꎺMMkk|]>ϹtSWWS|YraR]_ .O;{/,6~not$Q@hn)wV۲s7ˬ`],oeu NFׇW쥻;[ne?e$;XuzˎF]CNۿGt`mT?2ms+ ;_ ҽ ]9x!Hk3w9{_V?}z@@;'\= vƎV⽮l[Ydz^l}Sm=Oiv܈^[[=]U7(w%ʾl~Eg[ҹ֗C1?~WOs/T.s^,@m;۶cY,IFmk0zಿVcrZ?f$4i;~IQc_cO=KͲ6?q&Ldc!!$A9Uu5-c^kX=ٰKӳUOEjkf3|mvTok"b7pCW/D?ǟ ]s8b,yTi&}' JܧVEgf7OTxqMZ8~,aX9~< iF#>28ycX}wn~f?\HF|k?Yt -,?`r>w}su2u|ULsKI9ӏlݿZI)R69_4_ݮun{Xw(SoFycX-ym~oeyg} 愒S7Cm=z{? \K_W;ua~?H߳N$)wB }-kwo\Mw6W8/7m,}Vz~޷eZI)U[FStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslongclLCntlong8BIMRoll8BIMmfri8BIMhttp://ns.adobe.com/xap/1.0/ C      C  X g  ! 1"AQ2abcq #BS$3Rruv%&459Cs6Dde'7EFVf8Ugt J !1AQ"aq2B#Rbr3$S4c%Cs ?D%(DJ"QciWT ޫ&IRdvm2$F4~c̯#[fNȓv[ip.\k34'ˢw'`Ѱ$ʥB%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%U(+=UK{>:"P rwy{+d{2 -+z:;KZ;Vk%f$Ol]?庌̂F_͹IQT)ws}v^\YےJmmmE@ XҲ 4PD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD-OnX1AǣBңQŭ)OrwcE|/$5;y7_\ 1ԭ*i~trӻJ>{"j7P(AB{מ|;cWY1-k`eb>q_ԙG&7_0׏.M ޥ&W:z^^ɒ0>y$w=USJCsxerKt}5O>R/SX oa6T t%mʐ>[}]O^2ն6ݝ=d.[,qwR͗Q+NJjvێ#gn`~*Uru- V-} n+ ZedINtlR LexjUĢ%(DJ"mڈD%(FD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QlvJϞ® IBen xq{Yw6-h[NnC)cbAZw}q]֜sTdB~5Nx*lͼE|\q. YpxȺV2cP]̭{9m紆? g]msrzZUTJA%G`6ܓ^KJ.SNz%2,ElQ>lۈ%'j^@{][t}x ̅EvX No"[-SL6=mv@y]֥nChJ޾m>/8#Qyrwv)Z<7|?-7\kjf-ep@= yUzc5`E<>f\uqyoĮTT[l)k>HFW74EdYn/*RR HRW5$/sވe-szNFlZ"G+.xEǮgCn%*޺Goy|C_:!C'>s*{Ya?9׿fϟѮw],"\ӄ7^)GM%Ԑv7Ijk:|:7s=4q+6=7Q$ю\}4$êw JM<_9t02|8[ycdY8 yd+X$ZW޼f<;Q>f6Z8C. Á ^ iEm869obYs\KB^JJBW;)jm<ۡdQWO3 0c)l+K{,Afy {<߻a͹ß'ktg88Qd]阋jzCm'o) 7qG/߆/[9gHy{Dï\DO7m\NEݥvgYwv.Cz%\x; qmTNܾHmA$ְ|+}@ cEg :{Y~ƗIir[:HFqkaM)[Qyb9ƾg!V}\-`8{MǢ$8>:\$7 "\,p(FȶG*IJV{∠~?HCQuۡcX . 8Sv1\Ҳp+t/i۸ <Ҟ0o ]^{_c-,ra]m_=}#s;lEp?7ẒN/xL53VAݿF RҰ I |xuϤc9){òV[nC˼BO2[X%@;ma[(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD%(FTܚ@R'mXxS>`\ڥs mOH?~h3pįocZQڛvnOʵOv+'t^ʢGm/zn'!k}cR^e~^eÔGr?-+s|?I in][xu?&/wr -I/\JT /+gawȴL?c ŭnBXm@j)dJ}~? -5NJ0ʈ]sxo4/6or,9~/7;\۞>S̕,nΰ!M5-ы,xYfzr(B,˹lXTwvQ4:ֶn>+*[Y7\Y*Bcnհv[O;&"smIoZCdLDbcPX%'q4E-2M61@:om}QȎ m>qkBN%e@$ڈ[9O#eY%{wru"B P n({/n8{9EpV{ʙJs⠤>jeWSIIϗ(Qg̳q9ډ׋KduPyp5z"՚"QD%(DJ"QQ3kE"шخy-UYX̩#6(vE /]+%CB乳Dho8#* ډW&oXGlg^\O+4X)*QSʮ ;lw{="ʮ]nA'4!oK rqg"QΩe/xii^y(QyV7J{QDNBlA}N6xhk<̗Mt.ˬ0d*#EJyjZp C|X'cی9vƕK*iΡE+mhP*J$";}D$ I'` ? "vEB"%(DJ"Q bPvJ2 ǚCiַƽNyWhRq!}2mv70_BaB/^2{'ڐVtZg>xڽc 1t5 )xuu"ZEpar+C+h%ǓGSo_~nTi;CchPw`{;KipGv/89ԯo!u k^͖'+Gb:ׄ1dnۘ'S&7 QbrQx?~6ۧzpB˓Ү6y^S,%IHm PA@ H A붤cZg 7J&ߚ9 Cey $%\$oE2 6EugVJ`.㿺#m6+_pY'Lu֌!8q&)AO嶒m܏Cl*<$W UO˦ZӪ z*YFig"!@/e-Dpِ_M%my㨊%G oD_C]!\3*N]Z6Cђjc8lUȥ6N\J(x^E_:YKB>Kkrض#vKrHΦO\ ^(4`9hM;iꢻbmӹyw>1>%^N\JbHE񫎉0$s_4H;ƈпG &N+tH<< 2F+(~{Q Yq:s܌˃1SrBw//몺d 4,oCɮ8[./KќuARHB~R8_Hsa/w,!k"! *H;?". L9=ӻ&p#0Hv9AaNrýDrR` oD_o^)mڃFzo]uFC*8O.{[S(DJ"QD%(DWd6ӎ̽ݥX,>쵮%oDN Tˆ7#sŮew ldCQd_u" R:u-6PN"urqɦ7Y2Ys'}DWxG._KUW оndpS󫦝Qe=G:-hWQƺ<"ݒo@@nHWa߰)WJK36x~O̵h6;!|%A+A*_2h>YŦ[0]]ܩYdKsV92CYmVBGr(HxNq| ^CY/`1-mʵ ۶v/,'׋챳|UO22nnHInyI=QۿaXx՞ K.GNq_i\R$H(()nڹTT9'tkoīM7z-0}74G':R^ێs,v&eP-&2KIoO2PDju+N,R%}D\˖ֻ$~O@\ZpuZ JIYGdlEfvkVVVuy\fr~ i,ƖڔRS)yQ-kq[ ݢ/Qn?0B+c=^ڈ,{^Ĵ3:aY?sFj ոwtS?[j 0Uv %@nw/^q:cxMɇl_dͱmim%KVPIDV]uK>{0k L$ͯLED&ޮLyQ+iRNGa)GrI$W X`Ʈm9 _7T;,YO/Psm.?Z2gVO.qo^1/rs[ga[(6 ?sDX}ub1ܑYƙJnOͭ8`$sv:S_0hamKBZ2|hy,)% XX}!U؊1¸8 z` ϝ1/RK.w /?D]y^3զ&Riq+Y.4V,z"DnIdVUH-WywzGe`ͷ̀t(`&뾪d?bsoix;"L]K\;{y:4ٗX^[nʋ!aea֖*iRo!ڈiE| NZoΝ݅5GiԆiRKߺwI4E_3n0k}Nkm"|uK["ў"2[ZȸrSu,a4% HE8Ԟ(ѧ\w醕[MԜbrw&[^bKoQN=E&xiCzY>g\mkyݥn1mcWl)jJTFPrh1yğᲤT Dh?k0 ~Ka#i+QAT`HmPxGr,nvOuq!C0.8m;s#ވ)w F` w*DFL8emrk`Yl9vS2̈́$xBL]=E FY9}ACTz7pՖ;`>wNi5Ť9#xx_F ,b6 ԥI*}ͺJRHJ}?pFSy}G\zr*Zv碕JJ"QO5scb+}6n=Vœo%+v;fS̒Ilk?Z{stՔErw [2"mń$D$ w(W_?[6a39$zxa)GIiB(!ʼE2\Ĕ0SeRz :]钀:"%IWxD5zN!o*5eڑW!C\8Ew5W. tKP[Zz{Ɖ} >Rp9H;"SlZުtoQ kOxivp1WjQXuTr~uk^YVHD^/D9pW%Q')BqRmVawטifar튘@ۨ)J{ʒw Zۓ!9΁CYȖmRHqJ\Aˉ`N%=[`-̵ez-RKn+%=Hh'GZZt}9xK̻ťΔ&"8Γɱ duE,oDT&u(DJ"QD%(DJ"QD%(DJ"QD%(DJ"QD z"|uo=KmԬrĥ)MVLi>/ۙD^4W3ډįc:=־;cI%LOʽ(ѬK%qɌݠIL(p 꼓4orcu:@ xd)Ƒ?uSS8-VzmٓAhZ6DyY#so*5uVxe+U?tV@Q^/nAmGʐ:lP'Q2Eka6* ƚ^G!&|*??#k,#? Wo¹n0.p=]=@Y}&ժU]´ zeď݌*BjZ<9ӷy;)"fc51y۴6mWFpgdzʧ+1q+*<\7)pTTRs'%[nlx搥k{NjU??|`<;w̰_Ju׍K9cP;Fuq *$9d*RU$Yا׽ *[kj-;O.jFͤ3}Bnq˜ؐKdJXiRܧH~lrG;\> 264x33?Uz[Y-vLݗ96jd`2yJW*9)Wp"b6nk7#i@ilt5Z>?C}159cW;5ɺ!SU)ICNa|ߗzpeuqtsd{ZemGY~S`v[;!3 g|EŴg?b}%!nP,l | H.JJR:@,EhW8jvU9≪=<-snMwZtVh9dFHl5p;g˰[VRm#*EdW\(jy lҒԝH\O:(ֱu0\r2H""`N>g|gGo%El[Hfc7!Ԑ1OQKIM`⻛jD^9$4m mpi &=\g ʽƴ;v5ml-1s)ҝiiPl, mNʥOpՌ^Ry*dg'"LAxbrmV1n$&LD<݁}rVRNĀ;X I4/GΨ- #,<\-Cz5\aܲ|f}Cv(6ȏ]#88%0SOPmU^Eؚ]3C{"7]Y[.4Ga,7WLmhؤ$uE DsNgv`J~@.<]d~ >93?a\fWJ3SZ*q;8E;δBAqu`y:Pp x꣭lZ5/^7k,Kqmm*=Ur,Rr{u?TsNZ?z+babQ@^ {ƈ.pdT]K$ ǕsQ}V ZGxnVU6Ԯo),Pj]u<8j\ ,K@Q׶ƼÏ v@e^~Ho֮IH 8'*lͶm1鷷_WkP݌}iuI e AFGsgaA5X %2{Wp0E|K,-򗛎{k/}VHuNH;((#ja+j/^i ؗ8"4tw_u1L cg1[.'1EE0oƓ_yM(!jۛunTKʯ)S mFדvA΄Z8}!dw^!\vrVyr ͚lj06Kp)*Jw~[jpe`s6: kC]1g8^|ox{k;`3SiDW9B1 e񙼼@R"bsQ$rV+m'8SsWhT|M%Lrq\$$b:SaG浌;:_M3#OYi`l Y.Q$fO^Q~v/;k%^eHGyeL_^Yq*FMDk9|3w=PhNkurS[OU $%%GQm;Vvs[QAs[0A&FKsiGгx L .I}\d6YO*2I;$w;Zqf?sue"v2V`h0OP荻y5$96?{>ԇ2-k.IXWA`+:zy5dNRc^ӛX>(]"ViOQZ6w.j ڤe-is-Qm1fΧz($\ax2hYmEC %^O| .IDv 7@΍AX0oxԛ>!l*b闻2]Qk[J =h\ڗ1)p˗u7TH !uw?_ۺ{nȳxp&9uEiv\gb}0-(K-Cʝ1z*`@OYNg4iDP0~O0IkԮ";ncĵ˔ć6ȻUk˒hQ6]q%H*5q#ucչ%iި֐H[ 2*\Tբ~趢>82bK﮹mit.BLDHZ`9"aqWyeZUڊhymRg -2gY uiTx X:vƞ98^ĥθ8[ӹ.oʷ*rd01m|*W#'m O>S@\iN\A@+ \yL-Vt$;k]sEx+a4."\a)'U٥lV&EY'3evȌ:4Nm~%wqB5upҦj~dE?3f<1;hڍc$uUE NU;ee]zTp4RҠ9Y5m1'Ẋxk< ^+\.[v$cijLqƒ˅HxԞPT[W0"~6xcH5͜DbTD3U F4WI]`A!^[뷶ގz2#, *_mIΫԽ)ư'vr߀m-%L\䏚I~bwm]&^◖,k[D4\X6RfK}g㶌Z2 F$ۘe)þOMj=\ėm0!*'-7 j,ʶJv>n~Ijsha#\=-1pl.8UJW4͵v1SA_~Gy&2q]{ 82\Vk`8cj4ZѐS@ouU ʽ׌TKr{U)tu@\GAJb*n+N6Koj=UrK)~=y'Z~=8іd9@'aX5--m3czϚתv-c$K*6"BD9.J*Zv?V`1r {i1UV[rܟ8doYCr;_P,r hJSoa-YӠ;:0COx(75gժe< 5NAtrҒ˻u)YSmM> ï^tFmoeZl]~egL)aRս60r(+RT0kpqQw7>T0R@Q5;wV\SJ+\:r~H|Η*rk6a\z3-A)#+΍CniC~u UIil8嗟՘AٷRw\u Hwl+%A pn]r-dG7 #]{+l95VS+ZwDop2t܄:l9v.l ʈޱx3Kf 6˫|SoiqAvb5`Ȕ-J *Ad#bӀ6B4,h 9x&zM*4W;M-OH⵪N2!Hy@,J  R` F܎wwϢG}cxĘEMҙTJS|BRd6Nn{X+[͘nCTo>I[Q.8M-2E Eqy\hHwkB晡Yc-+#k&Y$vZn%Tt|Hm4/Pz׿05Y7>/+q]U$6cf\f.+]i\ml<uTUԝ}k¸]nƐRcKGG^Wx˘駾3ڵ7ӌi_AK[,z;j~QUxW[#u(/=vK|Wi. mܔ6wm3ʸ:*3 "$?":Єw;BFko]I"nܤw1G%S=%`Yem;z#M-V٥ 쒢JGo a={!n?:1yT0S_^KGNQ.[2_zt%!!.- H RB=W-{ Z2?;ti#WRK:S^&uO%giɦ1l@wـ% <}USÜiuR |Hp>a<§U]gc"3ZlRCJ7 8Jyg}ZRC|پimv?eЭ}̘&]Zs)JO7(G*LurW~0RmE[#f͝`Oj2AhLe& ZDvDĴQ_>ůgBTh.IiRG0tV* MWۭyv7L`d)yCBAK̄ JJBՅs}kVUNcVuOcM n!u\:($d۷TKiJ[B’AO) 7pe*t\6sq>ğ껜]q.L=vyS}2*JymQjlr)Md+'9v C[.xGྮAΦ|ys,~Ne-J= b6 k-?f.XA9vlڧYN̊M{yr VDs,JR @J;j;%C07!Tչ}s=ՅVU`~"K('x42-9*y꒾^t\O0H?WmWĬWu06  cHhp$; JBнD 6PjkJKSW?SF8u7eb|dX W=t/ܦ_$HmeՐ)tEy3{Ss\eZ;}":\>y䶜ZУXnznGcV-dʬsq)0 WEc4):]Qg Q'rw۵ZUs0TwDkaHWOHsƤ##b {˴gGQS=FRQCkJw{K}MQY<nVgP,xal~:(WRUDW4E|'6D Fg^7&g2+biXXmR78Xubht,VW[yY)YeS̱&0RJJ%nTe:u(Tl"-AS+λ@fֈb6OueƉ.'j!2RHK[E'e$7ؚ o2 :ۛ0!R/.?lֽ)u W%5Ke" UƋ\289)#X1H6 %GMW!q9uijE&X.r%KvsQJ ZyӻIqI$˹'mmmPCjH@9.mxm$˃mqc@[#fT˻<\K^m: pc+浅-ίvDmeiJ` ;vHrO&p*—eh֒LϪZJP|WGƳեiy"Gw=.=[eH0(]P6?s?I؞;u#a:g*ips]DwmTA]+[?_o=$]q.0k( w@#erů uw,9{me#HS:w9eH0I^g5&wdeBdNя.~nGT@䊉| %(]j9_'D]k6Q:-"_sZ^d{  .Ufs,~s!NjwU: \[?쨇RLw%tfZ9Q? AU&fWSQJ=D=Ti |K*y1?M#2w7d"^n#D]+,mj9r 6]Nk=G'䠀w\?Qh_??U=o_ *߿V?? dteN04^B'bKZ]2Wbu%H_?CrNPQPߓ?eJw7ĆZ͑ ewdܲav"5žn͕bQzx20k*dtE؎4yLʎDuE؞75>Sms?DvmDAMD]Q:g*NiIv'JG_1쨓=Wb_TQw*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ'*"z?ʈ*0_4DR'}%TEET 6sY<њ>_Q4EW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ_~TDW_=UDOUeQ%|$=>]pӾ"DUO4E9[O&`|ZM{}V}A4DYgDOUP =V}A4DYgDOUP =V}A4DYgDOUP =V}A4DYgDOUP =V}A4DYgDOUP =V}A4DYgDOUP =V}A4DYgDOUP =V}A4DYgDOUP =V}A4DYgDOUP =V}A4DYgDOUP =V}A4DYgDOUP =V}A4DYgDOUP =V}A4DYgDOUP =V}A4DYgDOUP =V}A4DX?DOU4DX?*-7Q}V}A4DYgDOUP =V}A4DYgDOUP =V}A4DYx Or˶׫z|SEB/Ԇ%JЮ;/E\}TDOU'QIl~DR=TDOU'QIl~DR=TDOU'QIl~DR=TDOU'QIl~DR=TDOU'QIl~DR=TDOU'QIl~DR=TDOU'QIl~DR=TDOU'QIl~DR=TDOU'QIl~DR=TDOU'QIl~DR=TDOU'QIl~DR=TDOU'QIl~DR=TDOU'QIl~DR=TDOU'Q=Um? "z1Q4-#hJR=Y.0!|GAywڵ1a̤ޯpo>&2Ѡt']KKp??J/X*7c1鿲Űu]gɈCK IT%ӗxZ@9AT菀Rt\xHNB6{ɣ%[v1pHPK*JBH<%C~V)AgugbW>̭aظ?C%pƤkœ8Lr<9POIV ;Y6,HfZs0@wĂ e0VOI͇;dge.dǞ#mJ# IR\ـgUqTPRO#biy0 :u#u Cy]*0&YRoymcE㍀盱lm ɶ:r ']-.SYC.vt\ԣNP@vY*dJj/5*&/4D} 'KM:_BhDNК"t&/4D} 'KM:_BhDNК"t&/4D} 'KM:_BhDNК"t&/4D} 'KE_X+*4dJxbTHZιvC}6{ !x("w&=`x ,^qOt{JHWum6 ;'køéK0[7T?P<1!woK'/*gk5sNxQZ*u7  b/boqzxok1G}KW} NК"t&/4D} 'KM:_BhDZ9D(ʼh"Q&w?D_-dKBPvH{ꗺ/ …/~r+?]yˊ9N=C<IW0B$@shHu\#4qjo]9'SڱzGs/nt&n{wRﭻ셴6ZSQ[⫸.t9?Oag :Juvi||AE|NkExv9cm)_)aN!{b./Tz'~ i8 Z!x-~nc8 ,1j4ԮN'pjPpsY,+E}HgI'-s0%ϲePlːȶ1)+wR 蝎QDlv5. -No0;K'j0C\G"[rW^VC. 37ZU6TAQ  'i?x*-FE0w3SC{VpTnPD}aevu$$[mw'@(\PZN$^+apfX2tϲ`o_.$[c,_Q E,ŽS3lϲYuK'&j8w ]1f2D5 ?EpgԎ$k<}B]-6kB‹<ʶ#zPˉ"2?h܇G㮃j9xju.b̯yZMHK % mDh(秒 @'j;&Z}kC ~*3Kޟ٥M طڔ V(Ds(# dVJ;}}9pjNZeu~O :תy֙ ʇ ,ۉyTPJIm{ (_}(:jQÖ]V)kcV͇s30'MFsK u&Ƚe):cLI ]@T {%Z4S͝u*VپaAixRTnUǽuip;=@TB:DNQD:DNQD:DNQD:DNQD:DNQD:DNˆ "t~ˆ%jJImDV Y-O,Ij:K?;ֻ,0}#][ HY6WNmM= N\hGAvk;_?Hår?G. i\jRo}x^ 1u-C@e?w1F7?JlnY[S:j;땣W}|%ꇠ~1;|'zus \I{QsCߢ,փZzğs'}!\ne^NPhDJ"QR_G߽m~~CB_lldnZO+) "tˆ?'O( "tˆ?'O(FH1GSY]"&w?D_,1l.ؿ7P`jJ!@08B-/hˌj +u>_4jWkF Gmc.IŠfc lH2?䦆8g8Y+tU;pY-;JI)Qf4YЀ:NIKS];dT!='/9&aL_DqRHR&pӻ3[?*8):YLD$Ldžxp"G1+S\Mf!h- WIR{mޖozz.v.YWkr O_m2ҽ/b=jtn9.:BZGMI>;2rϢϺ,B!Op1,7;(?9-Eb]a^NMIQ$$(;*Ekݧo-Z;]n6SkqQ xVAmD"mʔl%$*6}k=5CwG ~ y{cm]o=T](ǮމR;rJHA=w&҂Hy-͟T-nC{k&yݤy e ܋T)f[!JZ-ԒRBH #`2+_XTջlz۷ӑ ջbN0y pੇ_t{ j<.w-ͯTR =ȫUnv5`u+a@]zv0#]cͦ|biۧ[V&S+Ge'-y) = wO~RՅ* cx\ŷ[]FLFDA豽" *c-LYZkgUe-Q "JJHZvuI=qwRsCYٻ3CAX7!<֦LҼ!ߜ6D rnyGq{C ĘkFGU"xAoN0|^G##FC#´DU! d^܅'~ݫ'l~Ӯe[v/hof'CbgoJs7rcZD ^mK8lr2k&;'-{[ k=)V{yK 6ɂBwm#)aڬWk O2wt ۖ@[' BtG~:#? "tG~D菀(Q>'D|DNˆ:#? "tG~D菀(Q>'D|DNˆ:#? "tG~DD,?D^ Cn4W2dh rIzl:rMVj x,afftg=ܭZ[?̓!xo~X}9f dꇓ; V>ww+ï4O+{.&eGϼy?;'޼7x-eyRho8%h3}{|i$+/oo*uQ盉q$жE)44t]%^NQ\T Bz{n v?E2I z̭Xl[MAӓ^ *-VPO*w;VM }J4CGS U4i bOUXufQ.ԶӹS,ϻe)￰~VenZR sgKkuCHǁ);*Uh( BawBgS?e Kv✏⧨rwkӼn] *+tG~D菀(Q>'D|DNˆ:#? "o0osD_"(3d&DEs.FQL te46h5;WH@ڧKH$'O ̨6N@7B$CƪtRCv:}R&=e5$k7@PDdԍR]v@CRN쁯 d3jڑx=z}#z':*t@v-!IBoheLKzI~vNPDT |wy"C}A HTvГ蟏T}&9NP((((((((((((((((?*"CY H* Q=w+і$;t~'ʵ5aSޯs[YV77NmL'VYqz>Np#;ڼ_?Hå}ˇ*m]Uh}Jv|fBPOGAR"ڝQXhR758uWT=tS + TBzoV;~!q8H/jT!owo ->JWo4sJvT*"|;Ԁ6]) loaHX+J(IHVۤVmջkOqĆu[UiѨi|ƞ RXLC$ѫxeLCQm^qQUɻ'e S$lTG0goq5ZWmg`Ȣi0u@:.nm-߅UK^΍c)>sWUUM!2y&nXfd(Ɉ"hn){iҤPMkݶe֥v6ŌvWS99ՠ tf&IkT$ 5hgq#Es]ZyQec9vխz6ن0'rE*\!ZOUV +ZEpr#L#wV嵫0hp |[$,]U*(n(.PdZtyqq*F3&VÅZ>v<XR"[ HP} OyA| = t (((((((DHݽ/og{?7DUo~Eš "P\ԀN ;)(Q>+286yctyƅc+nKhSn6HPRVv"mxJ`H2\ARNN =Q;^ERv@@ʒ|"ڊZIGelABr ߷D@>~^TDDT I:~]}ERͶE߭v 5)BK.'mТBT7E$Fn\g$ /2R Gq}"q*dJ䈄CR*- Gqݻy 0Ǘo0\mۅ${D]Q6N =)$ '|hkļLra{Éu vRIbE߲vߛ%BRN.D:LOϸ{與qR 8%M7@wn苟 @Y's{ký!L2:cPTB̒FzJTEpoyJr2\J' ԭ; j' E^P7DNDoS|*"܏wj"(۬,͛0h7w ScuM$ۙ) 4~ul>'o}la#ADs 7:Ȯ1PmM_t~G޼7J DuCUcW{#|:oDsU+.m_<^yR嫾woì4B9/d8 d!amBG^Ay}qwPֺR+rl QRI!-np^ kkRZC44h<ȝiҳVT@lG):-h }͸FZDFEdmw'ddɒ8u܊uQ!#z70#`V]ZcpVׇdhW.j1$ybIG\Ux9^ anܳGmڐf-{ bR[RC ^Ǣ%X}VzLʕ5V8Jq[ ԢN#Ůq5rxI[;:VR$I''R|VGZŖD%ps y)'#m#~6\A7n2wSp_'qf4'0vMUd^u^TT IP4D!#?*"*wۛ:c( "tˆ?q{:,ߢ/Νro~E?dOu1(mO$6KnCp(~Hn;Vd*<3^=x9|/"fb9৮o{C`y;M9Fa8q -Z.o KGl֢:?Ů3V1{v4qhZ plY?$ r',7ZҎ] ?@uSWi*[1=RjI:iO(vOY^H> q0W'5vnx-b$hwuiRCŶEA!IKhkنYQMytQi:+[ w,rLeí6]kPYFnkѡXʜd\R5= 1cAWv 9ulLF9 zzzas.o.LGTPsMJlsd;S&oMvkezKB.rZݽ+@(nQhZϚRm՜\>yU}lNi>YN`<3$߃kWbsjN?Y>:"ݲDxJ0 QYdVw{UϴV>]o2Hq}To֢~O a[yfc0hv:q^9l[%'P; õKCЬMX|c'WE%72 zw^b EoqԞjPD۪t>=TŀpǨ:Uke{XjR"e>nHCh ZTBw.U ks]~u'3?+>Jdi^BpSrA~o!AZnEVspEM?=wiӏCޟ!| f-LV_1&ȵlqry} TB!;!TJͱ_qWt7dLm䨴peg鞣}Z,[ms)l:>Zd+e2r6.)=Q(l$$rv#% q3.6ikI)\Đ< *oa?g/.7F12G5lHtq!#ԥIFHySxIH }wė>0;FZٞ3 O[D{cl܌Zi)_߸űƯ2|aMR@NN4}9ű.c,tfuDjʔ+^JWIO^fg018v˯}{D0=̮$qeq,3W~Kfmh6FeR;+B)ߘmXԚ 0yZj,edhZK-X1ZC2yoQe`9/@_*O(A&q\5?wt'xv'HK9\zCTp3eRR|+ |Y5k09f?O5(0;.7So=![oL&AbEgw E 5y rdnsR?|X=y5,ex[qPܒ\yzd*> im'J;p }sIMb̯Zbwm,ݠَT49K# U9nm.> q-׺ 2*MC6bD| Ҷ[XJ@Lн3qpCz{ y.C{uXR%cɨI16:UA 'ʫ/sZ`!wJ9iov>8oĵ"_P:g2޺ݲ z{b\@θ)K-i(:rro>`k6IHG#4wW8w s2rY2Y#!AB6|yQQh{rS=Ɣ(-bXՎA*@LF]ke78 k#vVoڋSlqIzLrۋ 6OE!Tͽx~1ԭ^4|^%a 1ۺPMA3-ϑ!JXg K?rSp㭸m)Ns4ۮ\19XRHܟ'(ۂV#3zz/AM`wQ30;˙U۱xV<֒NqnrTʭB%(DTRF戣܃\I8 4(~ɐhTM%Ay&k^+Y7eظh$3"LfAܭ]Ljɕͩ305: ;scxPMM؞f]p̋UE\-dW'U G99+oyz-_McW[Ce @0#;jc^edn*Ϩ">sh'Mu$FZDz5'%K @Z3+?b77A dy8RDCvuXãeCkѬ1_( sFrb\KԫHa*v$'MhWdk~۸rk7l*\&Pk/-*({heV_axˀjTߥG۴5j-h!+( ֠Lp[PZ$4b43S,Yu׈;&}@ɳCl̵YhN-yDvO:@2+oojӥ@p㖡}XƵu0Iuxn qqNΩ[ o$ :)Bq-q fj1ǿm3dK8'I#iK}0>ۘ$}(} z:w}\#Cߴha3O׬2kKݵSN,ow8R55)cD9m Y(* Lim?@}hLE g\dZtcfZ!eT,v:GIPkGXcY;4QO0~xŮ kƈZhE~իa*}YA JfBtF\!er44-IMVLNOJCnhR>8 -C'vWci2?0U} D} - $trY<;E̢.McXC#"ǸdOm\t bLQñbC.nۂA 8x*{G璵/;y9W Xcu  2t=~)--=;h>${uw-z&;uS;faFb`}<ђUܞݿ ~?EPN.s9nNTEFIQ;>5S9 AvhH/ULCҢ '槔omG"5HvW[r3+L7;|Ĩo!^VRFnzgpOU[ &%HA%k(CsD$  `>km쑮VnV٨*#}>JBJTV[siߏ*Iߗ˰;vLș딦a0䇜iA[7*R$Tey){X\mb-Ji -㺗yIZIJVAiCcˢybV&@]-0[%\ʪXh ZE^y FO.nnۑG̊@bNOO3 33 > %`ȬW|q\ '$!Fy 4ByV@#W hvTf 7BN>@:Z@n@Q-wS2`+DH#d[Ը#-ruQd6Zu?9 ($%cqN{tCi&9/CʹKu҄6JֵR|OjL~ݤz=(Ƹ[eø;LWR' BJT7`RY#7ul4?U1A>~} y*ꡄ}%A*&:R{ uHUDA##U0 UF #q|F#YJy-%seŊ8?4{R>Ů:l ÛtVe!F{¼~, ,fa{G{2cԁL7{4(;t}aX.:RЁjm_৮vO׆UaL`Nڨnc\{!|:oDsʳi\ <ʼ;x,= i x%wW~nj \2(W\]T5^q.>䒻*6jZ*sD%(DJ"Q"T Zw#m>u0T;ҝ6AqHys{Cw/NnL!ԥa+$v0~3NiҮig,Xܴ%Myݮ#{5/-y{Fws8|.s֋.qs&b ;jJ[p0h)]ԣRmԢIw?q Z׸gUt.qa <([05Ⲁ6YDJ"QD%(2Q+/jOB02ax,{+Q.*Mz̆ۍ6nhR|A3|\fHCm)NH@ th25 6UTtH {q.ЩHTdoR{}44 W.>{O$QDZIX_EEŢ.MdC?"ŶLWnI^գ0 5ːc۩~s9r\n} ۚi|)]Y-\A٠짙G(YIApM6WyEeɦj|;јB13 k@Q; eM|RXU5)V<=F5.vDzw)W1M^dⶌn&cۣ[2dM8}5N$\mҕۈH#]-5| 걭ۖ_ zDs7kSZ_04ݟ6jEzUjys%k/$ 9Iyh~Q>{hg{ MZq;,ufѥ5j[52*2d; rI( %L9I;G=uNlwl^,KxźU.tIE^kKOK^>di2rPyQi1(?V۪nQ'i(o,q5;"k^Ց |JUt'}@S {x@ x "7Pp>p|ʭז{zq6m!M.VOJnO>ŲP%yr|9gGj< x>\G2&Q1KOL{}cq:B}o-%*{@.p:>~+kw3 >}f&\'T,xӖ=) w7L$2*TR6N鵟s2Ok5@uFobu 믒JF箁-l^q<'G^Fqm*mw'&f$ZdmM7! *K3T ڨmLk̃vI) kѹNht>,_^xםqL:ue`YУ ҹ^ZS*3mlVck&W\9GxGLzkcs o|OP+V"MX2h෈\Q uq-ɹ(Bf[ʵΘ>]Rdud>qYM5rݵ "mŎ/e(گsUk  :A kujs Gj}M= 8ώc+~pScXSxk%͞@Wxf0̙zQ) uw܁%u"~7&8q[xcՌZa[6C3hu%O^%6(h,ۘ( bj3pi 5䦛֚chX?/~n>sܺd=[gJ+SSR5`U5C _ {jo6 hd;JXGl{/uݝ+mŕ1Kz_ 8BR[<}YuNǙ/Oa4Eg!Wjn:s.m`B7i~du:y"mA|iՐons Y2DtĆ=*|H5C8⇄30KgcFn-eq5TTBْd8k\H> 5LDH:\JٰqEZ"٨y+ՕGk*X q"jp8)*-6V.1.G{=Fa[S5;4O37X풤& byyT_8YW955Xafw5RQ: >b.xwR\ ,|:C/m!%<pZ*JZ#kJ;PXW,7 j/຿;֯.kWe{ ˴vKZnyO౫Η:I=*w5CHp,{\?a|}]X Ca?c<~2m62O^&;s,moS}aW}|&kyQAW5+/u:)q:z56I/*T ooww-(51^Ο=-t%L^U D%(DJ"Q TRR^/i)og4zݸm2'"jPDf]WTNHF4h({x BX_I k~g΀I#@T,jYewlLe])isۋ;)„KY>y!Nab8}<.(6#t{ ccȭn_smkrF3 9ˆ*?SӶvy}E_GOEOGIy}ERODtq(#{DOGOEOGN_WS ,'̊"A?'#Q twDU1|?#{*">ʈˆh.!|5"Fva>[vXI"z:ODt-gohƾbmP\ʥ&#s'n}=yX!R@DLs,(b+1#JM»ɷsA;|AIcnTg};-5Guy"n*9mBBG^Cw{^ꡭtn%]%&@.QXҮ P6%(DJ"QD%QGaD\KUYRB6Ȟ ~+|G2Ҩӥd0aH.Wup,3!ȐRENsF pA5i ,i<33u^e q{oHv Է4o|@^`zY]"҄UB>QGi I;4ڲ>R~q~ŗ!s+*75F̞c.qKfwR ܷF\ !L+ы.KoՆδR1jhbw='\$6BՂrۃ?(߲8iolo@HvVIkcns[)|G{03NO>ph˭wv.7j%)J@JRۉxmZk6e6 ry$q$+cH˜usR@ >$mt+jJի|oW1ȓ#5mMǚԉ&t;my[ruj*ߴ̠-l x5cTíYeh  3܀Vyl6^=rJmCljR[oJbT<6NyÃ2Lh$Ɂ!bO[eۊ \_&7: qZՔD%(DJ"QEְBTCH'ʘ'up)?ѳ?8DY<˭j͟0߳Uh>C ytGD菁(Q>'D|DNˆ?e~m苓;/ Űq?ӣv=H\KAݷG);*`'BG\m•%@AAÛ)7B[ ($GENoUi0OFݣ^:~|N@C%wv5[W>#8r |)Y%Jn/jzL(b䉯1A؇~8m)Rs,wiuQΟ&b>A͐1T1q^+eENvϨy6#4Z.&tjS/!|mqz̀VA qQn_Rg,eK{o2uM)pLEqL"qaͲ˲15O[қ|ql-}93uKuM8Uû |_$u[k*Ԃ||axgj3q7Yo 9۱8%K dS53%R{WygjMކw6v՛n%{<Ѧ\#0=5qL􊔒RT,UCkup2eԩZvsO@`~%:>qUdi=Qd-bdRyS.Ɩ Aj.Jh))'rlzAyy.;;|Bq;S/az1ْm ]SH@i}~^`P@c;z沍[^#xIJֽCNdCe{8D [L)&)iRJ{ y C:{G]i_쵷Mw?d;]B;j[t.Ex@DT/ %®jaȌqny:Uo(XbK0Sz5SbCsH!7(En2i i2Sĭ^IY"sfuꩫ@ 'XԎ{+bUc]g=2 =rؖ؛gE$.Jq*S)!574@Cg̍B* 76Z62Ũ1Y3r\GJɇ PT&%q۔%[ C _h}5ӢRaE'j z ]5RaQhnL8z\A1k\Tz=M~3D%Ɣ![ɯNnJϟ [ُt6c?Xz\=XFMnQ<~&.#og1TD#zoinjb?IkL3>]]kU2TP9J8 Kqs= d]&c)}Dilķ=[Nl9 ˝b<m"Sa0K%,<܀F{\ẁU8Oed EHWd?e?{f9H?t kjwO_L|1 $Hn?[<Taw ri;%!o%MjJVĀkα%w5[vlAKsDXpjM[LqHtl6q[7}*:hªBAA)P9pj6J?mm].fL'Rd\; =oN!=iԮ-CYI%4;[fMa5>>b^b_2[;, cn +{w e4̧(SkOm&SanZvIp1-ӬglG{\T IɦcVm>K8ٜZQuDĥV9=؀ڷȏuh>+qU/qXcjvY,{m8KgNu砂A8C]`Vr&Izk\R`!y$ŜmqJu1j昁 kF@1-Ya};Vq$!!)CR/U8zQP,}} "XED2 cǔsbEG6aVuq.hTvjfNѕRuѬ5o+^em+AZ㦤7,M׼Fpıכb6) q:AB4)^IMin)T{+Uc֩R~^ hkLә2*m01i. k`u렒.38γRSf6ImjMRŹ4ĝҥnD%[Fnm8 \u\-X.s , lw_ej趈pوq[+]S#r["#/Rml>#c{ؚ38q-o*t>}m`*c`=U@x?Nf*l*% SI6d.uʝj^68};Kre<{d哑5`N}njXFgsLNB5PPDJ"QD%(DJ"Q#jT7_ph\m;@~|"q;x 3^y;_UWa:?u:?u:?u:?u:?u|'&|'/ڻ'7CD\߸E~հ&%\?tEv}SDN4D}SDN4D}SDN4D}SDN4D}SDN4EOG& :Nr8'LGꚔN4D}SDN4D}SDN4D}SDN4D}SDN4D}SDN4D}SDN4EBϟcD_/\qpޛv#ú2&>3 =7A?տ\`/Jn@fi qq*st?Bmą!\P*({A__Ȑj)DJ"Q}B.+=Bmha(1-,Ư8ה]an*,I -Lu%,: k@$}gp'?if/+2/m6d:L1`$wA}j :c(qFjg}8Ʀ Kټ$-DMr^%d[Oup޹[}UEjNՒQ$f1nm1*Wݎ*׼$^Od3vѡG*Zm%ms-kqkn@ $[W>%ufS3qV Iܟ%/ն#Qx!-HCI`vT總Iԓ']J"QD%(DJ"QD%Q~U!HR z%2>e_+_S3^?#UN_ eB aĩGM}ti:_TM:_TM:_T{o^od~fhl#CvGDN4D菣'D}S>“6M:#>%>ˆ>%>:(GIIN?ˆhGE菫DND菫DND菫DND菫DND菫DND菫DZ7iծ.O!jK n@ڤ2N6sU<+awNDI^Wg_8}=\}\`C)lΗLEB S AS %GaReEm9m ðzeH Skڋ. s18 TF1/l c̖!1VaLfsKX[O}&3զ=RM):#>:#>|(&|%/ǷVY<~2tEɿQga;CPz:[BR $s (Bxў&w8Wya:I(OR[q)RnRZI :[K" ,+t~en9Sm>V5s nox䜩$}Iݧd0tx~==TcQ”L]H,dvN- )qIB+H;V]^1?enus5H8ݗ-;Tw}݄J&3q-!IqAqcU88N F2:DÒٵK^-R^r92iRFl| UH$<lֶJc N^Ԁvo>ꆹArVC]9@0_E#1j]9R)(sm{;ꆻ<`'ȫ}/t<Y guJߗ߱;Uy9LB>pu+-JBS@ }e 9H;V?c,$;̌mFesz:H!|bH۾M7<#-N+?V>cķq+ k- bNc b~XG!m'ݶnwVqHe?zhޱeJ_(?3 Cr>kfG\N3 J@Th`| ^ַWryqLmz\.Q2[IJ܇x3d𦥥je{HkAF= $ ӓ$IyJ6N/t^3+g8EnĈyV IG0E¨sG)fmJ#i<W`n6XlSM:_TM:_TM:_TM:_TMbۃ7Y{ˊ6#߱/g9=1Knn m͇8_~|=YcLiv?ڽ%6\~R<۶j!{!URj@ ˞g-0r[ŶdTSҥ7ܒv՟aw Z q^wyFڑ]΃ܭ88fg6BҽZ][U6Sd֥8*I<-`Tkqq,"ɴ=Ym2 LjLůws؎l&I$7M*SO+Fkb1<1*^z17!lm@(Q%M~Gw8Vq\29Z;"ww] 7e4qNƺ(w:!ŧ1kr~cL~ )6IZ]#b;(\ے[TvPàZ n&&!yNí0y\%>b9jUʬ,.-cFa!em$y%)H# T5*IԒdNMr \Buh*lT%ɒ)h)-|&ؾFΝʢG; ͫXOȘgt|9DNO512^|ǭ`6r<ЖJ<ǙeEE;fww0ZͲԤڮD63 ph tbËsiX^X:lߖfxhmbXN[ûgWfΈ.ji4\Y2+Ty`C94Cu 3Q3Nm4cP>5fӉqˌyylqŪXXr;.ƒ%mnլ\7:gm۬>-M pvii$qQT \kn^'[qxKyG-"Bc6o{+cR︑g\.&F=t&VZyи3{R5\rQ0gkðqL{S>eG~*RZ@b\+}6 Zd{W<5X^/qۊkt^0d='*".+g. H..{>_5U>K Iq?6/LjuMG߃Id-*;=r -G{t򏼟z6nCy3 ݏgn\8ZA'xVCc ýv> b%ؼJ K%*5pEKM`)AhX \2I:B P4#mw`хɛ"([7N&;˪I? "zUZm2wժ^졽ƶ!Aj#E|p<}'`4뱧-gZܷV-cd2Wnko縇N#-JmG rZz xNC f,YfƢ亂_'7[L<L:H7۬溋:RFkZ |'x;yjԛ{oMg12dɵv+q qav;2,MzSH!]fHq}|r,eF=`1ܝ3lȦ+KPcu t-VoY8\*Õ_}9{CS FiEbDm M)e%(B@;IAI|tU{VX۶\XZxV Rq)5RvZv-6lNGfJmv -Q`4#s Z)DW®ٰRmGG8C%s'[QFL k-|^ P%(5GRKhW>DN:#("a sP D}:C(W*.2]AI؅ j"/=a#Jh}*r}?ۣO]G L v`J˸o=m~38w܍4ֽPd*nsFV@ 1*\B[Qk]I$[]5M%ylU%[wg=VJiդ{ "kܷ+`-sZ5v jq]!ӜZ ƿ)hɞn]~_PtV/E q_^ 2+/eˉ'Ґ%HX=**Vۄw<J!krYkK;&'XZkl;s$bOA|{3T'Y!a쩒lސ> 2]R˷\<݊8EF\8(h=7MR4|ǑZI#4$"T6,'V 2[e^)IBG2ZԔJxz"We*LV4a \`Z I ZCk /y٭Ԙ ܑ˪$>WZ]fDr-qٔ*nKjHW7+pWc< OҶФ.YS@KCaDV 95;G-'1 7+W\Cӻ.Ry6XJR)PnڻW1.SY]HX ;-IV߅J6a{InNCilD뺜PyHEa۽!B2Qb7Rp!Aumq .g`yjO:V{]Eb#6nGD{tg#[3fF`%+uHZ읔R Wp[ &CH!é(qڍ$Ĝf}h\h!8DpxuH/ Ŏm39 Vcvr*z82 PRL4]dl6myFJ8ծ/÷VFP gQ.%{C79MVkkYb6bjgeGGR\4,{GwxqFD嘶4u#ZKLZ u?7VsX绣IYD;j֔j\!OuP r[]]Q\*xC.{jm}@Uh>C!_@/9N:CDQ>D_;JA<"m-"0EɿQ` ¡v.Ewk3x$9wQMI\q$Nw79NG xMcFI&Z;^ܮ{jmq!M[nT0=vc(f ; .?ts@4rYK &[S!v)KD-DG7.⩬ :jo(Ҟz}vR^7 Z6 nnlIU7rrnwc5} Qe}#ˢ4wēB5oXc V cG^osAԮ|7_]SoSx{Lk¹RXAo-zѮ'N U4m.+:Y[ 6K}5 ꭿ;?}ĥG9n]^f4[K/<}FYz>q];ۑRb|#[$n?tgX5eVEInUH+@[aP%Qp6;M'=3*SPjv;Dz|~ y Өdu )֖X('C{v;R;]ouSwguY2-.F_cP`a $R VO8ܧU9Ontvz`ڹ`nר(L"HMBˤtʧym%stNꪌƹ}e\mɏS???|`ö?=Mv౨ۉ5ᦱL9ڭ _CNYize*ZThϘ|Πy4<$x`t\m`5.oч ts4yw| c`9 EUU,oZ.'4Z/<=fx,[, 6̼ӟWޚKV7{ղ=V}eV}yGЯN983r,KV]ai(pvۿzė6u{0uG9 .$L *fYRuؘG`m DaYv@hJi/lT8@&@?5~(T1xH a;1vǙ\[h$tLs2ev&5kp!󗔢@J=O`+ega5 ΁oM.L[oeNSew "lX숧u%}gJ Z6ZyJ}Oj h zJN;C5})ЌAt 3^;BE2H&@_k Y֑7{]Ts=F2dFNQPITF!Fm8BAH;WwXWZqM,Z6 T bb꼹F蹪+a. RAͭk0tq.,&fkc*3-6yvT2^{ҍ+J`mWU89\MGHGLM` }{5d1"GtG9`4myR A|^&ڎwϪƓ$.}eUT#cIEʡ4E[tS])cf"@\^u,HZ[]΄dL5h.sւLzV!|JFMv &:u?4G]cuV[SZXbHSw:!)[}T%#us!^G<&;oߴm`YK k  {wv !y -.=]Ds16e9 N1[42Vt qo^SZڵ0ahx#0;vu1#B\'Ye{e0Nt-),IWU];o[{J4RIiy;wd]@m>n lH1Lz s;(&QK]BXm+QC,GCiHΪxΎS+hZ5`@8ˉ:¨P%ܒO Bʶ-]l63Ib(M)Cl)jQ$PRFѤ8I:2JViJ\@5wvȇjqcV\.l[kK*e35Zh:@<Ƌ1yUoe^n 6C9@>59ugCR#Iѹ<:6ԸR3 {ޯi]_csZ߼\w9ǫ8Xz8VRQv ^ı*vj51n@>FV NbV/;[gUӔNk"cQ Yujɑ%7L#K7q^qi.( PuPğd&^iܸ zFn[OMMޫt9ݹi"c,0Pmvi%F[πpj;&kؾ CMZ@ݜKsNc}4\E}R.pט+H|Eqkfh:Jl "@ 4c<ꖧT9@m;AU~H'ϯQ]ii7앭jVZ,[0p{ŷT!%ǜ^/Pmnۚ-0=^^*ջ.|lȼ=3rt|jV/X$ܮFw>֋rd!$!().BTRܯ+w* =X@5U"AӞp6Nj`kß[g8Y,K҃r ߤ^Zp؜Qyi(o8g-ux#ƤbYֻK ;:LYqSښT6ņSmrIQqvcUkFƾX1"ʬYgWl]1ϮIF^"t!\^R,'zl.}]>㪨v{|,%2[/"W"uҺL ATV_swږ&&f؇jh\Ƙ>Mpw礬^xѫYg"1[Ps(]OUݖ8[A|ˢg`<5+"FѠU·FlF׸^9s\\$ܐ!w)!C0HLvzkAY=-X>oVp4]J Џ M"wӽ54Mk۹]=-p)M8]ؾLSDOT2f~shⱝr $h:GU.:^ePdrRQwqpkPi:z|Mw~Tp:8Š;>c.b%f͏\ؐfuIn:Ri*{cP=iXaxx]bL]~p%XD3- pA#R5f@DĆu,ڕ{~ywGb7}*U+Vc6ImuC-AOqU) _M>砄Y}Oɮ h-YK&%[rJZ&>^AmjsE}M׾U3 axm&|٘]8R4 :᪷Ջ!9oR#]s@("ZXBArbJ[Inm |A'4 i}YCCqa>-pܢBpXf-!\flAB% = ^XkkVÇD,hB竧rOSxuKgW,ۓ8;X+BHT6R٥*J(fծ*SN }>SSdSG+Qu#-˷,vYNі\Y1-٧#0[\u:)(hmPXmstcH;<>%d5Ox7| my,-#br sDZ,i] *ء*#cuIFkyWqPUjM\q I4X|;$svtL#4Յ2[r,˄˟ܬqayQ#>yNռ(q .V>>ΠyxplkZ3+}gbgchfinRtbNH^>fLxt<bWCO0_C=DswJge*א넥Kb%MNF%dh;+vuH5:f !fHx0wIØƲZyy߮lbnݖ­=.k{%R-7@Rpo] S,SXknH-e3iq~, GŦ+_tC! `>]D:mbX1<"S+|'Zu-j=Ե_;b'pn漢<l4zm ZBC[J9EkRH,SZ5:c-tESeʔe ;(IQ &8oYC3Z^ֆWyiI:JbWjA'I'm?T8 <3\ʨ`KU:nG1຾ܬqb*k8M]]Ls_!ǵ[]Gk +x)}Q#r =ۚj&@5AYř4y{m\=Ƶo,I}/1Zi楘&ޤY]`R'ȇC Y7dx^& և-%SblDV"ܞvhN{|RK+b&?uPsNC?f^kK}]ܠQ:dTW2q qkQQ*;*CL@5r FQ-Y}&I>'U *ҕUyEBZ"Q fۂ{z,-_Jw_5p>>[*'f=ZHZm{C@X[% HP$y|~5_*J'D|DNˆ|)< /ӑD_z"(%5̀cm7Q]JYiKZ!%JQV ?@\@i'`A;xö #d&,滏\aZQy_a! PܶnF.SQ@:Ҥ7YKqb˱^-7%Ўpn,ɈOrWo~[1%}V]eC|ʼْN*HCidl*Q lLsUrXfqYFBPf9e\-S#>[/AYtJzr0ji}2"gǤTuӡ.\ivaq+{5by5:=͙5,%e^|J}<݀zu $ԭXtW] :*[Kn-͛%@:($nպӛv_6{@y+^V^3SwYO,E."+zT [ʁ.c^c {mnkv`O9{ ,:"?㨫PWߥ`P M>z|KjYQ< [hھ+B|(sJzٸEN̰[ajn*H Q%rQ7DMƈԾ*IqgwfZuplێEzv|qNPKA‡2JII PpgV2{8Ml0T#B p?1R&bIԘ0!R ޢiF,W6,rSg€m eV˼χu^Z&WuvnA.C`aszkEɦg3 Lk>gv_u:pȰ<$vaoB!gL@*qLs̟*kx pO  Zu=ڛ@ kK+\w7Oiu*Oտ3$I6Yf𿭜:ϼinyuͫ|۸M&qǔ==c[is/06ʅ2_ZFp{,g6-dXZmCBf s'X&el~`ZvԛV4lO8NZaJ-4BR!Jv'+n W@Hi%s洒ZHm-z…㯩*r`#u(oFenԬsT5^ѤW+Ò9fJj(S2W+Qi=I!)$m0h[is05'@׬ +B1R3s$\+7ϱ7^e'-7--S$-!qR;רp{EYYaܧ3*0Ss٩si\5݂ռKpaCs#8|3N s Ȯ[` \$2+u4Ӯ{.Axw\dǿRsk֐Abooaupnk<A:#L~2H]D!Z+pof~g0vMVY^t} 'KM:_Bh'SuyEp.Msz~:}S %{ovgYf1Z}6kRBJFEYL+_Wm2(ԫ>xӚ-a31MEۄP9{L@|s`oR,b< GڇspD~d<<:<0W mRbx$cv`zi_:B܂j.[ycrT9+64y;o/LO :/gQr.|g/M\f2:m-+x:DBPM7N$oЕ;JW*(J"Qv!HP ůEhhk^`e+@?3t#ůlRΏh@$7d5*Nۨ:efbIhYv.Z[ :] 'Uypwpe7~\[nn^ݷ,=D0 O{Xqn9uĆ޸ޭ}>eJBP#r+{o> K)իLʳg` u%[b͔tC^\zyK\x0Ge줭3 RUJQm0ZUmwPVX9C ln\*ֽo5i3E 8 ʗLf`u n]9irp[1,H<ĶЧH=qvyKV°fӺj%9}1:AѳZao*pfΥS`q:oГ i-6ȸ4, YOfm yWVRWVyII2O]*41輖V[bݡjʛzDR=<ۨy}۵_嶪\{9N]d9ksPdh6鯯5X`/'a c6=괅RqHkOo7B'EԩUvP{YZ vS൴q[RÞ1$-zQ~'ywn:Ǔķ[eR;,4ϸ s~ۏLl.-. GH{Z3>X̭X9$lUl$O#⣝5KN+Ms\.§ܣiȭ@9]T2\RVn"yH+Y=?`ݳqV_R]$:Re=i34í Q“ @8`Lh[s|0DVK}lCe/ԗ.29 $uIu'ԥqurVRJg3e؂(kv]3MJ s]9l 7[!oͺ 1m,i%$*sj<&I;ױcCZ4 }m[Uʆݮ/I)|FnB ".Dx J/ԔÏQJŐesv+`ls$TLjZǯz7pzYv[K^fqunߒdN)IevR;nGp9!2:{ 9"aJv C@/p:1>Q~zѝ96dmҜgMe]Rۜ_8ea+ ye|Hpvf\I_pJ@1-hS-!Fwk@r9ڽf4q&ZMs9VL &` >U)sp}\-xɦfD͔G# 7JÙ^kǎ1$ˋƆ\e΁uq躼[ɘ'AOA)\7:VB% ڈ*a,+ʄ)Z D\VA TFx]Фh}r+o}}*c+ά-#w6|vZ/MGT+J!?:C "tEѷX~Z_8(MԘ~FMeD%)*=;Pdu9hl &3v"MZ^틿cs,У!>mDdj+S4vyp2Ap%br=U%;Ι1/Rt*Y$!7,L®:0FS7Zap^i.) "BqƆpBeMEnHZ:$>qks-Pj@;1xaww-52F<:uYwؖtZ2g뤭uRJzO0 RFޠ<ȪZ]UocZ #Zۃݎk V4x_F%e@vYcRj27}j(n@-t#QЍd}c1jyuI~ش#[Ri[/gRVQ* y$?+\r;wNziNŵ t`ɱޏrm-sf[Zj{(US{_ߤs~ֵZD`<$+@|MK{iV" ~YR4=VPT@|:"t'@|:"t'@|:"t'@|:"t'@|:"z:wΈ'@|:"t'@|:"t'@|:"t-3DjWREԐ7PRcTZ+W8X.,.cpo}ȑWyk_xŢc}e؉(Wv@>m ZU+J"QD.*^uL"Z|]+q("wڲ~p) bzNoK?efkw+;PYŭUy=-s[K2SJ%'tKzxov}*8Rkk.0@A7u0J^@i2gNZ_ ˜*Lk-CP.kKfe_ue6Hgnm^(Gٳ uGmJ 5Ziԗs\ ?b"AܵAe[﮺uyt&q1rZTJG"W[7;sR1*]6<=3dt߮KlV}8zh8mÖ1|HjܓtٷDR#3JY-eJ;oqHˋ)7#K/p.sqjFx,Xc3bA 'RuR}5;-qroMfȶܚV_liLሰr;[VԲme)cr_0z2HP{$97+F ]Z}+j٘A2$~ RY!6V O%%6Ϣ9 V[LkgUPeG8S超sT ѯ.,CD0FJsB/ِ7L5I^KOuĴ7 fڻ­;Cx_(%!QHmQ`xGU}UOpkn8z-$j#c$ xݞ#M,ߘ߯.P_c)]^iyl!߄ 1pRr|ʇj+N ׶qoXaح^ 0.`vw2`hUKK8r#.-[]⣴1Kv 4ial ̋i1VITl:(󤔂}}yOn/g Ա+҇2DK`Kl D[޴X EymeŴ P I)`Eq7u[V4hI:$|z e{*Q>I&\P$E2DJ"QDPڽif[6lk5OJB2Ҥ"H-*Q^rgm=L/v )I.mC9\;umV)d n|]㹾)6^.H:ʶk$HuM%Im#\Wɭe6SL : U+vY/\C1nc>j tIDCDYY8ŵvԵ0canS^FVZi;/5|A~قVw+o;WWˉΈΈm< /]?/%rkE~=Hћ!h#}S[u6RW[}.Xv tDܰlPCfKܻR]w#fBU*$ֱpk)І ]O=A o\Ϥ';06R7&'`hOӦZd˭nER8OBaM)m\ý^i@s9f#˧5E>0i&[D}6 :鲶sXզ}rU~L諱-܀HZ | ^6p*;2D;8CL: L]7!~?tj$ Lr,{~lGZ˘c5 D}b.tĆ,~jpwr]#N@FhQm:]}F?W"_,VeORgbηtn;Ohm@\򽹧 2;1y}[r$%rܑ1[P` %@Ȫ)فK[m0{''H|ODNˆ!?:C "tD(Q>''H|ODNˆ!?; "gwj"G(\GKdE~ԛ.9r78(EnJd1O$lw m\׽nM.˖ "7wZ{Ft\2DghZчkM#ը9 ;=ob.IR&CbJկ~Uʘ?#`7#ZIwM@<\.7eW ,*8ָ$}|qᥕ Z}ο&êhY܊bBRl0VTw FlGx߃p,ie#LuW$+bxLj.%  wM^i= o-krTGS4LuҒFđx+Xc4^SesZr:I\ủWXsEř#H:&>`NC,Dz(Y>/fjo*F O=Av;W^~/soZkb¯1+vy\ƒi1!r?Q  nh!HLFx?kH;:l=`ȡouDJyÅqJ;W`75?xOĭ֬.Yp*RtP4VDCiu:.o{jcM#LÐ53vԏ:굧St"b.XKOgA0g>oV)Hu\qF a0.-1MjUZ45ijp[ši0+Kv=[^L/òVyu4}#Xm$t܉n*RRe>"C]SU@fY+Ml/`ڡuI )u2 yiĒgQ #At|}v\J"Qq&∸{QHXA\-Acc>ș*Kb+ϱuiHRmt3Õ1|Bwf%kX+A0<5qF۾nbr\aԨj u;H#X.)XMZ[nl9y$T+ 8~7ecJֲ4*6X*R/99v` x]X֮d@:Z`vSy6"$-$;=($Iz#.6m%[2cY짰$ L}Ul:s!\k^J"$g܅%QC80wiuR޳.(sp= TVʬ4߱" /mex!=;o^+[tƼIB}KWˤ>'Nˆ!?|,r?/rkE~m;ǎ0 *z?F r<q@gT,=IqP@FHʪYdRAT!Zz*;y =B:dtGeaw'Gˆ $GŠ%:XR5N?:XN4D}cDN?:?XQ)cRQ:XDcQD@D@}ӔL|i(&*0iI 족l5qq<^W Ӟ;m<7hʡp&gehЊ7I]K ?[_}D*%u}TEްMkj>#4'B%[**[L`IvC[G6-[at|;nn鶫Õ$ėhYiyR!@ #0<Imu_y2Mhs˻b\/FR)I*K*c@>xW)5F+yMk+KYijZ9I~ؓ 7ӳ-0s8w~xz)e?IKi˗K\)Bt@O]RRp$07; ]iu%bdƱkc` 6,VH-.k̎P'qtg^-֋h"ěģ`\РI?JU$sv qۋV[VZ܂Fv"2v 'u:@q͖NIrϢ9낒%#cID_-k ;ӦLH.lָϵ> -E%\ϐת|2m!Y, mV9`$D*FمϢa\Ztx`ϢL)u|g5`MbmHn"^m\KH[;'kj8J]ehҩNuXP%5呡X#8A^L d{ĎYpbU[o?uxE@ {>4jV V]7ECVr²YB>cb3EøBJպ)Q?6ٲ5}G'-:m.y$4@Z[TEH։s{eĶ}ՂIJqƛ}q2'0,vꔿHGtVV-s{jNtŠ &v +ıu ggq/\09n,c@< 2%c>,8)P<ؽ8HV̵>E>uCLF#!$- ؕvڼoᆺ֍p w~Kd8c YeݥFbU}R eD&O5@j}AN&I6ck3dl;Nhǿj.0*bΦj|'Vp~}@ 쵓W+>dZ݃KΆ ]=Չ,$C r m{CKJ׵|O)V ⵪wXZiaJ\>l $:qv~-jƛa`CػN\FKF'KuM鬦dk^`+oelJ.Զ6\K=C̠J@9b5NbU@9CuwtI$:h q1K{{?8 !$;[ Wշ]59|Vgo3@eQ*?P).$G^i8_m[vW˟AΙQ SnqNwt.P0h:6çv ^b|WTѤ.uJ%Q~U!k *Ki go2_CWoo!d/yg]oG|cnZo_A/8N?:?XTEK}wvY?z+4Eɯ~Ef8|ڨ~W6RH*$ =sȠ .N%&c-S)L4m~VCk5ٲlDm+iswH O |NԮcE U#[ƛ˞/o}~mW{T m$ o T.Iɕ-;+nAZ<[BJJGP$Cj5g柧elj8@ ͮӾ{=[Ŵ dci3m #}B@%BkK\E,ye6 ԘXƨXs Im5JLD z;ێKHqĥ ;*ؒ=U0UմҒhR~5#Pc.!1W}Dxηf= 4T'a*sYvW.pd53Nv֖j/ucqK 9a{79;AI;n WH3OzfGEݨڗc|m7{b\EvQ>Zm<%Ji[lQPj4E:E 58ڤ:\mO3q704/OxI rӚt fEn -$[BA*R(HIwZ觲{)Fy;5 -Ye~ n6zќy8m|"c銭W.m4jX#e@Y!>{{! x,s9 q (>=x:ɾag\o1#וMe)((p)-JcV 㰟n^+pp;cLŠjh~JisVw`\ 5㸀8vW)J=WePfБ'I^62Xu"8mrBZWGdcI:=H ӗV[fX-jX"G9Fu 4%V %=qF?3sm+(9-2#~~5KUqӻ[_m5fd̹My-aq* ʉNEJ ymW(is=Ti"#mju~N[wa2D)Si-,~u6'z sa9,UTdO=r㮚xoh-֐_W+@#Op۾¯t4xuetHʪy]h#}˿}qk]:B(?MW4*_.mo|TLl XjV rZf4܆8 o% TpEH2AChs窵kX/ X05'benOR!{2h q$vT>) {d@ $&Eu+MeMC 4C,%I)ZJTUyC\vt_Un iUGVTZBҕ8V̔"$uTDB_a}]T>sFi|$_F욖19S$ O.T;8Aj̪*ێNo"5禹mKE AQoP܏_S +վjOsIX_amp͞}ījVbQZBZw7N}~Οիzgן֦ʽkݖ_P/%HSKqX n{&9H~U@ڊD,O]5=ќ1։Wek 9 燰be5If OįK'#I%kmevGjnDOm˂[yٱ$S enUz^+uN궍f>QTdSpg6{В!\9wZ!{ eՅs `4\xx0]-[P!ڦM! 3f[cyHms-jU_6;o͵ZJFVM>gltC@ Q5h qJxe(\.þMjſT"64nNL7-O2$̥V+eqg ;gaRn]}F֍\i@ˤe⍱D`e,ُ49mfKQ-2B  jW{2]'uS^EYvU@DEET!L%jTJճw|\o?E /Wž{kK|XÅ\2ޓiWR{N¥~/ߥZ~T苓_8(-o.'=^du)#M#-۽[is2-0e|C[+I1V`u#f6:d]$CθB,v̎uu viT5Ɩ}:n k 5-Whka3f4^;6Gham@Kq\Rm"t-oȴ%9TtNNñ|R@XB7QԸqv_Yu8+TC5gYVBlZ 8~ O-%2q%CmX;3gGOX*f*ds~Q3 #a.ٽ!-1yF=.TO1HKiv2ݾx$SȠP-+]]}f<7[qEﮪZu4ke@"@uhwWloPfwvn2aaq+\VW:9!8[;\lc[9Nk Pڊ&lSR;=wu6䮖?mBx_:oktj;w]rjTy`ފ)i2)Uvu['s'즯ֵN3e<9ff!N )Ƽu~ڛdKcrbB-W}Jq4&R {퀸CY8UrUbAHJ 70ӪZ`zmy9sfS1j)-`KѨ涳f!fNb3%Npw1]lh6ˊ9q6 z*fh@<ǧ>gbԬY4 5O0o_<WmjIተ]]v7DU17( $%͖SWIj?Oh6e8waZ)bd;"9D!_#굖8|Biq@FfV=|_&Nc]fKf|ǔJ}I 򐄡 nW{۩im1K6֣l^%t˷MIJּW 9b!#+~ث4n*z]&eZ[U:`Ԏw!m: -/4C"4P9)yqS˲H rK}W8WkF#\tl4'onT78֣iU]kLkvb|<=nhQu  l(" 13%M< fڰ 2v-ñdDZm[+Q-hSD>~gˏ XQufPfszϖ]&j~i9L.ziesDBԯKQJz%{ Xfk㿡[&*r{H \Oahr[->5R3Vvq!IQ"}G[1㷏X;* 538<Ƽ*lq9Kp$sHx>_2r iYr;bNFC)lmBөUcE6^m~bG{൮COK]R0:n+tLL)Ld8)k}rvW*Rֳ`0\T0e7Ө\&L1]5C"M6-Sa˘ncRe(ㄯ7rGNhϢ㰻z( LvxX-MXyN-uZ<(y&=I8>rlúg}m|PM"[Bu5 J!(lUJ tIH  &ENm!yӋKU}2}) [i($-N8BR߰;ƍFӤ;s.V\ \NcMƷ};wv-.q'm;-`2!xVӌ3nO \tXmq*d9n r).uZIC_7/zŋ7 ,.ѡ` b ``8?x-\oҺquX>KI$Q0!AS&O; ?מ:,]YWU|TڸGGǩU*ÑPetHwᏽ?a=Qp\c%+fm BL>OG^J@R\c[{Ԗ9[@94=:-]n!S-b< vhKǵ[i IV*Kh[s# ~g/WqHlz&mCX4j|ʺQXd˕B%(DJ"QE dԈ[SNBRTb${j*Q2 1ik^ g|Z[vkz9#AXܒrO޲+jTvq$2UkJ6 h{( ]*zϥ,'fZ$QoE5 V!`)'o0GcW%^\ǦAntUHE'|/>5z:Z6c丿"ŭ}(J|Xxzdzf:mR |X) [ s}ѝiL}v׊q:yhFWVP14tfMRCmX--z@#7+CĘ>#*YΣgǚW&pv{q~dc2\EH.7W , 9w,~GU4HʔMQƳ4ovˆ+s&1.NOh7mSYaPAdTJO5#Lͪ6AE lW(nR[ rC P!.HQZYH>D\^i]#1t "^E7׻< Jϵ).%|2*B[蹭۩@p2AzXKčH6+`Vc6ACJ=VBR$F6s'sx}Z>)71_\vnp¹q+))Qpzj4KD}v55Gev۫cA:{j \RIR% r4wdBJi6Iob$4Io㿄ǂ΀5-_ϡsVNO@yBf3S4ˋ(=F:'˯dz~SǯMg$Gaj6ZˆĪЏ&o0q,N;n%(oqi/f>{sHnhOeN4'NםCߙ cR݉T=1 6SmT=5(24T~'g6k6;̧)ͻ#>![HCS .g1;27kbZ}=-x\tG6<ލKv kA0eE^,-Lae̞xĕnz5%!)!@6A;{v4&cUTŰ(@-4Z%|`}5$@=&e#dV.]i/?Pm_5jld#`sX={7 j>Icݚ,֋XZ$ʑ`((6 $Y}Zpٻ UMĆl: #GxMzYEUU=B [y%Lk[.J@SjWtr8y)]̚֋JALLD Xkϝit uU{yќX Z~Oԡ9GRWB}lHأF%JoPQ <7}R˪.2MLv\]m\IW*7;T#eie&_Bk|[$֕oI{+^NǿRb7Hb6M׭?=c׼f?&`erimnЄ(mU'+uT8iy_3 ΥbDs(m6Ө_NLe쫦aJNNoKߔݨ#u 1.ft#Ϳe y 9ΡD*R*)`'ŇX7Fg#UUgIC:QZT]6 )[]:xYZ4KK:4x1%VLh:LI15ݢ&;*93GAu)T$ðQZ]wAytofs{G8NNnWm_nWH(iW!E-R㮹YJPyU"( ͢t^$)!@.p9թ{K S!xsDNV $7B8[Y_r ~]|r3r{e {Н}6%!#s"/VaUI)-l1dC;o/N1*}u:m/h$Q{6|Kc/f>N{9;G.t[Dm@^A*UBv5 eVD%(DJ"y2 5B%(DJ"QEU䷷Z-csaDxv'O3>ÌעߔڬKNˆb9<_](D\?D_+FiYRQ_]AW(O6mj"{#“N#r fAR.:ɂKm~Uױ[q-:L/X)jyjRv  [~8'i,M<9u˦|D߲G4VzhchrsĶ\0}O<Jy܋5MZt=EǚǷkikΡg_ϺdCK>fZ.ާpeSbZmLHK"B$! %Ž"nQO]}t#E9`lZHpao1\\\I,.Sֳ8B)@)c~;@*_T ̀ua墷Heh5iWҌ|?eѬr'^^mi|ʹ(^$uCTx2nO1zy2p$أЇIo)UkB5Z4gԨ')X  :r׊B֐ԒH¦T, 4BU53RZb˰\u~T]Dn*9mJjOPvBRj߸$ϱ V^.-ƛe'xXf\~jc!A6SQd\U=Ü i(<;2*ah`o"O몎ZtF4i}2-g &ιdFiO6 K5{Uʭ#8]X,O4;s4jAc>(J_ѩIڱ m͉ۍ5ʛR\!kqa٠=AU>B7kH* rMT+ӌ:H*Bcg7*!!LF%jt+b?cgV6|CqRuLlxj~-|z Lk>řz܌|ȵ,0tj+-+`(eԨUn;`h0#HVWꕗK808Ʋ )~9w/nLd\!߳ЧU&JK\Jw9Q2< kugZZŬ]-7K ƇjZ(JyW0Hi~1S"y+Aս'O>>ܻ7Y.M-<.Y\%Fo1XmiG4tGx #[1ܒK_b^[ʋxr= 2!&/I䴰9-hJ[Imո6,w>'SrV$//=R0n6k\W  kFftɋjykַ<9%eヘXM x5=H"$]}~ٜƜZ4VlcHCǮPi0M)YHKhIk hm%,qI. τmQpqߞxFk#X$ZStAz#gpqɒ#GyiR^Y x  a$KS!h`8Z@I&}eIZABСTCAWU\ A R(DJ"uA#̫j%0%C;Ċ2j~K61{0mi wSHZKJ6 $colZj\TGjFg5RI91nrH[]4؁.=\#+٬Va. u.2ϤL0zHS89w$sרq-pG{F64tKWSP!uth<6%hV?1 , %|9߆>C'ϴΔ--s2mX%E H{%'PjxX ,koZf=w[g$Z"¦7n0%~,7֮;u/Ԧ!t6X-[-IvrA[}ZFtǟ}7pG^\ל[eǦqgdj>! !Zkah c9Hk@u滬7 mQq[&N$Og)V]mTQD%(DJ"QD%(DJ"QD%qr)~y<+zZ'2 Ja?}+q{kH#w ^wV5B}%!CW׋ƕzc(s'ur(tEɯ~EҳȿԢ#TW⒄6)G`<KK6xh٫L |ϋsܠY㺖v$Di B; ns'U. 830|c(/Ӡ1z3א*yqMď:TŔTaN=Fu9 w=vS&Hې)ZAĮy ^4Ն!q.ݣ|*!%* @#z݉U IZ<iyN5!VfݺBA xGo1{.`tU;,LZ"=ma2(@VjqQz,WudVb.1HP}ƹrvSԀgNjh̭WE7|ׄvr1)6I'@Uy+nG4ϺDxgkޮۆYX .z ^Be(Τ cX+!pVq LE6 kF!=PHH$~Ԃ5 x+/ZorvV#zcݒEm^nt@^}d*{X$j:VyFv"B"6\k줓)v/̲$&4YaޒorRyJH>FݹTY4mC‘z=sncJ6ߪ ۿ76MWO"UM՗4PG {~~JmXx|+Nx;^y$qV!:lۤ)u$؍Zr;}>x*L +%k||/%WxewH&BBhuUS˪ w:SkAc0/n{rMBZPBP'`J!#zHHk&>K)2v;NW]o0$u%,);Q*^XDw Z|g6޲ԝpnQa'C`Sڔ:Z5 .]-3޹[V6n6.$wNcMdR]Dd8b9{HvӔc41nq dp Õ":a>-4@fK%1Ʊ٦ *<7趇vW*Y! r(ZsJyU-wU=o 0@ݏج@m39{1֜ t?w+U%((SZOG("5dyL, E>@yfXx^Ziђ[3~],3mg2;)WY>ӋqucUͯ9|=jү9Lz؂βzi /$u fRܤ2f90+ur$/$$nT@p?aإZŝJdbi&KNvyڔ\:ʖf\;3]"!f}+`8rv^`]Ρ_~:%QXP$lU^m_SVii s4e(bWW̱Z"Dl`$J9 θVF©(UhDJ"QD%(DJ"QD%(DJ"QD&(CO0N;2ԾV.+T{!kؾqWڗei\g7%`.d<hl- ΥquYr(TEɯ~Ed_QQ:/vG뭒lxδėqumI #@OvgiRA_+t#Qfc3#Mc ˊ?pGaNqCa%waWާűep'XU ymVPG5x|/W|zǶߒݰ{yQ1!XdJU%K ;UK{S=R#ѤJ;v~$R +8WLoAXdL:4v3=r. Mx{%-:$$*9N2Irv9=xX>C"6Kʱ=HVc.qrY񞵷 @W]bogqz[tZ̴Hx[n2/ Og72TR<Շ4icKլ=p=CUǀ}b#aA^ڵ`6gMDWGIkYqTH\ٗ8>EďP ,a8w6z쬘q^lW9tJDs=-GZ[dmflHm]ߘ =4YSs7$gOo)xm_xDV(76qg:)WvH*XsɌ'ysu$$cZӬ^ߖ=z`Zk oң!ms+%!!Iެh26:q.`r-#ȑvgiKsl)cn>#_-LDD쥰%-I%(vihC|KAud@R>hhJ9VڜI(IsMnك0v2#l X#-E u߉oqtJZr\)"̘mjE2- {nRu, cicH5 bCG-x3mSb0:{e7U즧ıc.YZIBΨ8S=kPL:*iy gَNe>2bGrfs*lflG`y mKE%*m; :LZ }aZjy$굳 LW /Z=xu,!ky>҂yB은 Tyg#Ae4 u e_g->h#3wsaef=T7BZyUlTlbEcPLwH뙬>GuAv|aYޮޯ9"ny$ȶ~+IeJ2O72Imd᠟}:,Tom4i.1[MInZ4z[V>:š%G8(2^{{-ڏw]HגǤ[;6|DbwTMs ڳ8lG-@{͡Q#Č+1;-9O/2EGjE;RZGx;)^} p{׍oݬ8n~5vDZ!eF ,4Le |7r9'UiLIC[xP_.> WW^{4XtH\-ɝ |+G"JNef䶠4nOa\i}JKD+X83ԫV7 [V}ΉHB-j[CRT ujJJ/"bϥIxVW5|j24e+t 57+v KUSp|i+q)Y6gbsd>CCݘV-A_G1ͳn4N.bV(IliP#h,Q#'m։Ů}FJJr*g.nP=TzS46~ibdɅhfEb-0i.:$<VPeׇۚD.ᜍ:,Jg-pM yg_?Ej^ [^K6\~W{#*Zi/*les"bt^_VCd#M#ϜWѮt )o&.1mp<!?y}pBD0HEYpѭly |H\PI$n #ȉW$G]0~VV1`ȃg05ortVw"y}~Eb $b &VMW'j݈$bٸFj9p Ot˞ړ}>5/U7LiQ5oП8^NaU򯑊UZ"Q{UmB*jڙw. ˮ\XWKl;&)+J\>ҘQ ~޲xƬiM20:GʡnXi0LF»̖<i;uti[.* Snj۹s'~۟ה=r&t6ղTUD%(DJ"QD%(DJ"QD%(DBv*uL)E/y}׻\[~iOѹx5%PQ>&4b]_[7=@@W^j#zn)ruO%B9pw{ ~\gsZV6) ` c!C:Leڧ /Tsw޿B('u_7$w uy:9D_*"?q"YLdoQPF$A"3;y("GW!zk 9NX5dkwvX1DIsmRsF]5/ikL$G=Ye׌!bVh\1eDKÉPJ+JH*eSQ2 Yb<'H[dW+ۭ>*%Gk mszʍ{sF5:Zîf]&$Zq ;69"d_.ȼ0!YO>e* R7 ) R5(QM3N]8FBal dzJ18Q!ܬ ƒD #@q3m#eS8a֛zQqDz%GU@m.}NM]AJ) *[:&1 0dxKc-#!\XX*ie!ԁA FoTT6HVvA`am JۙYq,KƝO2yb }ǓnsWM7nVVĻMH+O\|oxyQ2{ga杻\ Z:R VCԸǔנrQA>:vθ|.tA{{s<\̼ۙByR(t-Au9Aw ]9y;pfl1QuZ)|NXiAe wWu#x6ǜ}v^W?s:ï95hz&|5Za .!I I!Is ީa/i*]9JaWa~8w]؝1p!-,8zU$XP#iL$yDTe1:-U,M0;Pk-5vؓ'_FbT(l!kp%N@A ;Bk톇ϢhZQm:+ĝ7ɴ-JPs\qAD`)P %'j[Nh_TMN˙"=ax3poԻvpdv8o7)ǖGx[p((6#ze ?4{ ;udX8| ]LV7[m@+n9p8 QR"&go*-gs2 5-yM=lՌ.>ڊ NN wڝQ[)L \E]ENP(mDTE]6*r"DUڈQ "Ǝ x[|]՞C*ts7B?ge˚%"a.]Hctaн+X!sT( %9E%%9E%LBQD%(DJ"QD%(DJ"QEEsoL)B '̞}9I07T!k+cp;z% ?V?A"~^7yi.b|_Xȭ]wW^٩GM-2+c#g.q j67b_-"‰q{ ?0 mL ]sdbdF|:Wp 599o+~"z S'SFxWNKncs}$e\Vd:^~ΘiM94aqu*~z.=I$Tl>2Z[!BB4S+)ZWQhuy:9D_*"?q"iXLd_QPFݒX'@T ܎]dAh)I(o?VR)amh2Z_3 % 0׭%9ՉW-tjo҂w I=b5x >ʙte@IuC~3DÈ\z˿mH6U٨Dӗ)OkB:TO30͸ے4q~k(Pk-LB%eNYq^jB<9mV5rjI5vTmfרYx۴mZmq'H=vgr3XTNICAe!Y (5ik\u@ިx=3׀MO"e'c8no#g]ɖVikq 88a)Jq{2αP w<ձ 4$;l9,S[| 3+X/|f9.[m1a|n.\-zm6( ;UWu Gk>guv`Ǎ<[/WU:75\m bl0 ,Vè-L\g#EbUWh$99~qT]F-׍[O[Ҍ̡<.c(SJCm4*P d=Dgc?cEV ϖt,|^(rl`ֻ^qn!\ٿb\Yb>N|WI܏mx?u&BDC!D򣐝M:qQRb5U0{1>O/^kVwmt^'Vq, v,{WlP1<8?hUۛiFZt2t$Hs=Z3MxBqI49]&1k sDZL" JҤ7ts*9k %<%;oTH:CG}'bլ\ fsDz+Geeפ7리X/-0^%0d޶<&OO[XU%.S*,9jp9Czl:XnZ->^gR87`fzj7^W{#Dx5o?xŠv2G*73dWp:鍶oqlx\6%;Qqti`{JpVU6  {y?Hrk5+m:=A\#g"ΓiTx?nknF}_Gu0H}WL>\gKx꫹ä>aÄ==fnjZ +$JR,X Cl!m#% E:];"DJ"Q`~WwsEB.M|/֕d_QDW[Z;$v*( -Mo+J8aڠpxȭ3}VuU_%KSjCEiQP:F@^@B`}V,ͭe0f ЍM=N6;:z,[uU8IG9`/n@)ޯv'׌>?fgX&1k=#,dFdn7vdmGg :V;T>eFv¹i\\˚ XB9ةsC 3Sz1JV(8@;yC0yXmkU1E V~?d25?s$%eų=7 m{'sU9w+a dwJ c8# 1M t2wTy}:}a.s :+q}Z8[]ͩN^;8(@oڪ:*k[VyUɷb4p*Ԓr!PuEHgRG%NHb?pM o:HK`,~U"ME誑pNUN:* WmQȹ JˆD%(DJ"QD%(DPOƎ5(eV2tD[|WrF1)_%MH?9,uY;{*G;IOݰCnXڟ}@'}'3hzDp}z-URD%(DJ"QD%(DJ"QD*S a+$$TN5PA1oX*7q;z%M|pl+o>>SŘ:pwDğb\aX^st' uKV Ĵw>d뾊G2q#qRTƯ[Lsm1f9[ qDƁw}JXw6gyE_uB0#?.go^x/ ζ59qwD3G&7vH{1Ѣ>4J4R&;er2\V.JI^(Sm6MhhׯRJ.=I$T6lN2ZaB6NՔJR)U%(DJ"Q`~WwsEB.M|/Ε%h^G{{`U*4 n9LMǭ:j0{2h}3"% BJyHVi2!٧wW|pU.]Hj9;Lh e(mkU}|Zou[q<Ĕ(AmIz[|䈐K4ݗNpN.A[n^ իVX1LjZeɘl2!)T4 FUﳏ gdZFFh@OԉȀ xԖ/Ҳ86`idv ʦ:'d-wsb+f=CGOUc̃mςPa,i.V.ۖ1c0y!E)R޲*9$wH#ClhK iA  04T1!-l6S7 p[PXy BBsH82IMԸT5F82̙]_ep?U̪ѕnǕڤL4%}uTG# 2W$mLSihc,~!lS-!f%U5/WmǑbm$<kgP*RF2lfmH;G?m{}#cxh9٫&X\ۈ"!(@ZW '}53~':yyUڈQj"QmDMDJ"QD%(DJ"QD%x2;J/IpHSrSjڈi|6. SsTuvkғӀnOFu KhN#Ϳ୞J;+_BBP(DJ"QD%(DJ"QEį*ݾy([lӆ]vk^%NVu{:껣]. [V繨ⱛ~~|GɲvJAS1]wm^2٧q/5D??;xծEǙiҒ\-{~x ?]q ~,betLu=KXW r3 I ,?$6CH@+0*t>Yw. ,N~]&L8H!6,b 5J<Pm@(QD%(DJ"QE{V_뜢/rkE~,{TW+؃T.sʤLʤR{{FTκy {t*- <7eLnoUI(wlOzeD* ]:RU>_IR}T%rBj\aR{y~5ʉ69*W2vE>bIB^;)DCQ_PHp&.H^ԅTJ"QD*+ʈ>xJ.4Vɡ5IMOoW#Ǹr jSv_3|-baĨO Z\JT]ҡ?W}|"WmPJ"QD%(DJ"n>"B۱R˜*'d$ ܪK -f詺;ES';~^ Xؿ!\#X=#9uڥnbZo>;|ٷdm#GBˇEKn;(5_h6[aD/IxajNyi} Ȋ>*T<z!OUb_;^ͽ#J<,LZqOs*!񗹯^kOci@hZJUǩ$*yǰ>)-[mᶁ ²aZWpmDU%(DJ"QD%(DJ"QquYr(TEɯ~EXWU.I*{k6@}QᲷ )JJ* )H^FB4H5 혖i?;J,F(`w6`wogj+ ~@Baln{vצ[w;N˞Y2HQdѦ:Xy'r%IQ P;0:]JZG/Mv}`aY^A{ɿ0I.01C.qm:jVrԊ>C|9Fp壺o Yto;[/Txmci\*jȫj7GMq#9cg<޵KetBZ#iJJT^T qX.ivWu,;0&C@q]%v6Lp.?~Idjp[-- ۍ^(@XiSGVnIl2CG>, pQñˑeZs&D+; 6p{b@0͵`N,ueUۜdDD)h HZOFh|;it߉'W#1q7{:c&KEy]~ER6;ˆ9-٦ 6[| =|SP0*gXz֘T"q9yJQyP&rd39^=6Y<=[ԫN,ڍ$uפͩٙE٤nb˂"%ymWDvdKNhUˑ@b)tؓCeNGy.+II%$G!SR+BQxϨvK+@mrbv\ӪiwEp{;bjdq-z }{M[2IkA:I|4]?ּ#qܒ$/5| eEb51p:1m|܍d2_9L#ER½*mUBԜzn"5 ,gT2=];]:Px4;-pN~Y_÷$NZaɞ`4,A_ITޭ. }격o*73I0s+U"hn$%%Ha [`%'Ā ]a_ KHiBi];E7:oY+#2 u.$>b*T4ipDٌCQfRbsomR^-LF1 %j* +;߷^2Bީ | v9wKwH2܂Jo4 }Uvc;* ']?ٛyS/VKl4Rnw %WNޭM|+g_7562v#oC.GT'S >`mޭ]Q[4| }AR:mۇz z ͛nz.ʩD%(hIt2kBOmTT<jjk>IB׎z+<_qeD7>f <=|}]6X>mpw:]2QD%(@Q}50Wa@VMZp[ll ¤ʇ [\+q:A\y1߀+ f{āv߬+̤0g'˞Q+ L?WyG^5?+dlKo-MSuV98 @}@?O^lCkVXqK#TSm1Bl+p[O=0y;1"J>'dmp*tt}@\#8U]&LL"lxŮ oȥwZ`#e!ƂVm v) "DUڈD%(DJ"QD%(DJ"QE{V_뜢/rkE~e"R"8v}Ex3'; sn0]* [!jykK'b'5M,4h hDxNW\)6&e8"9`GӛbtCɬlb# l-O-(CKސRKhd{Ax n!4 c9 ēmE0LBE0j^Mw@vjh'qFŦ4@5, n,簖9}!DRx͵w @"t@J?U6yeN8)I)`8h ɩtvYw> |FlF%L>(<a]pcx2.xY»oW%%%ۉ*O9u$+lꋛGԬݔ G_>Zh?S-%5z?$Aڏ21N3 );~sʲXX5vriM6%%TTm#ڨuN-TŴ]egNZz)W q-m9Yvs\a +'f؆ͩJ\fҶ_ql-]liuM*t5'aY8Ԏ!ʽv7k6ψ`{ͨ1.5/>,/[5өZS,:pHnRe)ҐHRԴ7 Vݣ'FaΫ ƨеm34wze0{&/eP'Ww*;jXi`-b씞f˲L`D{]>'0v.e7`k6: ʥދD6tՙyɫ]e%HbpPAYJ +n#@UTC[D!TS<3ZZKLyWs0+k%b໥ &RrN6Y g nH)cYhEJ5I?k1A|nI;~}omj쳤 L}tW/]S&b8&M2vf#UdȌH1Csmȥjs^)|%AݛzǢeqc%aQhvQqqᣓor+[j.'(ѻ}T<yѯ ,s0c:ϟkLsdzF HiW"'wQ ؉UiJ/⩡&V.p?~kZ^m%pT88B7cR}NZ'ǒ79k˻5A=զWC {DBflR&ˎ&B-*JC}{Uli{o1PN>V_\ii΃>3f$,v[&Ћ+ \ J*TysFL* C\v&5;tdY\L2wݻ|$y*<՞70 /]WXyl3wtԶcV\=5,+n R%O1+F992Vsxԋ☻tYJH.tYNlד&G  -JKڞM9󍩂*Pܒ6*S%SAh?qs͉$s ~v-M4n[|)@s'CuQ$:9Y\Śd$"8˨!#nG1V%(l>j`Ih$tΛnQÓneՆ܋GQA"ay]o+4SZTiy Eu+R(HoQ9`%T5$tVKgyȺa5&ؙɢ[*\4KbQͷ)d6[s%]'Nq [o.f*MǠ8SfLˮ%*j6vyPk67/!:]<{Dwќ@YfY0̖t%6ۊaSnRǵ],1?ǁT92w A]ܿnE˼E]SoՐfQ~e>uaW%#;.D+S[h -m\ZRT)$FoS{l5Wj%Wx'dX\q=~³ۤ86<θrtX/*;nthBSip@P؝TH$lcyHWM| ;qRXpۑD+訙9\[n:,s#I1\OuLR\e5pm׃=7ο5m\?骀)*ד./ZslFۏI}-}?V qRc}gtcK aa^b6uQ$cbs5>\!Ȱc]}) jѷx[7.F!p [DF,7x՞U.=~e$ΖޭR+x\h~-qRMIqp8ŌF:m:T>ӝjN{_u3&Jx 'dm^p'` *Ν36]\!7wY&[\'`G ر\0RXNwZxqmBGJ@vjQr%(DJ"QD%(DJ"QD%(DJ"QD/\~P_8(Gm2ǿɑE^*+.MR_3HkdZ/Z+Kr9߆JZZw&8RBBӏ: :/:]$U cEOH3Ԃ7=타DtR%+Lvtjcamc+ϬnTw]˅[cBb\gP<+Jj7g_5d/5fpfsuCE,Wklj-HxHDi E,vۺ!Q]6Qj;.:y~JJSL u EU٥ŐiKQ*=BN*h֌:GH7L.ikyv}ŭ7!bhJKBJ^[΄!$GZ ©Q%cӹ+R`^n}6JEp;pIβ&tʜ9h2( ێsp[2>f~FčZ͓2/gÚ<\NrNDn"_.4,}|Ehp sGAλ*kL,ٴkUӅ.e#dm7 edZΔ$I|z{TTK@[Ts(nԐOGt{Wv]*Yu;U4. @krp]SnBǣv $5|F_@g*n1?4k9vҼS/]]/4v"D#Y %TEAF`l}A}5*vۢ_S-&޽{2ݮ-w5Rm-!ঝ@mmʧTmny4>:9yY^ꆺi7NVknJ2PN)RMi}Χ3Pwά2|?V~ɺߡQw)TqfɈ߱W'4nf0c_a,F#@&$4xtvY=֟I2!G\.xE%ykn3h]ȱҿg])J:`ε(%=gG(WuV[j-Xl`fѿ~_-M{]7!g=+_s'orH[8iV|w#zk8iЖ;#%y9@@pq JߣG4jKM?Z1(f1ȇc["e%_yEI[ =Yx1.9x鼣 3" hOMM<95GݛZr^o!__̷ÓsY(Z'K ɢ1*-\iWX&A.c:MnyƲQ`9 aVӳqAT}esh Wnx|4DLWsAr:drٕj!ku #zHO*HH5Az*smIq$z=V[)ϵm_*՚E-j*D+sZ]ps%CcF›L9s2xFy,oj׻Q4Zw/igdos3 Ӥ/qBٕWQNoUbjqM8:dގ#G*}zoWմcG+~.i-]A'RშC;kbdDH;LJp^/lα.. H{1т>4IBe/7AT/*V^kiBژlƎM`\mjϬҫRd;Eq _ ںJ*)(*%Ts"s"QQ?"s "DNj"s J'8ƈ⒈ Ds Nj"s蒅@QTHD(Q"s "s"Js $quYr(TEɯ~EݽYc/("Q_}k)JP7Q=G.{Xqo6H ,ӻQmA$)뤉?%KWnf4 NPq7'!`ꦛ1uBr H-x8PʁlcVvnVƍG.~+gEf^Kxypڝw!܅̡oOP K-SP9yY/udrܣ,a 1)\4-)(@wޮUhP; 1Y`V\2qi4f薇/l[oOK> fV.BUO0@MW6&=v+gMf얹y+e^خW" r7*PT@B Cu>  mNqInr^uמK(ZC! i`sىP&eRd!eԠ քi@OsRta~r3M5u>ugJDBC@%}U `),pTG!nqPi?B<^Sʲ~3l+Q)m]J@Iڤ( . ~>Jξ8]:{0^1(Lrr"ܾRG/zaTroͰ'm=uHԁ_nvVw&e;RPŗJӬwP;7A,jhFyyyz֋?8267E{VRZd쭻V ns@Ln G=VZ|sFf\8!Y_NbѐCL>[KRV;%@5駀 {ގU4B4oxw$1%z3u:h|6ʹªxu総Uj"zWmj@y9!p6*0R#'`nýP|OWi5 r0]W"hLO@f7CyΓ2y簇>j9A'-#C0{Y+Js -GZË )P;ڍiycK.8zoq[>`N"  MխeDd73Jùa+|Ei ltKfm>󌥡!=dv)۽KsB1w3ώբ>%AFwW%:~.U\_f>]Kjq-|V7'*؟U{|G_%aai[?+1ƭ9Filvcw+V/Oarsb@ޫu7InjT:J@4ToQ3ķ/˅s(LTG2梋{WC$ y+nF NjR|<ipĬ7>nT'rgҟh@;z*A:Ebhs%ꖚK.2HKԒ y.rI!$@'jhvR59n>"t*Yּr.o1b8ZVRM ւRFTjIK\au^kkNWث=8ZϾ$EC ԍ4boq`iBqr4s Rw܀OސiU9$I| KժvԜpVCBI"9e p)#}Ud%5u]:cT>ћ[7Ȣ:*@1yR='o*>BIҫOWVs5F>{Ħ`vUëSCǢfВFަz@ԏSTdL,<[Ao>eo ?Kg%;)G LĵύN7zuZsjd댉w̵:ꔰGt)['z:Au]sɵh@33ǢەtZ1?td Ǣ7RK{U_ٶjOSVGGKIxN:V-C;2lئ\$2a HZT,r j}'1"e[k'i DFn°&LQy#Zvn^]˶hIJ(O]3].bVVm.1IF.\R2X)O0Ar UA6s1vS-`q؂}kqS\l6OBUhw C9hZHڨ$3Pֻ0`.W(\n=BACp"E+mA oTWtwBXnGLy¥s<8 K "̔_bWvs〿%n{ (vPrC:n=9nE^YUZ]e.#öKyl<#e$@$" .d<#WH7]1Ư8=,o3`!ERy9DZyV{i4=]5;ͪpiy'531ns $'4ZlvC:WXNowܥޅuF.riťo+r ֩p;mϧi>nI9I.Ly%22CLO*6sċFi6+fYSvvh;2 q͒RcUS6K[UԎ7?=8[ZeX3,8oGSkpǛYCIJJӹI#C5ߎ_ztblmPr C&F)i@pϴ*3H`}P4Hďa?Mi8bx|oEՌqd]M:\ ܒwoU=a *7yWK0d{Ѯ)]0:n=FSIsCc,>UR|.?U(D\?D_,O6ȿԢ37\rSSv%*IIժ0wFs/:#1imn8Kh 2U|ymGff\/&*\YJSpUV:}c)HPHk鹣g{{<.-kp}?j"bVq~͌~JmC c V~QڥT4KR 0y׬+vm8eF`He ˒炪UoO[X鐓tӺJ`_g =rQiq]?O f!'q^n6۽׍:mEBsq]i'Y{Z}ehlm:s3Bft|+]z n~BĩlBrv衲{%}dtQZik$i\?~mr(k&Ku!.o'lRbۮCĖ)O&$qjSAWMË[LOF|Gosw"Ų۪N,U;kP,B- mJJV!Du 70x'IŭsAXLi麨gZDmغ@LyluKnbAu?kxQixO&jE[.e'_ca[e ()q6EJ-GaA/. MVE*ӗ_%o]Kt6<7T,Z0ޘɻ۱Tssu=MhS<* Uha?nXܑHepyf*iǀEPLOgԦۺbVεG i-rzyO+%;mP|9#V/$ປ11AJ#>Y~@bc$ҿ̽gĖ7VE,[-D,yV>Hqp<U- xt 1:ͦ"cˑeڅ$6>I$xG9Zu7{UiXP>[Ǒ6c75[S_FΑa;\ss i[شrÿG0-Ѩ>󫍁VKR2kLxqzE(J=E:{NZEW 5Z'fX~wir17 &,/!گ]<Ե;r[P LWJl$Βd| t﨟f?3>|³ 9r"MQH/s3eև"ts |3F 1̑>jJS:l˙ǍmhDyx&b*1f;\zRʂ]qIo`iyw<ժ]4{s6{m֣Su\q ~ı}vF+L YC\|>ƪG૷=gR}G(R&]6qܥVxxaz=֨2aўih2TV:P4uM80DiUfַ]34\x2+cM9#9; c%&<7&L]p[C-$vS?5Yti^ƞvh\cִH N c0%f} }&BVXtPџ>O,+ ?e=a>V7|S;\Krߙ҉ߐK)DQqkN͏rGUg!@yۥ6ޖҫڑD{> j=,z3#edxlͭ<j}r}&!y*|YlUMkguc&?l< Kc§*/Sdy6e)8-WcOBط %HJZNjf 1:jwy747X10+lziFEj%pc-H'&S?YauP{+*%Qu?f_.ϟ/%۟r -pqgs\vaxjdܬZ jJd`m!!|mR*#ĈM-zMIձoIڳǂqǶ]^=}mtJ3oSa֔By @=jb(3WӰ;;ͫ|3-E&lڧ?z'E{uJ ߕI .pD:^uYFŦ?G_@DrG.9][^?)IF$tR۟ٵHl`2kF]?@Z=46|?HY57B=p.Y[q&@E(q \fDkҔBTO.Ô[Ad >9D:USX%ه귀-, LnpnMcKl$U\WKePyʂRy@{˞ӁJ6.ۨ%H sK}ٺHa{ ~?\ $wSՔ2RBvt:6nXXtm鲪 O1 Xt;^ήy҇\ٱ-mŪnβ~C6^z@n>N|ADlht $]g}ԕzr {ޣ^-Ҟv*prZ n::X@B*PW)pۀ>W̱뺷PR?ubH>nջW(c )>]b9Nja<*[} Rl{Nh;0S%}2=xl_ِ1};f*r'*S68P2Oٔm;UV߫py9]#StU~~5o?e{M\P)2ᖕYHnR*mG,+`-}Ƒغ3KIv`|M4WX*v#}ebv_޹YVgvɖ%aY!qmqPZʁXsb Pd`z<';fvCx_l&K3n81B#=9RIsne;)[lAEWnGm/BHy +jn/2\-:iG3(ÅͷM^@-.QV#}Iڗ}׺Q)Eƛs H."vu 3g4nE͠(9lFܜ@b`8jj!6.k GpAMbyfBtgE1q~Uϰvۘ[,Vȟ}͵:$[[M4Nli3>ʸ&1Lpm.~y>3e-2-3! yu1 [>J kS)J Pais}đ<ϗx ~Kww͑m,Zg;GbƒqP2 -bV\l4x#_ |<<6So> O3;+\ ıq_\"|GgIJBW +@ys4{LYTގ{G τd/7`A̭}vvuLJc.?VҾ)ϙ@5Ox;UXn]H$pA4s[gnv8-I}-[(Z(Q_kZtnY2}O(+yYGrr%cY>gm7+Jla`#<ȏxZV#kAJ֣;j$pϞB7%ONK:r8自lw;{(鰮Ն`Gdkd 'đǪb:eM+߈UӍ r ۛc6;Vb?#jrƇp3S"#$*wU4."4mpלuuyRƚ,.asRn̂#Hm}M8.?ay}knZ(/p6fCY_Cg;,әkպo9/!Ee-V!%Vsݱ{M9njjЭٖ$5鮟Um?Gn~crifZ܈,OQ9%6Dv2kƄnXY:ޟEfoқv=hՌ#Ҥ **9<2 ȷIJ<:%r7Y(:;<1^XREos<!?m']vDFCӮ6uOY(Ὣ$q>$ȏ! ?ռlܱej? ߣ7BwH2Vda]Ɨi[[qy Naa ۛݽ_eXqy3A>}wTTnfm? {}ciOG0+ LQQm3,6e."iSNG#E]Tb5]Kyu;{Jݱs9?Sb`wfES0h7} rJw;wWtj7M?wOFy3HL3#̿q{iw\|P_C5gūHt^WB;<#5X:(UNǵ4@ >C@P?u#YQ!*cGE@;y @A$'Ξ*"JP>GE*W FJH܏v B€) 駾~[0@$ R*R=^UL*r'TU  FUynhnGU2D\PGQ*@+ߕ@UMmCD+@PvLk*T&R y}w(!%6vt#z4SZTSUD-/?>Y ZN݀*T! Q`/\J/rkE~t[i5e* 2mwe-.8{N8{\ AT;dMP(DM&}6&D&D&QQDڈQo DB7&}!6艰&DڈQmDMDM6&DڈQj"mDM"mDM&}6&DڈQoQQj"Qj"mDMDJ"mDMDMD_0?Kǻe"QZimage/jpeg ABCDOTbplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Ehttps://8d716a75cb-custmedia.vresp.com/6d7c18f16f/MS%20Logo%20Guy.jpg*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AZ3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-RangesZConnection\Content-TypeTDate]Last-Modified^Content-LengthTVaryTEtagZKeep-AliveVApacheUbytesZKeep-AliveZimage/jpeg_Tue, 27 Jul 2010 23:55:06 GMT_Sat, 19 Jun 2010 00:31:24 GMTU17259THost_"436b-4895730feaf00"_timeout=3, max=512*+ab_NSMutableDictionaryac/\NSDictionaryCk*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~).9BHKQZcelt#*0;Ff +=@VnX_Ehttps://8d716a75cb-custmedia.vresp.com/6d7c18f16f/MS%20Logo%20Guy.jpgOCkJFIFHHExifMM*bj(1r2i ' 'Adobe Photoshop CS4 Macintosh2010:06:10 16:26:176E&(.mHHJFIFHH Adobe_CMAdobed            E6"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJTza0?e[uFY :QVeU >$k,?nǘ!ů(^ϥDfv,Bsln͟I"w&/V;@qìSxC-.7[mʝ>K?y _>q˦ګ#s^=T YɆ+䌵pA!*?Yv `ǿ[\T=#ae[BޥЭ1jG qe>zKC'5?\>V]ٿ[:8tgX+ǧog[qzEX9cjF?xm} '4_O +-?^W: z]uX}6G<2HC>pq/ޗ36YK#"z9%;[jo{?s%cg"3Y\RPן߁+{[+̮^rJ0|I%#2I$z _r%g7}G}g?_.$YW]?Mnx7?O߲}Y'v?Vʩ+X?˷?k?U$UIHꤗʩ$ Photoshop 3.08BIM8BIM%\/{gdպ8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIMKE6 MS Logo Guy6EnullboundsObjcRct1Top longLeftlongBtomlongERghtlong6slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongERghtlong6urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM 6E,4mJFIFHH Adobe_CMAdobed            E6"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJTza0?e[uFY :QVeU >$k,?nǘ!ů(^ϥDfv,Bsln͟I"w&/V;@qìSxC-.7[mʝ>K?y _>q˦ګ#s^=T YɆ+䌵pA!*?Yv `ǿ[\T=#ae[BޥЭ1jG qe>zKC'5?\>V]ٿ[:8tgX+ǧog[qzEX9cjF?xm} '4_O +-?^W: z]uX}6G<2HC>pq/ޗ36YK#"z9%;[jo{?s%cg"3Y\RPן߁+{[+̮^rJ0|I%#2I$z _r%g7}G}g?_.$YW]?Mnx7?O߲}Y'v?Vʩ+X?˷?k?U$UIHꤗʩ$8BIM!UAdobe PhotoshopAdobe Photoshop CS48BIMmaniIRFR8BIMAnDsnullAFStlongFrInVlLsObjcnullFrIDlong(T FStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslong(T LCntlong8BIMRoll8BIMmfri8BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@      E6  s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?v*Uث0I Yi>8B%~ԯ9qY}0dyG' UQDsoG?TCMxqׯNn|"v*Udb_ɚߞ~.Mǩ4hIQVIUc3[ǤrO2[po2~kyrs}GsyJ5)sNU\N]iF8tn|zܺ:ČqjSyDt_>;,t[v޿*Sւ4.]_BJ}jJ{H:$\佸OgFlm(_D_~ڈ\~l'4?#y5]7TF;{BJJ1 З 7yjr;IhF}>(Djϕ?Rsb>xו.ŒGGz%|c-]?Mm!%"VQbԆ(ܽVr#gUWzWw?̝KZ6\#.i`.d4@ ik^`yvBqxSrrx$}5 n y8_CP/V8g󖍯ZG] mÊ:$sZ"F zdzm5ĉFl:AzG3࿔Qq]yYYثx+|:轍r1ǻm/1MZxc;3or'ZmKWϦ[۩OC?2K1Nm]ÖH,`ɫ.OQ2ysQ]SHE9JWmaB+yoq#ia g|ݖ YWwOqDY _gQ/W>@yR9 Iv t 77XKy˙fg˅YշJ3on OOyS̫ ^M7e|MuLxt]ZxzMV\q$xқ^[L a_;jM/3Imk.m!aw2=p˪ z Wy>$O^QO˘X$X`f æjMr:r{#$(mZ5;yg[EpL^1 9v`G&ArAz>WhqxډBT;'<9O:4%]QյռLv֨Kӻ ³l6}{Hj|;wN+ݗ y_Ϟǡ:d%%ky"HIs*#PB*;_@aψQ;?wkuO/OoȨ,<'V5vǕlhqߙ|v16?_fWg?J@?[g]<~K,{T}υ|면wv∠f&7$;.GV-' +IcDcAHѠ)SS܎ڹs熏@8䐈?ґ#} 4x xBGn1ɿVzt:ͧiq HmbxbDLjs};`l>uIWhe^ن|Sln`v*U>s뗶qIuwyxZD NiU2Lm $z8queyQG}MM--1iJ߱_{SھÇ2UtI~ϻ{Ykx5|W/|çǩic%͔9ZJ0?$pH#|E#:\'g_`a(L\H=Cww֏+E[]__=P%m&%G*K|:̔e@$-=ϡHo6D߿e~+Wb(@ڃk3Isqr<15Y_bg)^ V3}5ӲNKs]|KӝgcCzoO|=&#~u=:oν)ӽg.od)K\>WզJSjf 7KU[SgR]Zimage/jpeg FGHIO\bplist00jkX$versionX$objectsY$archiverT$top "()0!12LMNOPQRSTUVWXYZ[\]^_`deU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_Mhttps://8d716a75cb-custmedia.vresp.com/6d7c18f16f/MS_LOGO%20w-kill%20line.jpg*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#AZq3456AWNS.keysZNS.objects789:;<=>?@ BCDEFGHIJKVServer]Accept-RangesZConnection\Content-TypeTDate]Last-Modified^Content-LengthTVaryTEtagZKeep-AliveVApacheUbytesZKeep-AliveZimage/jpeg_Tue, 27 Jul 2010 23:55:06 GMT_Mon, 14 Jun 2010 22:36:18 GMTU57165THost_"df4d-489051dfffc80"_timeout=3, max=512*+ab_NSMutableDictionaryac/\NSDictionaryM*+fg_NSHTTPURLResponsehi/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverlm_WebResourceResponse#-27Z`{~16AJPSYbkmt| +28CNn %3EH^n`_Mhttps://8d716a75cb-custmedia.vresp.com/6d7c18f16f/MS_LOGO%20w-kill%20line.jpgOMJFIFHHOExifMM*bj(1r2i ' 'Adobe Photoshop CS4 Macintosh2010:06:11 18:50:57ڠ&(.HHJFIFHH Adobe_CMAdobed            L" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJUrۊi){]mr+Yc+`.{`5sZ^?XO]~vJFpݺ誊k jtc`ϠZN ҧI$I$RI$I%)$IJI$RI$U`yfTX` ϶ii;FCN6\߿\^N`Y@~!Ϩ4v}"jyX2d($1G#.HK0/.F]+=ݓSls;Go?q\sƗ8\w++՞HeW`56@hѭkk Uظ4a&.wS_|Z8is@|ӟ O "xM[~f3+{],?.¼?/PӗXe(u[:Iˣcߋ^S`ݏ嗢}HߢkOO*Wӛf~q6\kwQ~w+UU&f Kc)D;"lsfY+g;]-Yi._sWJ[IZ6bWKvlz>)\U_+>3t,F\W8Rq>c{쬝?Ң[kW#D?Y&dq %3kݷcM$KCtfu6Z\[Բ[NNE_nW}uut2vz?t}9Y`EF9onl NSba 溫}{n0k.r:|Fq4@ԅۓyuN3k>uz-5֨'V#olTCxqʽL"RIJ\z)ɒGzNNYÿ71_vjc)] [E-bdsѹ1>hafn-ʳ9_Ws[zHC4~߇F]y9㶗lenv:_SΟm`t_Q21T lkkٌ?GЏKwֿo{zfÛAIMO?v4`m}Y>H3r6>e>}gq,cj%~oS}V7b7~[Yӯ{9[ڋwv?Vzo֋.QVUm^h!;ϧDuzR ޾h!dƳq滽Jms~oms"}|Վv6zc77z_\RtYܻ1km6^_Z:J-hC=7{k?G{]UVP,7餧\ ֪o]W>Tpw 5j1f`t۳+um[+ȱַ+g"M_gMέmssJwWV |߱uue[Zu˽mdݞOc^V _1mLJZ?9nV(gm.KnU6d?"k]w~YW͹Lok|^zv?MT07~{[Ylj'zܮe ?M}Z&6N3~ks`^w1?t 8x]nzgԇ$lk:}~maʫ6.bYoQh sGͷz~`gul^\r1o՟c?OG93e8OG+9e?GI$Rε־}d˿=#\+%RSzA~+ˣvSgrm/~?JlINUV}\v9k]ݿ=OUl^Γ6%7?;gBşA?Z6)}dcPa z$o+_MķO_>ۍv7oO֭n5IOc翧[X~Kx-&kb~u\:}fN!UwE[{ljMg1 l߳7ٳv)#[+7nzdtԛ:Tx?'}g;z.[OMmJyȹWC+߳OQoujhƻ5 LcٵS_TeM :Φ֓.5,O}OgϬYX՗fygkUW3au__3:N 8Cxek}]n~jEW_xSt\lVl,cݝuސoWof gΝ:z]nUgWV^_]g1r}ՍC]zYw c}~շ_Z_:oZ6t;ɽb6CYgfꫩ12Nր]G9釧}jXo4m[,Ӻu#Xezm6ۻk]}GO;EP :8gIOr_U,uQwc$8nUW~Iw_{I9'k}5XUtӋfiw:_>L*Us:bߝF6b~iC/uMƭ_[*OQtj~ۍGgMC~mߥSU95>ƶmֱg5ݏo% =R^=Vgnۭ}oSGWTJy.>fa6ёMc)g[>NNev2Iޫë̊=nU[~k)ev6w2:KfBINN.b)+*YS Kk*#ko*Ǻ1@hޝL7[[vC'a=]32zWZJy\Xm75UQe~]OVFGs*~z jtswu;2/mo"Cvd vʬMoZdST)\U_+>3t,F\W8Rq>c{쬝?Ң[kW#D?Y&dq %3kݷcM$KCtfu6Z\[Բ[NNE_nW}uut2vz?t}9Y`EF9onl NSba 溫}{n0k.r:|Fq4@ԅۓyuN3k>uz-5֨'V#olTCxqʽL"RIJ\z)ɒGzNNYÿ71_vjc)] [E-bdsѹ1>hafn-ʳ9_Ws[zHC4~߇F]y9㶗lenv:_SΟm`t_Q21T lkkٌ?GЏKwֿo{zfÛAIMO?v4`m}Y>H3r6>e>}gq,cj%~oS}V7b7~[Yӯ{9[ڋwv?Vzo֋.QVUm^h!;ϧDuzR ޾h!dƳq滽Jms~oms"}|Վv6zc77z_\RtYܻ1km6^_Z:J-hC=7{k?G{]UVP,7餧\ ֪o]W>Tpw 5j1f`t۳+um[+ȱַ+g"M_gMέmssJwWV |߱uue[Zu˽mdݞOc^V _1mLJZ?9nV(gm.KnU6d?"k]w~YW͹Lok|^zv?MT07~{[Ylj'zܮe ?M}Z&6N3~ks`^w1?t 8x]nzgԇ$lk:}~maʫ6.bYoQh sGͷz~`gul^\r1o՟c?OG93e8OG+9e?GI$Rε־}d˿=#\+%RSzA~+ˣvSgrm/~?JlINUV}\v9k]ݿ=OUl^Γ6%7?;gBşA?Z6)}dcPa z$o+_MķO_>ۍv7oO֭n5IOc翧[X~Kx-&kb~u\:}fN!UwE[{ljMg1 l߳7ٳv)#[+7nzdtԛ:Tx?'}g;z.[OMmJyȹWC+߳OQoujhƻ5 LcٵS_TeM :Φ֓.5,O}OgϬYX՗fygkUW3au__3:N 8Cxek}]n~jEW_xSt\lVl,cݝuސoWof gΝ:z]nUgWV^_]g1r}ՍC]zYw c}~շ_Z_:oZ6t;ɽb6CYgfꫩ12Nր]G9釧}jXo4m[,Ӻu#Xezm6ۻk]}GO;EP :8gIOr_U,uQwc$8nUW~Iw_{I9'k}5XUtӋfiw:_>L*Us:bߝF6b~iC/uMƭ_[*OQtj~ۍGgMC~mߥSU95>ƶmֱg5ݏo% =R^=Vgnۭ}oSGWTJy.>fa6ёMc)g[>NNev2Iޫë̊=nU[~k)ev6w2:KfBINN.b)+*YS Kk*#ko*Ǻ1@hޝL7[[vC'a=]32zWZJy\Xm75UQe~]OVFGs*~z jtswu;2/mo"Cvd vʬMoZdSTFStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslong~^LCntlong8BIMRoll8BIMmfri8BIMhttp://ns.adobe.com/xap/1.0/ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@      <  s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uv*UثWb]v*UثWb]o22ctiHU[۟KӁqVXAs68,$h_G 8{?Q'9ثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uثv*UثWb]v*UثWb^!9 Ӥ~DZsE$t-s *Еsz~4cz!#y~[ڽ4XL/9/:wk̍JZzkzY.H$ M(0vj3LGG/˳4O o9zy;v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb=GQ4WTM-/`C *^IUA$IY&,2d8_2j_YXeɟȰu=NO,/&~ȖtA8J{'CDQk#aohrK4}GWGq/pUثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uثv*UثWb]v*UثWb__*ȯ"j yTܱ5EVJ~ ;_@/y-3qDO:C=/: U?-kyI#tAG*wWw ^t~GO4ثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثW6>RZV[4Gmd`ҽvsG5R@|w{IgK?;ߟwϔe9fD ͹_WOfuΫ d.Cy|C>f Cp/#D4XB`-}Mv*UOքL-̩2[Z@(t]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbv*QY݂"Y:r3qD7$H/txu:lM/ :)vFfpc~w?fZ{GwK|uMJ-uI4]Vvz,@Ȭ'`=n^R#(H_c]:$xD9^@L^}ثWb]|99O&˪\7k#˿wp?vmóqm-|6ߘ~|1ӪZڞ\@w׎R=91>qGl~!콝"x?{o9qI{8DB>?^9靑`1 p϶|[s_Ηiet3Nft$׹ ^v9^0)wQesdOWtOv*UO?"2Ǜ*BK! ! VMbvnyA۾`~VC͟>g51j_)OJ𶶌l%Né$KzX&!ӊzz'o61M"퇛!hw^dvo=nA"8Uv$g $q@!t!~\^>RQZ[TJ9}"J$BxfMYj;;S2υ}88c#y2bQOn,,!`YMVG_ 91p bv8C{?!?K̽;v*UثWb]v*UثWb]|99ȍC[:& fYtӵ11޻+=@|Xwo<7^Omt41r#9}fi v#~]v*UثWb͟_^8y#F?3a]Zom:O14V,+5Y.I+*?1yry>9m>umuj&w5~7f*WvUv*UثWb]v*Uث5K2= iLzmD9㉗z_>1$bz]zwS=G% a; v-vd9\a#J߽{zkå|w?1?25;:jZeu-5t'd pp ~pO&C92/'`Ui'ſǟ+[L?4~g kKEUKٔ464IVk?'o㖪|H]v.d;Om^]!~ffyCY[.:Vc൴v§5*ĝ󐖢y3o;ˋ!{? KOo=i]B_D -eZzm*|;N*]v*UثW?b|/?4&T~J%mU5ǗSlU?;tm71Gg7VvW[[GEOꪳ/OpY^dyڊj~j(nD"/RVB YZ ]v*UثWb]Fժ+9lR]p\'yVo/#|Kaoڠhw#Cntݟ?җ!dP{OPmu#/F8Llo`obu> 'jm}`4lW{ SDqc;xO[1 [HsLv*Crs+/< U|2^\iP8jnH1 -é yCJ|slw?oY9 ޓ#oLn =CO\>oGٕ9woڞk{Tp>]}‡cXɌc3eېpHߙb&aDmCP5kCp њEك4o/Oya/!{k^Q@ӻcO>B=ʻo]V2?c}}(!Yܾl3'ڿ̷v6bR'_6BW%˧N$3dwpߩ=Wb][L~=\~MG~YjR,|?]nXmnm+cXJ#:L(;WUU?}JZeYП9Xkj-渒2iFcJUww^nοˉ?,H]j|2ݫ[41V4mU-lmnml"&HE VA*FL뚗/Kί5q]aΕWj-N}Y;z'EykZl#Ȁa :ԖDBJ*4 ]\ߔ~SCW^P'~̚ c^it.y~[kYEommY@_>V~fg~XO6 R9,|*YKy1е129y)Ի Uo_*~WyQ< .<9 Q?34acR{euy~DQZ^V4v~hLh5'qUثϼ?u4%<+we6$LM7; ۮ*hgե[(|"SH A'K2+Kk6D<(1WO+_-RXDeė'ʫr+G&UɌ7|=銿o¿'s+Stk!7t뙦Kx8p+k\Uhci>X_u/!<\iZ[_0B&.Y=)A//͛*O{RL%޺'_Hzq|9c?8п7?)(oqgg["F{I+ǯ-U?ɯki5195}NLҦu[^<&F(mHOIE//<cpO@u&*Ղ;-NRo 4Bl/YaToCg4^Q?:?48Oo,ԸN7 0ATzWmOcgX} ?b'c?c>cg;NG6ǟZ=H>mo^brQhlGƏB_+jw唀SHg? 'м}@k3^H4 ]\Η r?-#_I~?mo] ʐ.,&gKZ2x&r~{u3I/<9ߘg=}m&Qmf[Z?JKz י?kvhkv˒DvvmB?ߍ7fNMQ?N6-Gջd`yNwc7'53 I.yF#l?/|Ǩqym?F_S=8.'dhlC'>n??"}O:<W6]k 'LKZҊFc_ڿF } aw".eżG*^B8UUa&dl%;23ui<#>Qpq2?Zb#hkU̟ilaCFNНD#r;3%vvuvvVQ$vH5 (gjF"""pثWb_?/d}76P*b|C9uP+/m}ΞU.f[K$uuI 3+_ߘ_/5y˞PMיt/;Xj7%~hԨjTFָt(]w^hw^Sl-E߫4!enmVETW䥗g|9 廏>~ayOV˳],WH%Ee, 4Yf@T_*~c>eyB]R>L{^omy'cd7NW?'/qo$}~Mk ڼO-Μ3@D{*ڿ(ɯ]:s[]RN:Fm [P_}Χ>wX౒kߪki$Q+)R&W p} ~O=kk^%}_QYI޼Y u~kp_ͶgV~Tcj\|KxIm]LƢ)={YQ"!U'}+>BɧQ~<YğI_w޿9umo?Y9kh=SijZmbr\'^d0U~I϶? 1#E谻ԵD|nurz|(=6*'?|u{lU.xmm|c-̬8Kfwf (P*I銾M688o^.6iaV7V,E!'pKp{>KmGShuO7ZD<+Xe~LQB"*jrr7N!-았[]yaMFOZ#U&16sl&J՝1c^s [` E"nLʽo~U^]6K V&S2C +R_̿忞>N厫{^MCB劍CI*jzpVJ=?jYUg~G~Ci~^~\}.|k4y2[kKDxf9rĐ1WO$k_䦣7SJ[S&%a(>ϗ.*? ??"<}=囿/X5׹ԯ/ĩfҴ!EԲ+~l?UGW_@ϡO <~)ɗ_aϰ?,[Οȫ 4\y5O(; H4jWIrdTXXU__{o/7e>zȾrq^yf˫?Wwy, X p>b~bCݼ_^|goTӞ+{ʥP~i9;9~@='?2?5ndu[}KPm3 )0v)Y4(/5t+ȧ%#d`AsvL3pqbLd=nw_ e1=|OȟˍRI&] S=K>+¿DUhй}i41:#HLd^[wfg7>ϧy.8'Q 53+l'Rt9}ҏ$Ǿ >yzFaS_LCJ>]?c(bg?ATVXM|Ѯgs?H& 2?̀~Eɇz,_e'Rb.NR"+ 9j[W,Hgg6|XEB">I5]v@Mű3pIhk:/N~2- ,ir ~#F-iteW:_|l-2.!=I;4STmL]>yGeYss G?/9Tay}ϲr>Nr|}XWʾfepK[y ', *IjoR(d|ڸ 9?!+zJj_zޝ/(|N[6߅rE ?c AD9t#&<#s[z?N'<?L?̀5_@h>YѼniVKz\5<:#ٓtY3nG{(OM>FMCy&?E! {u.7Eo[%_ثO[A9l0IASP;x^^u:L~;//2~]YsmeiSw,޸sskrR<6Wְ̑"huo[{7٥Poi!oܼv#1tft@8P_KU?W^P#}>6?*׿bN&_Q_:M{Mv:/t ( +kHAE *dZE>OgqU 8OF lvn$_,8(mC.kKYI$qU5 u7_PK[[y%5:6j'uZCQSLU?g|&,?-J" o 6T ?|8us?/tSGKZHF*;%8VZCz7q#K<|+Mo3K"^ʪ$)_W&c@}{A!ԓbwc1"Qyƻpx= H6=";$y3wRD<. P fÄy~K,^D%5X5'T>y>בbZOJ^Q?|oo+aF- :IYKyVYڽ3z6?oe'B8(zG>w~ay6~x>M\\OνxCYs$vŁNՐݱJ<-D6PF_ Ŀ[,'-'e?/|gUo/Q}K˲su')e5rj7xpC|{[U3LrL]sWb>FMCy/$lU*_O$<Pf*qWa??'qWz/zy.CL/+>J.7eŽKMWwv8%:9t-Yyk_ ĺ}ȃ0@WR6#}kd_}qjx_r\\"P;Q4$8|O];*> y> +9m_.ɍC~b'?|u{lU8{8sX,~z ,7|[[e MܹtI@^<*ϼ3}GGʽsW\ԕo) .Ll9$L2>  ȫxnadE&** nm8? 4'̞BĊoJh"ьI\U5b8w8_yׯHR4i 3 E^*@ "f!yɿSҼO*GCDh*V>N7_]'Gg6~Z{KDrޫ nn~bv*ZD 4BmjH {+9}b:Ub]B<.O  z>hNYcX6-tYnEu+KU>9Ìae6?*׿bN&_SS[_ʳ UϮ??#?fcV_qO/ _z Oǘ/%rջ'.iEHQ'Ͳg^7E(i~Zz7B׉ 3zB׋Wm7!h!ɫ߫jSԐpjv;ɿǐ-e(Bb ĒrzKæo4ݝr/nk?b=Z_Pۙxb]v*U_ߗ_F>pjE]5YIc J+GQѼcQMJd7&8DbqW^x7~e~o_xyLץ楪YkW " Q]Wܸ9(|kOʏ.|毩sm;}F xJOqqkqSg*U~~{_oOܕ]1W/_¯Ǐɶ[%\1-|ta#ZI'@RT *$jxlg6ӷo ZKn?(?}-iow[Tyq D N_ U*o_#A~]ߕߘ>T֧g/e:\EU: U:-~S-c?)+=?7jWzhc8Gث#h)QeU),N++ A؂1W>>y-BPI֧I mc (LU!1.wuaeڜcF^B]$G_澭 - Xֵ'yɷqZ;yB xNF<(jqW;|8F+2x18c_6Vr 'K{wYo}W|+KƝ*O4R݉f?MqV_>?(ۿhUH*F>ocv5!"PSaW?_Əo̯-k_~`w~"kZKs&P\8*|9O>Zא2EI<,bKMB mdC|*T.*ѼurGI%]y~+)^ȆW/~yΚWV}.mb;=hRxyȽyPhʪ6*I]9IygWz]u_8; RQvToU|}-o&>/5._6]ƚ"~v`3$ge໤viW@U5?& ~BzfBW.ox-~GN\U9W]F8g6+-ށI ݖ icd犿^-$)t;ȘmWL$54Ɯ4ܘ:T~|1W??'5~pycu.떗[^A}kK 9Pz iXb'~f.inH+nF*58a>Mm#80'A=*~U_l*7ɟ*qrV/MNiiڵƥu][H2 qy .1W_[ʿk_??~O<=GD5/j-2 3JH$w :_2M8Pk-mb$(TrDXcȿW'=CZ鶚r#튾7_91/ї[[?ԽOS?)Ӊ_o?*6?F&ƥ3;H7ӮzyaSO{m9 %59KM94cb?,˞t45yG\/GtV|U9a?$G慿-6_hv4h!b~4'3rpNX& *K~O~|-"7|I[3_y;n(&gÃHP׸^EELU+Y^ǙcSkc{,Kie 4;qW[ʿk]ELU_$PhakuI`k5.D w8sv*)=?)Cp_L`Ov݉ɺV>\|y>uR¹6]yFqo5[ol7[biPǸ뛝<[mo7x#~TyZh\*D"XF 1vG?sCVYN?g >N(H<~5F{v"*^+\?STw}ym' q X~7׺8} 42ZǦrpGX };s//^;xQ?}_ 猾UثWb]B^[WV0Iqs%+81W?;gKkΚΥq1oF9\^AcAT UA~CrG7EAEqrfIn.9Qv_*qV?Y?̟7UmG|luGm!(,222I%SCQp/X6x_yN|Rm/XKĐT9KmثmX-<9ejkv~P -rqp*Mi*# )؂1WO?F_59ImtwqyIkmr8u~":H+k:]šּc8kᔫt=E # 8b~Ϙ?7?~v1ߚzt{f5 h%U@NŬf#MxO[k^]M*?lǿ 2w`_8tȯoSѼߕ%ܶ:Ϝ,gH٤TLv@ɱW{vuԵn3ynWZp-Ո0JZ@+Jh>#w%qѿ/P_B{>&k0jq5Ԡث3G'3_7_{{!f1Œi Ud_{*.|ìEqpouY3$H' $nĐU-換?(,|4ji4մWpM$̌9"AbOo4~@~my3WwSC},brI⪚|JUa0ԭ⺲^{ r??>f_ail5TvTt^FGԴ_Ow1^XΤ@HCP*Xve<3VL wkSFj@?elU3v*o!g6Fhثv*} m]C]JoKm۸Wͷݞi|=_H{oU*͑i fsiVo 溭7x6An{^Bm-ћ7n:5U>NǦ'2ph99?׼Yy=Ȫ,;$jvd$׹2=O[$I,dV-$jjI''>݆(㈄@|_gϿAB| ԯ ʾ\/~N ΐC{ld~gUثWb]a_VwϟDnZr[9QO88_~ϴ:9O0ySB4,_KJ[y`~"3rj(,}9}>Χg'K#(C R}Q>l~V$뿖022{7;4D6o@喰dcU \ȥ+AaF"x**=kGãjlVe>>-m}U)~iyQ徭Su!v H;6 `$ΰ!Tj(=XU>hDy>)<'nHVKK~<YğI_*UϚ=q#Brk[hahO5>$W*p['q̸1W*?fM4 ?Ij ԨDz|kqrܞCN(?yϓ?%鋦h|WwFwià3k2j3<&SL.0e?S_8yWKެ1؅>[e(k=K:|MCKrW2˥$C<]y^ yKb ~~PySg;hv6?3ٚHçxUt?n?r<fp}s_?s/Gq4}AثWb]v*U~d~Yy 2c*j~:ׄ:JI+H_O?1ߘ'ܽΥF_W_Ѡ2Q*rFUi1W*+q_r̟L 4Km|D:$*KsD󍥿nh:ȪDbG];rR?ߘUo^tv\2:ig}gk)˜,O dz]Dn?mu>tgu%P18_`d=U~v*_"r_NJU?>Ws%qѿ/P_~6*UoƥY?~q~1~CyTY T.!"kx Qywp.>dث~iUW^}yM|%X6MGS%Ĭ+BAhG_Bkמg*4K:@>&t` 4= 1W*k7^E;MnH[H)S}]x&G U'|u{UbOjwث"_S,"~d]kj嶷|:/no-xU1`pʢWkqOzDԴ, NxK2> ϩ_qW*Ug1.GQb`;ՌBxgdN]${=߱p,.j\׮yf0n>i/'ƿmnd|H`+QkLnvNCh_y]?m.gy?} WVSy[Jms$O+~>5#n 4n$?!F&G.Cr<r~Ȓf\,!4-벥.uȅ[ے>g|z/!B٧寖6+=`zwHs= >gvwhegNu\^]Xr#yo.2KIѩh?Toi #.#b{wOvnc(W}K/+byxY 5 =/OrK1_Mʊ;= @}b1eyHlO\_Cv*UثWb]x} )ɔXS_j iN}LDuK*S4+Rg'BɧQGWbG|+9oYE ^,s^o{ߗ:毛-of[ՈZZFsY8l94~[1v{QwYM:.٭$ػ呀{qb,5uye) ¿5ƐŜ|u&UQV,iFF_Pctk|`"]v6e ~BI͆ d8 M o]KD" hNE65'>$t|x#9yiblW~42iđs56m:]fm,HUêh 1ؘh_SU <ȥ]MYM qWן?C&e_uqW'?#5O/y=t{H>z$R]4Uce*J\U*m5;U(6Am'_$3P}Nݭƣ41iu*\io1W*i>|k{^/ "ԢrWC*E0y͞dGҼ=JI4:si#E"Uj؊^89?ſgz5=G+;,~uhFUXTbr_']#Uͻ&ȳAkogk *ϻ MV1Tw?Mu(l1uRGArz*U?79Zi~Rԯlvp[Z(ێN۠~~@v [~kyʷhu-B4kj~ $At8K}>[ySs_xjެ/tˡBw~OM?u[bOˏj8ğWE*EGu']_ư\zΟ$ѩ#[I`UOv9/8ߜ~x4S7VwJ{{yHhetub v*;Gʗ${k&3ீcM>2"}8Ǹ>2_3k:h0>ܓَTpݙɩXFt=Qǧrd5%Kc~WyZ-حέzV\RRw>3Վ}=wGmvG9v#~ݺb|C}%亇IXQus˕^>n9'r7gc-,{tەv7L,*t]E|X!Wd%jL^]_kLl?$m}O6]v*UثWb]v*rpwrGO;Zhu h.*+#$ -e(u?~'kGjz $ERhRLUD:ON_7?kwznѬ뫄^YN_??/>ygOM~\ܺ Ln$KՕ-|4Sǟ#:.6n<41[VMN]- kgf'⯪=5_U??1m<*5Ǐ 8zQ5k˵7UD:ON]D:ONY:TWyr.>Ii'^uq0bʏ?%*'e:{ ;^"k˞)̨UUQ*x"WmorKOڱL]΍qI|&"Ҝv\U'?:WsC~.*r}=9]pl˯XKu N5;&hF+(TQUB?2ϗ?&t~vtf^K{XOHT=WJ_r#TQ<(ယkZֱN~*~L%7vSy+1<%j/R|9>/ul-yzDuKYYU|OtƜv_ 7?1W8CybMr?2K丯}r(.dnuu䔠rE9F*f'k_m6+fRyvgu3 ^=>{7u3iziGK~f9Pҵ_Svjlt?!t2[K.M@%iJR|#D:ON_󈟐~Y<>oޥrfnZY$qW]@^N~EzBzmkڵD,/"*aYa'ڵ_?C4D_My UC4D_My U蟔?/2~X~l~WeO~^yD4Lzнi74 )pAM+ZUC/E&H%xPŸ79ixcR WUw=3̦b1xVCGGLcGOSYҺ7b]v*UثW?~jK嶙k-ghI-Oԭ%{&Ү \DVUԱVTU#f䷕u=Q{-OpTkH%<Eb-Gq^J>;*~KSKi-*/9Kákn { M͡OGȸUث%~ryO|#i^zz<궍8Թ!Ck!BX0jʾѮuJk8&4+kq$j' #rT?JtS,UثWb]`qc/̋WmF-/mݥqr[ w3, `>~ue3_Tz?5cNt'Ӽ lT䴆ʇ._J] >;Myy Xk+KE–[+*zLӉI N*[R[lU]v*UثW~{+,|?Ko?y4o2j: ˶c{HDnRWϾN~=̾`ҵ=jCH!go88!3iQwvQbѿ.Ϙ.o +RuƯ;jvb [kY൳qq-(i!uW_}'r+cΟg~B׿=u<Ηk0+{ E&݇.)WiS_}͌eSi2ۼrHOCJUo|n_ɋc,󎡪X mv$(3(7sQץ=W'o~M99;Ͽ_t&K[_.nZy|H$-l=B84=kiߙkߙ46~{N9Ik;]3Nԣ+7&a[IMn*+[PS=V54~mYyJյٮ=Z N%ڪV޿+b/Qѡ| @iJ+ 7IֿeVD7_zп,|_35b,i#_v Gv b7v~qyp_sGߙ^fn ƿ!KZ,4H5hKqM;-ǫՕ QP0TUT~sBߔC>}99fXmeڼS]+4H,FVc?̿7rƴ? ~ey&?|y5ib>ͩAsu1cpKb*rrrSrO:?.}+Zףi:1}n"aLIeKFk2\E_~M?,'m<ũ_B\cxֹ [&(!59*-?_&ty[ߙok,0in.5#uoC-#QG.";*ʿ!Ι~p~fNm0t60%tY$2NVf~xܾE?0?,,ڌsV[:\K pq=ԯ{I5i $S\Uya_2?2|95 Je+2-حN[kg{shBDWv*UثWG?84*ZWM巓|ZFO)X\~s mdbE<:G%hF*íf?ߞ&mb5%K93NH) q*cye~sv71;x<*|)k8y#KNX}^A-5K,$ޥbZ)#>H.WV?M: M[{}#!B&4iV$ԜUHHV:O;rOV5O̯Ыe% &M}sIן2 9b/G䞥ߓZ}jEZ6ekfKqov)*~c/_zO8FT'>c*˗ ^_mdkw, > RQUUFi󈷚w嗜'[gP7h6>_F]65;1ŬIq$9d HFɹ%W_Zǝ,šyG)X$GuOV& He"pF*6˟?̵{c Houo$#!7'-1O/o"IjZ։m/ u*di32mE_J O(I9w9#y?&3˖F=-2"cVbqqWk2y:kww*ZYZtQQr?é(?<<;o6O7jͤاtt&#\T gӌgW~TϿ5_OίɝP8yMDkGomxG1ʈ˻")wW'?;+ki 2k]=њ둘Y$k4 *BП/Fh//L]$bK3R4'qƋDT*pX/9[}]0hֺ-[%1ũz9֬$CUxN>[,F/J4(zKkim4{/I.ID jd0LȪ_pBqZu1%hňh#Hj,rQ#;4O~9΍GW<5i+RkY&K܈i@(z_UG]KjZǖs-|,ӻI=ķcN%Wپt5/4ySyPy+_~f[n$]oMBm2mƔUP㧐&!Oٯ<ãiH|nj rG# W}㊻v*UثWb]v*UثWbXMm1/?/wg Zym*Mf(RcK*(z Ub]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UZimage/jpeg KLMNObplist00noX$versionX$objectsY$archiverT$top""()0!12NOPQRSTUVWXYZ[\]^_`abcdhiU$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1 !#$%&[NS.relativeWNS.base_6https://img.verticalresponse.com/pwrby_vr_logo_120.gif*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A(3456BWNS.keysZNS.objects789:;<=>?@A CDEFGHIJKLMVServer]Accept-Ranges]Cache-ControlZConnectionTDate]Last-Modified^Content-LengthWExpires\Content-TypeTEtagZKeep-AliveVApacheUbytes_max-age=31536000ZKeep-Alive_Wed, 28 Jul 2010 00:00:52 GMT_Thu, 01 Jul 2010 23:57:21 GMTT4490_Thu, 28 Jul 2011 00:00:52 GMTYimage/gif_"118a-48a5c3b28da40"_timeout=3, max=512*+ef_NSMutableDictionaryeg/\NSDictionary*+jk_NSHTTPURLResponselm/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverpq_WebResourceResponse#-27\b}!,5;>DMVX_grt"-4:MXx"';?Sasvr_6https://img.verticalresponse.com/pwrby_vr_logo_120.gifOGIF89a~7  "v%"'''(+|-*-.~01.446P^678488::;<>n?@A@5B>,C=CCD?$DFJJMOOISM,VW[[\V3\_bbd]8dc`dgi_)jklllssumAvj-vvyzrG|ۄ}KІz5|EO֋܍└חΘEWݜRݥõ]{êB¢c•Ì̬緬icʠZs{̓Ҭ¶iТǮAѓʾu}˽hՠשͷRuԹBݮּJܤۚVs׏{Ђg؜ڎl؀ds K݃ߋל{R{1؜e T|Ӄmw*y"4CIN$-3DKS[clrhu{@$+2;=CIR[ ! ,~7 f*\ȰÇ#J|g@8iȱǏ CIɒ]ů0cʜI͛8sܙS&5JPkג*]TSLJJիRY3u];~pcWٳZӪESpʵvٻ۴3tQL /ѵMխUKҺ#KLrw S ?R}rLolGR\c˞Mm5Fgshs t38XGݵK?"uMn)=ˆ7]f_q〧'^lk,X@y&YdBG+dR մaY2YV3P + `wprp{p Xq)V~=Wy<#a !$5IPeIF@$f2NCh&a"HYGI w4pa0|-R^:"|x}Y㏀JMuJdl[(ZGE&!—m%!4!p搳f:/9c5H~]W`"p&:BeS%)g3\N,qH 4q8| N7߸:| v5 zޯ;@_)C ,!341g6-:)4)zkΚZ 9S7_p3F5_tM8ҠCq 㥒cgO>v/=%/]O=s 8^O8砠tT8ć/| 'y۳|Gߍ=⠃,=½5a;qSn7 )%@jnD^>C~@ GLuX# ?q9bqj Wa]8W{ÃыG=A $?PdsN1A~]APmbvF<CR`u/Sw(Pj cdzbtS".,'0/jL0`p&fV|b_1 M#Od!rDVQ#+4 vj@` (P!HA 0"g@ : :jb5)A: F"@ր ej8QA"A.@c0܃= mlc?`:ZCA# "4HPHAр"D*U \FЅN Ё"lvD'7Z@"@. 'Uz`! G=⡍iT62.", M`b I5X# '0~ Vi EJ{uA'=ng@kԅA-B$P+Ak 1/X l{ x#^pA#Bj0L@ :N5#~@# p7XZ35O@ X `]{]u rp#E\c8rIr(> mHc{Stb$#|pHR@"@ ?`|>WaO/\1 Wr9 8Rz=[o`hE&1x$+6i;k[FDeK3F)0KLx#:6'D@ 8TX\aiF}Dء^!ډAQS4aw>:~&<A- @)Ih@`pr} X8n$@ @), .D?.EP 3a9AX!ơs3q@Ρ /X2aLј<{),OҨ[=1ULc$wI *zYp=8\l`%ؗ =!8G08H%eC!4/|f~T/u|(xsb=C~<ucy<}˩G#x-4e^G>!d@cѐ41K~xh |g|f>'|  z~~π *,*004X6(4268:( D@ȃ73 NW#XT Z\ ^`b8dXfZ jZxnWXR^T |؇~8XxX TXuy@w 'q! Ј% {,`o؊8Xx-Q p B،8Xxؘ$p ٠0_Q x蘍ӈȎA q x5 Y'P-Px)5 )'` I!`I؎(|a(ȌPQ Y2Ɍ3`764Y"5-DyR3yYPP -@Hd*// P2`FPrɐ7@& 5` `RuiR &imPWy6@vi22PH.9&(ey< R8~/P-RP }ɒyP i;U 5ЛRPZ)Q qx~P6!Y #ni  0[CpI5,?yy yyٓ  bP R 5ɡ  Л) Fy@*Lڙ3P 50a9j;ڐ=*=ɧjb@IJ8,0s@Czʡ7 < /,駞yHUP F Ycyi6U 2ʌ @Ыĺ>0j\8Hi Z RpP 1ZҺ-p_}ؔ ١=Y2sú Hڔ ,ɤuiM0`隣P p+ر"ی^0wJkz2 3g!++P o@B;D[F{HJ)+p8T[O;е^`b;d[f{hKnpr;t[v{x;Yimage/gif PQRSO5bplist00bcX$versionX$objectsY$archiverT$top"()0!12HIJKLMNOPQRSTUVWX\]U$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_bhttps://img-ak.verticalresponse.com/styling/asset/1279143973/server.js?lib/js/prototype-1.6.0.3.js*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A}_3456?WNS.keysZNS.objects789:;<=> @ABCDEFGVServerZConnectionUX-Pad\Content-Type]Last-Modified^Content-LengthTDateTEtagVApacheZkeep-alive_avoid browser bug_text/javascript_Wed, 14 Jul 2010 21:46:13 GMTV129738_Wed, 28 Jul 2010 00:00:51 GMT_b443-7708-b37c3120*+YZ_NSMutableDictionaryY[/\NSDictionary*+^__NSHTTPURLResponse`a/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverde_WebResourceResponse#-27V\wz~BGR[adjs|~*>Ppw.1GfI_bhttps://img-ak.verticalresponse.com/styling/asset/1279143973/server.js?lib/js/prototype-1.6.0.3.jsO/* Prototype JavaScript framework, version 1.6.0.3 * (c) 2005-2008 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.6.0.3', Browser: { IE: !!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1), Opera: navigator.userAgent.indexOf('Opera') > -1, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') === -1, MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) }, BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: !!window.HTMLElement, SpecificElementExtensions: document.createElement('div')['__proto__'] && document.createElement('div')['__proto__'] !== document.createElement('form')['__proto__'] }, ScriptFragment: ']*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; /* Based on Alex Arnell's inheritance implementation. */ var Class = { create: function() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { var subclass = function() { }; subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0; i < properties.length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } }; Class.Methods = { addMethods: function(source) { var ancestor = this.superclass && this.superclass.prototype; var properties = Object.keys(source); if (!Object.keys({ toString: true }).length) properties.push("toString", "valueOf"); for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames().first() == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments) }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } }; var Abstract = { }; Object.extend = function(destination, source) { for (var property in source) destination[property] = source[property]; return destination; }; Object.extend(Object, { inspect: function(object) { try { if (Object.isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } }, toJSON: function(object) { var type = typeof object; switch (type) { case 'undefined': case 'function': case 'unknown': return; case 'boolean': return object.toString(); } if (object === null) return 'null'; if (object.toJSON) return object.toJSON(); if (Object.isElement(object)) return; var results = []; for (var property in object) { var value = Object.toJSON(object[property]); if (!Object.isUndefined(value)) results.push(property.toJSON() + ': ' + value); } return '{' + results.join(', ') + '}'; }, toQueryString: function(object) { return $H(object).toQueryString(); }, toHTML: function(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); }, keys: function(object) { var keys = []; for (var property in object) keys.push(property); return keys; }, values: function(object) { var values = []; for (var property in object) values.push(object[property]); return values; }, clone: function(object) { return Object.extend({ }, object); }, isElement: function(object) { return !!(object && object.nodeType == 1); }, isArray: function(object) { return object != null && typeof object == "object" && 'splice' in object && 'join' in object; }, isHash: function(object) { return object instanceof Hash; }, isFunction: function(object) { return typeof object == "function"; }, isString: function(object) { return typeof object == "string"; }, isNumber: function(object) { return typeof object == "number"; }, isUndefined: function(object) { return typeof object == "undefined"; } }); Object.extend(Function.prototype, { argumentNames: function() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1] .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; }, bind: function() { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = $A(arguments), object = args.shift(); return function() { return __method.apply(object, args.concat($A(arguments))); } }, bindAsEventListener: function() { var __method = this, args = $A(arguments), object = args.shift(); return function(event) { return __method.apply(object, [event || window.event].concat(args)); } }, curry: function() { if (!arguments.length) return this; var __method = this, args = $A(arguments); return function() { return __method.apply(this, args.concat($A(arguments))); } }, delay: function() { var __method = this, args = $A(arguments), timeout = args.shift() * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); }, defer: function() { var args = [0.01].concat($A(arguments)); return this.delay.apply(this, args); }, wrap: function(wrapper) { var __method = this; return function() { return wrapper.apply(this, [__method.bind(this)].concat($A(arguments))); } }, methodize: function() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { return __method.apply(null, [this].concat($A(arguments))); }; } }); Date.prototype.toJSON = function() { return '"' + this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z"'; }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; /*--------------------------------------------------------------------------*/ var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); } finally { this.currentlyExecuting = false; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, { gsub: function(pattern, replacement) { var result = '', source = this, match; replacement = arguments.callee.prepareReplacement(replacement); while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; }, sub: function(pattern, replacement, count) { replacement = this.gsub.prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); }, scan: function(pattern, iterator) { this.gsub(pattern, iterator); return String(this); }, truncate: function(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); }, strip: function() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); }, stripTags: function() { return this.replace(/<\/?[^>]+>/gi, ''); }, stripScripts: function() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); }, extractScripts: function() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); }, evalScripts: function() { return this.extractScripts().map(function(script) { return eval(script) }); }, escapeHTML: function() { var self = arguments.callee; self.text.data = this; return self.div.innerHTML; }, unescapeHTML: function() { var div = new Element('div'); div.innerHTML = this.stripTags(); return div.childNodes[0] ? (div.childNodes.length > 1 ? $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) : div.childNodes[0].nodeValue) : ''; }, toQueryParams: function(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()); var value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); }, toArray: function() { return this.split(''); }, succ: function() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); }, times: function(count) { return count < 1 ? '' : new Array(count + 1).join(this); }, camelize: function() { var parts = this.split('-'), len = parts.length; if (len == 1) return parts[0]; var camelized = this.charAt(0) == '-' ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) : parts[0]; for (var i = 1; i < len; i++) camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); return camelized; }, capitalize: function() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); }, underscore: function() { return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase(); }, dasherize: function() { return this.gsub(/_/,'-'); }, inspect: function(useDoubleQuotes) { var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) { var character = String.specialChar[match[0]]; return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; }, toJSON: function() { return this.inspect(true); }, unfilterJSON: function(filter) { return this.sub(filter || Prototype.JSONFilter, '#{1}'); }, isJSON: function() { var str = this; if (str.blank()) return false; str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); }, evalJSON: function(sanitize) { var json = this.unfilterJSON(); try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); }, include: function(pattern) { return this.indexOf(pattern) > -1; }, startsWith: function(pattern) { return this.indexOf(pattern) === 0; }, endsWith: function(pattern) { var d = this.length - pattern.length; return d >= 0 && this.lastIndexOf(pattern) === d; }, empty: function() { return this == ''; }, blank: function() { return /^\s*$/.test(this); }, interpolate: function(object, pattern) { return new Template(this, pattern).evaluate(object); } }); if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, { escapeHTML: function() { return this.replace(/&/g,'&').replace(//g,'>'); }, unescapeHTML: function() { return this.stripTags().replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); } }); String.prototype.gsub.prepareReplacement = function(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; }; String.prototype.parseQuery = String.prototype.toQueryParams; Object.extend(String.prototype.escapeHTML, { div: document.createElement('div'), text: document.createTextNode('') }); String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return ''; var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3]; var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = { each: function(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; }, eachSlice: function(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); }, all: function(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; }, any: function(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; }, collect: function(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; }, detect: function(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; }, findAll: function(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; }, grep: function(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(filter); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; }, include: function(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; }, inGroupsOf: function(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); }, inject: function(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; }, invoke: function(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); }, max: function(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; }, min: function(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; }, partition: function(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; }, pluck: function(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; }, reject: function(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; }, sortBy: function(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); }, toArray: function() { return this.map(); }, zip: function() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); }, size: function() { return this.toArray().length; }, inspect: function() { return '#'; } }; Object.extend(Enumerable, { map: Enumerable.collect, find: Enumerable.detect, select: Enumerable.findAll, filter: Enumerable.findAll, member: Enumerable.include, entries: Enumerable.toArray, every: Enumerable.all, some: Enumerable.any }); function $A(iterable) { if (!iterable) return []; if (iterable.toArray) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } if (Prototype.Browser.WebKit) { $A = function(iterable) { if (!iterable) return []; // In Safari, only use the `toArray` method if it's not a NodeList. // A NodeList is a function, has an function `item` property, and a numeric // `length` property. Adapted from Google Doctype. if (!(typeof iterable === 'function' && typeof iterable.length === 'number' && typeof iterable.item === 'function') && iterable.toArray) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; }; } Array.from = $A; Object.extend(Array.prototype, Enumerable); if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse; Object.extend(Array.prototype, { _each: function(iterator) { for (var i = 0, length = this.length; i < length; i++) iterator(this[i]); }, clear: function() { this.length = 0; return this; }, first: function() { return this[0]; }, last: function() { return this[this.length - 1]; }, compact: function() { return this.select(function(value) { return value != null; }); }, flatten: function() { return this.inject([], function(array, value) { return array.concat(Object.isArray(value) ? value.flatten() : [value]); }); }, without: function() { var values = $A(arguments); return this.select(function(value) { return !values.include(value); }); }, reverse: function(inline) { return (inline !== false ? this : this.toArray())._reverse(); }, reduce: function() { return this.length > 1 ? this : this[0]; }, uniq: function(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); }, intersect: function(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); }, clone: function() { return [].concat(this); }, size: function() { return this.length; }, inspect: function() { return '[' + this.map(Object.inspect).join(', ') + ']'; }, toJSON: function() { var results = []; this.each(function(object) { var value = Object.toJSON(object); if (!Object.isUndefined(value)) results.push(value); }); return '[' + results.join(', ') + ']'; } }); // use native browser JS 1.6 implementation if available if (Object.isFunction(Array.prototype.forEach)) Array.prototype._each = Array.prototype.forEach; if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; }; if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; }; Array.prototype.toArray = Array.prototype.clone; function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } if (Prototype.Browser.Opera){ Array.prototype.concat = function() { var array = []; for (var i = 0, length = this.length; i < length; i++) array.push(this[i]); for (var i = 0, length = arguments.length; i < length; i++) { if (Object.isArray(arguments[i])) { for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++) array.push(arguments[i][j]); } else { array.push(arguments[i]); } } return array; }; } Object.extend(Number.prototype, { toColorPart: function() { return this.toPaddedString(2, 16); }, succ: function() { return this + 1; }, times: function(iterator, context) { $R(0, this, true).each(iterator, context); return this; }, toPaddedString: function(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; }, toJSON: function() { return isFinite(this) ? this.toString() : 'null'; } }); $w('abs round ceil floor').each(function(method){ Number.prototype[method] = Math[method].methodize(); }); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } return { initialize: function(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); }, _each: function(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } }, set: function(key, value) { return this._object[key] = value; }, get: function(key) { // simulating poorly supported hasOwnProperty if (this._object[key] !== Object.prototype[key]) return this._object[key]; }, unset: function(key) { var value = this._object[key]; delete this._object[key]; return value; }, toObject: function() { return Object.clone(this._object); }, keys: function() { return this.pluck('key'); }, values: function() { return this.pluck('value'); }, index: function(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; }, merge: function(object) { return this.clone().update(object); }, update: function(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); }, toQueryString: function() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) return results.concat(values.map(toQueryPair.curry(key))); } else results.push(toQueryPair(key, values)); return results; }).join('&'); }, inspect: function() { return '#'; }, toJSON: function() { return Object.toJSON(this.toObject()); }, clone: function() { return new Hash(this); } } })()); Hash.prototype.toTemplateReplacements = Hash.prototype.toObject; Hash.from = $H; var ObjectRange = Class.create(Enumerable, { initialize: function(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; }, _each: function(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } }, include: function(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } }); var $R = function(start, end, exclusive) { return new ObjectRange(start, end, exclusive); }; var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isString(this.options.parameters)) this.options.parameters = this.options.parameters.toQueryParams(); else if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.clone(this.options.parameters); if (!['get', 'post'].include(this.method)) { // simulate other verbs over post params['_method'] = this.method; this.method = 'post'; } this.parameters = params; if (params = Object.toQueryString(params)) { // when GET, append parameters to URL if (this.method == 'get') this.url += (this.url.include('?') ? '&' : '?') + params; else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_='; } try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } // user-defined headers if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300); }, getStatus: function() { try { return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { // avoid memory leak in MSIE: clean up this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if(readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!window.Node) var Node = { }; if (!Node.ELEMENT_NODE) { // DOM level 2 ECMAScript Language Binding Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function() { var element = this.Element; this.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (Prototype.Browser.IE && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); return Element.writeAttribute(cache[tagName].cloneNode(false), attributes); }; Object.extend(this.Element, element || { }); if (element) this.Element.prototype = element.prototype; }).call(window); Element.cache = { }; Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, remove: function(element) { element = $(element); element.parentNode.removeChild(element); return element; }, update: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); element.innerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }, replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(); var value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) elements.push(Element.extend(element)); return elements; }, ancestors: function(element) { return $(element).recursivelyCollect('parentNode'); }, descendants: function(element) { return $(element).select("*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).nextSiblings()); return []; }, previousSiblings: function(element) { return $(element).recursivelyCollect('previousSibling'); }, nextSiblings: function(element) { return $(element).recursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return element.previousSiblings().reverse().concat(element.nextSiblings()); }, match: function(element, selector) { if (Object.isString(selector)) selector = new Selector(selector); return selector.match($(element)); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = element.ancestors(); return Object.isNumber(expression) ? ancestors[expression] : Selector.findElement(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? element.descendants()[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); var previousSiblings = element.previousSiblings(); return Object.isNumber(expression) ? previousSiblings[expression] : Selector.findElement(previousSiblings, expression, index); }, next: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); var nextSiblings = element.nextSiblings(); return Object.isNumber(expression) ? nextSiblings[expression] : Selector.findElement(nextSiblings, expression, index); }, select: function() { var args = $A(arguments), element = $(args.shift()); return Selector.findChildElements(element, args); }, adjacent: function() { var args = $A(arguments), element = $(args.shift()); return Selector.findChildElements(element.parentNode, args).without(element); }, identify: function(element) { element = $(element); var id = element.readAttribute('id'), self = arguments.callee; if (id) return id; do { id = 'anonymous_element_' + self.counter++ } while ($(id)); element.writeAttribute('id', id); return id; }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return $(element).getDimensions().height; }, getWidth: function(element) { return $(element).getDimensions().width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!element.hasClassName(className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return element[element.hasClassName(className) ? 'removeClassName' : 'addClassName'](className); }, // removes whitespace-only text node children cleanWhitespace: function(element) { element = $(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = element.cumulativeOffset(); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, getDimensions: function(element) { element = $(element); var display = element.getStyle('display'); if (display != 'none' && display != null) // Safari bug return {width: element.offsetWidth, height: element.offsetHeight}; // All *Width and *Height properties give 0 on elements with display none, // so enable the element temporarily var els = element.style; var originalVisibility = els.visibility; var originalPosition = els.position; var originalDisplay = els.display; els.visibility = 'hidden'; els.position = 'absolute'; els.display = 'block'; var originalWidth = element.clientWidth; var originalHeight = element.clientHeight; els.display = originalDisplay; els.position = originalPosition; els.visibility = originalVisibility; return {width: originalWidth, height: originalHeight}; }, makePositioned: function(element) { element = $(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; // Opera returns the offset relative to the positioning context, when an // element is position relative but top and left have not been defined if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, cumulativeOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }, positionedOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (element.tagName.toUpperCase() == 'BODY') break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); return Element._returnOffset(valueL, valueT); }, absolutize: function(element) { element = $(element); if (element.getStyle('position') == 'absolute') return element; // Position.prepare(); // To be done manually by Scripty when it needs it. var offsets = element.positionedOffset(); var top = offsets[1]; var left = offsets[0]; var width = element.clientWidth; var height = element.clientHeight; element._originalLeft = left - parseFloat(element.style.left || 0); element._originalTop = top - parseFloat(element.style.top || 0); element._originalWidth = element.style.width; element._originalHeight = element.style.height; element.style.position = 'absolute'; element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.width = width + 'px'; element.style.height = height + 'px'; return element; }, relativize: function(element) { element = $(element); if (element.getStyle('position') == 'relative') return element; // Position.prepare(); // To be done manually by Scripty when it needs it. element.style.position = 'relative'; var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.height = element._originalHeight; element.style.width = element._originalWidth; return element; }, cumulativeScrollOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return Element._returnOffset(valueL, valueT); }, getOffsetParent: function(element) { if (element.offsetParent) return $(element.offsetParent); if (element == document.body) return $(element); while ((element = element.parentNode) && element != document.body) if (Element.getStyle(element, 'position') != 'static') return $(element); return $(document.body); }, viewportOffset: function(forElement) { var valueT = 0, valueL = 0; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; // Safari fix if (element.offsetParent == document.body && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (!Prototype.Browser.Opera || (element.tagName && (element.tagName.toUpperCase() == 'BODY'))) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return Element._returnOffset(valueL, valueT); }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); // find page position of source source = $(source); var p = source.viewportOffset(); // find coordinate system to use element = $(element); var delta = [0, 0]; var parent = null; // delta [0,0] will do fine with position: fixed elements, // position:absolute needs offsetParent deltas if (Element.getStyle(element, 'position') == 'absolute') { parent = element.getOffsetParent(); delta = parent.viewportOffset(); } // correct by body offsets (fixes Safari) if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } // set position if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Element.Methods.identify.counter = 1; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'left': case 'top': case 'right': case 'bottom': if (proceed(element, 'position') === 'static') return null; case 'height': case 'width': // returns '0px' for hidden elements; we want it to return null if (!Element.visible(element)) return null; // returns the border-box dimensions rather than the content-box // dimensions, so we subtract padding and borders from the value var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { // IE doesn't report offsets correctly for static elements, so we change them // to "relative" to get the values, then change them back. Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap( function(proceed, element) { element = $(element); // IE throws an error if element is not in document try { element.offsetParent } catch(e) { return $(document.body) } var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); $w('positionedOffset viewportOffset').each(function(method) { Element.Methods[method] = Element.Methods[method].wrap( function(proceed, element) { element = $(element); try { element.offsetParent } catch(e) { return Element._returnOffset(0,0) } var position = element.getStyle('position'); if (position !== 'static') return proceed(element); // Trigger hasLayout on the offset parent so that IE6 reports // accurate offsetTop and offsetLeft values for position: fixed. var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') offsetParent.setStyle({ zoom: 1 }); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); }); Element.Methods.cumulativeOffset = Element.Methods.cumulativeOffset.wrap( function(proceed, element) { try { element.offsetParent } catch(e) { return Element._returnOffset(0,0) } return proceed(element); } ); Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = { read: { names: { 'class': 'className', 'for': 'htmlFor' }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: function(element, attribute) { attribute = element.getAttribute(attribute); return attribute ? attribute.toString().slice(23, -2) : null; }, _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } }; Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr, src: v._getAttr, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if(element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; // Safari returns margins on body which is incorrect if the child is absolutely // positioned. For performance reasons, redefine Element#cumulativeOffset for // KHTML/WebKit only. Element.Methods.cumulativeOffset = function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }; } if (Prototype.Browser.IE || Prototype.Browser.Opera) { // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements Element.Methods.update = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName in Element._insertionTranslations.tags) { $A(element.childNodes).each(function(node) { element.removeChild(node) }); Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else element.innerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } if ('outerHTML' in document.createElement('div')) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(); var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; if (t) { div.innerHTML = t[0] + html + t[1]; t[2].times(function() { div = div.firstChild }); } else div.innerHTML = html; return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['', '
', 1], TBODY: ['', '
', 2], TR: ['', '
', 3], TD: ['
', '
', 4], SELECT: ['', 1] } }; (function() { Object.extend(this.tags, { THEAD: this.tags.TBODY, TFOOT: this.tags.TBODY, TH: this.tags.TD }); }).call(Element._insertionTranslations); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); if (!Prototype.BrowserFeatures.ElementExtensions && document.createElement('div')['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = document.createElement('div')['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } Element.extend = (function() { if (Prototype.BrowserFeatures.SpecificElementExtensions) return Prototype.K; var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || element._extendedByPrototype || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(), property, value; // extend methods for specific tags if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); for (property in methods) { value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { // extend methods for all tags (Safari doesn't need this) if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); Element.hasAttribute = function(element, attribute) { if (element.hasAttribute) return element.hasAttribute(attribute); return Element.Methods.Simulated.hasAttribute(element, attribute); }; Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; window[klass] = { }; window[klass].prototype = document.createElement(tagName)['__proto__']; return window[klass]; } if (F.ElementExtensions) { copy(Element.Methods, HTMLElement.prototype); copy(Element.Methods.Simulated, HTMLElement.prototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { var dimensions = { }, B = Prototype.Browser; $w('width height').each(function(d) { var D = d.capitalize(); if (B.WebKit && !document.evaluate) { // Safari <3.0 needs self.innerWidth/Height dimensions[d] = self['inner' + D]; } else if (B.Opera && parseFloat(window.opera.version()) < 9.5) { // Opera <9.5 needs document.body.clientWidth/Height dimensions[d] = document.body['client' + D] } else { dimensions[d] = document.documentElement['client' + D]; } }); return dimensions; }, getWidth: function() { return this.getDimensions().width; }, getHeight: function() { return this.getDimensions().height; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; /* Portions of the Selector class are derived from Jack Slocum's DomQuery, * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style * license. Please see http://www.yui-ext.com/ for more information. */ var Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); if (this.shouldUseSelectorsAPI()) { this.mode = 'selectorsAPI'; } else if (this.shouldUseXPath()) { this.mode = 'xpath'; this.compileXPathMatcher(); } else { this.mode = "normal"; this.compileMatcher(); } }, shouldUseXPath: function() { if (!Prototype.BrowserFeatures.XPath) return false; var e = this.expression; // Safari 3 chokes on :*-of-type and :empty if (Prototype.Browser.WebKit && (e.include("-of-type") || e.include(":empty"))) return false; // XPath can't do namespaced attributes, nor can it read // the "checked" property from DOM nodes if ((/(\[[\w-]*?:|:checked)/).test(e)) return false; return true; }, shouldUseSelectorsAPI: function() { if (!Prototype.BrowserFeatures.SelectorsAPI) return false; if (!Selector._div) Selector._div = new Element('div'); // Make sure the browser treats the selector as valid. Test on an // isolated element to minimize cost of this check. try { Selector._div.querySelector(this.expression); } catch(e) { return false; } return true; }, compileMatcher: function() { var e = this.expression, ps = Selector.patterns, h = Selector.handlers, c = Selector.criteria, le, p, m; if (Selector._cache[e]) { this.matcher = Selector._cache[e]; return; } this.matcher = ["this.matcher = function(root) {", "var r = root, h = Selector.handlers, c = false, n;"]; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in ps) { p = ps[i]; if (m = e.match(p)) { this.matcher.push(Object.isFunction(c[i]) ? c[i](m) : new Template(c[i]).evaluate(m)); e = e.replace(m[0], ''); break; } } } this.matcher.push("return h.unique(n);\n}"); eval(this.matcher.join('\n')); Selector._cache[this.expression] = this.matcher; }, compileXPathMatcher: function() { var e = this.expression, ps = Selector.patterns, x = Selector.xpath, le, m; if (Selector._cache[e]) { this.xpath = Selector._cache[e]; return; } this.matcher = ['.//*']; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in ps) { if (m = e.match(ps[i])) { this.matcher.push(Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m)); e = e.replace(m[0], ''); break; } } } this.xpath = this.matcher.join(''); Selector._cache[this.expression] = this.xpath; }, findElements: function(root) { root = root || document; var e = this.expression, results; switch (this.mode) { case 'selectorsAPI': // querySelectorAll queries document-wide, then filters to descendants // of the context element. That's not what we want. // Add an explicit context to the selector if necessary. if (root !== document) { var oldId = root.id, id = $(root).identify(); e = "#" + id + " " + e; } results = $A(root.querySelectorAll(e)).map(Element.extend); root.id = oldId; return results; case 'xpath': return document._getElementsByXPath(this.xpath, root); default: return this.matcher(root); } }, match: function(element) { this.tokens = []; var e = this.expression, ps = Selector.patterns, as = Selector.assertions; var le, p, m; while (e && le !== e && (/\S/).test(e)) { le = e; for (var i in ps) { p = ps[i]; if (m = e.match(p)) { // use the Selector.assertions methods unless the selector // is too complex. if (as[i]) { this.tokens.push([i, Object.clone(m)]); e = e.replace(m[0], ''); } else { // reluctantly do a document-wide search // and look for a match in the array return this.findElements(document).include(element); } } } } var match = true, name, matches; for (var i = 0, token; token = this.tokens[i]; i++) { name = token[0], matches = token[1]; if (!Selector.assertions[name](element, matches)) { match = false; break; } } return match; }, toString: function() { return this.expression; }, inspect: function() { return "#"; } }); Object.extend(Selector, { _cache: { }, xpath: { descendant: "//*", child: "/*", adjacent: "/following-sibling::*[1]", laterSibling: '/following-sibling::*', tagName: function(m) { if (m[1] == '*') return ''; return "[local-name()='" + m[1].toLowerCase() + "' or local-name()='" + m[1].toUpperCase() + "']"; }, className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", id: "[@id='#{1}']", attrPresence: function(m) { m[1] = m[1].toLowerCase(); return new Template("[@#{1}]").evaluate(m); }, attr: function(m) { m[1] = m[1].toLowerCase(); m[3] = m[5] || m[6]; return new Template(Selector.xpath.operators[m[2]]).evaluate(m); }, pseudo: function(m) { var h = Selector.xpath.pseudos[m[1]]; if (!h) return ''; if (Object.isFunction(h)) return h(m); return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); }, operators: { '=': "[@#{1}='#{3}']", '!=': "[@#{1}!='#{3}']", '^=': "[starts-with(@#{1}, '#{3}')]", '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", '*=': "[contains(@#{1}, '#{3}')]", '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" }, pseudos: { 'first-child': '[not(preceding-sibling::*)]', 'last-child': '[not(following-sibling::*)]', 'only-child': '[not(preceding-sibling::* or following-sibling::*)]', 'empty': "[count(*) = 0 and (count(text()) = 0)]", 'checked': "[@checked]", 'disabled': "[(@disabled) and (@type!='hidden')]", 'enabled': "[not(@disabled) and (@type!='hidden')]", 'not': function(m) { var e = m[6], p = Selector.patterns, x = Selector.xpath, le, v; var exclusion = []; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in p) { if (m = e.match(p[i])) { v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m); exclusion.push("(" + v.substring(1, v.length - 1) + ")"); e = e.replace(m[0], ''); break; } } } return "[not(" + exclusion.join(" and ") + ")]"; }, 'nth-child': function(m) { return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); }, 'nth-last-child': function(m) { return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); }, 'nth-of-type': function(m) { return Selector.xpath.pseudos.nth("position() ", m); }, 'nth-last-of-type': function(m) { return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m); }, 'first-of-type': function(m) { m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m); }, 'last-of-type': function(m) { m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m); }, 'only-of-type': function(m) { var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m); }, nth: function(fragment, m) { var mm, formula = m[6], predicate; if (formula == 'even') formula = '2n+0'; if (formula == 'odd') formula = '2n+1'; if (mm = formula.match(/^(\d+)$/)) // digit only return '[' + fragment + "= " + mm[1] + ']'; if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (mm[1] == "-") mm[1] = -1; var a = mm[1] ? Number(mm[1]) : 1; var b = mm[2] ? Number(mm[2]) : 0; predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " + "((#{fragment} - #{b}) div #{a} >= 0)]"; return new Template(predicate).evaluate({ fragment: fragment, a: a, b: b }); } } } }, criteria: { tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', className: 'n = h.className(n, r, "#{1}", c); c = false;', id: 'n = h.id(n, r, "#{1}", c); c = false;', attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;', attr: function(m) { m[3] = (m[5] || m[6]); return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m); }, pseudo: function(m) { if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m); }, descendant: 'c = "descendant";', child: 'c = "child";', adjacent: 'c = "adjacent";', laterSibling: 'c = "laterSibling";' }, patterns: { // combinators must be listed first // (and descendant needs to be last combinator) laterSibling: /^\s*~\s*/, child: /^\s*>\s*/, adjacent: /^\s*\+\s*/, descendant: /^\s/, // selectors follow tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, id: /^#([\w\-\*]+)(\b|$)/, className: /^\.([\w\-\*]+)(\b|$)/, pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/, attrPresence: /^\[((?:[\w]+:)?[\w]+)\]/, attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ }, // for Selector.match and Element#match assertions: { tagName: function(element, matches) { return matches[1].toUpperCase() == element.tagName.toUpperCase(); }, className: function(element, matches) { return Element.hasClassName(element, matches[1]); }, id: function(element, matches) { return element.id === matches[1]; }, attrPresence: function(element, matches) { return Element.hasAttribute(element, matches[1]); }, attr: function(element, matches) { var nodeValue = Element.readAttribute(element, matches[1]); return nodeValue && Selector.operators[matches[2]](nodeValue, matches[5] || matches[6]); } }, handlers: { // UTILITY FUNCTIONS // joins two collections concat: function(a, b) { for (var i = 0, node; node = b[i]; i++) a.push(node); return a; }, // marks an array of nodes for counting mark: function(nodes) { var _true = Prototype.emptyFunction; for (var i = 0, node; node = nodes[i]; i++) node._countedByPrototype = _true; return nodes; }, unmark: function(nodes) { for (var i = 0, node; node = nodes[i]; i++) node._countedByPrototype = undefined; return nodes; }, // mark each child node with its position (for nth calls) // "ofType" flag indicates whether we're indexing for nth-of-type // rather than nth-child index: function(parentNode, reverse, ofType) { parentNode._countedByPrototype = Prototype.emptyFunction; if (reverse) { for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { var node = nodes[i]; if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; } } else { for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++) if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; } }, // filters out duplicates and extends all nodes unique: function(nodes) { if (nodes.length == 0) return nodes; var results = [], n; for (var i = 0, l = nodes.length; i < l; i++) if (!(n = nodes[i])._countedByPrototype) { n._countedByPrototype = Prototype.emptyFunction; results.push(Element.extend(n)); } return Selector.handlers.unmark(results); }, // COMBINATOR FUNCTIONS descendant: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) h.concat(results, node.getElementsByTagName('*')); return results; }, child: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) { for (var j = 0, child; child = node.childNodes[j]; j++) if (child.nodeType == 1 && child.tagName != '!') results.push(child); } return results; }, adjacent: function(nodes) { for (var i = 0, results = [], node; node = nodes[i]; i++) { var next = this.nextElementSibling(node); if (next) results.push(next); } return results; }, laterSibling: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) h.concat(results, Element.nextSiblings(node)); return results; }, nextElementSibling: function(node) { while (node = node.nextSibling) if (node.nodeType == 1) return node; return null; }, previousElementSibling: function(node) { while (node = node.previousSibling) if (node.nodeType == 1) return node; return null; }, // TOKEN FUNCTIONS tagName: function(nodes, root, tagName, combinator) { var uTagName = tagName.toUpperCase(); var results = [], h = Selector.handlers; if (nodes) { if (combinator) { // fastlane for ordinary descendant combinators if (combinator == "descendant") { for (var i = 0, node; node = nodes[i]; i++) h.concat(results, node.getElementsByTagName(tagName)); return results; } else nodes = this[combinator](nodes); if (tagName == "*") return nodes; } for (var i = 0, node; node = nodes[i]; i++) if (node.tagName.toUpperCase() === uTagName) results.push(node); return results; } else return root.getElementsByTagName(tagName); }, id: function(nodes, root, id, combinator) { var targetNode = $(id), h = Selector.handlers; if (!targetNode) return []; if (!nodes && root == document) return [targetNode]; if (nodes) { if (combinator) { if (combinator == 'child') { for (var i = 0, node; node = nodes[i]; i++) if (targetNode.parentNode == node) return [targetNode]; } else if (combinator == 'descendant') { for (var i = 0, node; node = nodes[i]; i++) if (Element.descendantOf(targetNode, node)) return [targetNode]; } else if (combinator == 'adjacent') { for (var i = 0, node; node = nodes[i]; i++) if (Selector.handlers.previousElementSibling(targetNode) == node) return [targetNode]; } else nodes = h[combinator](nodes); } for (var i = 0, node; node = nodes[i]; i++) if (node == targetNode) return [targetNode]; return []; } return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : []; }, className: function(nodes, root, className, combinator) { if (nodes && combinator) nodes = this[combinator](nodes); return Selector.handlers.byClassName(nodes, root, className); }, byClassName: function(nodes, root, className) { if (!nodes) nodes = Selector.handlers.descendant([root]); var needle = ' ' + className + ' '; for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) { nodeClassName = node.className; if (nodeClassName.length == 0) continue; if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle)) results.push(node); } return results; }, attrPresence: function(nodes, root, attr, combinator) { if (!nodes) nodes = root.getElementsByTagName("*"); if (nodes && combinator) nodes = this[combinator](nodes); var results = []; for (var i = 0, node; node = nodes[i]; i++) if (Element.hasAttribute(node, attr)) results.push(node); return results; }, attr: function(nodes, root, attr, value, operator, combinator) { if (!nodes) nodes = root.getElementsByTagName("*"); if (nodes && combinator) nodes = this[combinator](nodes); var handler = Selector.operators[operator], results = []; for (var i = 0, node; node = nodes[i]; i++) { var nodeValue = Element.readAttribute(node, attr); if (nodeValue === null) continue; if (handler(nodeValue, value)) results.push(node); } return results; }, pseudo: function(nodes, name, value, root, combinator) { if (nodes && combinator) nodes = this[combinator](nodes); if (!nodes) nodes = root.getElementsByTagName("*"); return Selector.pseudos[name](nodes, value, root); } }, pseudos: { 'first-child': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { if (Selector.handlers.previousElementSibling(node)) continue; results.push(node); } return results; }, 'last-child': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { if (Selector.handlers.nextElementSibling(node)) continue; results.push(node); } return results; }, 'only-child': function(nodes, value, root) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) if (!h.previousElementSibling(node) && !h.nextElementSibling(node)) results.push(node); return results; }, 'nth-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root); }, 'nth-last-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true); }, 'nth-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, false, true); }, 'nth-last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true, true); }, 'first-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, false, true); }, 'last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, true, true); }, 'only-of-type': function(nodes, formula, root) { var p = Selector.pseudos; return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root); }, // handles the an+b logic getIndices: function(a, b, total) { if (a == 0) return b > 0 ? [b] : []; return $R(1, total).inject([], function(memo, i) { if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i); return memo; }); }, // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type nth: function(nodes, formula, root, reverse, ofType) { if (nodes.length == 0) return []; if (formula == 'even') formula = '2n+0'; if (formula == 'odd') formula = '2n+1'; var h = Selector.handlers, results = [], indexed = [], m; h.mark(nodes); for (var i = 0, node; node = nodes[i]; i++) { if (!node.parentNode._countedByPrototype) { h.index(node.parentNode, reverse, ofType); indexed.push(node.parentNode); } } if (formula.match(/^\d+$/)) { // just a number formula = Number(formula); for (var i = 0, node; node = nodes[i]; i++) if (node.nodeIndex == formula) results.push(node); } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (m[1] == "-") m[1] = -1; var a = m[1] ? Number(m[1]) : 1; var b = m[2] ? Number(m[2]) : 0; var indices = Selector.pseudos.getIndices(a, b, nodes.length); for (var i = 0, node, l = indices.length; node = nodes[i]; i++) { for (var j = 0; j < l; j++) if (node.nodeIndex == indices[j]) results.push(node); } } h.unmark(nodes); h.unmark(indexed); return results; }, 'empty': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { // IE treats comments as element nodes if (node.tagName == '!' || node.firstChild) continue; results.push(node); } return results; }, 'not': function(nodes, selector, root) { var h = Selector.handlers, selectorType, m; var exclusions = new Selector(selector).findElements(root); h.mark(exclusions); for (var i = 0, results = [], node; node = nodes[i]; i++) if (!node._countedByPrototype) results.push(node); h.unmark(exclusions); return results; }, 'enabled': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (!node.disabled && (!node.type || node.type !== 'hidden')) results.push(node); return results; }, 'disabled': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (node.disabled) results.push(node); return results; }, 'checked': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (node.checked) results.push(node); return results; } }, operators: { '=': function(nv, v) { return nv == v; }, '!=': function(nv, v) { return nv != v; }, '^=': function(nv, v) { return nv == v || nv && nv.startsWith(v); }, '$=': function(nv, v) { return nv == v || nv && nv.endsWith(v); }, '*=': function(nv, v) { return nv == v || nv && nv.include(v); }, '$=': function(nv, v) { return nv.endsWith(v); }, '*=': function(nv, v) { return nv.include(v); }, '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); }, '|=': function(nv, v) { return ('-' + (nv || "").toUpperCase() + '-').include('-' + (v || "").toUpperCase() + '-'); } }, split: function(expression) { var expressions = []; expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { expressions.push(m[1].strip()); }); return expressions; }, matchElements: function(elements, expression) { var matches = $$(expression), h = Selector.handlers; h.mark(matches); for (var i = 0, results = [], element; element = elements[i]; i++) if (element._countedByPrototype) results.push(element); h.unmark(matches); return results; }, findElement: function(elements, expression, index) { if (Object.isNumber(expression)) { index = expression; expression = false; } return Selector.matchElements(elements, expression || '*')[index || 0]; }, findChildElements: function(element, expressions) { expressions = Selector.split(expressions.join(',')); var results = [], h = Selector.handlers; for (var i = 0, l = expressions.length, selector; i < l; i++) { selector = new Selector(expressions[i].strip()); h.concat(results, selector.findElements(element)); } return (l > 1) ? h.unique(results) : results; } }); if (Prototype.Browser.IE) { Object.extend(Selector.handlers, { // IE returns comment nodes on getElementsByTagName("*"). // Filter them out. concat: function(a, b) { for (var i = 0, node; node = b[i]; i++) if (node.tagName !== "!") a.push(node); return a; }, // IE improperly serializes _countedByPrototype in (inner|outer)HTML. unmark: function(nodes) { for (var i = 0, node; node = nodes[i]; i++) node.removeAttribute('_countedByPrototype'); return nodes; } }); } function $$() { return Selector.findChildElements(document, $A(arguments)); } var Form = { reset: function(form) { $(form).reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit; var data = elements.inject({ }, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { if (key in result) { // a key is already present; construct an array of values if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; } } return result; }); return options.hash ? data : Object.toQueryString(data); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { return $A($(form).getElementsByTagName('*')).inject([], function(elements, child) { if (Form.Element.Serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; } ); }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); }); }, focusFirstElement: function(form) { form = $(form); form.findFirstElement().activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !['button', 'reset', 'submit'].include(element.type))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = { input: function(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return Form.Element.Serializers.inputSelector(element, value); default: return Form.Element.Serializers.textarea(element, value); } }, inputSelector: function(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; }, textarea: function(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; }, select: function(element, value) { if (Object.isUndefined(value)) return this[element.type == 'select-one' ? 'selectOne' : 'selectMany'](element); else { var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } }, selectOne: function(element) { var index = element.selectedIndex; return index >= 0 ? this.optionValue(element.options[index]) : null; }, selectMany: function(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(this.optionValue(opt)); } return values; }, optionValue: function(opt) { // extend element because hasAttribute may not be native return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; } }; /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); if (!window.Event) var Event = { }; Object.extend(Event, { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: { }, relatedTarget: function(event) { var element; switch(event.type) { case 'mouseover': element = event.fromElement; break; case 'mouseout': element = event.toElement; break; default: return null; } return Element.extend(element); } }); Event.Methods = (function() { var isButton; if (Prototype.Browser.IE) { var buttonMap = { 0: 1, 1: 4, 2: 2 }; isButton = function(event, code) { return event.button == buttonMap[code]; }; } else if (Prototype.Browser.WebKit) { isButton = function(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 1 && event.metaKey; default: return false; } }; } else { isButton = function(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); }; } return { isLeftClick: function(event) { return isButton(event, 0) }, isMiddleClick: function(event) { return isButton(event, 1) }, isRightClick: function(event) { return isButton(event, 2) }, element: function(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { // Firefox screws up the "click" event when moving between radio buttons // via arrow keys. It also screws up the "load" and "error" events on images, // reporting the document as the target instead of the original image. if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); }, findElement: function(event, expression) { var element = Event.element(event); if (!expression) return element; var elements = [element].concat(element.ancestors()); return Selector.findElement(elements, expression, 0); }, pointer: function(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0, scrollTop: 0 }; return { x: event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)), y: event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)) }; }, pointerX: function(event) { return Event.pointer(event).x }, pointerY: function(event) { return Event.pointer(event).y }, stop: function(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } }; })(); Event.extend = (function() { var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (Prototype.Browser.IE) { Object.extend(methods, { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return "[object Event]" } }); return function(event) { if (!event) return false; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement, relatedTarget: Event.relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); return Object.extend(event, methods); }; } else { Event.prototype = Event.prototype || document.createEvent("HTMLEvents")['__proto__']; Object.extend(Event.prototype, methods); return Prototype.K; } })(); Object.extend(Event, (function() { var cache = Event.cache; function getEventID(element) { if (element._prototypeEventID) return element._prototypeEventID[0]; arguments.callee.id = arguments.callee.id || 1; return element._prototypeEventID = [++arguments.callee.id]; } function getDOMEventName(eventName) { if (eventName && eventName.include(':')) return "dataavailable"; return eventName; } function getCacheForID(id) { return cache[id] = cache[id] || { }; } function getWrappersForEventName(id, eventName) { var c = getCacheForID(id); return c[eventName] = c[eventName] || []; } function createWrapper(element, eventName, handler) { var id = getEventID(element); var c = getWrappersForEventName(id, eventName); if (c.pluck("handler").include(handler)) return false; var wrapper = function(event) { if (!Event || !Event.extend || (event.eventName && event.eventName != eventName)) return false; Event.extend(event); handler.call(element, event); }; wrapper.handler = handler; c.push(wrapper); return wrapper; } function findWrapper(id, eventName, handler) { var c = getWrappersForEventName(id, eventName); return c.find(function(wrapper) { return wrapper.handler == handler }); } function destroyWrapper(id, eventName, handler) { var c = getCacheForID(id); if (!c[eventName]) return false; c[eventName] = c[eventName].without(findWrapper(id, eventName, handler)); } function destroyCache() { for (var id in cache) for (var eventName in cache[id]) cache[id][eventName] = null; } // Internet Explorer needs to remove event handlers on page unload // in order to avoid memory leaks. if (window.attachEvent) { window.attachEvent("onunload", destroyCache); } // Safari has a dummy event handler on page unload so that it won't // use its bfcache. Safari <= 3.1 has an issue with restoring the "document" // object when page is returned to via the back button using its bfcache. if (Prototype.Browser.WebKit) { window.addEventListener('unload', Prototype.emptyFunction, false); } return { observe: function(element, eventName, handler) { element = $(element); var name = getDOMEventName(eventName); var wrapper = createWrapper(element, eventName, handler); if (!wrapper) return element; if (element.addEventListener) { element.addEventListener(name, wrapper, false); } else { element.attachEvent("on" + name, wrapper); } return element; }, stopObserving: function(element, eventName, handler) { element = $(element); var id = getEventID(element), name = getDOMEventName(eventName); if (!handler && eventName) { getWrappersForEventName(id, eventName).each(function(wrapper) { element.stopObserving(eventName, wrapper.handler); }); return element; } else if (!eventName) { Object.keys(getCacheForID(id)).each(function(eventName) { element.stopObserving(eventName); }); return element; } var wrapper = findWrapper(id, eventName, handler); if (!wrapper) return element; if (element.removeEventListener) { element.removeEventListener(name, wrapper, false); } else { element.detachEvent("on" + name, wrapper); } destroyWrapper(id, eventName, handler); return element; }, fire: function(element, eventName, memo) { element = $(element); if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent("HTMLEvents"); event.initEvent("dataavailable", true, true); } else { event = document.createEventObject(); event.eventType = "ondataavailable"; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) { element.dispatchEvent(event); } else { element.fireEvent(event.eventType, event); } return Event.extend(event); } }; })()); Object.extend(Event, Event.Methods); Element.addMethods({ fire: Event.fire, observe: Event.observe, stopObserving: Event.stopObserving }); Object.extend(document, { fire: Element.Methods.fire.methodize(), observe: Element.Methods.observe.methodize(), stopObserving: Element.Methods.stopObserving.methodize(), loaded: false }); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards and John Resig. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearInterval(timer); document.fire("dom:loaded"); document.loaded = true; } if (document.addEventListener) { if (Prototype.Browser.WebKit) { timer = window.setInterval(function() { if (/loaded|complete/.test(document.readyState)) fireContentLoadedEvent(); }, 0); Event.observe(window, "load", fireContentLoadedEvent); } else { document.addEventListener("DOMContentLoaded", fireContentLoadedEvent, false); } } else { document.write(" Ytext/html`kaf bcdeO5bplist00bcX$versionX$objectsY$archiverT$top"()0!12HIJKLMNOPQRSTUVWX\]U$null  !R$6S$10R$2R$7R$3S$11R$8V$classR$4R$9R$0R$5R$1#$%&[NS.relativeWNS.base_bhttps://img-ak.verticalresponse.com/styling/asset/1279143973/server.js?lib/js/prototype-1.6.0.3.js*+,-Z$classnameX$classesUNSURL./UNSURLXNSObject#A}_3456?WNS.keysZNS.objects789:;<=> @ABCDEFGVServerZConnectionUX-Pad\Content-Type]Last-Modified^Content-LengthTDateTEtagVApacheZkeep-alive_avoid browser bug_text/javascript_Wed, 14 Jul 2010 21:46:13 GMTV129738_Wed, 28 Jul 2010 00:00:51 GMT_b443-7708-b37c3120*+YZ_NSMutableDictionaryY[/\NSDictionary*+^__NSHTTPURLResponse`a/_NSHTTPURLResponse]NSURLResponse_NSKeyedArchiverde_WebResourceResponse#-27V\wz~BGR[adjs|~*>Ppw.1GfI_bhttps://img-ak.verticalresponse.com/styling/asset/1279143973/server.js?lib/js/prototype-1.6.0.3.jsO/* Prototype JavaScript framework, version 1.6.0.3 * (c) 2005-2008 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.6.0.3', Browser: { IE: !!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1), Opera: navigator.userAgent.indexOf('Opera') > -1, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') === -1, MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) }, BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: !!window.HTMLElement, SpecificElementExtensions: document.createElement('div')['__proto__'] && document.createElement('div')['__proto__'] !== document.createElement('form')['__proto__'] }, ScriptFragment: ']*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; /* Based on Alex Arnell's inheritance implementation. */ var Class = { create: function() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { var subclass = function() { }; subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0; i < properties.length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } }; Class.Methods = { addMethods: function(source) { var ancestor = this.superclass && this.superclass.prototype; var properties = Object.keys(source); if (!Object.keys({ toString: true }).length) properties.push("toString", "valueOf"); for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames().first() == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments) }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } }; var Abstract = { }; Object.extend = function(destination, source) { for (var property in source) destination[property] = source[property]; return destination; }; Object.extend(Object, { inspect: function(object) { try { if (Object.isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } }, toJSON: function(object) { var type = typeof object; switch (type) { case 'undefined': case 'function': case 'unknown': return; case 'boolean': return object.toString(); } if (object === null) return 'null'; if (object.toJSON) return object.toJSON(); if (Object.isElement(object)) return; var results = []; for (var property in object) { var value = Object.toJSON(object[property]); if (!Object.isUndefined(value)) results.push(property.toJSON() + ': ' + value); } return '{' + results.join(', ') + '}'; }, toQueryString: function(object) { return $H(object).toQueryString(); }, toHTML: function(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); }, keys: function(object) { var keys = []; for (var property in object) keys.push(property); return keys; }, values: function(object) { var values = []; for (var property in object) values.push(object[property]); return values; }, clone: function(object) { return Object.extend({ }, object); }, isElement: function(object) { return !!(object && object.nodeType == 1); }, isArray: function(object) { return object != null && typeof object == "object" && 'splice' in object && 'join' in object; }, isHash: function(object) { return object instanceof Hash; }, isFunction: function(object) { return typeof object == "function"; }, isString: function(object) { return typeof object == "string"; }, isNumber: function(object) { return typeof object == "number"; }, isUndefined: function(object) { return typeof object == "undefined"; } }); Object.extend(Function.prototype, { argumentNames: function() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1] .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; }, bind: function() { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = $A(arguments), object = args.shift(); return function() { return __method.apply(object, args.concat($A(arguments))); } }, bindAsEventListener: function() { var __method = this, args = $A(arguments), object = args.shift(); return function(event) { return __method.apply(object, [event || window.event].concat(args)); } }, curry: function() { if (!arguments.length) return this; var __method = this, args = $A(arguments); return function() { return __method.apply(this, args.concat($A(arguments))); } }, delay: function() { var __method = this, args = $A(arguments), timeout = args.shift() * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); }, defer: function() { var args = [0.01].concat($A(arguments)); return this.delay.apply(this, args); }, wrap: function(wrapper) { var __method = this; return function() { return wrapper.apply(this, [__method.bind(this)].concat($A(arguments))); } }, methodize: function() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { return __method.apply(null, [this].concat($A(arguments))); }; } }); Date.prototype.toJSON = function() { return '"' + this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z"'; }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; /*--------------------------------------------------------------------------*/ var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); } finally { this.currentlyExecuting = false; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, { gsub: function(pattern, replacement) { var result = '', source = this, match; replacement = arguments.callee.prepareReplacement(replacement); while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; }, sub: function(pattern, replacement, count) { replacement = this.gsub.prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); }, scan: function(pattern, iterator) { this.gsub(pattern, iterator); return String(this); }, truncate: function(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); }, strip: function() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); }, stripTags: function() { return this.replace(/<\/?[^>]+>/gi, ''); }, stripScripts: function() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); }, extractScripts: function() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); }, evalScripts: function() { return this.extractScripts().map(function(script) { return eval(script) }); }, escapeHTML: function() { var self = arguments.callee; self.text.data = this; return self.div.innerHTML; }, unescapeHTML: function() { var div = new Element('div'); div.innerHTML = this.stripTags(); return div.childNodes[0] ? (div.childNodes.length > 1 ? $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) : div.childNodes[0].nodeValue) : ''; }, toQueryParams: function(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()); var value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); }, toArray: function() { return this.split(''); }, succ: function() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); }, times: function(count) { return count < 1 ? '' : new Array(count + 1).join(this); }, camelize: function() { var parts = this.split('-'), len = parts.length; if (len == 1) return parts[0]; var camelized = this.charAt(0) == '-' ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) : parts[0]; for (var i = 1; i < len; i++) camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); return camelized; }, capitalize: function() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); }, underscore: function() { return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase(); }, dasherize: function() { return this.gsub(/_/,'-'); }, inspect: function(useDoubleQuotes) { var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) { var character = String.specialChar[match[0]]; return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; }, toJSON: function() { return this.inspect(true); }, unfilterJSON: function(filter) { return this.sub(filter || Prototype.JSONFilter, '#{1}'); }, isJSON: function() { var str = this; if (str.blank()) return false; str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); }, evalJSON: function(sanitize) { var json = this.unfilterJSON(); try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); }, include: function(pattern) { return this.indexOf(pattern) > -1; }, startsWith: function(pattern) { return this.indexOf(pattern) === 0; }, endsWith: function(pattern) { var d = this.length - pattern.length; return d >= 0 && this.lastIndexOf(pattern) === d; }, empty: function() { return this == ''; }, blank: function() { return /^\s*$/.test(this); }, interpolate: function(object, pattern) { return new Template(this, pattern).evaluate(object); } }); if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, { escapeHTML: function() { return this.replace(/&/g,'&').replace(//g,'>'); }, unescapeHTML: function() { return this.stripTags().replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); } }); String.prototype.gsub.prepareReplacement = function(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; }; String.prototype.parseQuery = String.prototype.toQueryParams; Object.extend(String.prototype.escapeHTML, { div: document.createElement('div'), text: document.createTextNode('') }); String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return ''; var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3]; var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = { each: function(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; }, eachSlice: function(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); }, all: function(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; }, any: function(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; }, collect: function(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; }, detect: function(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; }, findAll: function(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; }, grep: function(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(filter); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; }, include: function(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; }, inGroupsOf: function(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); }, inject: function(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; }, invoke: function(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); }, max: function(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; }, min: function(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; }, partition: function(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; }, pluck: function(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; }, reject: function(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; }, sortBy: function(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); }, toArray: function() { return this.map(); }, zip: function() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); }, size: function() { return this.toArray().length; }, inspect: function() { return '#'; } }; Object.extend(Enumerable, { map: Enumerable.collect, find: Enumerable.detect, select: Enumerable.findAll, filter: Enumerable.findAll, member: Enumerable.include, entries: Enumerable.toArray, every: Enumerable.all, some: Enumerable.any }); function $A(iterable) { if (!iterable) return []; if (iterable.toArray) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } if (Prototype.Browser.WebKit) { $A = function(iterable) { if (!iterable) return []; // In Safari, only use the `toArray` method if it's not a NodeList. // A NodeList is a function, has an function `item` property, and a numeric // `length` property. Adapted from Google Doctype. if (!(typeof iterable === 'function' && typeof iterable.length === 'number' && typeof iterable.item === 'function') && iterable.toArray) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; }; } Array.from = $A; Object.extend(Array.prototype, Enumerable); if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse; Object.extend(Array.prototype, { _each: function(iterator) { for (var i = 0, length = this.length; i < length; i++) iterator(this[i]); }, clear: function() { this.length = 0; return this; }, first: function() { return this[0]; }, last: function() { return this[this.length - 1]; }, compact: function() { return this.select(function(value) { return value != null; }); }, flatten: function() { return this.inject([], function(array, value) { return array.concat(Object.isArray(value) ? value.flatten() : [value]); }); }, without: function() { var values = $A(arguments); return this.select(function(value) { return !values.include(value); }); }, reverse: function(inline) { return (inline !== false ? this : this.toArray())._reverse(); }, reduce: function() { return this.length > 1 ? this : this[0]; }, uniq: function(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); }, intersect: function(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); }, clone: function() { return [].concat(this); }, size: function() { return this.length; }, inspect: function() { return '[' + this.map(Object.inspect).join(', ') + ']'; }, toJSON: function() { var results = []; this.each(function(object) { var value = Object.toJSON(object); if (!Object.isUndefined(value)) results.push(value); }); return '[' + results.join(', ') + ']'; } }); // use native browser JS 1.6 implementation if available if (Object.isFunction(Array.prototype.forEach)) Array.prototype._each = Array.prototype.forEach; if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; }; if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; }; Array.prototype.toArray = Array.prototype.clone; function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } if (Prototype.Browser.Opera){ Array.prototype.concat = function() { var array = []; for (var i = 0, length = this.length; i < length; i++) array.push(this[i]); for (var i = 0, length = arguments.length; i < length; i++) { if (Object.isArray(arguments[i])) { for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++) array.push(arguments[i][j]); } else { array.push(arguments[i]); } } return array; }; } Object.extend(Number.prototype, { toColorPart: function() { return this.toPaddedString(2, 16); }, succ: function() { return this + 1; }, times: function(iterator, context) { $R(0, this, true).each(iterator, context); return this; }, toPaddedString: function(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; }, toJSON: function() { return isFinite(this) ? this.toString() : 'null'; } }); $w('abs round ceil floor').each(function(method){ Number.prototype[method] = Math[method].methodize(); }); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } return { initialize: function(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); }, _each: function(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } }, set: function(key, value) { return this._object[key] = value; }, get: function(key) { // simulating poorly supported hasOwnProperty if (this._object[key] !== Object.prototype[key]) return this._object[key]; }, unset: function(key) { var value = this._object[key]; delete this._object[key]; return value; }, toObject: function() { return Object.clone(this._object); }, keys: function() { return this.pluck('key'); }, values: function() { return this.pluck('value'); }, index: function(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; }, merge: function(object) { return this.clone().update(object); }, update: function(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); }, toQueryString: function() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) return results.concat(values.map(toQueryPair.curry(key))); } else results.push(toQueryPair(key, values)); return results; }).join('&'); }, inspect: function() { return '#'; }, toJSON: function() { return Object.toJSON(this.toObject()); }, clone: function() { return new Hash(this); } } })()); Hash.prototype.toTemplateReplacements = Hash.prototype.toObject; Hash.from = $H; var ObjectRange = Class.create(Enumerable, { initialize: function(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; }, _each: function(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } }, include: function(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } }); var $R = function(start, end, exclusive) { return new ObjectRange(start, end, exclusive); }; var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isString(this.options.parameters)) this.options.parameters = this.options.parameters.toQueryParams(); else if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.clone(this.options.parameters); if (!['get', 'post'].include(this.method)) { // simulate other verbs over post params['_method'] = this.method; this.method = 'post'; } this.parameters = params; if (params = Object.toQueryString(params)) { // when GET, append parameters to URL if (this.method == 'get') this.url += (this.url.include('?') ? '&' : '?') + params; else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_='; } try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } // user-defined headers if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300); }, getStatus: function() { try { return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { // avoid memory leak in MSIE: clean up this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if(readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!window.Node) var Node = { }; if (!Node.ELEMENT_NODE) { // DOM level 2 ECMAScript Language Binding Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function() { var element = this.Element; this.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (Prototype.Browser.IE && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); return Element.writeAttribute(cache[tagName].cloneNode(false), attributes); }; Object.extend(this.Element, element || { }); if (element) this.Element.prototype = element.prototype; }).call(window); Element.cache = { }; Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, remove: function(element) { element = $(element); element.parentNode.removeChild(element); return element; }, update: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); element.innerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }, replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(); var value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) elements.push(Element.extend(element)); return elements; }, ancestors: function(element) { return $(element).recursivelyCollect('parentNode'); }, descendants: function(element) { return $(element).select("*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).nextSiblings()); return []; }, previousSiblings: function(element) { return $(element).recursivelyCollect('previousSibling'); }, nextSiblings: function(element) { return $(element).recursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return element.previousSiblings().reverse().concat(element.nextSiblings()); }, match: function(element, selector) { if (Object.isString(selector)) selector = new Selector(selector); return selector.match($(element)); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = element.ancestors(); return Object.isNumber(expression) ? ancestors[expression] : Selector.findElement(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? element.descendants()[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); var previousSiblings = element.previousSiblings(); return Object.isNumber(expression) ? previousSiblings[expression] : Selector.findElement(previousSiblings, expression, index); }, next: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); var nextSiblings = element.nextSiblings(); return Object.isNumber(expression) ? nextSiblings[expression] : Selector.findElement(nextSiblings, expression, index); }, select: function() { var args = $A(arguments), element = $(args.shift()); return Selector.findChildElements(element, args); }, adjacent: function() { var args = $A(arguments), element = $(args.shift()); return Selector.findChildElements(element.parentNode, args).without(element); }, identify: function(element) { element = $(element); var id = element.readAttribute('id'), self = arguments.callee; if (id) return id; do { id = 'anonymous_element_' + self.counter++ } while ($(id)); element.writeAttribute('id', id); return id; }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return $(element).getDimensions().height; }, getWidth: function(element) { return $(element).getDimensions().width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!element.hasClassName(className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return element[element.hasClassName(className) ? 'removeClassName' : 'addClassName'](className); }, // removes whitespace-only text node children cleanWhitespace: function(element) { element = $(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = element.cumulativeOffset(); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, getDimensions: function(element) { element = $(element); var display = element.getStyle('display'); if (display != 'none' && display != null) // Safari bug return {width: element.offsetWidth, height: element.offsetHeight}; // All *Width and *Height properties give 0 on elements with display none, // so enable the element temporarily var els = element.style; var originalVisibility = els.visibility; var originalPosition = els.position; var originalDisplay = els.display; els.visibility = 'hidden'; els.position = 'absolute'; els.display = 'block'; var originalWidth = element.clientWidth; var originalHeight = element.clientHeight; els.display = originalDisplay; els.position = originalPosition; els.visibility = originalVisibility; return {width: originalWidth, height: originalHeight}; }, makePositioned: function(element) { element = $(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; // Opera returns the offset relative to the positioning context, when an // element is position relative but top and left have not been defined if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, cumulativeOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }, positionedOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (element.tagName.toUpperCase() == 'BODY') break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); return Element._returnOffset(valueL, valueT); }, absolutize: function(element) { element = $(element); if (element.getStyle('position') == 'absolute') return element; // Position.prepare(); // To be done manually by Scripty when it needs it. var offsets = element.positionedOffset(); var top = offsets[1]; var left = offsets[0]; var width = element.clientWidth; var height = element.clientHeight; element._originalLeft = left - parseFloat(element.style.left || 0); element._originalTop = top - parseFloat(element.style.top || 0); element._originalWidth = element.style.width; element._originalHeight = element.style.height; element.style.position = 'absolute'; element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.width = width + 'px'; element.style.height = height + 'px'; return element; }, relativize: function(element) { element = $(element); if (element.getStyle('position') == 'relative') return element; // Position.prepare(); // To be done manually by Scripty when it needs it. element.style.position = 'relative'; var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.height = element._originalHeight; element.style.width = element._originalWidth; return element; }, cumulativeScrollOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return Element._returnOffset(valueL, valueT); }, getOffsetParent: function(element) { if (element.offsetParent) return $(element.offsetParent); if (element == document.body) return $(element); while ((element = element.parentNode) && element != document.body) if (Element.getStyle(element, 'position') != 'static') return $(element); return $(document.body); }, viewportOffset: function(forElement) { var valueT = 0, valueL = 0; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; // Safari fix if (element.offsetParent == document.body && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (!Prototype.Browser.Opera || (element.tagName && (element.tagName.toUpperCase() == 'BODY'))) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return Element._returnOffset(valueL, valueT); }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); // find page position of source source = $(source); var p = source.viewportOffset(); // find coordinate system to use element = $(element); var delta = [0, 0]; var parent = null; // delta [0,0] will do fine with position: fixed elements, // position:absolute needs offsetParent deltas if (Element.getStyle(element, 'position') == 'absolute') { parent = element.getOffsetParent(); delta = parent.viewportOffset(); } // correct by body offsets (fixes Safari) if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } // set position if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Element.Methods.identify.counter = 1; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'left': case 'top': case 'right': case 'bottom': if (proceed(element, 'position') === 'static') return null; case 'height': case 'width': // returns '0px' for hidden elements; we want it to return null if (!Element.visible(element)) return null; // returns the border-box dimensions rather than the content-box // dimensions, so we subtract padding and borders from the value var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { // IE doesn't report offsets correctly for static elements, so we change them // to "relative" to get the values, then change them back. Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap( function(proceed, element) { element = $(element); // IE throws an error if element is not in document try { element.offsetParent } catch(e) { return $(document.body) } var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); $w('positionedOffset viewportOffset').each(function(method) { Element.Methods[method] = Element.Methods[method].wrap( function(proceed, element) { element = $(element); try { element.offsetParent } catch(e) { return Element._returnOffset(0,0) } var position = element.getStyle('position'); if (position !== 'static') return proceed(element); // Trigger hasLayout on the offset parent so that IE6 reports // accurate offsetTop and offsetLeft values for position: fixed. var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') offsetParent.setStyle({ zoom: 1 }); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); }); Element.Methods.cumulativeOffset = Element.Methods.cumulativeOffset.wrap( function(proceed, element) { try { element.offsetParent } catch(e) { return Element._returnOffset(0,0) } return proceed(element); } ); Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = { read: { names: { 'class': 'className', 'for': 'htmlFor' }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: function(element, attribute) { attribute = element.getAttribute(attribute); return attribute ? attribute.toString().slice(23, -2) : null; }, _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } }; Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr, src: v._getAttr, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if(element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; // Safari returns margins on body which is incorrect if the child is absolutely // positioned. For performance reasons, redefine Element#cumulativeOffset for // KHTML/WebKit only. Element.Methods.cumulativeOffset = function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }; } if (Prototype.Browser.IE || Prototype.Browser.Opera) { // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements Element.Methods.update = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName in Element._insertionTranslations.tags) { $A(element.childNodes).each(function(node) { element.removeChild(node) }); Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else element.innerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } if ('outerHTML' in document.createElement('div')) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(); var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; if (t) { div.innerHTML = t[0] + html + t[1]; t[2].times(function() { div = div.firstChild }); } else div.innerHTML = html; return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['', '
', 1], TBODY: ['', '
', 2], TR: ['', '
', 3], TD: ['
', '
', 4], SELECT: ['', 1] } }; (function() { Object.extend(this.tags, { THEAD: this.tags.TBODY, TFOOT: this.tags.TBODY, TH: this.tags.TD }); }).call(Element._insertionTranslations); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); if (!Prototype.BrowserFeatures.ElementExtensions && document.createElement('div')['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = document.createElement('div')['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } Element.extend = (function() { if (Prototype.BrowserFeatures.SpecificElementExtensions) return Prototype.K; var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || element._extendedByPrototype || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(), property, value; // extend methods for specific tags if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); for (property in methods) { value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { // extend methods for all tags (Safari doesn't need this) if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); Element.hasAttribute = function(element, attribute) { if (element.hasAttribute) return element.hasAttribute(attribute); return Element.Methods.Simulated.hasAttribute(element, attribute); }; Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; window[klass] = { }; window[klass].prototype = document.createElement(tagName)['__proto__']; return window[klass]; } if (F.ElementExtensions) { copy(Element.Methods, HTMLElement.prototype); copy(Element.Methods.Simulated, HTMLElement.prototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { var dimensions = { }, B = Prototype.Browser; $w('width height').each(function(d) { var D = d.capitalize(); if (B.WebKit && !document.evaluate) { // Safari <3.0 needs self.innerWidth/Height dimensions[d] = self['inner' + D]; } else if (B.Opera && parseFloat(window.opera.version()) < 9.5) { // Opera <9.5 needs document.body.clientWidth/Height dimensions[d] = document.body['client' + D] } else { dimensions[d] = document.documentElement['client' + D]; } }); return dimensions; }, getWidth: function() { return this.getDimensions().width; }, getHeight: function() { return this.getDimensions().height; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; /* Portions of the Selector class are derived from Jack Slocum's DomQuery, * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style * license. Please see http://www.yui-ext.com/ for more information. */ var Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); if (this.shouldUseSelectorsAPI()) { this.mode = 'selectorsAPI'; } else if (this.shouldUseXPath()) { this.mode = 'xpath'; this.compileXPathMatcher(); } else { this.mode = "normal"; this.compileMatcher(); } }, shouldUseXPath: function() { if (!Prototype.BrowserFeatures.XPath) return false; var e = this.expression; // Safari 3 chokes on :*-of-type and :empty if (Prototype.Browser.WebKit && (e.include("-of-type") || e.include(":empty"))) return false; // XPath can't do namespaced attributes, nor can it read // the "checked" property from DOM nodes if ((/(\[[\w-]*?:|:checked)/).test(e)) return false; return true; }, shouldUseSelectorsAPI: function() { if (!Prototype.BrowserFeatures.SelectorsAPI) return false; if (!Selector._div) Selector._div = new Element('div'); // Make sure the browser treats the selector as valid. Test on an // isolated element to minimize cost of this check. try { Selector._div.querySelector(this.expression); } catch(e) { return false; } return true; }, compileMatcher: function() { var e = this.expression, ps = Selector.patterns, h = Selector.handlers, c = Selector.criteria, le, p, m; if (Selector._cache[e]) { this.matcher = Selector._cache[e]; return; } this.matcher = ["this.matcher = function(root) {", "var r = root, h = Selector.handlers, c = false, n;"]; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in ps) { p = ps[i]; if (m = e.match(p)) { this.matcher.push(Object.isFunction(c[i]) ? c[i](m) : new Template(c[i]).evaluate(m)); e = e.replace(m[0], ''); break; } } } this.matcher.push("return h.unique(n);\n}"); eval(this.matcher.join('\n')); Selector._cache[this.expression] = this.matcher; }, compileXPathMatcher: function() { var e = this.expression, ps = Selector.patterns, x = Selector.xpath, le, m; if (Selector._cache[e]) { this.xpath = Selector._cache[e]; return; } this.matcher = ['.//*']; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in ps) { if (m = e.match(ps[i])) { this.matcher.push(Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m)); e = e.replace(m[0], ''); break; } } } this.xpath = this.matcher.join(''); Selector._cache[this.expression] = this.xpath; }, findElements: function(root) { root = root || document; var e = this.expression, results; switch (this.mode) { case 'selectorsAPI': // querySelectorAll queries document-wide, then filters to descendants // of the context element. That's not what we want. // Add an explicit context to the selector if necessary. if (root !== document) { var oldId = root.id, id = $(root).identify(); e = "#" + id + " " + e; } results = $A(root.querySelectorAll(e)).map(Element.extend); root.id = oldId; return results; case 'xpath': return document._getElementsByXPath(this.xpath, root); default: return this.matcher(root); } }, match: function(element) { this.tokens = []; var e = this.expression, ps = Selector.patterns, as = Selector.assertions; var le, p, m; while (e && le !== e && (/\S/).test(e)) { le = e; for (var i in ps) { p = ps[i]; if (m = e.match(p)) { // use the Selector.assertions methods unless the selector // is too complex. if (as[i]) { this.tokens.push([i, Object.clone(m)]); e = e.replace(m[0], ''); } else { // reluctantly do a document-wide search // and look for a match in the array return this.findElements(document).include(element); } } } } var match = true, name, matches; for (var i = 0, token; token = this.tokens[i]; i++) { name = token[0], matches = token[1]; if (!Selector.assertions[name](element, matches)) { match = false; break; } } return match; }, toString: function() { return this.expression; }, inspect: function() { return "#"; } }); Object.extend(Selector, { _cache: { }, xpath: { descendant: "//*", child: "/*", adjacent: "/following-sibling::*[1]", laterSibling: '/following-sibling::*', tagName: function(m) { if (m[1] == '*') return ''; return "[local-name()='" + m[1].toLowerCase() + "' or local-name()='" + m[1].toUpperCase() + "']"; }, className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", id: "[@id='#{1}']", attrPresence: function(m) { m[1] = m[1].toLowerCase(); return new Template("[@#{1}]").evaluate(m); }, attr: function(m) { m[1] = m[1].toLowerCase(); m[3] = m[5] || m[6]; return new Template(Selector.xpath.operators[m[2]]).evaluate(m); }, pseudo: function(m) { var h = Selector.xpath.pseudos[m[1]]; if (!h) return ''; if (Object.isFunction(h)) return h(m); return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); }, operators: { '=': "[@#{1}='#{3}']", '!=': "[@#{1}!='#{3}']", '^=': "[starts-with(@#{1}, '#{3}')]", '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", '*=': "[contains(@#{1}, '#{3}')]", '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" }, pseudos: { 'first-child': '[not(preceding-sibling::*)]', 'last-child': '[not(following-sibling::*)]', 'only-child': '[not(preceding-sibling::* or following-sibling::*)]', 'empty': "[count(*) = 0 and (count(text()) = 0)]", 'checked': "[@checked]", 'disabled': "[(@disabled) and (@type!='hidden')]", 'enabled': "[not(@disabled) and (@type!='hidden')]", 'not': function(m) { var e = m[6], p = Selector.patterns, x = Selector.xpath, le, v; var exclusion = []; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in p) { if (m = e.match(p[i])) { v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m); exclusion.push("(" + v.substring(1, v.length - 1) + ")"); e = e.replace(m[0], ''); break; } } } return "[not(" + exclusion.join(" and ") + ")]"; }, 'nth-child': function(m) { return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); }, 'nth-last-child': function(m) { return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); }, 'nth-of-type': function(m) { return Selector.xpath.pseudos.nth("position() ", m); }, 'nth-last-of-type': function(m) { return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m); }, 'first-of-type': function(m) { m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m); }, 'last-of-type': function(m) { m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m); }, 'only-of-type': function(m) { var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m); }, nth: function(fragment, m) { var mm, formula = m[6], predicate; if (formula == 'even') formula = '2n+0'; if (formula == 'odd') formula = '2n+1'; if (mm = formula.match(/^(\d+)$/)) // digit only return '[' + fragment + "= " + mm[1] + ']'; if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (mm[1] == "-") mm[1] = -1; var a = mm[1] ? Number(mm[1]) : 1; var b = mm[2] ? Number(mm[2]) : 0; predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " + "((#{fragment} - #{b}) div #{a} >= 0)]"; return new Template(predicate).evaluate({ fragment: fragment, a: a, b: b }); } } } }, criteria: { tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', className: 'n = h.className(n, r, "#{1}", c); c = false;', id: 'n = h.id(n, r, "#{1}", c); c = false;', attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;', attr: function(m) { m[3] = (m[5] || m[6]); return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m); }, pseudo: function(m) { if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m); }, descendant: 'c = "descendant";', child: 'c = "child";', adjacent: 'c = "adjacent";', laterSibling: 'c = "laterSibling";' }, patterns: { // combinators must be listed first // (and descendant needs to be last combinator) laterSibling: /^\s*~\s*/, child: /^\s*>\s*/, adjacent: /^\s*\+\s*/, descendant: /^\s/, // selectors follow tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, id: /^#([\w\-\*]+)(\b|$)/, className: /^\.([\w\-\*]+)(\b|$)/, pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/, attrPresence: /^\[((?:[\w]+:)?[\w]+)\]/, attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ }, // for Selector.match and Element#match assertions: { tagName: function(element, matches) { return matches[1].toUpperCase() == element.tagName.toUpperCase(); }, className: function(element, matches) { return Element.hasClassName(element, matches[1]); }, id: function(element, matches) { return element.id === matches[1]; }, attrPresence: function(element, matches) { return Element.hasAttribute(element, matches[1]); }, attr: function(element, matches) { var nodeValue = Element.readAttribute(element, matches[1]); return nodeValue && Selector.operators[matches[2]](nodeValue, matches[5] || matches[6]); } }, handlers: { // UTILITY FUNCTIONS // joins two collections concat: function(a, b) { for (var i = 0, node; node = b[i]; i++) a.push(node); return a; }, // marks an array of nodes for counting mark: function(nodes) { var _true = Prototype.emptyFunction; for (var i = 0, node; node = nodes[i]; i++) node._countedByPrototype = _true; return nodes; }, unmark: function(nodes) { for (var i = 0, node; node = nodes[i]; i++) node._countedByPrototype = undefined; return nodes; }, // mark each child node with its position (for nth calls) // "ofType" flag indicates whether we're indexing for nth-of-type // rather than nth-child index: function(parentNode, reverse, ofType) { parentNode._countedByPrototype = Prototype.emptyFunction; if (reverse) { for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { var node = nodes[i]; if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; } } else { for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++) if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; } }, // filters out duplicates and extends all nodes unique: function(nodes) { if (nodes.length == 0) return nodes; var results = [], n; for (var i = 0, l = nodes.length; i < l; i++) if (!(n = nodes[i])._countedByPrototype) { n._countedByPrototype = Prototype.emptyFunction; results.push(Element.extend(n)); } return Selector.handlers.unmark(results); }, // COMBINATOR FUNCTIONS descendant: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) h.concat(results, node.getElementsByTagName('*')); return results; }, child: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) { for (var j = 0, child; child = node.childNodes[j]; j++) if (child.nodeType == 1 && child.tagName != '!') results.push(child); } return results; }, adjacent: function(nodes) { for (var i = 0, results = [], node; node = nodes[i]; i++) { var next = this.nextElementSibling(node); if (next) results.push(next); } return results; }, laterSibling: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) h.concat(results, Element.nextSiblings(node)); return results; }, nextElementSibling: function(node) { while (node = node.nextSibling) if (node.nodeType == 1) return node; return null; }, previousElementSibling: function(node) { while (node = node.previousSibling) if (node.nodeType == 1) return node; return null; }, // TOKEN FUNCTIONS tagName: function(nodes, root, tagName, combinator) { var uTagName = tagName.toUpperCase(); var results = [], h = Selector.handlers; if (nodes) { if (combinator) { // fastlane for ordinary descendant combinators if (combinator == "descendant") { for (var i = 0, node; node = nodes[i]; i++) h.concat(results, node.getElementsByTagName(tagName)); return results; } else nodes = this[combinator](nodes); if (tagName == "*") return nodes; } for (var i = 0, node; node = nodes[i]; i++) if (node.tagName.toUpperCase() === uTagName) results.push(node); return results; } else return root.getElementsByTagName(tagName); }, id: function(nodes, root, id, combinator) { var targetNode = $(id), h = Selector.handlers; if (!targetNode) return []; if (!nodes && root == document) return [targetNode]; if (nodes) { if (combinator) { if (combinator == 'child') { for (var i = 0, node; node = nodes[i]; i++) if (targetNode.parentNode == node) return [targetNode]; } else if (combinator == 'descendant') { for (var i = 0, node; node = nodes[i]; i++) if (Element.descendantOf(targetNode, node)) return [targetNode]; } else if (combinator == 'adjacent') { for (var i = 0, node; node = nodes[i]; i++) if (Selector.handlers.previousElementSibling(targetNode) == node) return [targetNode]; } else nodes = h[combinator](nodes); } for (var i = 0, node; node = nodes[i]; i++) if (node == targetNode) return [targetNode]; return []; } return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : []; }, className: function(nodes, root, className, combinator) { if (nodes && combinator) nodes = this[combinator](nodes); return Selector.handlers.byClassName(nodes, root, className); }, byClassName: function(nodes, root, className) { if (!nodes) nodes = Selector.handlers.descendant([root]); var needle = ' ' + className + ' '; for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) { nodeClassName = node.className; if (nodeClassName.length == 0) continue; if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle)) results.push(node); } return results; }, attrPresence: function(nodes, root, attr, combinator) { if (!nodes) nodes = root.getElementsByTagName("*"); if (nodes && combinator) nodes = this[combinator](nodes); var results = []; for (var i = 0, node; node = nodes[i]; i++) if (Element.hasAttribute(node, attr)) results.push(node); return results; }, attr: function(nodes, root, attr, value, operator, combinator) { if (!nodes) nodes = root.getElementsByTagName("*"); if (nodes && combinator) nodes = this[combinator](nodes); var handler = Selector.operators[operator], results = []; for (var i = 0, node; node = nodes[i]; i++) { var nodeValue = Element.readAttribute(node, attr); if (nodeValue === null) continue; if (handler(nodeValue, value)) results.push(node); } return results; }, pseudo: function(nodes, name, value, root, combinator) { if (nodes && combinator) nodes = this[combinator](nodes); if (!nodes) nodes = root.getElementsByTagName("*"); return Selector.pseudos[name](nodes, value, root); } }, pseudos: { 'first-child': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { if (Selector.handlers.previousElementSibling(node)) continue; results.push(node); } return results; }, 'last-child': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { if (Selector.handlers.nextElementSibling(node)) continue; results.push(node); } return results; }, 'only-child': function(nodes, value, root) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) if (!h.previousElementSibling(node) && !h.nextElementSibling(node)) results.push(node); return results; }, 'nth-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root); }, 'nth-last-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true); }, 'nth-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, false, true); }, 'nth-last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true, true); }, 'first-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, false, true); }, 'last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, true, true); }, 'only-of-type': function(nodes, formula, root) { var p = Selector.pseudos; return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root); }, // handles the an+b logic getIndices: function(a, b, total) { if (a == 0) return b > 0 ? [b] : []; return $R(1, total).inject([], function(memo, i) { if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i); return memo; }); }, // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type nth: function(nodes, formula, root, reverse, ofType) { if (nodes.length == 0) return []; if (formula == 'even') formula = '2n+0'; if (formula == 'odd') formula = '2n+1'; var h = Selector.handlers, results = [], indexed = [], m; h.mark(nodes); for (var i = 0, node; node = nodes[i]; i++) { if (!node.parentNode._countedByPrototype) { h.index(node.parentNode, reverse, ofType); indexed.push(node.parentNode); } } if (formula.match(/^\d+$/)) { // just a number formula = Number(formula); for (var i = 0, node; node = nodes[i]; i++) if (node.nodeIndex == formula) results.push(node); } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (m[1] == "-") m[1] = -1; var a = m[1] ? Number(m[1]) : 1; var b = m[2] ? Number(m[2]) : 0; var indices = Selector.pseudos.getIndices(a, b, nodes.length); for (var i = 0, node, l = indices.length; node = nodes[i]; i++) { for (var j = 0; j < l; j++) if (node.nodeIndex == indices[j]) results.push(node); } } h.unmark(nodes); h.unmark(indexed); return results; }, 'empty': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { // IE treats comments as element nodes if (node.tagName == '!' || node.firstChild) continue; results.push(node); } return results; }, 'not': function(nodes, selector, root) { var h = Selector.handlers, selectorType, m; var exclusions = new Selector(selector).findElements(root); h.mark(exclusions); for (var i = 0, results = [], node; node = nodes[i]; i++) if (!node._countedByPrototype) results.push(node); h.unmark(exclusions); return results; }, 'enabled': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (!node.disabled && (!node.type || node.type !== 'hidden')) results.push(node); return results; }, 'disabled': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (node.disabled) results.push(node); return results; }, 'checked': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (node.checked) results.push(node); return results; } }, operators: { '=': function(nv, v) { return nv == v; }, '!=': function(nv, v) { return nv != v; }, '^=': function(nv, v) { return nv == v || nv && nv.startsWith(v); }, '$=': function(nv, v) { return nv == v || nv && nv.endsWith(v); }, '*=': function(nv, v) { return nv == v || nv && nv.include(v); }, '$=': function(nv, v) { return nv.endsWith(v); }, '*=': function(nv, v) { return nv.include(v); }, '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); }, '|=': function(nv, v) { return ('-' + (nv || "").toUpperCase() + '-').include('-' + (v || "").toUpperCase() + '-'); } }, split: function(expression) { var expressions = []; expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { expressions.push(m[1].strip()); }); return expressions; }, matchElements: function(elements, expression) { var matches = $$(expression), h = Selector.handlers; h.mark(matches); for (var i = 0, results = [], element; element = elements[i]; i++) if (element._countedByPrototype) results.push(element); h.unmark(matches); return results; }, findElement: function(elements, expression, index) { if (Object.isNumber(expression)) { index = expression; expression = false; } return Selector.matchElements(elements, expression || '*')[index || 0]; }, findChildElements: function(element, expressions) { expressions = Selector.split(expressions.join(',')); var results = [], h = Selector.handlers; for (var i = 0, l = expressions.length, selector; i < l; i++) { selector = new Selector(expressions[i].strip()); h.concat(results, selector.findElements(element)); } return (l > 1) ? h.unique(results) : results; } }); if (Prototype.Browser.IE) { Object.extend(Selector.handlers, { // IE returns comment nodes on getElementsByTagName("*"). // Filter them out. concat: function(a, b) { for (var i = 0, node; node = b[i]; i++) if (node.tagName !== "!") a.push(node); return a; }, // IE improperly serializes _countedByPrototype in (inner|outer)HTML. unmark: function(nodes) { for (var i = 0, node; node = nodes[i]; i++) node.removeAttribute('_countedByPrototype'); return nodes; } }); } function $$() { return Selector.findChildElements(document, $A(arguments)); } var Form = { reset: function(form) { $(form).reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit; var data = elements.inject({ }, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { if (key in result) { // a key is already present; construct an array of values if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; } } return result; }); return options.hash ? data : Object.toQueryString(data); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { return $A($(form).getElementsByTagName('*')).inject([], function(elements, child) { if (Form.Element.Serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; } ); }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); }); }, focusFirstElement: function(form) { form = $(form); form.findFirstElement().activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !['button', 'reset', 'submit'].include(element.type))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = { input: function(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return Form.Element.Serializers.inputSelector(element, value); default: return Form.Element.Serializers.textarea(element, value); } }, inputSelector: function(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; }, textarea: function(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; }, select: function(element, value) { if (Object.isUndefined(value)) return this[element.type == 'select-one' ? 'selectOne' : 'selectMany'](element); else { var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } }, selectOne: function(element) { var index = element.selectedIndex; return index >= 0 ? this.optionValue(element.options[index]) : null; }, selectMany: function(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(this.optionValue(opt)); } return values; }, optionValue: function(opt) { // extend element because hasAttribute may not be native return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; } }; /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); if (!window.Event) var Event = { }; Object.extend(Event, { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: { }, relatedTarget: function(event) { var element; switch(event.type) { case 'mouseover': element = event.fromElement; break; case 'mouseout': element = event.toElement; break; default: return null; } return Element.extend(element); } }); Event.Methods = (function() { var isButton; if (Prototype.Browser.IE) { var buttonMap = { 0: 1, 1: 4, 2: 2 }; isButton = function(event, code) { return event.button == buttonMap[code]; }; } else if (Prototype.Browser.WebKit) { isButton = function(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 1 && event.metaKey; default: return false; } }; } else { isButton = function(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); }; } return { isLeftClick: function(event) { return isButton(event, 0) }, isMiddleClick: function(event) { return isButton(event, 1) }, isRightClick: function(event) { return isButton(event, 2) }, element: function(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { // Firefox screws up the "click" event when moving between radio buttons // via arrow keys. It also screws up the "load" and "error" events on images, // reporting the document as the target instead of the original image. if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); }, findElement: function(event, expression) { var element = Event.element(event); if (!expression) return element; var elements = [element].concat(element.ancestors()); return Selector.findElement(elements, expression, 0); }, pointer: function(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0, scrollTop: 0 }; return { x: event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)), y: event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)) }; }, pointerX: function(event) { return Event.pointer(event).x }, pointerY: function(event) { return Event.pointer(event).y }, stop: function(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } }; })(); Event.extend = (function() { var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (Prototype.Browser.IE) { Object.extend(methods, { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return "[object Event]" } }); return function(event) { if (!event) return false; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement, relatedTarget: Event.relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); return Object.extend(event, methods); }; } else { Event.prototype = Event.prototype || document.createEvent("HTMLEvents")['__proto__']; Object.extend(Event.prototype, methods); return Prototype.K; } })(); Object.extend(Event, (function() { var cache = Event.cache; function getEventID(element) { if (element._prototypeEventID) return element._prototypeEventID[0]; arguments.callee.id = arguments.callee.id || 1; return element._prototypeEventID = [++arguments.callee.id]; } function getDOMEventName(eventName) { if (eventName && eventName.include(':')) return "dataavailable"; return eventName; } function getCacheForID(id) { return cache[id] = cache[id] || { }; } function getWrappersForEventName(id, eventName) { var c = getCacheForID(id); return c[eventName] = c[eventName] || []; } function createWrapper(element, eventName, handler) { var id = getEventID(element); var c = getWrappersForEventName(id, eventName); if (c.pluck("handler").include(handler)) return false; var wrapper = function(event) { if (!Event || !Event.extend || (event.eventName && event.eventName != eventName)) return false; Event.extend(event); handler.call(element, event); }; wrapper.handler = handler; c.push(wrapper); return wrapper; } function findWrapper(id, eventName, handler) { var c = getWrappersForEventName(id, eventName); return c.find(function(wrapper) { return wrapper.handler == handler }); } function destroyWrapper(id, eventName, handler) { var c = getCacheForID(id); if (!c[eventName]) return false; c[eventName] = c[eventName].without(findWrapper(id, eventName, handler)); } function destroyCache() { for (var id in cache) for (var eventName in cache[id]) cache[id][eventName] = null; } // Internet Explorer needs to remove event handlers on page unload // in order to avoid memory leaks. if (window.attachEvent) { window.attachEvent("onunload", destroyCache); } // Safari has a dummy event handler on page unload so that it won't // use its bfcache. Safari <= 3.1 has an issue with restoring the "document" // object when page is returned to via the back button using its bfcache. if (Prototype.Browser.WebKit) { window.addEventListener('unload', Prototype.emptyFunction, false); } return { observe: function(element, eventName, handler) { element = $(element); var name = getDOMEventName(eventName); var wrapper = createWrapper(element, eventName, handler); if (!wrapper) return element; if (element.addEventListener) { element.addEventListener(name, wrapper, false); } else { element.attachEvent("on" + name, wrapper); } return element; }, stopObserving: function(element, eventName, handler) { element = $(element); var id = getEventID(element), name = getDOMEventName(eventName); if (!handler && eventName) { getWrappersForEventName(id, eventName).each(function(wrapper) { element.stopObserving(eventName, wrapper.handler); }); return element; } else if (!eventName) { Object.keys(getCacheForID(id)).each(function(eventName) { element.stopObserving(eventName); }); return element; } var wrapper = findWrapper(id, eventName, handler); if (!wrapper) return element; if (element.removeEventListener) { element.removeEventListener(name, wrapper, false); } else { element.detachEvent("on" + name, wrapper); } destroyWrapper(id, eventName, handler); return element; }, fire: function(element, eventName, memo) { element = $(element); if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent("HTMLEvents"); event.initEvent("dataavailable", true, true); } else { event = document.createEventObject(); event.eventType = "ondataavailable"; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) { element.dispatchEvent(event); } else { element.fireEvent(event.eventType, event); } return Event.extend(event); } }; })()); Object.extend(Event, Event.Methods); Element.addMethods({ fire: Event.fire, observe: Event.observe, stopObserving: Event.stopObserving }); Object.extend(document, { fire: Element.Methods.fire.methodize(), observe: Element.Methods.observe.methodize(), stopObserving: Element.Methods.stopObserving.methodize(), loaded: false }); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards and John Resig. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearInterval(timer); document.fire("dom:loaded"); document.loaded = true; } if (document.addEventListener) { if (Prototype.Browser.WebKit) { timer = window.setInterval(function() { if (/loaded|complete/.test(document.readyState)) fireContentLoadedEvent(); }, 0); Event.observe(window, "load", fireContentLoadedEvent); } else { document.addEventListener("DOMContentLoaded", fireContentLoadedEvent, false); } } else { document.write(" Ytext/html'9O&'\[\d\ua asoopttvvv{,{t~l~v~ _~k]gxR;EVTXƺ1;L4     1 $   %S%''',W,<<<ACAAAAFFJJJOZOPNPXPiTUEUUUZZin?nInZrs-uuuz"zw| |*|;31P}lěĥĶ7ɌͶLқٯٹT޲EO`S ):ZCt~!!Q&X&b&s*+6,--113338?8===B@BDnDxDHIDM*M4MEQRS SS$WW[[\`w`dddi_immnrrvvv{4{vskisU|"EO`EǯǹR̭2^hy6HRc  #*GGHL:L'5;s A L ] ! ! el ew e i j8 I I I N; Nt ` ` ` dV d___cddkkll}llV&8Iy.4q