From: <Saved by Windows Internet Explorer 8>
Subject: Zenfolio | JAndreesen Photography | Game 6 4th Grade
Date: Wed, 6 Jan 2010 08:49:01 -0600
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01CA8EAD.1803D070"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01CA8EAD.1803D070
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://jandreesen.zenfolio.com/p550717201/h28043958

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xml:lang=3D"en" xmlns=3D"http://www.w3.org/1999/xhtml" xmlns:zf =
=3D=20
"http://www.zenfolio.com/xml/page-schema"><HEAD><TITLE>Zenfolio | =
JAndreesen Photography | Game 6 4th Grade</TITLE><!-- User-Agent: =
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; iebar; =
acc=3D; acc=3Dnone; .NET CLR 1.1.4322) --><!-- UA Code: ie8 --><!-- =
Platform Code: windows --><!-- Server: c00-st06-a -->
<META content=3D"text/html; charset=3Dutf-8" http-equiv=3DContent-Type>
<META content=3Dno http-equiv=3Dimagetoolbar>
<META name=3Drobots content=3Dnoindex,nofollow>
<META name=3Dkeywords=20
content=3D"photo galleries,online photo galleries,web photo =
galleries,online galleries,photo hosting,upload photos,photo =
upload,upload digital photos,selling photographs,digital =
printing,digital print ordering,travel photography,event =
photography,wedding photography,online albums,websites for =
photographers,photographs online,photos online">
<SCRIPT type=3Dtext/javascript>
			//<!--
			if (self !=3D top && self.name.indexOf('zenfolio') !=3D 0) =
top.location.href =3D location.href;
			//-->

		</SCRIPT>
<LINK rel=3D"Shortcut Icon" href=3D"/zf/img/favicon.ico"><LINK =
rel=3Dstylesheet=20
type=3Dtext/css=20
href=3D"http://www.zenfolio.com/zf/theme/en-US/ie8/windows/83U1ZV7J4ZMKM/=
fineart-black.css"><LINK=20
title=3D"JAndreesen Photography: Game 6 4th Grade [RSS]" rel=3Dalternate =

type=3Dapplication/rss+xml=20
href=3D"http://jandreesen.zenfolio.com/p550717201/recent.rss"><LINK=20
title=3D"JAndreesen Photography: Game 6 4th Grade [Atom]" =
rel=3Dalternate=20
type=3Dapplication/atom+xml=20
href=3D"http://jandreesen.zenfolio.com/p550717201/recent.atom">
<SCRIPT type=3Dtext/javascript=20
src=3D"http://www.zenfolio.com/zf/script/en-US/ie8/windows/8JB1M1BSEWT7S/=
layout.js">

		</SCRIPT>

<META name=3DGENERATOR content=3D"MSHTML 8.00.6001.18702"></HEAD>
<BODY>
<DIV id=3Dpage-frame>
<DIV id=3Dmat-frame class=3Dmat-frame>
<DIV id=3Dmat-frame-top class=3D"mat-outer-h mat-horz-height mat-top">
<DIV class=3D"mat-frame-top-left mat-left mat-vert-width"></DIV>
<DIV class=3D"mat-frame-top-right mat-right mat-vert-width"></DIV>
<DIV class=3D"mat-frame-top mat-margin-left =
mat-margin-right"></DIV></DIV>
<DIV id=3Dmat-frame-bottom class=3D"mat-outer-h mat-horz-height =
mat-bottom">
<DIV class=3D"mat-frame-bottom-left mat-left mat-vert-width"></DIV>
<DIV class=3D"mat-frame-bottom-right mat-right mat-vert-width"></DIV>
<DIV class=3D"mat-frame-bottom mat-margin-left =
mat-margin-right"></DIV></DIV>
<DIV id=3Dmat-frame-middle class=3D"mat-outer-m mat-top-total =
mat-bottom-total">
<DIV class=3D"mat-frame-left mat-left mat-vert-width"></DIV>
<DIV class=3D"mat-frame-right mat-right mat-vert-width"></DIV>
<DIV class=3D"mat-frame-middle mat-margin-left =
mat-margin-right"></DIV></DIV>
<DIV id=3Dheader=20
class=3D"header header-bgcolor1 header-bgimage1 header-border1 =
header-font1"><A=20
class=3Dheader-logo-outer href=3D"http://www.zenfolio.com/">
<DIV class=3Dheader-logo></DIV></A>
<DIV class=3D"header-search header-bgcolor2 header-bgimage2">
<DIV id=3Dheader_SearchInput class=3D"searchi searchi-both"=20
onmouseout=3D_zf_header_SearchInput._onmouseout(event)>
<DIV class=3Dsearchi-left></DIV>
<DIV class=3Dsearchi-right></DIV>
<DIV class=3Dsearchi-top></DIV>
<DIV class=3D"searchi-inner header-bgcolor3"><INPUT=20
onblur=3D_zf_header_SearchInput._input_onblur(this)=20
onkeydown=3D_zf_header_SearchInput._input_onkeydown(event)=20
id=3Dheader_SearchInput-input class=3D"searchi-input header-bgcolor3 =
header-color3"=20
onfocus=3D_zf_header_SearchInput._input_onfocus(this) value=3DSEARCH =
type=3Dtext>
<DIV class=3Dsearchi-icon =
onmouseover=3D_zf_header_SearchInput._showMenu(true)=20
onclick=3D"_zf_header_SearchInput.search('local')"></DIV>
<DIV id=3Dheader_SearchInput-menu=20
class=3D"header-menu searchi-menu header-bgcolor1 header-border2"=20
onmouseover=3D"this.style.visibility =3D 'visible'"=20
onmouseout=3D"this.style.visibility =3D 'hidden'">
<TABLE>
  <TBODY>
  <TR>
    <TD onmouseover=3D_zf_header_SearchInput._menuitem_onmouseover(this) =

    onmouseout=3D_zf_header_SearchInput._menuitem_onmouseout(this)=20
    onclick=3D"_zf_header_SearchInput.search('local')"><A=20
      class=3Dheader-color1>This photographer</A></TD></TR>
  <TR>
    <TD onmouseover=3D_zf_header_SearchInput._menuitem_onmouseover(this) =

    onmouseout=3D_zf_header_SearchInput._menuitem_onmouseout(this)=20
    onclick=3D"_zf_header_SearchInput.search('global')"><A=20
      class=3Dheader-color1>All photos on Zenfolio</A></TD></TR>
  <TR>
    <TD>
      <DIV class=3D"header-menuSeparator =
header-border2"></DIV></TD></TR>
  <TR>
    <TD onmouseover=3D_zf_header_SearchInput._menuitem_onmouseover(this) =

    onmouseout=3D_zf_header_SearchInput._menuitem_onmouseout(this)=20
    onclick=3D"_zf_header_SearchInput.search('browse')"><A=20
      class=3Dheader-color1>Browse =
Zenfolio</A></TD></TR></TBODY></TABLE></DIV></DIV>
<DIV class=3Dsearchi-bottom></DIV></DIV><!--
   =20
	<div class=3D"header-searchInner header-searchBoth">
					=09
=09
	    <input type=3D"text"=20
		id=3D"header-search"
		class=3D"header-searchInput header-bgcolor3 header-color3"
		value=3D"SEARCH"
		onfocus=3D"_zf_header._search_onfocus(this)"=20
		onblur=3D"_zf_header._search_onblur(this)"=20
		onkeydown=3D"_zf_header._search_onkeydown(event)" />

	    <div class=3D"header-searchMenuSpot"
		=
onmouseover=3D"document.getElementById('header-searchMenu').style.visibil=
ity =3D 'visible'"
		=
onmouseout=3D"document.getElementById('header-searchMenu').style.visibili=
ty =3D 'hidden'">				=09
		   =20
		<div class=3D"header-searchIcon" =
onclick=3D"_zf_header.search('local')"></div>
	    </div>
		   =20
	    <div class=3D"header-menu header-searchMenu header-bgcolor1 =
header-border2" id=3D"header-searchMenu"
		onmouseover=3D"this.style.visibility =3D 'visible'"
		onmouseout=3D"this.style.visibility =3D 'hidden'">
		<table>
		    <tr><td onmouseover=3D"_zf_header._menuitem_onmouseover(this)"
			    onmouseout=3D"_zf_header._menuitem_onmouseout(this)"
			    onclick=3D"_zf_header.search('local')">
			    <a class=3D"header-color1">
			    	This photographer
                            </a>
		    </td></tr>
		    <tr><td onmouseover=3D"_zf_header._menuitem_onmouseover(this)"
			    onmouseout=3D"_zf_header._menuitem_onmouseout(this)"
			    onclick=3D"_zf_header.search('global')">
			    <a class=3D"header-color1">
			        All photos on Zenfolio
                            </a>
		    </td></tr>
		    <tr><td>
			    <div class=3D"header-menuSeparator header-border2"></div>
		    </td></tr>
		    <tr><td onmouseover=3D"_zf_header._menuitem_onmouseover(this)"
			    onmouseout=3D"_zf_header._menuitem_onmouseout(this)"
			    onclick=3D"_zf_header.search('browse')">
			    <a class=3D"header-color1">
			        Browse Zenfolio
                            </a>
		    </td></tr>
		</table>
	    </div>
		   =20
=09
					</div>

=09
=09
	--></DIV>
<DIV class=3Dheader-main>
<DIV class=3Dheader-link><A class=3Dheader-color5=20
href=3D"http://www.zenfolio.com/zf/tour.aspx">Host Your Photos on =
Zenfolio =C2=BB</A>=20
</DIV>
<DIV class=3D"header-separator header-color6">| </DIV><SPAN =
id=3Dheader-cartWrap=20
class=3Dnone>
<DIV class=3Dheader-link><A id=3Dheader-cart class=3Dheader-color1=20
onclick=3D_zf_header.cart()>Cart</A> </DIV>
<DIV=20
class=3D"header-separator header-separator-after-cart =
header-color6">|</DIV></SPAN>
<DIV class=3Dheader-link><A class=3Dheader-color1 =
onclick=3D_zf_header.login()>Login=20
</A></DIV></DIV></DIV>
<DIV id=3Dctl02 class=3D"layout layout-bgcolor1 layout-bgimage1 =
photoLtRtTh">
<DIV class=3DphotoLtRtTh-section>
<DIV class=3DphotoLtRtTh-right>
<DIV id=3Dctl02_ControlBox class=3Dcontrolbox>
<DIV id=3Dctl02_ControlBox_Slideshow=20
class=3D"button button-font1 button-slideshow invisible"=20
ondblclick=3D"zfl_event(event, _zf_ctl02_ControlBox, =
_zf_ctl02_ControlBox.slideshow)"=20
onclick=3D"zfl_event(event, _zf_ctl02_ControlBox, =
_zf_ctl02_ControlBox.slideshow)">
<DIV class=3D"standard button-color1 button-bgcolor1 button-border1"=20
onmouseover=3D"this.className=3D'hover button-color2 button-bgcolor2 =
button-border2'"=20
onmouseout=3D"this.className=3D'standard button-color1 button-bgcolor1 =
button-border1'">
<DIV class=3Dleft></DIV>
<DIV class=3Dright></DIV>
<DIV class=3Dmiddle>
<DIV onselectstart=3D"return false" class=3Dlabel>Slideshow
<DIV class=3Dicon></DIV></DIV></DIV></DIV></DIV>
<DIV id=3Dctl02_ControlBox_AddToCart=20
class=3D"button button-font1 button-addToCart invisible"=20
ondblclick=3D"zfl_event(event, _zf_ctl02_ControlBox, =
_zf_ctl02_ControlBox.addToCart)"=20
onmousedown=3D"zfl_event(event, _zf_ctl02_ControlBox, =
_zf_ctl02_ControlBox.addToCart)">
<DIV class=3D"standard button-color1 button-bgcolor1 button-border1"=20
onmouseover=3D"this.className=3D'hover button-color2 button-bgcolor2 =
button-border2'"=20
onmouseout=3D"this.className=3D'standard button-color1 button-bgcolor1 =
button-border1'">
<DIV class=3Dleft></DIV>
<DIV class=3Dright></DIV>
<DIV class=3Dmiddle>
<DIV onselectstart=3D"return false" class=3Dlabel>Add to Cart
<DIV class=3Dicon></DIV></DIV></DIV></DIV></DIV>
<DIV id=3Dctl02_ControlBox_Share=20
class=3D"button button-font1 button-share invisible"=20
ondblclick=3D"zfl_event(event, _zf_ctl02_ControlBox, =
_zf_ctl02_ControlBox.share)"=20
onmousedown=3D"zfl_event(event, _zf_ctl02_ControlBox, =
_zf_ctl02_ControlBox.share)">
<DIV class=3D"standard button-color1 button-bgcolor1 button-border1"=20
onmouseover=3D"this.className=3D'hover button-color2 button-bgcolor2 =
button-border2'"=20
onmouseout=3D"this.className=3D'standard button-color1 button-bgcolor1 =
button-border1'">
<DIV class=3Dleft></DIV>
<DIV class=3Dright></DIV>
<DIV class=3Dmiddle>
<DIV onselectstart=3D"return false" class=3Dlabel>Share
<DIV class=3Dicon></DIV></DIV></DIV></DIV></DIV>
<DIV id=3Dctl02_ControlBox_CartPopup=20
class=3D"addToCart addToCart-photo popup popup-bgcolor1 popup-border1 =
popup-color1 popup-font1">
<DIV class=3D"addToCart-header addToCart-font1 popup-bgcolor2">
<DIV class=3DaddToCart-icon></DIV><SPAN>Add Photo to Cart</SPAN> - <SPAN =

id=3Dctl02_ControlBox_CartPopup-subtitle =
class=3DaddToCart-color1></SPAN>
<DIV id=3Dctl02_ControlBox_CartPopup-header=20
class=3DaddToCart-headerInfo></DIV></DIV>
<DIV class=3D"addToCart-body popup-bgcolor1"><!-- currency view -->
<DIV id=3Dctl02_ControlBox_CartPopup-currencyView=20
class=3D"addToCart-view popup-bgcolor1"></DIV><!-- shipzone view -->
<DIV id=3Dctl02_ControlBox_CartPopup-shipzoneView=20
class=3D"addToCart-view popup-bgcolor1"></DIV><!-- category view -->
<DIV id=3Dctl02_ControlBox_CartPopup-catView=20
class=3D"addToCart-view popup-bgcolor1">
<DIV class=3D"addToCart-breadcrumbs addToCart-font3">Product Categories: =
</DIV>
<DIV class=3D"addToCart-cats-o addToCart-border1">
<DIV class=3DaddToCart-cats-i>
<DIV id=3Dctl02_ControlBox_CartPopup-categories=20
class=3DaddToCart-cats></DIV></DIV></DIV></DIV><!-- flat view -->
<DIV id=3Dctl02_ControlBox_CartPopup-flatView=20
class=3D"addToCart-view popup-bgcolor1">
<DIV id=3Dctl02_ControlBox_CartPopup-crumbs=20
class=3D"addToCart-font3 addToCart-breadcrumbs"></DIV>
<DIV class=3DaddToCart-flatBox>
<DIV class=3D"addToCart-products addToCart-border1">
<DIV class=3D"addToCart-th addToCart-font4 addToCart-color2">
<DIV class=3D"addToCart-thSets addToCart-bgcolor3">Qty</DIV>
<DIV class=3D"addToCart-thProduct addToCart-bgcolor3">Products</DIV>
<DIV id=3Dctl02_ControlBox_CartPopup-priceHeader=20
class=3D"addToCart-thPrice addToCart-bgcolor3"></DIV></DIV>
<DIV class=3DaddToCart-prodTable-o>
<DIV id=3Dctl02_ControlBox_CartPopup-products=20
class=3D"addToCart-prodTable-i addToCart-font2 addToCart-color2">
<DIV id=3Dctl02_ControlBox_CartPopup-prodTable=20
class=3D"addToCart-prodTable addToCart-border3"></DIV></DIV></DIV></DIV>
<DIV id=3Dctl02_ControlBox_CartPopup-vendors =
class=3DaddToCart-vendors></DIV>
<DIV id=3Dctl02_ControlBox_CartPopup-info=20
class=3D"addToCart-info addToCart-border1 addToCart-font2 =
addToCart-color2"></DIV></DIV></DIV><!-- empty view -->
<DIV id=3Dctl02_ControlBox_CartPopup-emptyView=20
class=3D"addToCart-view addToCart-emptyView addToCart-font1 =
popup-bgcolor1">
<DIV id=3Dctl02_ControlBox_CartPopup-emptyMsg>No products are offered by =

photographer</DIV></DIV><!-- message box buttons (replace normal =
buttons) -->
<DIV class=3D"popup-footer mbox-footer button-font1"><A=20
id=3Dctl02_ControlBox_CartPopup-mbox-ok=20
class=3D"standard button-color1 button-bgcolor1 button-border1"=20
onmouseover=3D_zf_ctl02_ControlBox_CartPopup._button_onmouseover(this);=20
onmouseout=3D_zf_ctl02_ControlBox_CartPopup._button_onmouseout(this);=20
onclick=3D"_zf_ctl02_ControlBox_CartPopup._button_onclick(this, =
'mboxOk'); return false;"></A><A=20
id=3Dctl02_ControlBox_CartPopup-mbox-cancel=20
class=3D"standard button-color1 button-bgcolor1 button-border1"=20
onmouseover=3D_zf_ctl02_ControlBox_CartPopup._button_onmouseover(this);=20
onmouseout=3D_zf_ctl02_ControlBox_CartPopup._button_onmouseout(this);=20
onclick=3D"_zf_ctl02_ControlBox_CartPopup._button_onclick(this, =
'mboxCancel'); return false;">Cancel</A>=20
</DIV><!-- checkout buttons -->
<DIV class=3D"popup-footer button-font1 addToCart-footer"><A=20
id=3Dctl02_ControlBox_CartPopup-addToCart=20
class=3D"disabled button-color3 button-bgcolor3 button-border3"=20
onmouseover=3D_zf_ctl02_ControlBox_CartPopup._button_onmouseover(this);=20
onmouseout=3D_zf_ctl02_ControlBox_CartPopup._button_onmouseout(this);=20
onclick=3D"_zf_ctl02_ControlBox_CartPopup._button_onclick(this, =
'addToCart'); return false;">Add=20
and Continue Shopping </A><A id=3Dctl02_ControlBox_CartPopup-checkout=20
class=3D"disabled button-color3 button-bgcolor3 button-border3"=20
onmouseover=3D_zf_ctl02_ControlBox_CartPopup._button_onmouseover(this);=20
onmouseout=3D_zf_ctl02_ControlBox_CartPopup._button_onmouseout(this);=20
onclick=3D"_zf_ctl02_ControlBox_CartPopup._button_onclick(this, =
'checkout'); return false;">Go=20
to Cart </A><A class=3D"standard button-color1 button-bgcolor1 =
button-border1"=20
onmouseover=3D_zf_ctl02_ControlBox_CartPopup._button_onmouseover(this);=20
onmouseout=3D_zf_ctl02_ControlBox_CartPopup._button_onmouseout(this);=20
onclick=3D"_zf_ctl02_ControlBox_CartPopup._button_onclick(this, 'hide'); =
return false;">Cancel=20
</A>
<DIV class=3D"addToCart-status addToCart-font2 =
addToCart-color2">Selected items:=20
<SPAN id=3Dctl02_ControlBox_CartPopup-total =
class=3DaddToCart-color1>from <STRONG=20
class=3DaddToCart-font3>0</STRONG>, not including options, tax, and=20
shipping</SPAN> </DIV>
<DIV id=3Dctl02_ControlBox_CartPopup-catNothing=20
class=3D"addToCart-catNothing addToCart-font3 addToCart-color2">Nothing =
has been=20
selected </DIV>
<DIV id=3Dctl02_ControlBox_CartPopup-prodNothing=20
class=3D"addToCart-prodNothing addToCart-font3 addToCart-color2">Nothing =
has been=20
selected=20
<DIV class=3DaddToCart-font2>Please select the quantity for the product =
you would=20
like to order</DIV></DIV></DIV></DIV></DIV>
<DIV id=3Dctl02_ControlBox_CartPopup-license-popup=20
class=3D"addToCart addToCart-photo hidden popup popup-bgcolor1 =
popup-border1 popup-color1 popup-font1">
<DIV class=3D"addToCart-header addToCart-font1 popup-bgcolor2">
<DIV class=3DaddToCart-icon></DIV><SPAN>View License</SPAN> - <SPAN=20
id=3Dctl02_ControlBox_CartPopup-license-title =
class=3DaddToCart-color1></SPAN></DIV>
<DIV class=3D"addToCart-body popup-bgcolor1">
<DIV id=3Dctl02_ControlBox_CartPopup-licenseView=20
class=3D"addToCart-view popup-bgcolor1"><!-- divs for scrollbar -->
<DIV class=3DaddToCart-license-view-o>
<DIV class=3DaddToCart-license-view-m>
<DIV id=3Dctl02_ControlBox_CartPopup-license-text =
class=3DaddToCart-license-text><PRE =
id=3Dctl02_ControlBox_CartPopup-license-pre>                            =
Loading...
                        </PRE></DIV></DIV></DIV></DIV>
<DIV class=3D"popup-footer button-font1"><A=20
class=3D"standard button-color1 button-bgcolor1 button-border1"=20
onmouseover=3D_zf_ctl02_ControlBox_CartPopup._button_onmouseover(this);=20
onmouseout=3D_zf_ctl02_ControlBox_CartPopup._button_onmouseout(this);=20
onclick=3D"_zf_ctl02_ControlBox_CartPopup._button_onclick(this, =
'_hideLicensePopup'); return false;">Close=20
</A></DIV></DIV></DIV>
<DIV id=3Dctl02_ControlBox_Links=20
class=3D"links popup popup-bgcolor1 popup-border1 popup-color1 =
popup-font1">
<DIV class=3D"popup-title popup-font2">Copy links to send to visitors: =
</DIV>
<DIV class=3Dlinks-line>
<DIV class=3Dlinks-label>
<DIV class=3Dlinks-share><SPAN class=3Dlinks-share-label>Share:</SPAN> =
<A=20
class=3D"links-share-icon links-fb-icon" title=3D"Post to =
facebook"></A><A=20
class=3D"links-share-icon links-twitter-icon" title=3D"Tweet =
this"></A></DIV>Gallery=20
</DIV><INPUT id=3Dctl02_ControlBox_Links-Gallery=20
class=3D"links-box links-color1 links-bgcolor1 links-border1 =
links-font1"=20
onclick=3D_zf_ctl02_ControlBox_Links._linkbox_onclick(event)=20
value=3Dhttp://jandreesen.zenfolio.com/p550717201 readOnly =
input=3D"text"> </DIV>
<DIV class=3Dlinks-line>
<DIV class=3Dlinks-label>
<DIV class=3Dlinks-share><SPAN class=3Dlinks-share-label>Share:</SPAN> =
<A=20
class=3D"links-share-icon links-fb-icon" title=3D"Post to =
facebook"></A><A=20
class=3D"links-share-icon links-twitter-icon"=20
title=3D"Tweet this"></A></DIV>Slideshow </DIV><INPUT=20
id=3Dctl02_ControlBox_Links-Slideshow=20
class=3D"links-box links-color1 links-bgcolor1 links-border1 =
links-font1"=20
onclick=3D_zf_ctl02_ControlBox_Links._linkbox_onclick(event)=20
value=3Dhttp://jandreesen.zenfolio.com/p550717201/slideshow readOnly =
input=3D"text">=20
</DIV>
<DIV class=3Dlinks-line>
<DIV class=3Dlinks-label>
<DIV class=3Dlinks-share><SPAN class=3Dlinks-share-label>Share:</SPAN> =
<A=20
class=3D"links-share-icon links-fb-icon" title=3D"Post to =
facebook"></A><A=20
class=3D"links-share-icon links-twitter-icon" title=3D"Tweet =
this"></A></DIV>Photo=20
</DIV><INPUT id=3Dctl02_ControlBox_Links-Photo=20
class=3D"links-box links-color1 links-bgcolor1 links-border1 =
links-font1"=20
onclick=3D_zf_ctl02_ControlBox_Links._linkbox_onclick(event) readOnly=20
input=3D"text"> </DIV>
<DIV id=3Dctl02_ControlBox_Links-loginLink class=3D"links-tip =
links-font1">
<P>Direct links to several image sizes are available to the Owner of the =
photo.=20
Please <A class=3Dlogin>login</A> to access the links. </P></DIV>
<DIV class=3Dpopup-footer>
<DIV class=3D"button button-font1"=20
ondblclick=3D"zfl_event(event, _zf_ctl02_ControlBox_Links, =
_zf_ctl02_ControlBox_Links.hide)"=20
onmousedown=3D"zfl_event(event, _zf_ctl02_ControlBox_Links, =
_zf_ctl02_ControlBox_Links.hide)">
<DIV class=3D"standard button-color1 button-bgcolor1 button-border1"=20
onmouseover=3D"this.className=3D'hover button-color2 button-bgcolor2 =
button-border2'"=20
onmouseout=3D"this.className=3D'standard button-color1 button-bgcolor1 =
button-border1'">
<DIV class=3Dleft></DIV>
<DIV class=3Dright></DIV>
<DIV class=3Dmiddle>
<DIV onselectstart=3D"return false" class=3Dlabel>Close
<DIV class=3Dicon></DIV></DIV></DIV></DIV></DIV>
<DIV class=3D"button button-font1"=20
ondblclick=3D"zfl_event(event, _zf_ctl02_ControlBox_Links, =
_zf_ctl02_ControlBox_Links.send)"=20
onmousedown=3D"zfl_event(event, _zf_ctl02_ControlBox_Links, =
_zf_ctl02_ControlBox_Links.send)">
<DIV class=3D"standard button-color1 button-bgcolor1 button-border1"=20
onmouseover=3D"this.className=3D'hover button-color2 button-bgcolor2 =
button-border2'"=20
onmouseout=3D"this.className=3D'standard button-color1 button-bgcolor1 =
button-border1'">
<DIV class=3Dleft></DIV>
<DIV class=3Dright></DIV>
<DIV class=3Dmiddle>
<DIV onselectstart=3D"return false" class=3Dlabel>Open in E-mail
<DIV class=3Dicon></DIV></DIV></DIV></DIV></DIV></DIV></DIV>
<DIV id=3Dctl02_ControlBox_Links-st-anchor></DIV></DIV></DIV>
<DIV class=3DphotoLtRtTh-left>
<DIV class=3Dbreadcrumbs>
<H1 class=3Dbreadcrumbs-font1><A class=3Downer=20
href=3D"http://jandreesen.zenfolio.com/">JAndreesen Photography</A><BDO =
dir=3Dltr=20
class=3D"divider breadcrumbs-font2 breadcrumbs-color3">=C2=BB</BDO><A=20
class=3D"path breadcrumbs-font2"=20
href=3D"http://jandreesen.zenfolio.com/f723185663">4th Grade Viking =
Football=20
2009</A><BDO dir=3Dltr=20
class=3D"divider breadcrumbs-font2 breadcrumbs-color3">=C2=BB</BDO><SPAN =

class=3Dicon-wrapper><SPAN class=3D"icon gallery-icon"=20
title=3DGallery></SPAN></SPAN><A class=3D"title breadcrumbs-font3"=20
href=3D"http://jandreesen.zenfolio.com/p550717201">Game 6 4th Grade</A>=20
</H1></DIV></DIV></DIV>
<DIV class=3DphotoLtRtTh-section>
<DIV class=3D"photoLtRtTh-left photoLtRtTh-info pair-line">
<DIV id=3Dctl02_MailboxLink=20
class=3D"pair-box mailboxlink commentslink pair-font1"><A=20
class=3D"mailboxlink-view pair pair-font1"=20
onclick=3D_zf_ctl02_MailboxLink._view_onclick(event) =
href=3D"javascript:;">Comments=20
<B id=3Dctl02_MailboxLink-count=20
class=3D"mailboxlink-count pair-0 pair-font2">0</B></A><SPAN=20
id=3Dctl02_MailboxLink-add class=3Dnone>&nbsp;|<SPAN=20
class=3D"mailboxlink-add pair pair-font1"><B=20
class=3D"pair-font2 invisible">&nbsp;</B><A=20
onclick=3D_zf_ctl02_MailboxLink._add_onclick(event)=20
href=3D"javascript:;">Add</A></SPAN></SPAN> </DIV>
<DIV class=3D"pair-box pair-left"><SPAN style=3D"VISIBILITY: hidden" =
id=3Dctl02_ctl05=20
class=3D"pair pair-color1 pair-font1">Visitors <B=20
class=3D"pair-0 pair-font2 pair-color2"></B></SPAN></DIV></DIV></DIV>
<DIV class=3D"photoLtRtTh-section photoLtRtTh-separators">
<DIV class=3DphotoLtRtTh-right>
<DIV class=3D"separator separator-border1">
<HR>
</DIV></DIV>
<DIV class=3DphotoLtRtTh-left>
<DIV class=3D"separator separator-border1">
<HR>
</DIV></DIV></DIV>
<DIV class=3DphotoLtRtTh-section>
<DIV id=3Dctl02_Right class=3D"column photoLtRtTh-right =
layout-bgimage2">
<DIV class=3DphotoLtRtTh-navigation>
<DIV id=3Dctl02_Back=20
class=3D"button button-font1 photoLtRtTh-navigationButton =
photoLtRtTh-navigationBack invisible"=20
title=3D"Previous - type Left Arrow"=20
ondblclick=3D"zfl_event(event, _zf_ctl02, _zf_ctl02.back)"=20
onmousedown=3D"zfl_event(event, _zf_ctl02, _zf_ctl02.back)">
<DIV class=3D"standard button-color1 button-bgcolor1 button-border1"=20
onmouseover=3D"this.className=3D'hover button-color2 button-bgcolor2 =
button-border2'"=20
onmouseout=3D"this.className=3D'standard button-color1 button-bgcolor1 =
button-border1'">
<DIV class=3Dimage></DIV></DIV></DIV>
<DIV id=3Dctl02_Next=20
class=3D"button button-font1 photoLtRtTh-navigationButton =
photoLtRtTh-navigationNext invisible"=20
title=3D"Next - type Right Arrow"=20
ondblclick=3D"zfl_event(event, _zf_ctl02, _zf_ctl02.next)"=20
onmousedown=3D"zfl_event(event, _zf_ctl02, _zf_ctl02.next)">
<DIV class=3D"standard button-color1 button-bgcolor1 button-border1"=20
onmouseover=3D"this.className=3D'hover button-color2 button-bgcolor2 =
button-border2'"=20
onmouseout=3D"this.className=3D'standard button-color1 button-bgcolor1 =
button-border1'">
<DIV class=3Dimage></DIV></DIV></DIV>
<DIV class=3D"photoLtRtTh-navigationBox layout-bgcolor4">
<DIV class=3D"pair-box pair-middle"><SPAN id=3Dctl02_ctl08=20
class=3D"pair pair-color1 pair-font1"><B=20
class=3D"pair-0 pair-font2 pair-color2">127</B> of <B=20
class=3D"pair-1 pair-font2 pair-color2">128</B> photos</SPAN> =
</DIV></DIV></DIV>
<DIV id=3Dctl02_Tabs class=3D"tabGroup thumb-tabs">
<DIV id=3Dctl02_ctl09 class=3D"tab tab-first">
<DIV id=3Dctl02_ctl09-inner onselectstart=3D"return false"=20
class=3D"tab-inner tab-font1 tab-selected tab-bgcolor1 tab-color1 =
tab-bgimage1"=20
onmousedown=3D"zfl_event(event, _zf_ctl02_Tabs, _zf_ctl02_Tabs.select, =
'thumbnails')">
<DIV class=3D"tab-label tab-border1">Thumbnails </DIV></DIV></DIV>
<DIV id=3Dctl02_ctl10 class=3D"tab tab-last">
<DIV id=3Dctl02_ctl10-inner onselectstart=3D"return false"=20
class=3D"tab-inner tab-font1 tab-standard tab-bgcolor2 tab-color2 =
tab-bgimage2"=20
onmousedown=3D"zfl_event(event, _zf_ctl02_Tabs, _zf_ctl02_Tabs.select, =
'info')">
<DIV class=3D"tab-label tab-border1">Photo Info </DIV></DIV></DIV></DIV>
<DIV id=3Dctl02_ctl12 class=3D"tab-frame tab-border1 tab-bgcolor1">
<DIV class=3D"tab-stripe tab-stripe-top">
<DIV class=3D"tab-frame-top tab-stripe-center"></DIV>
<DIV class=3D"tab-frame-top-left tab-stripe-left"></DIV>
<DIV class=3D"tab-frame-top-right tab-stripe-right"></DIV></DIV>
<DIV class=3D"tab-stripe tab-stripe-middle">
<DIV class=3D"tab-frame-middle tab-stripe-center"></DIV>
<DIV class=3D"tab-frame-middle-left tab-stripe-left"></DIV>
<DIV class=3D"tab-frame-middle-right tab-stripe-right"></DIV></DIV>
<DIV class=3D"tab-stripe tab-stripe-bottom">
<DIV class=3D"tab-frame-bottom tab-stripe-center"></DIV>
<DIV class=3D"tab-frame-bottom-left tab-stripe-left"></DIV>
<DIV class=3D"tab-frame-bottom-right tab-stripe-right"></DIV></DIV>
<DIV class=3Dtab-frame-content>
<DIV id=3Dctl02_CategoriesBox class=3Dnone>
<DIV class=3D"listheader listheader-font1 listheader-color1">Categories =
&amp;=20
Keywords </DIV>
<DIV class=3D"separator separator-border2">
<HR>
</DIV>
<DIV class=3Dlistitem>
<DIV id=3Dctl02_Categories class=3Dcategories>
<DIV class=3Dpair-box><SPAN id=3Dctl02_Categories-category=20
class=3D"pair pair-color1 pair-font1"><SPAN>Category:</SPAN><B=20
class=3D"pair-0 pair-font2 pair-color2"></B></SPAN> </DIV>
<DIV class=3Dpair-box><SPAN id=3Dctl02_Categories-subcategory=20
class=3D"pair pair-color1 pair-font1"><SPAN>Subcategory:</SPAN><B=20
class=3D"pair-0 pair-font2 pair-color2"></B></SPAN> </DIV>
<DIV class=3Dpair-box><SPAN id=3Dctl02_Categories-subcategoryDetail=20
class=3D"pair pair-color1 pair-font1"><SPAN>Subcategory Detail:</SPAN><B =

class=3D"pair-0 pair-font2 pair-color2"></B></SPAN> </DIV>
<DIV class=3Dpair-box><SPAN id=3Dctl02_Categories-keywords=20
class=3D"pair pair-color1 pair-font1"><SPAN>Keywords:</SPAN><B=20
class=3D"pair-0 pair-font2 pair-color2"></B></SPAN> =
</DIV></DIV></DIV></DIV>
<DIV id=3Dctl02_ExifBox class=3D"exif none"><!-- exif fields are set =
here on the client side --></DIV>
<DIV id=3Dctl02_ctl15 class=3Dstretcher>
<DIV id=3Dctl02_PhotoGrid class=3D"pg pvp pg-empty">
<DIV id=3Dctl02_PhotoGrid-empty class=3Dpg-empty-c></DIV></DIV></DIV>
<DIV id=3Dctl02_PagerIEFix class=3Dpager-ie-fix></DIV>
<DIV id=3Dctl02_Pager class=3D"pager pager-bgcolor4">
<DIV class=3Dpager-o>
<DIV class=3Dpager-i><A style=3D"VISIBILITY: hidden" id=3Dctl02_Pager-b=20
class=3D"pager-color1 pager-bgcolor1 pager-border1"=20
href=3D"http://jandreesen.zenfolio.com/p550717201/h28043958#">=C2=AB</A><=
A=20
style=3D"VISIBILITY: hidden" id=3Dctl02_Pager-n=20
class=3D"pager-color1 pager-bgcolor1 pager-border1"=20
href=3D"http://jandreesen.zenfolio.com/p550717201/h28043958#">=C2=BB</A> =

</DIV></DIV></DIV></DIV></DIV></DIV>
<DIV id=3Dctl02_Left class=3D"column photoLtRtTh-left layout-bgimage3">
<DIV id=3Dctl02_ctl16 class=3Dstretcher>
<DIV id=3Dctl02_PhotoFlipper class=3Dpf-frame></DIV></DIV>
<DIV id=3Dctl02_ctl17 class=3Dwaterline></DIV>
<DIV id=3Dctl02_DetailsBelow class=3Dcenter-margin>
<DIV id=3Dctl02_Caption=20
class=3D"captionbox captionbox-photo caption-border1 caption-bgcolor1 =
caption-color1 caption-font1 none captionbox-wide">
<DIV id=3Dctl02_Caption-title=20
class=3D"title caption-font2 caption-color2 none"></DIV>
<DIV id=3Dctl02_Caption-caption=20
class=3D"caption richtext caption-font1 none"></DIV></DIV>
<DIV id=3Dctl02_RecentComments=20
class=3D"recentcomments recentcomments-borders recentcomments-border1">
<DIV id=3Dctl02_RecentComments-loading =
class=3Drecentcomments-loading>Loading...=20
</DIV>
<DIV id=3Dctl02_RecentComments-empty class=3Drecentcomments-empty>No =
comments=20
posted.&nbsp;<A id=3Dctl02_RecentComments-add class=3Drecentcomments-add =

onclick=3D_zf_ctl02_RecentComments._add_onclick() =
href=3D"javascript:;">Add comment=20
=C2=BB</A> </DIV>
<DIV id=3Dctl02_RecentComments-box class=3Drecentcomments-box>
<DIV id=3Dctl02_RecentComments-content =
class=3Drecentcomments-content></DIV>
<DIV class=3D"recentcomments-links recentcomments-font2"><A=20
id=3Dctl02_RecentComments-add class=3Drecentcomments-add=20
onclick=3D_zf_ctl02_RecentComments._add_onclick() =
href=3D"javascript:;">Add comment=20
=C2=BB</A><A class=3Drecentcomments-view=20
onclick=3D_zf_ctl02_RecentComments._view_onclick() =
href=3D"javascript:;">View=20
comments (<SPAN id=3Dctl02_RecentComments-count>0</SPAN>) =C2=BB</A> =
</DIV></DIV></DIV>
<DIV id=3Dctl02_Copyright class=3D"copyright copyright-color1 =
invisible"><SPAN=20
class=3Dcopyright-with-feeds><A class=3Dcopyright-feeds=20
onclick=3D_zf_ctl02._feeds.show(this)></A><SPAN=20
id=3Dctl02_Copyright-label>Loading...</SPAN></SPAN> =
</DIV></DIV></DIV></DIV>
<DIV id=3Dctl02_Feeds=20
class=3D"feeds popup popup-bgcolor1 popup-border1 popup-color1 =
popup-font1">
<DIV class=3D"popup-title popup-font2">Available Feeds </DIV>
<DIV class=3Dfeeds-line>
<DIV class=3Dfeeds-pair><A onclick=3D_zf_ctl02_Feeds.hide()=20
href=3D"http://jandreesen.zenfolio.com/p550717201/recent.rss" =
target=3D_blank>RSS=20
</A><SPAN class=3Dfeeds-separator>|</SPAN> <A =
onclick=3D_zf_ctl02_Feeds.hide()=20
href=3D"http://jandreesen.zenfolio.com/p550717201/recent.atom" =
target=3D_blank>Atom=20
</A></DIV>This Gallery </DIV>
<DIV class=3Dfeeds-line>
<DIV class=3Dfeeds-pair><A onclick=3D_zf_ctl02_Feeds.hide()=20
href=3D"http://jandreesen.zenfolio.com/recent.rss" target=3D_blank>RSS =
</A><SPAN=20
class=3Dfeeds-separator>|</SPAN> <A onclick=3D_zf_ctl02_Feeds.hide()=20
href=3D"http://jandreesen.zenfolio.com/recent.atom" target=3D_blank>Atom =

</A></DIV>Recently Added </DIV>
<DIV class=3Dfeeds-line>
<DIV class=3Dfeeds-pair><A onclick=3D_zf_ctl02_Feeds.hide()=20
href=3D"http://jandreesen.zenfolio.com/featured.rss" target=3D_blank>RSS =
</A><SPAN=20
class=3Dfeeds-separator>|</SPAN> <A onclick=3D_zf_ctl02_Feeds.hide()=20
href=3D"http://jandreesen.zenfolio.com/featured.atom" =
target=3D_blank>Atom=20
</A></DIV>Featured Items </DIV>
<DIV class=3Dpopup-footer>
<DIV class=3D"button button-font1"=20
ondblclick=3D"zfl_event(event, _zf_ctl02_Feeds, _zf_ctl02_Feeds.hide)"=20
onmousedown=3D"zfl_event(event, _zf_ctl02_Feeds, _zf_ctl02_Feeds.hide)">
<DIV class=3D"standard button-color1 button-bgcolor1 button-border1"=20
onmouseover=3D"this.className=3D'hover button-color2 button-bgcolor2 =
button-border2'"=20
onmouseout=3D"this.className=3D'standard button-color1 button-bgcolor1 =
button-border1'">
<DIV class=3Dleft></DIV>
<DIV class=3Dright></DIV>
<DIV class=3Dmiddle>
<DIV onselectstart=3D"return false" class=3Dlabel>Close
<DIV class=3Dicon></DIV></DIV></DIV></DIV></DIV></DIV></DIV>
<DIV id=3Dctl02_DimLights class=3D"dimlights none">
<DIV id=3Dctl02_DimLights_PhotoFlipper class=3Dpf-frame></DIV>
<DIV id=3Dctl02_DimLights-center class=3Ddimlights-center><!--   =20
        <div=20
            id=3D"ctl02_DimLights-hot"=20
            class=3D"dimlights-hot">
       =20
        </div>
        -->
<DIV id=3Dctl02_DimLights-left class=3D"dimlights-pad dimlights-left">
<DIV class=3Ddimlights-button title=3D"Previous - type Left =
Arrow"></DIV></DIV>
<DIV id=3Dctl02_DimLights-right class=3D"dimlights-pad dimlights-right">
<DIV class=3Ddimlights-button title=3D"Next - type Right =
Arrow"></DIV></DIV></DIV>
<DIV id=3Dctl02_DimLights-closebox class=3Ddimlights-closebox>
<DIV id=3Dctl02_DimLights-close class=3Ddimlights-close=20
title=3DClose></DIV></DIV></DIV>
<DIV id=3Dctl02_Comments=20
class=3D"cb popup popup-bgcolor1 popup-border1 popup-color1 =
popup-font1">
<DIV class=3D"cb-header popup-bgcolor2 cb-font1">Comments=20
<DIV id=3Dctl02_Comments-close class=3Dcb-close=20
onmouseover=3D"this.className=3D'cb-close cb-close-hover';"=20
onmouseout=3D"this.className=3D'cb-close';">
<DIV class=3Dicon></DIV>Close </DIV></DIV>
<DIV class=3Dcb-body>
<DIV id=3Dctl02_Comments-left class=3Dcb-left>
<DIV class=3Dcb-navigation><A id=3Dctl02_Comments-back=20
class=3D"cb-navigationButton cb-navigationBack abutton button-bgcolor1 =
button-color1 button-border1 button-font1 invisible"=20
onmouseover=3Dzfl_Button._abutton_onmouseover(this)=20
title=3D"Previous - type Left Arrow"=20
onmouseout=3Dzfl_Button._abutton_onmouseout(this)=20
onclick=3D_zf_ctl02_Comments.back() href=3D"javascript:;">
<DIV class=3Dicon></DIV></A><A id=3Dctl02_Comments-seekBack=20
class=3D"cb-navigationButton cb-navigationSeekBack abutton =
button-bgcolor1 button-color1 button-border1 button-font1"=20
onmouseover=3Dzfl_Button._abutton_onmouseover(this)=20
onmouseout=3Dzfl_Button._abutton_onmouseout(this)=20
onclick=3D_zf_ctl02_Comments.seekBack() href=3D"javascript:;">
<DIV class=3Dicon></DIV></A><A id=3Dctl02_Comments-next=20
class=3D"cb-navigationButton cb-navigationNext abutton button-bgcolor1 =
button-color1 button-border1 button-font1 invisible"=20
onmouseover=3Dzfl_Button._abutton_onmouseover(this)=20
title=3D"Next - type Right Arrow" =
onmouseout=3Dzfl_Button._abutton_onmouseout(this)=20
onclick=3D_zf_ctl02_Comments.next() href=3D"javascript:;">
<DIV class=3Dicon></DIV></A><A id=3Dctl02_Comments-seekNext=20
class=3D"cb-navigationButton cb-navigationSeekNext abutton =
button-bgcolor1 button-color1 button-border1 button-font1"=20
onmouseover=3Dzfl_Button._abutton_onmouseover(this)=20
onmouseout=3Dzfl_Button._abutton_onmouseout(this)=20
onclick=3D_zf_ctl02_Comments.seekNext() href=3D"javascript:;">
<DIV class=3Dicon></DIV></A>
<DIV class=3D"cb-navigationBox layout-bgcolor4">
<DIV class=3D"pair-box pair-middle"><SPAN id=3Dctl02_Comments_PhotoIndex =

class=3D"pair pair-color1 pair-font1"><B=20
class=3D"pair-0 pair-font2 pair-color2">127</B> of <B=20
class=3D"pair-1 pair-font2 pair-color2">128</B> photos</SPAN> =
</DIV></DIV></DIV>
<DIV id=3Dctl02_Comments-help class=3D"cb-help cb-font3"></DIV>
<DIV class=3D"cb-flipper cb-border1">
<DIV id=3Dctl02_Comments_PhotoFlipper class=3Dpf-frame></DIV></DIV>
<DIV id=3Dctl02_Comments-title class=3D"cb-title caption-font2"></DIV>
<DIV id=3Dctl02_Comments_ShortExif class=3D"shortexif =
shortexif-color1"><SPAN=20
id=3Dctl02_Comments_ShortExif-loading=20
class=3Dshortexif-loading>Loading...</SPAN><SPAN=20
id=3Dctl02_Comments_ShortExif-content class=3D"shortexif-content =
none"><SPAN=20
id=3Dctl02_Comments_ShortExif-text =
class=3Dshortexif-text></SPAN></SPAN><SPAN=20
id=3Dctl02_Comments_ShortExif-notavailable class=3Dnone>No EXIF =
information is=20
available</SPAN> </DIV></DIV>
<DIV id=3Dctl02_Comments-right class=3D"cb-right cb-border1">
<DIV class=3D"cb-right-pane cb-edit">
<DIV id=3Dctl02_Comments-error class=3D"ml-header ml-border1"></DIV>
<DIV id=3Dctl02_Comments_MessageEdit class=3Dme>
<FORM id=3Dctl02_Comments_MessageEdit-form class=3Dme-form>
<DIV id=3Dctl02_Comments_MessageEdit-header class=3Dme-header></DIV>
<DIV id=3Dctl02_Comments_MessageEdit-access-field=20
class=3D"me-access me-field me-font1">
<DIV id=3Dctl02_Comments_MessageEdit-access-public=20
class=3D"me-radio me-access-public"><INPUT CHECKED type=3Dradio=20
name=3Dme-access></INPUT> <SPAN class=3Dme-color2>Public comment - =
visible to=20
everyone </SPAN>
<DIV class=3D"me-disabled-tip none">Public comments are not allowed by =
the=20
guestbook owner. </DIV></DIV>
<DIV id=3Dctl02_Comments_MessageEdit-access-private=20
class=3D"me-radio me-access-private"><INPUT type=3Dradio =
name=3Dme-access></INPUT>=20
<SPAN class=3Dme-color2>Private comment <SPAN =
class=3Dme-private-icon></SPAN>-=20
visible to the photographer </SPAN>
<DIV class=3Dme-disabled-tip>Private comments are not allowed by the =
photographer.=20
</DIV></DIV></DIV>
<DIV id=3Dctl02_Comments_MessageEdit-attachment-field=20
class=3D"me-attachment me-field me-font1">
<DIV class=3D"me-radio me-attachment-text"><INPUT CHECKED type=3Dradio=20
name=3Dme-attachment></INPUT>=20
<DIV class=3Dicon></DIV><SPAN class=3Dme-color2>Text comment only =
</SPAN></DIV>
<DIV class=3D"me-radio me-attachment-crop"><INPUT type=3Dradio=20
name=3Dme-attachment></INPUT>=20
<DIV class=3Dicon></DIV><SPAN class=3Dme-color2>Suggest different =
cropping=20
</SPAN></DIV>
<DIV class=3D"me-radio me-attachment-area"><INPUT type=3Dradio=20
name=3Dme-attachment></INPUT>=20
<DIV class=3Dicon></DIV><SPAN class=3Dme-color2>Highlight an area=20
</SPAN></DIV></DIV>
<DIV id=3Dctl02_Comments_MessageEdit-name-field=20
class=3D"me-name me-field me-required">
<DIV class=3D"me-name-label me-label me-font1 me-color2">Name: </DIV>
<DIV class=3Dme-name-input>
<DIV class=3Dme-input-outer><INPUT id=3Dctl02_Comments_MessageEdit-name=20
class=3D"me-input me-border1 me-bgcolor1 me-color1 me-font1" =
type=3Dtext>=20
</INPUT></DIV></DIV></DIV>
<DIV id=3Dctl02_Comments_MessageEdit-body-field=20
class=3D"me-body me-field me-required">
<DIV class=3D"me-body-label me-label me-font1 me-color2">Comment: </DIV>
<DIV class=3Dme-body-input>
<DIV class=3Dme-input-outer><TEXTAREA =
id=3Dctl02_Comments_MessageEdit-body class=3D"me-input me-textarea =
me-border1 me-bgcolor1 me-color1 me-font1"></TEXTAREA>=20
</DIV></DIV></DIV>
<DIV id=3Dctl02_Comments_MessageEdit-email-field class=3D"me-email =
me-field">
<DIV class=3D"me-email-label me-label me-font1 me-color2">E-mail: </DIV>
<DIV class=3Dme-email-input>
<DIV class=3Dme-input-outer><INPUT id=3Dctl02_Comments_MessageEdit-email =

class=3D"me-input me-border1 me-bgcolor1 me-color1 me-font1"> =
</INPUT></DIV></DIV>
<DIV class=3D"me-email-tip me-tip me-font2">e-mail address visible to =
photographer=20
only </DIV></DIV>
<DIV id=3Dctl02_Comments_MessageEdit-url-field class=3D"me-url =
me-field">
<DIV class=3D"me-url-label me-label me-font1 me-color2">Web site: </DIV>
<DIV class=3Dme-url-input>
<DIV class=3Dme-input-outer><INPUT id=3Dctl02_Comments_MessageEdit-url=20
class=3D"me-input me-border1 me-bgcolor1 me-color1 me-font1">=20
</INPUT></DIV></DIV></DIV>
<DIV id=3Dctl02_Comments_MessageEdit-access-info=20
class=3D"me-access-info me-public-info me-font1"><SPAN=20
class=3Dme-public-info-text>Your comment will be visible to everyone. =
You will not=20
be able to edit or delete this comment because you are not logged in.=20
</SPAN><SPAN class=3Dme-private-info-text>Your comment will be visible =
to the=20
photographer only. </SPAN></DIV>
<DIV class=3Dme-footer>
<DIV id=3Dctl02_Comments_MessageEdit-message class=3D"me-message =
me-font3"></DIV>
<DIV class=3Dme-buttons><A id=3Dctl02_Comments_MessageEdit-add=20
class=3D"me-add abutton button-bgcolor1 button-color1 button-border1 =
button-font1"=20
onmouseover=3Dzfl_Button._abutton_onmouseover(this)=20
onmouseout=3Dzfl_Button._abutton_onmouseout(this)=20
onclick=3D_zf_ctl02_Comments_MessageEdit._save_onclick() =
href=3D"javascript:;">Add=20
comment </A><A id=3Dctl02_Comments_MessageEdit-save=20
class=3D"me-save abutton button-bgcolor1 button-color1 button-border1 =
button-font1"=20
onmouseover=3Dzfl_Button._abutton_onmouseover(this)=20
onmouseout=3Dzfl_Button._abutton_onmouseout(this)=20
onclick=3D_zf_ctl02_Comments_MessageEdit._save_onclick() =
href=3D"javascript:;">Save=20
entry </A><A id=3Dctl02_Comments_MessageEdit-cancel=20
class=3D"me-cancel abutton button-bgcolor1 button-color1 button-border1 =
button-font1"=20
onmouseover=3Dzfl_Button._abutton_onmouseover(this)=20
onmouseout=3Dzfl_Button._abutton_onmouseout(this)=20
onclick=3D_zf_ctl02_Comments_MessageEdit._cancel_onclick()=20
href=3D"javascript:;">Cancel </A></DIV></DIV></FORM>
<DIV class=3Dme-saving>
<DIV class=3D"me-saving-message me-font3"><SPAN=20
class=3Dme-saving-message-inner>Saving... <IMG class=3Dme-waiting=20
src=3D"http://jandreesen.zenfolio.com/zf/img/image-wait.gif"> =
</SPAN></DIV></DIV>
<DIV class=3Dme-continue>
<DIV id=3Dctl02_Comments_MessageEdit-continue-message=20
class=3D"me-continue-message me-font3"></DIV>
<DIV class=3Dme-footer>
<DIV class=3Dme-buttons><A id=3Dctl02_Comments_MessageEdit-continue=20
class=3D"me-continue-button abutton button-bgcolor1 button-color1 =
button-border1 button-font1"=20
onmouseover=3Dzfl_Button._abutton_onmouseover(this)=20
onmouseout=3Dzfl_Button._abutton_onmouseout(this) =
href=3D"javascript:;">Continue=20
</A></DIV></DIV></DIV></DIV><!-- <div class=3D"ml-border1"></div> =
--></DIV>
<DIV class=3D"cb-right-pane cb-view">
<DIV id=3Dctl02_Comments_MessageList class=3Dml>
<DIV id=3Dctl02_Comments_MessageList-header class=3D"ml-header =
ml-border1"><A=20
class=3D"ml-addlink abutton button-bgcolor1 button-color1 button-border1 =
button-font1"=20
onmouseover=3Dzfl_Button._abutton_onmouseover(this)=20
onmouseout=3Dzfl_Button._abutton_onmouseout(this)=20
onclick=3D_zf_ctl02_Comments_MessageList._add_onclick() =
href=3D"javascript:;">
<DIV class=3Dicon></DIV>Add comment</A>
<DIV class=3D"ml-not-allowed ml-font3 none">Adding new comments is not =
allowed by=20
the photographer. </DIV>
<DIV class=3D"ml-login-required none">
<DIV class=3Dml-font3>To leave a comment, please <A=20
onclick=3D_zf_ctl02_Comments_MessageList._login_onclick()=20
href=3D"javascript:;">login</A> first. </DIV>
<DIV class=3D"ml-login-required-note ml-font4 ml-color4">The =
photographer allowed=20
comments from registered users only </DIV></DIV>
<DIV class=3D"ml-new-prompt ml-font3 none">Leave your comment below and =
click the=20
Add Comment button </DIV></DIV>
<DIV id=3Dctl02_Comments_MessageList-outer class=3Dml-outer>
<DIV id=3Dctl02_Comments_MessageList-inner class=3Dml-inner>
<DIV id=3Dctl02_Comments_MessageList-items class=3Dml-inmost>
<DIV id=3Dctl02_Comments_MessageList-editnew></DIV>
<DIV id=3Dctl02_Comments_MessageList-more=20
class=3D"ml-more ml-border2 ml-font1 none"><A=20
onclick=3D_zf_ctl02_Comments_MessageList._more_onclick() =
href=3D"javascript:;">Show=20
next <SPAN id=3Dctl02_Comments_MessageList-morecount=20
class=3Dml-morecount></SPAN>comments</A> </DIV>
<DIV class=3D"ml-empty ml-font3 none">No comments posted. </DIV>
<DIV id=3Dctl02_Comments_MessageList-loading=20
class=3D"ml-loading ml-font3 none">Loading...=20
</DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV>
<DIV id=3Dctl02-trailer class=3D"clear line0"></DIV></DIV>
<DIV id=3Dfooter=20
class=3D"footer footer-border1 footer-bgcolor1 footer-color1 =
footer-font1 footer-bgimage1">
<DIV class=3D"footer-copyright footer-font2">Content hosted by <A=20
class=3Dfooter-color1 onmouseover=3D"this.className=3D''"=20
onmouseout=3D"this.className=3D'footer-color1'"=20
href=3D"http://www.zenfolio.com/zf/tour.aspx">Zenfolio</A> | <A=20
class=3Dfooter-color1 onmouseover=3D"this.className=3D''"=20
onmouseout=3D"this.className=3D'footer-color1'" =
onclick=3D_zf_footer.login()>Login=20
</A>
<P></P></DIV><A class=3Dfooter-menu=20
href=3D"http://www.zenfolio.com/zf/overview.aspx">About Zenfolio=20
</A></DIV></DIV></DIV>
<DIV id=3Dctl03 class=3D"prefetch prefetch-photo"></DIV>
<SCRIPT type=3Dtext/javascript>
			//<!--
			var _zfl_init =3D {};
			zf_userId =3D 0;
			zf_userName =3D '';
			zf_userDomain =3D '';
			zf_defaultHost =3D 'www.zenfolio.com';
			zf_defaultDomain =3D '.zenfolio.com';
			zf_imageHosts =3D =
["img-a.zenfolio.com","img-b.zenfolio.com","img-c.zenfolio.com","img-d.ze=
nfolio.com"];
			_zf_stdSetTimezoneOffset();
			zf_clientIp =3D '207.165.167.21'
			zf_NumberFormat.current =3D _$({"$meta": =
[["NumberFormat","currencyDecimalDigits","currencyDecimalSeparator","curr=
encyGroupSeparator","currencyGroupSizes","currencySymbol","negativeSign",=
"numberDecimalDigits","numberDecimalSeparator","numberGroupSeparator","nu=
mberGroupSizes","numberNegativePattern"]],"$root": {"$obj": =
[0,2,".",",",[3],"$","-",2,".",",",[3],1]}});
			_zf_stdDelayLoad =3D {
				=
'category.js':'http://www.zenfolio.com/zf/script/en-US/ie8/windows/7XVQHZ=
WX7DVMJ/category.js',
				=
'cart.js':'http://www.zenfolio.com/zf/script/en-US/ie8/windows/749NYPCG12=
PH5/cart.js',
				=
'checkout.js':'http://www.zenfolio.com/zf/script/en-US/ie8/windows/752T5F=
V9GAB9Q/checkout.js'
				};
			zfl_SessionCookie.current =3D new =
zfl_SessionCookie('NWMf/XwD1VmTCo3WoezHf13O.550717201.126.0');
			zfl_PasswordManager.init([]);
			_zfl_ctl02_init =3D { columns: {}, bins: {}, grids: {}, data: {}, =
pairs: {} };
			_zf_cartDefaultListTimestamp =3D '6tY8pXEyC3/cO/2J3o394c/UP6U=3D';
			var _zf_ctl02_Right =3D new zfl_Column('ctl02_Right', 'ctl02_ctl15', =
null, false);
			var _zf_ctl02_Left =3D new zfl_Column('ctl02_Left', 'ctl02_ctl16', =
'ctl02_ctl17', false);
			zfl_Mat.current =3D new zfl_Mat('mat-frame');
			var _zf_header_SearchInput =3D new =
zfl_SearchInput('header_SearchInput');
			var _zf_header =3D new zfl_Header('header', _$({"$meta": =
[["CartSummary"]],"$root": {"$obj": [0]}}));
			var _zf_ctl02_ControlBox_Slideshow =3D new =
zfl_Button('ctl02_ControlBox_Slideshow');
			var _zf_ctl02_ControlBox_AddToCart =3D new =
zfl_Button('ctl02_ControlBox_AddToCart');
			var _zf_ctl02_ControlBox_Share =3D new =
zfl_Button('ctl02_ControlBox_Share');
			var _zf_ctl02_ControlBox_CartPopup =3D new =
zf_AddToCart('ctl02_ControlBox_CartPopup');
			var _zf_ctl02_ControlBox_Links =3D new =
zfl_Links('ctl02_ControlBox_Links', true, false, '', '$5.00', true, =
false, true);
			var __ctl02_ControlBox_init =3D {};
			__ctl02_ControlBox_init.buttons =3D { slideshow: =
_zf_ctl02_ControlBox_Slideshow, addToCart: =
_zf_ctl02_ControlBox_AddToCart, share: _zf_ctl02_ControlBox_Share };
			__ctl02_ControlBox_init.popups =3D { addToCart: =
_zf_ctl02_ControlBox_CartPopup, links: _zf_ctl02_ControlBox_Links };
			var _zf_ctl02_ControlBox =3D new zfl_ControlBox('ctl02_ControlBox', =
true, __ctl02_ControlBox_init);
			var _zf_ctl02_MailboxLink =3D new =
zfl_MailboxLink('ctl02_MailboxLink');
			var _zf_ctl02_ctl05 =3D new zfl_Pair('ctl02_ctl05', =
'PhotoPage.Viewed', 'short');
			var _zf_ctl02_Back =3D new zfl_Button('ctl02_Back');
			var _zf_ctl02_Next =3D new zfl_Button('ctl02_Next');
			var _zf_ctl02_ctl08 =3D new zfl_Pair('ctl02_ctl08', =
'PhotoPage.PhotoIndexOf', 'standard');
			var _zf_ctl02_Tabs =3D new zfl_TabGroup('ctl02_Tabs', [{ key: =
'thumbnails', id: 'ctl02_ctl09-inner', selected: true }, { key: 'info', =
id: 'ctl02_ctl10-inner', selected: false }]);
			var _zf_ctl02_CategoriesBox =3D new =
zfl_Control('ctl02_CategoriesBox');
			var _zf_ctl02_Categories =3D new zfl_Categories('ctl02_Categories');
			var _zf_ctl02_ExifBox =3D new zfl_Control('ctl02_ExifBox');
			var _zf_ctl02_PhotoGrid =3D new zf_PhotoGrid('ctl02_PhotoGrid',2);
			var _zf_ctl02_PagerIEFix =3D new zfl_Control('ctl02_PagerIEFix');
			var _zf_ctl02_Pager =3D new zf_Pager('ctl02_Pager',3,0,0,0);
			var _zf_ctl02_PhotoFlipper =3D new =
zfl_PhotoFlipper('ctl02_PhotoFlipper', 'CurrentPhoto');
			var _zf_ctl02_DetailsBelow =3D new zfl_Control('ctl02_DetailsBelow');
			var _zf_ctl02_Caption =3D new zfl_Caption('ctl02_Caption');
			var _zf_ctl02_RecentComments =3D new =
zfl_RecentComments('ctl02_RecentComments');
			var _zf_ctl02_Copyright =3D new zfl_Copyright('ctl02_Copyright');
			var _zf_ctl02_Feeds =3D new zfl_Feeds('ctl02_Feeds');
			var _zf_ctl02_DimLights_PhotoFlipper =3D new =
zfl_PhotoFlipper('ctl02_DimLights_PhotoFlipper', 'DimLights');
			var _zf_ctl02_DimLights =3D new zfl_DimLights('ctl02_DimLights', =
_zf_ctl02_DimLights_PhotoFlipper);
			var _zf_ctl02_Comments_PhotoIndex =3D new =
zfl_Pair('ctl02_Comments_PhotoIndex', 'PhotoPage.PhotoIndexOf', =
'standard');
			var _zf_ctl02_Comments_PhotoFlipper =3D new =
zfl_PhotoFlipper('ctl02_Comments_PhotoFlipper', 'CommentBrowser');
			var _zf_ctl02_Comments_ShortExif =3D new =
zfl_ShortExif('ctl02_Comments_ShortExif', false);
			var _zf_ctl02_Comments_MessageEdit =3D new =
zfl_MessageEdit('ctl02_Comments_MessageEdit', true);
			var _zf_ctl02_Comments_MessageList =3D new =
zfl_MessageList('ctl02_Comments_MessageList', 0, true);
			var _ctl02_Comments_init =3D { flipper: =
_zf_ctl02_Comments_PhotoFlipper, photoIndex: =
_zf_ctl02_Comments_PhotoIndex, shortExif: _zf_ctl02_Comments_ShortExif, =
list: _zf_ctl02_Comments_MessageList, edit: =
_zf_ctl02_Comments_MessageEdit };
			var _zf_ctl02_Comments =3D new zfl_CommentBrowser('ctl02_Comments', =
_ctl02_Comments_init);
			_zf_ctl02_Tabs.get('thumbnails').view =3D [ _zf_ctl02_Pager, =
_zf_ctl02_PhotoGrid ];
			_zf_ctl02_Tabs.get('info').view =3D [ _zf_ctl02_CategoriesBox, =
_zf_ctl02_ExifBox ];
			var _zf_footer =3D new zfl_Footer('footer');
			var _zf_ctl03 =3D new zf_Prefetch('ctl03', 16);
			_zfl_init.header =3D _zf_header;
			_zfl_init.footer =3D _zf_footer;
			_zfl_init.decorations =3D =0A=
				{=0A=
					"$meta": [=0A=
						=
["zfl_DecorationInfo","className","borderSize","shadowName","imagePad"]=0A=
					],=0A=
					"$objects": [=0A=
						[0,"square",2,null,null]=0A=
					],=0A=
					"$root": {=0A=
						"DimLights": {"$obj": [0,"dimlights-decoration",2,null,null]},=0A=
						"Slideshow": {"$obj": [0,"slideshow-decoration",null,null,null]},=0A=
						"default": {"$obj": [0,"defdec",8,"modern-shadow",null]},=0A=
						"PhotoNavList.1": {"$ref": 0},=0A=
						"PhotoNavThumbnail.1": {"$ref": 0},=0A=
						"CurrentPhoto": {"$obj": [0,"largeimage",19,"modern-shadow",null]},=0A=
						"BioPhoto": {"$obj": [0,"biothumb",5,"modern-shadow",null]},=0A=
						"FolderElement.11": {"$obj": [0,"defdec",8,"modern-shadow",true]},=0A=
						"GalleryPhoto.11": {"$obj": [0,"defdec",8,"modern-shadow",true]},=0A=
						"CommentBrowser": {"$obj": =
[0,"commentsimage",8,"modern-shadow",null]}=0A=
					}=0A=
				};
			_zfl_ctl02_init.analytics =3D new zfl_Analytics(true, '', null);
			_zfl_ctl02_init.navigation =3D {};
			_zfl_ctl02_init.photoSet =3D =0A=
				{=0A=
					"$meta": [=0A=
						["zf_PhotoSet","id","title","access","owner","photoChangeNumber"],=0A=
						["AccessInfo","realmId","ownerId","mask"],=0A=
						["zf_User","id","loginName","displayName"]=0A=
					],=0A=
					"$root": {"$obj": [=0A=
							0,=0A=
							550717201,=0A=
							"Game 6 4th Grade",=0A=
							{"$obj": [1,698645400,866823933,254209]},=0A=
							{"$obj": [2,866823933,"jandreesen","JAndreesen Photography"]},=0A=
							267=0A=
						]}=0A=
				};
			_zfl_ctl02_init.initial =3D { index: 126, id: 671365464, shrunk: =
false };
			_zfl_ctl02_init.photoList =3D new zfl_PhotoList(0, 40, 128, =
550717201, 'eJASqxoqUv1-z1CUJNArNZh8dJMm1lkgSGRUVPuSD-Q=3D', 267);
			_zfl_ctl02_init.grids.photos =3D _zf_ctl02_PhotoGrid;
			_zfl_ctl02_init.grids.photosParams =3D { method: 1, title: false, ac: =
true, type: false, sn: true, fthumb: false, created: false, modified: =
false, count: false, visitors: false };
			_zfl_ctl02_init.pager =3D _zf_ctl02_Pager;
			_zfl_ctl02_init.overlayExif =3D true;
			_zfl_ctl02_init.overlayMenu =3D true;
			_zfl_ctl02_init.overlayDownload =3D false;
			_zfl_ctl02_init.addressBar =3D new zfl_AddressBar(true);
			_zfl_ctl02_init.exifView =3D new zfl_ExifView('ctl02_ExifBox', =
zfl_ExifViewStyle.Inline);
			_zfl_ctl02_init.columns.Right =3D _zf_ctl02_Right;
			_zfl_ctl02_init.columns.Left =3D _zf_ctl02_Left;
			_zfl_ctl02_init.pairs._zf_ctl02_ctl05 =3D _zf_ctl02_ctl05;
			_zfl_ctl02_init.pairs._zf_ctl02_ctl08 =3D _zf_ctl02_ctl08;
			_zfl_ctl02_init.tabs =3D _zf_ctl02_Tabs;
			_zfl_ctl02_init.copyright =3D _zf_ctl02_Copyright;
			_zfl_ctl02_init.feeds =3D _zf_ctl02_Feeds;
			_zfl_ctl02_init.caption =3D _zf_ctl02_Caption;
			_zfl_ctl02_init.categories =3D _zf_ctl02_Categories;
			_zfl_ctl02_init.photographer =3D null;
			_zfl_ctl02_init.controlBox =3D _zf_ctl02_ControlBox;
			_zfl_ctl02_init.flipper =3D _zf_ctl02_PhotoFlipper;
			_zfl_ctl02_init.dimlights =3D _zf_ctl02_DimLights;
			_zfl_ctl02_init.mailboxLink =3D _zf_ctl02_MailboxLink;
			_zfl_ctl02_init.comments =3D _zf_ctl02_Comments;
			_zfl_ctl02_init.recentComments =3D _zf_ctl02_RecentComments;
			_zfl_ctl02_init.navigation.next =3D _zf_ctl02_Next;
			_zfl_ctl02_init.navigation.back =3D _zf_ctl02_Back;
			var _zf_ctl02 =3D new zfl_PhotoLtRtThLayout('ctl02', _zfl_init, =
_zfl_ctl02_init);
			_zf_ctl02_Right.onstretch =3D =
_zf_ctl02.closure(_zf_ctl02._tabs_onstretch);
			_zf_ctl02_Left.onstretch =3D =
_zf_ctl02.closure(_zf_ctl02._photo_onstretch);
			_zf_ctl02.adjustWidthOnFlipperResize(_zf_ctl02_Left, null, =
_zf_ctl02_DetailsBelow);
			//-->

		</SCRIPT>
</BODY></HTML>

------=_NextPart_000_0000_01CA8EAD.1803D070
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://jandreesen.zenfolio.com/zf/img/image-wait.gif

R0lGODlhFwAXANUGAAAAAEJCQoSEhKWlpd3d3d7e3gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQF
FAAGACwAAAAAFwAXAAAGcMCBUGgQGI2GgFJpADidQ+IRuWQ+odHiNFltXqMD7ZG79D7BYmr3CjC4
3/C43E2o1+dyu96Oj+/3fXB/eoFvg3yFBoCJgYuFBZCQjoGRkoSJlQWTfZmbeJmMjYSAgJ2jp3ym
fKSEqnesqZWwr62VQQAAIfkEBRQABgAsAAAAABcAFwAABm1AglBoGBiNBoFSaQg4nUPiEblkPqHR
4jRZbV6jBO2Ru/Q+wWJq9xowuN/wuNyNnscBeHzd/s7rs3x9fnuBfgCEfIaBi3SAi2CIdpCOgZND
jAaWRIyRmHBooFmaYaGXo5miqZaopqqTrESlQkEAACH5BAUUAAYALAYAAAARABEAAAZEQIJQaBgY
jQaBUjkkHpFLZrP4TEabBOrRusRqoVGDeEwum8+GgFqNJq/ZbfE7EJe/6+k7fj8G+P14f4B1ggCB
god/QQAAIfkEBRQABgAsDAAAAAsAFwAABkNAglBoGBiNQ+IRmSwukwTnESo1Gq7YrPYq6Ha33q82
LACHzd6tOhtot7futzYegMft7jWWCuj3+X4AgH6Df02BAEEAACH5BAUUAAYALAwAAAALABcAAAZF
QIJQaBgah8WjMakkNpFHg3RKrUoHWKw1q61yB1tuOGstUwVotDWtrrIFa3Y8bZ4C7ndDYL/H5/l9
fnqAfgCDfIWHe0EAACH5BAUUAAYALAYABgARABEAAAZEQINwSBQSjsei0oBMLolNwhPanA6j1uxz
wOVqu94sePAFl7vaImC9NgTeb4NgPme34XF63e7Gy/V2AH1wf3SBg3l6QQAAIfkEBRQABgAsAAAM
ABcACwAABkVAglBoKBqPxqFyiGwWl0tnE6qUIqlMa7Kq7RoAYLAhQCYbBGi0YcBmh8Vlc1rddr/H
8fN8XX8D8GV6aXxtfoBye3UDQQAAIfkEBRQABgAsAAAAABcAFwAABmrAglBoGBKNhSLSqBw2j0sn
8pmMSplTK/TKJRq+4LB4TCWPtUlzGK1ea9tgNrw8bwPu9zoSn5/v+XpGfACBQ4OFXnVmAYyMBgKQ
kAYDlJRUjY6RkpWWSJgBj5qTnJeYoZGjlaWNp5ukSEEAACH5BAUUAAYALAAAAAAXABcAAAZtQIJQ
aBgSjYQi0qgcNo9LJ/KZjEqZUyv0yiUavuCweGwAmM3kMfKMTofXbPfbyAbIwfDz/TvdywOAgH5I
gYJ7hIWDRoUBikOMjl5+aQKVlQYDmZlUVJaXmptZRp4CmKCcSKSmmqijnquhWEZBAAAh+QQFFAAG
ACwAAAAACwAXAAAGRUCAUGggGI1D4hGZLC6TAOcRKjUartisIcDlarfdwDcs1pLH4a86K2i3v+63
Ni6Ax+3utX7A51cJfX5LgIF/gQOGhYNBAAAh+QQFFAAGACwAAAAAFwAXAAAGbcCAUGgAGI2GglKZ
XBaGxCPSWWguoYGi1MqkYrVHbtULBU+dYoN6zW671YJ4/O2myud0tv2e1zvvAn1re3KCalSGggOL
i4lUjI2Gj5COTpADlUuXmUyJeYigaFShS2mjoqilp6qpXatjrbBLQQAAIfkEBRQABgAsAAAAABcA
FwAABmxAgVBoCBiNBoBSaSA4nUPiEblkPqHR4jRZbV6jAu2Ru/Q+wWJq90owuN/wuNw9qNfncrb9
jofr931+V3sDgW9/doZubIqGjIpsj46RT42UlZCXbZmYjXiMoFdmlKNtoZelqZqmoqekrqxPQQAA
Ow==

------=_NextPart_000_0000_01CA8EAD.1803D070
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.zenfolio.com/zf/theme/en-US/ie8/windows/83U1ZV7J4ZMKM/fineart-black.css

.show {
	DISPLAY: block
}
.hide {
	DISPLAY: none
}
.image00_ {
	POSITION: relative; FLOAT: left
}
.image10_ {
	POSITION: relative; FLOAT: left
}
.image11_ {
	POSITION: relative; FLOAT: left
}
.image00_ .image {
	WIDTH: 80px; HEIGHT: 80px
}
.image01_ .image {
	WIDTH: 60px; HEIGHT: 60px
}
.image02_ .image {
	WIDTH: 400px; HEIGHT: 400px
}
.image03_ .image {
	WIDTH: 580px; HEIGHT: 450px
}
.image04_ .image {
	WIDTH: 800px; HEIGHT: 630px
}
.image05_ .image {
	WIDTH: 1100px; HEIGHT: 850px
}
.image10_ .image {
	WIDTH: 120px; HEIGHT: 120px
}
.image11_ .image {
	WIDTH: 200px; HEIGHT: 200px
}
.image50_ .image {
	WIDTH: 120px; HEIGHT: 120px
}
.image51_ .image {
	WIDTH: 80px; HEIGHT: 80px
}
.image52_ .image {
	WIDTH: 100px; HEIGHT: 100px
}
.image60_ .image {
	WIDTH: 80px; HEIGHT: 80px
}
.image61_ .image {
	WIDTH: 60px; HEIGHT: 60px
}
.image {
	POSITION: relative; OVERFLOW: hidden
}
.imageFrame DIV {
	LINE-HEIGHT: 1px; FLOAT: left
}
.imageOuter {
	POSITION: absolute; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px
}
.imageOuterFrame {
	MARGIN: 0px auto; DISPLAY: table; FLOAT: none; HEIGHT: 100%; OVERFLOW: =
hidden
}
.imageFrame {
	DISPLAY: table-cell; FLOAT: none; VERTICAL-ALIGN: middle
}
.imageLeft {
=09
}
.imageInmost {
	POSITION: relative
}
.imageInner IMG {
	FLOAT: left
}
.imageOuterActionOverlay {
	Z-INDEX: 2; POSITION: absolute; WIDTH: 28px; BOTTOM: 0px; DISPLAY: =
none; HEIGHT: 22px; VISIBILITY: hidden; CURSOR: pointer; RIGHT: 0px
}
.image-ohover .imageOuterActionOverlay {
	VISIBILITY: visible
}
.imageOuterTypeOverlay {
	Z-INDEX: 1; POSITION: absolute; WIDTH: 24px; BOTTOM: 0px; DISPLAY: =
none; HEIGHT: 24px; LEFT: 2px
}
.imageInnerActionOverlay {
	Z-INDEX: 2; POSITION: absolute; WIDTH: 28px; BOTTOM: 0px; DISPLAY: =
none; HEIGHT: 22px; VISIBILITY: hidden; CURSOR: pointer; RIGHT: 0px
}
.image-ihover .imageInnerActionOverlay {
	VISIBILITY: visible
}
.imageInnerTypeOverlay {
	Z-INDEX: 1; POSITION: absolute; WIDTH: 24px; BOTTOM: 0px; DISPLAY: =
none; HEIGHT: 24px; LEFT: 2px
}
.image IMG.imageInnerPending {
	POSITION: absolute; BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: =
none; BORDER-TOP-STYLE: none; BACKGROUND: none transparent scroll repeat =
0% 0%; VISIBILITY: hidden; BORDER-LEFT-STYLE: none
}
.image IMG.imageOuterPending {
	POSITION: absolute; BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: =
none; BORDER-TOP-STYLE: none; BACKGROUND: none transparent scroll repeat =
0% 0%; VISIBILITY: hidden; BORDER-LEFT-STYLE: none
}
.image IMG.imageOuterPending {
	DISPLAY: none
}
.image IMG.imageInnerPending {
	TOP: 4px; LEFT: 4px
}
.imageInnerContent {
	POSITION: absolute; VISIBILITY: hidden
}
.imageOuterContent {
	POSITION: absolute; VISIBILITY: hidden
}
.image00_ .imageSpecialPasswordProtected {
	WIDTH: 80px; BACKGROUND: url(/zf/img/thumbnail-placeholder-80.jpg) =
no-repeat left top; HEIGHT: 53px
}
.image01_ .imageSpecialPasswordProtected {
	WIDTH: 60px; BACKGROUND: url(/zf/img/thumbnail-placeholder-60.jpg) =
no-repeat left top; HEIGHT: 60px
}
.image10_ .imageSpecialPasswordProtected {
	WIDTH: 120px; BACKGROUND: url(/zf/img/thumbnail-placeholder-120.gif) =
no-repeat left top; HEIGHT: 80px
}
.image00_ .imageSpecialNotFound {
	WIDTH: 80px; BACKGROUND: url(/zf/img/protected-photo-80.jpg) no-repeat =
left top; HEIGHT: 53px
}
.image00_ .imageSpecialAccessDenied {
	WIDTH: 80px; BACKGROUND: url(/zf/img/protected-photo-80.jpg) no-repeat =
left top; HEIGHT: 53px
}
.image00_ .imageSpecialAuthRequired {
	WIDTH: 80px; BACKGROUND: url(/zf/img/protected-photo-80.jpg) no-repeat =
left top; HEIGHT: 53px
}
.image00_ .imageSpecialFailed {
	WIDTH: 80px; BACKGROUND: url(/zf/img/protected-photo-80.jpg) no-repeat =
left top; HEIGHT: 53px
}
.image01_ .imageSpecialNotFound {
	WIDTH: 60px; BACKGROUND: url(/zf/img/protected-photo-60.jpg) no-repeat =
left top; HEIGHT: 60px
}
.image01_ .imageSpecialAccessDenied {
	WIDTH: 60px; BACKGROUND: url(/zf/img/protected-photo-60.jpg) no-repeat =
left top; HEIGHT: 60px
}
.image01_ .imageSpecialAuthRequired {
	WIDTH: 60px; BACKGROUND: url(/zf/img/protected-photo-60.jpg) no-repeat =
left top; HEIGHT: 60px
}
.image01_ .imageSpecialFailed {
	WIDTH: 60px; BACKGROUND: url(/zf/img/protected-photo-60.jpg) no-repeat =
left top; HEIGHT: 60px
}
.image10_ .imageSpecialNotFound {
	WIDTH: 120px; BACKGROUND: url(/zf/img/protected-photo-120.gif) =
no-repeat left top; HEIGHT: 80px
}
.image10_ .imageSpecialAccessDenied {
	WIDTH: 120px; BACKGROUND: url(/zf/img/protected-photo-120.gif) =
no-repeat left top; HEIGHT: 80px
}
.image10_ .imageSpecialAuthRequired {
	WIDTH: 120px; BACKGROUND: url(/zf/img/protected-photo-120.gif) =
no-repeat left top; HEIGHT: 80px
}
.image10_ .imageSpecialFailed {
	WIDTH: 120px; BACKGROUND: url(/zf/img/protected-photo-120.gif) =
no-repeat left top; HEIGHT: 80px
}
.imageList {
	POSITION: relative; OVERFLOW: hidden
}
A.disabled {
	CURSOR: default
}
DIV.menu_ {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; OVERFLOW: hidden; PADDING-TOP: 0px
}
DIV.popupMenu_ {
	Z-INDEX: 10000; POSITION: absolute; VISIBILITY: hidden; TOP: 0px; LEFT: =
0px
}
.tree {
	POSITION: relative
}
.treeScroll {
	POSITION: relative; OVERFLOW: hidden
}
.prefetch {
	POSITION: absolute; WIDTH: 0px; HEIGHT: 0px; OVERFLOW: hidden
}
.sv {
	POSITION: relative
}
.sv-outer {
	POSITION: relative
}
.sv-outer {
	OVERFLOW: hidden
}
.pv {
	POSITION: relative
}
.pv-outer {
	POSITION: relative
}
.pv-inner {
	POSITION: absolute; DISPLAY: block; BACKGROUND: url(/zf/img/null.gif)
}
.pv-img {
	BORDER-BOTTOM: 0px; POSITION: absolute; BORDER-LEFT: 0px; WIDTH: 100%; =
BACKGROUND-REPEAT: no-repeat; HEIGHT: 100%; BORDER-TOP: 0px; TOP: 0px; =
BORDER-RIGHT: 0px; LEFT: 0px
}
.pv-wait {
	POSITION: absolute; VISIBILITY: hidden
}
.pv-s-wait .pv-wait {
	VISIBILITY: inherit
}
.pg {
	POSITION: relative; OVERFLOW: hidden
}
.pg .pv {
	POSITION: absolute; VISIBILITY: hidden
}
.pg .pv-static {
	POSITION: relative; VISIBILITY: inherit
}
.pg-static .pv {
	POSITION: absolute; VISIBILITY: inherit
}
.pg-empty-c {
	DISPLAY: none
}
.pg-empty .pg-empty-c {
	DISPLAY: block
}
BODY {
	POSITION: relative; MIN-WIDTH: 995px; PADDING-BOTTOM: 0px; OVERFLOW-Y: =
scroll; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; =
PADDING-TOP: 0px
}
A {
	OUTLINE-STYLE: none; CURSOR: pointer; TEXT-DECORATION: none; =
-moz-outline-style: none
}
A:hover {
	TEXT-DECORATION: underline
}
A:active {
	TEXT-DECORATION: underline
}
H1 {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 0px
}
TABLE {
	PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-COLLAPSE: collapse; =
BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; =
PADDING-TOP: 0px
}
TR {
	PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-COLLAPSE: collapse; =
BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; =
PADDING-TOP: 0px
}
TD {
	PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-COLLAPSE: collapse; =
BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; =
PADDING-TOP: 0px
}
#page-frame {
	POSITION: relative
}
#dimmer {
	Z-INDEX: 2; POSITION: absolute; FILTER: =
progid:DXImageTransform.Microsoft.Alpha(opacity=3D40); BACKGROUND-COLOR: =
black; WIDTH: 100%; HEIGHT: 100%; TOP: 0px; LEFT: 0px
}
.layout {
	POSITION: relative; PADDING-BOTTOM: 13px; PADDING-LEFT: 40px; =
PADDING-RIGHT: 40px; ZOOM: 1; PADDING-TOP: 10px
}
.clear {
	BACKGROUND-COLOR: transparent; CLEAR: both
}
.invisible {
	VISIBILITY: hidden
}
.hidden {
	DISPLAY: none !important
}
.none {
	DISPLAY: none
}
.line0 {
	LINE-HEIGHT: 0px; HEIGHT: 1px; OVERFLOW: hidden
}
.waterline {
	LINE-HEIGHT: 0px; BACKGROUND-COLOR: transparent; HEIGHT: 0px; OVERFLOW: =
hidden
}
.stretcher {
	POSITION: relative
}
.separator {
	PADDING-BOTTOM: 0px; LINE-HEIGHT: 0px; MARGIN: 0px; PADDING-LEFT: 0px; =
WIDTH: 100%; PADDING-RIGHT: 0px; HEIGHT: 0px; OVERFLOW: hidden; =
PADDING-TOP: 0px
}
.separator HR {
	DISPLAY: none
}
.placeholder {
	POSITION: relative; TEXT-ALIGN: center; LINE-HEIGHT: 100%; TOP: 45%; =
LEFT: 0%
}
.ac-pub {
	DISPLAY: none
}
.ac-pri {
	BACKGROUND-IMAGE: url(/zf/img/layout/lock-red-16.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.ac-pwd {
	BACKGROUND-IMAGE: url(/zf/img/layout/lock-orange-16.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.ac-pro {
	BACKGROUND-IMAGE: url(/zf/img/layout/lock-blue-16.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.ac-pri-s {
	BACKGROUND-IMAGE: url(/zf/img/layout/lock-red-12.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.ac-pwd-s {
	BACKGROUND-IMAGE: url(/zf/img/layout/lock-orange-12.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.ac-pro-s {
	BACKGROUND-IMAGE: url(/zf/img/layout/lock-blue-12.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.folder-icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/group-16.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top
}
.collection-icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/collection-16.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.gallery-icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/gallery-16.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.center-outer {
=09
}
.center-inner {
	MARGIN: 0px auto
}
.center-margin {
	MARGIN: 0px auto
}
.layout-border5 {
	BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px =
solid; BORDER-RIGHT: 1px solid
}
.mat-frame {
	POSITION: relative; ZOOM: 1
}
.mat-outer-h {
	POSITION: absolute; WIDTH: 100%; LEFT: 0px
}
.mat-frame-top-left {
	POSITION: absolute; HEIGHT: 100%; TOP: 0px
}
.mat-frame-top-right {
	POSITION: absolute; HEIGHT: 100%; TOP: 0px
}
.mat-frame-bottom-left {
	POSITION: absolute; HEIGHT: 100%; TOP: 0px
}
.mat-frame-bottom-right {
	POSITION: absolute; HEIGHT: 100%; TOP: 0px
}
.mat-frame-top {
	POSITION: relative; HEIGHT: 100%
}
.mat-frame-bottom {
	POSITION: relative; HEIGHT: 100%
}
.mat-outer-m {
	POSITION: absolute; WIDTH: 100%; LEFT: 0px
}
.mat-frame-left {
	POSITION: absolute; BOTTOM: 0px; TOP: 0px
}
.mat-frame-right {
	POSITION: absolute; BOTTOM: 0px; TOP: 0px
}
.mat-frame-middle {
	POSITION: absolute; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px
}
.column-dec {
	POSITION: relative
}
.column-top {
	POSITION: absolute; WIDTH: 100%; TOP: 0px; LEFT: 0px
}
.column-bottom {
	POSITION: absolute; WIDTH: 100%; BOTTOM: 0px; LEFT: 0px
}
.column-middle {
	Z-INDEX: -1; POSITION: absolute; WIDTH: 100%; BOTTOM: 0px; TOP: 0px; =
LEFT: 0px
}
.button {
	POSITION: relative; FLOAT: left; CURSOR: pointer
}
.button .standard {
	FLOAT: left
}
.button .hover {
	FLOAT: left
}
.button .left {
	POSITION: absolute; HEIGHT: 100%; TOP: 0px; LEFT: 0px
}
.button .right {
	POSITION: absolute; HEIGHT: 100%; TOP: 0px; RIGHT: 0px
}
.button .middle {
	FLOAT: left
}
.button .label {
	POSITION: relative; WHITE-SPACE: nowrap; FLOAT: left
}
.button .icon {
	DISPLAY: none
}
.button .label {
	LINE-HEIGHT: 22px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; HEIGHT: 22px
}
.button-border1 {
	BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px =
solid; BORDER-RIGHT: 1px solid
}
.button-border2 {
	BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px =
solid; BORDER-RIGHT: 1px solid
}
.abutton {
	POSITION: relative; LINE-HEIGHT: 22px; PADDING-LEFT: 9px; =
PADDING-RIGHT: 9px; DISPLAY: block; FLOAT: left; HEIGHT: 22px
}
.abutton:active {
	TEXT-DECORATION: none
}
.abutton:hover {
	TEXT-DECORATION: none
}
.abutton .icon {
	POSITION: absolute; WIDTH: 16px; DISPLAY: none; HEIGHT: 16px; TOP: 3px; =
LEFT: 5px
}
A.abutton-disabled {
	CURSOR: default
}
.abutton .icon-disabled {
	DISPLAY: none
}
.abutton-disabled .icon {
	DISPLAY: none
}
.checkbox {
	PADDING-LEFT: 15px; TEXT-DECORATION: none
}
A.checkbox:hover {
	TEXT-DECORATION: none
}
A.checkbox:visited {
	TEXT-DECORATION: none
}
A.checkbox:active {
	TEXT-DECORATION: none
}
.header {
	Z-INDEX: 2; BORDER-BOTTOM: 1px solid; POSITION: relative; HEIGHT: 40px
}
.header-logo-outer {
	POSITION: absolute; WIDTH: 80px; DISPLAY: block; HEIGHT: 27px; TOP: =
6px; LEFT: 25px
}
.header-logo {
	WIDTH: 100%; DISPLAY: block; HEIGHT: 100%
}
.header-photog-clip {
	PADDING-LEFT: 15px; HEIGHT: 40px; OVERFLOW: hidden; CURSOR: default
}
.header-photog {
	LINE-HEIGHT: 40px; TEXT-TRANSFORM: none; DISPLAY: block; FLOAT: left; =
HEIGHT: 40px
}
.header-search {
	POSITION: relative; PADDING-BOTTOM: 9px; PADDING-LEFT: 9px; WIDTH: =
204px; PADDING-RIGHT: 9px; FLOAT: right; HEIGHT: 22px; PADDING-TOP: 9px
}
.header-link {
	LINE-HEIGHT: 40px; FLOAT: left; HEIGHT: 40px
}
.header-separator {
	LINE-HEIGHT: 40px; FLOAT: left; HEIGHT: 40px
}
.header-separator {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 4px; =
PADDING-TOP: 0px
}
.header-menuContainer {
	POSITION: relative; FLOAT: left
}
.header-myZenfolio {
	PADDING-RIGHT: 20px; CURSOR: pointer
}
.header-menuIcon {
	BACKGROUND-IMAGE: url(/zf/img/view-switcher.png); POSITION: absolute; =
WIDTH: 19px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left =
top; HEIGHT: 20px; TOP: 10px; RIGHT: 0px
}
.header-menu {
	Z-INDEX: 1; BORDER-BOTTOM: 1px solid; POSITION: absolute; BORDER-LEFT: =
1px solid; PADDING-BOTTOM: 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; =
FLOAT: none; VISIBILITY: hidden; BORDER-TOP: 1px solid; BORDER-RIGHT: =
1px solid; PADDING-TOP: 8px
}
.header-menu TABLE {
	BORDER-RIGHT-WIDTH: 0px; BORDER-COLLAPSE: collapse; BORDER-TOP-WIDTH: =
0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px
}
.header-menu DIV {
	WIDTH: 100%; FLOAT: none
}
.header-menu SPAN {
	WHITE-SPACE: nowrap
}
.header-menu TR {
	PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP-WIDTH: 0px; =
BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; CURSOR: pointer; =
PADDING-TOP: 0px
}
.header-menu TD {
	PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP-WIDTH: 0px; =
BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; CURSOR: pointer; =
PADDING-TOP: 0px
}
.header-menu A {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: =
block; WHITE-SPACE: nowrap; MARGIN-BOTTOM: 2px; FLOAT: none; =
PADDING-TOP: 1px
}
.header-menu A SPAN {
	CURSOR: pointer
}
.header-menu A:hover DIV {
	TEXT-DECORATION: none
}
.header-menu A:hover {
	TEXT-DECORATION: none
}
.header-menu TD.hover {
	TEXT-DECORATION: none
}
.header-menuSeparator {
	LINE-HEIGHT: 4px; MARGIN-TOP: 4px; HEIGHT: 4px; OVERFLOW: hidden; =
BORDER-TOP: 1px solid
}
.header-controlMenu {
=09
}
.header-cart {
	FONT-WEIGHT: bold
}
.header-main {
	PADDING-LEFT: 20px; PADDING-RIGHT: 20px; FLOAT: right; HEIGHT: 40px
}
.header-border1 {
=09
}
.header-border2 {
=09
}
.header-no-branding-unreg .header-separator-after-cart {
	DISPLAY: none
}
.searchi {
	POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 8px; =
PADDING-RIGHT: 8px; HEIGHT: 22px; PADDING-TOP: 0px
}
.searchi-inner {
	POSITION: relative; HEIGHT: 14px
}
.searchi-local .searchi-inner {
	PADDING-RIGHT: 24px
}
.searchi-both .searchi-inner {
	PADDING-RIGHT: 33px
}
.searchi-input {
	BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: =
14px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; =
HEIGHT: 14px; FONT-SIZE: 11px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; =
PADDING-TOP: 1px
}
.searchi-top {
	HEIGHT: 4px
}
.searchi-bottom {
	HEIGHT: 4px
}
.searchi-top {
	BACKGROUND: url(/zf/img/layout/search-top.gif) repeat-x
}
.searchi-bottom {
	BACKGROUND: url(/zf/img/layout/search-bottom.gif) repeat-x
}
.searchi-local .searchi-top {
	PADDING-RIGHT: 16px
}
.searchi-local .searchi-bottom {
	PADDING-RIGHT: 16px
}
.searchi-both .searchi-top {
	PADDING-RIGHT: 25px
}
.searchi-both .searchi-bottom {
	PADDING-RIGHT: 25px
}
.searchi-left {
	POSITION: absolute; WIDTH: 8px; HEIGHT: 22px; TOP: 0px
}
.searchi-right {
	POSITION: absolute; WIDTH: 8px; HEIGHT: 22px; TOP: 0px
}
.searchi-left {
	BACKGROUND-IMAGE: url(/zf/img/layout/search-left.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top; LEFT: 0px
}
.searchi-right {
	BACKGROUND-IMAGE: url(/zf/img/layout/search-right.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top; RIGHT: 0px
}
.searchi-icon {
	POSITION: absolute; HEIGHT: 16px; TOP: 0px; CURSOR: pointer; RIGHT: =
-2px
}
.searchi-both .searchi-icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/search-bw-16-dropdown.png); WIDTH: =
25px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.searchi-local .searchi-icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/search-bw-16.png); PADDING-BOTTOM: =
10px; WIDTH: 16px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: =
left top
}
.searchi-menu {
	TOP: 18px; RIGHT: -2px
}
.footer {
	POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 15px; =
LINE-HEIGHT: 50px; HEIGHT: 50px; VISIBILITY: hidden; CLEAR: both; =
OVERFLOW: hidden
}
.footer-border1 {
	BORDER-TOP: 2px solid
}
.footer-logo {
	POSITION: absolute; WIDTH: 80px; DISPLAY: block; HEIGHT: 40px; TOP: =
10px; RIGHT: 80px
}
.footer-menu {
	VERTICAL-ALIGN: middle
}
.footer-copyright {
	POSITION: absolute; LINE-HEIGHT: 50px; HEIGHT: 50px; TOP: 0px; RIGHT: =
50px
}
.footer-copyright A {
	BORDER-BOTTOM: 1px dotted; PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: =
1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP-WIDTH: 1px; =
BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 0px
}
.footer-copyright A:hover {
	TEXT-DECORATION: none
}
.richtext P {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; FONT-WEIGHT: normal; PADDING-TOP: 0px
}
.richtext H1 {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; FONT-WEIGHT: normal; PADDING-TOP: 0px
}
.richtext H2 {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; FONT-WEIGHT: normal; PADDING-TOP: 0px
}
.richtext H3 {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; FONT-WEIGHT: normal; PADDING-TOP: 0px
}
.richtext H4 {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; FONT-WEIGHT: normal; PADDING-TOP: 0px
}
.richtext H5 {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; FONT-WEIGHT: normal; PADDING-TOP: 0px
}
.richtext {
	FONT-SIZE: 11px
}
.richtext SPAN.small {
	FONT-SIZE: 9px
}
.richtext SPAN.medium {
	FONT-SIZE: 11px
}
.richtext SPAN.large {
	FONT-SIZE: 14px
}
.richtext OL {
	PADDING-BOTTOM: 0px; MARGIN-TOP: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px
}
UL {
	PADDING-BOTTOM: 0px; MARGIN-TOP: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px
}
.richtext UL {
	MARGIN-LEFT: 15px
}
.richtext OL {
	MARGIN-LEFT: 22px
}
.richtext LI {
	PADDING-BOTTOM: 0px; MARGIN: 0px 0px 2px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.richtext UL LI {
	LIST-STYLE-POSITION: outside; LIST-STYLE-TYPE: square
}
.richtext U A {
	TEXT-DECORATION: underline
}
.richtext SPAN.small {
	FONT-SIZE: 80%
}
.richtext SPAN.medium {
	FONT-SIZE: 100%
}
.richtext SPAN.large {
	FONT-SIZE: 130%
}
.controlbox {
	POSITION: relative; WIDTH: 290px; FLOAT: right; HEIGHT: 31px
}
.controlbox .button {
	MARGIN-TOP: 4px
}
.button-slideshow .label {
	PADDING-LEFT: 24px
}
.button-share .label {
	PADDING-LEFT: 24px
}
.button-addToCart .label {
	PADDING-LEFT: 24px
}
.button-slideshow .icon {
	POSITION: absolute; WIDTH: 16px; DISPLAY: block; HEIGHT: 16px; TOP: =
3px; LEFT: 5px
}
.button-share .icon {
	POSITION: absolute; WIDTH: 16px; DISPLAY: block; HEIGHT: 16px; TOP: =
3px; LEFT: 5px
}
.button-addToCart .icon {
	POSITION: absolute; WIDTH: 16px; DISPLAY: block; HEIGHT: 16px; TOP: =
3px; LEFT: 5px
}
.button-slideshow {
=09
}
.button-slideshow .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/play-bw-16.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.button-addToCart {
	POSITION: relative; VISIBILITY: hidden
}
.button-addToCart .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/cart-bw-16.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.button-share {
	FLOAT: right
}
.button-share .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/share-bw-16.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.breadcrumbs {
	PADDING-BOTTOM: 4px; LINE-HEIGHT: 31px
}
.breadcrumbs H1 {
	LINE-HEIGHT: 31px
}
.breadcrumbs A {
=09
}
.breadcrumbs SPAN {
=09
}
.breadcrumbs .divider {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; =
PADDING-TOP: 0px
}
.pair {
	WHITE-SPACE: nowrap
}
.pair-0 {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; =
PADDING-TOP: 0px
}
.pair-1 {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; =
PADDING-TOP: 0px
}
.pair-loading {
	FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=3D30); ZOOM: 1; =
FONT-WEIGHT: normal
}
.pair-line {
	OVERFLOW: hidden
}
.pair-box {
	PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
PADDING-TOP: 2px
}
.pair-left {
	TEXT-ALIGN: left; FLOAT: left; MARGIN-RIGHT: 10px
}
.pair-right {
	TEXT-ALIGN: right; FLOAT: right; MARGIN-LEFT: 10px
}
.bin-content .pair-left {
	MARGIN-RIGHT: 1px
}
.bin-content .pair-right {
	MARGIN-LEFT: 1px
}
.pair-middle {
	TEXT-ALIGN: center; MARGIN-LEFT: 30%; MARGIN-RIGHT: 30%
}
.categories {
=09
}
.exif {
=09
}
.exif .pair-box {
	PADDING-BOTTOM: 1px
}
.categories .pair-box {
	PADDING-BOTTOM: 1px
}
.exif .pair {
	WHITE-SPACE: normal
}
.categories .pair {
	WHITE-SPACE: normal
}
.exif .pair-0 {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; =
PADDING-TOP: 0px
}
.categories .pair-0 {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; =
PADDING-TOP: 0px
}
.copyright {
	POSITION: relative; PADDING-TOP: 26px
}
.copyright-with-feeds {
	POSITION: relative; PADDING-LEFT: 16px; ZOOM: 1
}
.copyright-feeds {
	BACKGROUND-IMAGE: url(/zf/img/icons/rss-gray-12.png); POSITION: =
absolute; WIDTH: 12px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: left top; HEIGHT: 12px; TOP: 1px; CURSOR: pointer; =
LEFT: 0px
}
.copyright-feeds:hover {
	BACKGROUND-IMAGE: url(/zf/img/icons/rss-12.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top
}
.copyright-loading {
	FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=3D70); ZOOM: 1
}
.tab {
	POSITION: relative; TEXT-ALIGN: left; FLOAT: left
}
.tab-inner {
	HEIGHT: 100%
}
.tabGroup {
	POSITION: relative; OVERFLOW: auto; TOP: 1px
}
.tab-label {
	BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 5px; =
PADDING-LEFT: 8px; PADDING-RIGHT: 8px; BORDER-TOP: 1px solid; =
BORDER-RIGHT: 1px solid; PADDING-TOP: 4px
}
.tab-standard {
	CURSOR: pointer
}
.tab-hover {
	CURSOR: pointer
}
.tab-selected .tab-label {
	BORDER-BOTTOM: medium none; PADDING-BOTTOM: 6px
}
.tab-next .tab-label {
	BORDER-LEFT: medium none
}
.tab-last .tab-label {
	BORDER-LEFT: medium none
}
.tab-frame {
	BORDER-BOTTOM: 1px solid; POSITION: relative; BORDER-LEFT: 1px solid; =
ZOOM: 1; BORDER-TOP: medium none; BORDER-RIGHT: 1px solid
}
.tab-frame-content {
	POSITION: relative; PADDING-BOTTOM: 8px; PADDING-LEFT: 8px; =
PADDING-RIGHT: 8px; PADDING-TOP: 8px
}
.tabGroup-border {
	BORDER-BOTTOM: 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; PADDING-TOP: 5px
}
.tabGroup {
	Z-INDEX: 1
}
.tab-stripe {
	POSITION: absolute; WIDTH: 100%; LEFT: 0px
}
.tab-stripe-top {
	TOP: 0px
}
.tab-stripe-bottom {
	BOTTOM: 0px
}
.tab-stripe-left {
	POSITION: absolute; HEIGHT: 100%; TOP: 0px
}
.tab-stripe-right {
	POSITION: absolute; HEIGHT: 100%; TOP: 0px
}
.tab-stripe-left {
	LEFT: 0px
}
.tab-stripe-right {
	RIGHT: 0px
}
.tab-stripe-center {
	POSITION: absolute; BOTTOM: 0px; TOP: 0px
}
.captionbox {
	LINE-HEIGHT: 16px; OVERFLOW: hidden
}
.captionbox-static {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 10px
}
.caption-border1 {
	BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px =
solid; BORDER-RIGHT: 1px solid
}
.captionbox-photo {
	PADDING-BOTTOM: 4px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; =
PADDING-TOP: 4px
}
.captionbox-photo .gallery {
	MARGIN-TOP: 6px; MARGIN-BOTTOM: 12px
}
.captionbox-photo .title {
	MARGIN-TOP: 6px; MARGIN-BOTTOM: 12px
}
.captionbox-wide .caption {
	MARGIN-TOP: 2px; MARGIN-BOTTOM: 4px
}
.captionbox-regular .caption {
	MARGIN-TOP: 4px; MARGIN-BOTTOM: 4px
}
.caption {
	LINE-HEIGHT: 16px
}
.captionbox-wide-t .gallery {
	TEXT-ALIGN: center
}
.captionbox-wide-t .title {
	TEXT-ALIGN: center; MARGIN-TOP: 6px; MARGIN-BOTTOM: 6px
}
.captionbox-regular-t .title {
	MARGIN-TOP: 6px; MARGIN-BOTTOM: 6px
}
.captionbox-wide-tc .gallery {
=09
}
.captionbox-wide-tc .title {
	MARGIN-TOP: 6px; MARGIN-BOTTOM: 12px
}
.captionbox-wide-tc .caption {
	MARGIN-LEFT: 25px
}
.captionbox-wide-g .gallery {
	TEXT-ALIGN: center; MARGIN-TOP: 6px; MARGIN-BOTTOM: 6px
}
.captionbox-regular-g .gallery {
	MARGIN-TOP: 6px; MARGIN-BOTTOM: 6px
}
.caption-loading {
	FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=3D70); ZOOM: 1
}
.photographer {
	TEXT-ALIGN: center; PADDING-BOTTOM: 4px; LINE-HEIGHT: 16px; MARGIN: 8px =
auto 0px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 4px
}
.bin {
	POSITION: relative; ZOOM: 1
}
.bin-outer {
	POSITION: relative
}
.bin-inner {
	POSITION: relative
}
.bin-fixed-header {
	POSITION: relative; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: =
22px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; HEIGHT: 24px; PADDING-TOP: =
0px
}
.bin-header {
	POSITION: relative; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: =
22px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; HEIGHT: 24px; PADDING-TOP: =
0px
}
.bin-header-left {
	POSITION: absolute; HEIGHT: 100%; TOP: 0px; LEFT: 0px
}
.bin-header-right {
	POSITION: absolute; HEIGHT: 100%; TOP: 0px; RIGHT: 0px
}
.bin-header-middle {
=09
}
.bin-icon {
	MARGIN: 3px 5px 0px 2px; WIDTH: 16px; DISPLAY: none; FLOAT: left; =
HEIGHT: 16px
}
.bin-feeds {
	BACKGROUND-IMAGE: url(/zf/img/icons/rss-gray-12.png); POSITION: =
absolute; WIDTH: 12px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: left top; HEIGHT: 12px; TOP: 6px; CURSOR: pointer
}
.bin-feeds:hover {
	BACKGROUND-IMAGE: url(/zf/img/icons/rss-12.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top
}
.bin-dynamic .bin-feeds {
	RIGHT: 27px
}
.bin-static .bin-feeds {
	RIGHT: 6px
}
.bin-header .button {
	POSITION: absolute; TOP: 3px; RIGHT: 4px
}
.bin-header .button .image {
	WIDTH: 16px; HEIGHT: 16px
}
.bin-expanded .bin-header .button .image {
	BACKGROUND-IMAGE: url(/zf/img/layout/collapse.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top
}
.bin-collapsed .bin-header .button .image {
	BACKGROUND-IMAGE: url(/zf/img/layout/expand.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top
}
.bin-title:hover {
	TEXT-DECORATION: none
}
.bin-collapsed .bin-content {
	DISPLAY: none
}
.bin-expanded .bin-content {
	DISPLAY: block
}
.bin-content {
	POSITION: relative; PADDING-BOTTOM: 8px; PADDING-LEFT: 5px; =
PADDING-RIGHT: 5px; PADDING-TOP: 8px
}
.bin-content-left {
	POSITION: absolute; BOTTOM: 0px; TOP: 0px; LEFT: 0px
}
.bin-content-right {
	POSITION: absolute; BOTTOM: 0px; TOP: 0px; RIGHT: 0px
}
.bin-border HR {
	DISPLAY: none
}
.bin-border {
	POSITION: relative; LINE-HEIGHT: 0px; HEIGHT: 0px; OVERFLOW: hidden
}
.bin-bottom-left {
	POSITION: absolute; HEIGHT: 100%; TOP: 0px; LEFT: 0px
}
.bin-bottom-right {
	POSITION: absolute; HEIGHT: 100%; TOP: 0px; RIGHT: 0px
}
.bin-bottom-middle {
	POSITION: absolute; HEIGHT: 100%; TOP: 0px; LEFT: 0px
}
.aboutBin {
	OVERFLOW-X: hidden
}
.breadcrumbsBin .bin-content {
	PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; =
PADDING-TOP: 4px
}
.infoBin .bin-content {
	PADDING-BOTTOM: 4px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; =
MARGIN-BOTTOM: 2px; PADDING-TOP: 4px
}
DIV.bin-no-suffix .bin-title-suffix {
	DISPLAY: none
}
.contactInfo {
	BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; BORDER-COLLAPSE: collapse; =
BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px
}
.contactInfo TR {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; VERTICAL-ALIGN: top; PADDING-TOP: 0px
}
TD {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; VERTICAL-ALIGN: top; PADDING-TOP: 0px
}
.contactInfo .label {
	TEXT-ALIGN: right; PADDING-RIGHT: 10px; WHITE-SPACE: nowrap
}
.contactInfo .value {
	PADDING-BOTTOM: 3px; WIDTH: 100%
}
.pager {
	POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; =
PADDING-LEFT: 2px; PADDING-RIGHT: 2px; HEIGHT: 19px; OVERFLOW: hidden; =
PADDING-TOP: 2px
}
.pager-o {
	POSITION: relative; FLOAT: left; HEIGHT: 19px; LEFT: 50%
}
.pager-i {
	POSITION: relative; FLOAT: left; HEIGHT: 19px; LEFT: -50%
}
.pager A {
	BORDER-BOTTOM: 1px solid; MIN-WIDTH: 15px; TEXT-ALIGN: center; =
BORDER-LEFT: 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 17px; MARGIN: =
0px 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; DISPLAY: block; =
WHITE-SPACE: nowrap; FLOAT: left; HEIGHT: 17px; FONT-SIZE: 11px; =
BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 0px
}
.pager A:hover {
	TEXT-DECORATION: none
}
.pager A:active {
	TEXT-DECORATION: none
}
.pager A.pager-s {
	MARGIN-LEFT: 20px
}
.pager A.pager-c {
	CURSOR: default
}
.pager {
	PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
PADDING-TOP: 4px
}
.pg {
	OVERFLOW: visible
}
.pg .pv {
	BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: =
0px; PADDING-TOP: 0px
}
.pv-img {
	WIDTH: 100%; HEIGHT: 100%
}
.pf .pv-img {
	FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=3D100)
}
.pf-loaded .pv-iefix {
	Z-INDEX: -1; POSITION: absolute; FILTER: =
progid:DXImageTransform.Microsoft.Alpha(opacity=3D100); =
BACKGROUND-COLOR: black; WIDTH: 100%; HEIGHT: 100%; TOP: 0px; LEFT: 0px
}
.pv-s-password .pv-iefix {
	DISPLAY: none
}
A.pv-inner {
	TEXT-DECORATION: none; -moz-outline-style: none; -moz-user-focus: =
ignore
}
.pv-border {
	Z-INDEX: -1; POSITION: absolute; BORDER-BOTTOM-STYLE: solid; =
PADDING-BOTTOM: 0px; BORDER-RIGHT-STYLE: solid; PADDING-LEFT: 0px; =
WIDTH: 100%; PADDING-RIGHT: 0px; BORDER-TOP-STYLE: solid; HEIGHT: 100%; =
BORDER-LEFT-STYLE: solid; PADDING-TOP: 0px
}
.pf .pv-border {
	FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=3D100)
}
.pv .pv-inner {
	Z-INDEX: 1
}
.pv-shadow {
	POSITION: absolute; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; =
BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px
}
.pv-shadow-s {
	POSITION: absolute; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; =
BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px
}
.pv-shadow-h {
	POSITION: absolute; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; =
BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px
}
.pv-shadow {
	DISPLAY: block
}
.pv-shadow-s {
	DISPLAY: block
}
.pv-shadow-h {
	DISPLAY: none
}
.pv-ihover .pv-shadow-s {
	DISPLAY: none
}
.pv-ihover .pv-shadow-h {
	DISPLAY: block
}
.pv-folder {
	POSITION: absolute; DISPLAY: block; -moz-outline-style: none; =
-moz-user-focus: ignore
}
.pv-pad {
	POSITION: absolute; DISPLAY: block; -moz-outline-style: none; =
-moz-user-focus: ignore
}
.pv-wait {
	BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-LEFT-WIDTH: 0px
}
.pv-wait {
	MARGIN-TOP: -11px; MARGIN-LEFT: -11px; TOP: 50%; LEFT: 50%
}
.pf .pv-wait {
	MARGIN: 0px; TOP: 8px; LEFT: 8px
}
.pf .pv-s-wait .pv-img {
	FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=3D50)
}
.pf .pv-s-wait .pv-password {
	DISPLAY: none
}
.pv-ac {
	POSITION: absolute; WIDTH: 11px; HEIGHT: 16px; TOP: -5px; LEFT: -5px
}
.folder .pv-ac {
	TOP: -10px; LEFT: -18px
}
.pv-type {
	POSITION: absolute; WIDTH: 16px; BOTTOM: -5px; HEIGHT: 16px; LEFT: -5px
}
.pv-index {
	POSITION: absolute; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; =
PADDING-RIGHT: 3px; DISPLAY: none; TOP: 0px; RIGHT: 0px; PADDING-TOP: =
0px
}
.pv-ihover .pv-index {
	DISPLAY: block
}
.pg-method-1 .pg-selected .pv-index {
	DISPLAY: block
}
.pv-censored {
	POSITION: absolute; TEXT-ALIGN: center; BACKGROUND-COLOR: red; WIDTH: =
100%; FONT-FAMILY: Verdana, Helvetica, Arial, sans-serif; COLOR: white; =
TOP: 50%; FONT-WEIGHT: bold; LEFT: 0px
}
.pg .pv-censored {
	LINE-HEIGHT: 30px; MARGIN-TOP: -15px; HEIGHT: 30px; FONT-SIZE: 10px
}
.pf .pv-censored {
	LINE-HEIGHT: 100px; MARGIN-TOP: -50px; HEIGHT: 100px; FONT-SIZE: 24px
}
.pv-label {
	POSITION: absolute; TEXT-ALIGN: center
}
.pv-label .title {
	TEXT-ALIGN: center; WORD-WRAP: break-word; MARGIN-BOTTOM: 1px; =
MAX-HEIGHT: 30px; OVERFLOW: hidden
}
.pv-label .pad-0 {
	DISPLAY: block
}
.pv-label .pad-1 {
	DISPLAY: block
}
.pv-label .pad-2 {
	DISPLAY: none
}
.pv-ohover .pv-label .pad-1 {
	DISPLAY: none
}
.pv-ohover .pv-label .pad-2 {
	DISPLAY: block
}
DIV.pg-recent .pv-label .pad-1 {
	DISPLAY: none
}
DIV.pg-recent .pv-ohover .pv-label .pad-1 {
	DISPLAY: block
}
DIV.pg-recent .pv-label .pad-2 {
	DISPLAY: block
}
DIV.pg-recent .pv-ohover .pv-label .pad-2 {
	DISPLAY: none
}
.pg-method-10 .pv .folder {
	TOP: 40px; LEFT: 40px
}
.pg-method-10 .folder .pv-label {
	TOP: 112px; LEFT: -40px
}
.pg-method-11 .folder .pv-label {
	TOP: 180px; LEFT: -60px
}
.pg .pv-folder {
	WIDTH: 120px; HEIGHT: 120px; TOP: -28px; LEFT: -20px
}
.pg-method-11 .pv-folder {
	WIDTH: 180px; HEIGHT: 180px; TOP: -44px; LEFT: -30px
}
.pvp-tp-method-0 .pv {
	MARGIN: 4px 1px 3px; WIDTH: 140px; HEIGHT: 185px
}
.pvp-tp-method-0 .pv-outer {
	TOP: 12px; LEFT: 30px
}
.pvp-tp-method-0 .pv-label {
	WIDTH: 140px; HEIGHT: 66px; TOP: 97px; LEFT: -30px
}
.pvp-tp-method-10 .pv {
	MARGIN: 1px 1px 0px; WIDTH: 160px; HEIGHT: 213px
}
.pvp-tp-method-10 .pv-outer {
	TOP: 12px; LEFT: 20px
}
.pvp-tp-method-10 .pv-label {
	WIDTH: 160px; HEIGHT: 66px; TOP: 135px; LEFT: -20px
}
.pvp-tp-method-10 .pv .folder {
	TOP: 35px; LEFT: 40px
}
.pvp-tp-method-11 .pv {
	MARGIN: 4px; WIDTH: 232px; HEIGHT: 293px
}
.pvp-tp-method-11 .pv-outer {
	TOP: 12px; LEFT: 16px
}
.pvp-tp-method-11 .pv-label {
	WIDTH: 232px; HEIGHT: 73px; TOP: 220px; LEFT: -16px
}
.pvp-tp-method-11 .pv .folder {
	TOP: 52px; LEFT: 56px
}
.pvp-tp-method-11 .pv-pad {
	WIDTH: 232px; HEIGHT: 224px; TOP: -12px; LEFT: -16px
}
.pvp-tp-method-11 .folder .pv-pad {
	TOP: -52px; LEFT: -56px
}
.pvp-t-method-0 .pv {
	MARGIN: 2px; WIDTH: 112px; HEIGHT: 157px
}
.pvp-t-method-0 .pv-outer {
	TOP: 16px; LEFT: 16px
}
.pvp-t-method-0 .pv-label {
	WIDTH: 112px; HEIGHT: 40px; TOP: 99px; LEFT: -16px
}
.pvp-t-method-10 .pv {
	MARGIN: 2px; WIDTH: 152px; HEIGHT: 197px
}
.pvp-t-method-10 .pv-outer {
	TOP: 16px; LEFT: 16px
}
.pvp-t-method-10 .pv-label {
	WIDTH: 152px; HEIGHT: 40px; TOP: 137px; LEFT: -16px
}
.pvp-t-method-11 .pv {
	MARGIN: 2px; WIDTH: 232px; HEIGHT: 277px
}
.pvp-t-method-11 .pv-outer {
	TOP: 12px; LEFT: 16px
}
.pvp-t-method-11 .pv-label {
	WIDTH: 232px; HEIGHT: 41px; TOP: 220px; LEFT: -16px
}
.pvp-t-method-11 .pv .folder {
	TOP: 54px; LEFT: 56px
}
.pvp-t-method-11 .pv-pad {
	WIDTH: 232px; HEIGHT: 224px; TOP: -12px; LEFT: -16px
}
.pvp-t-method-11 .folder .pv-pad {
	TOP: -54px; LEFT: -56px
}
.pvp-p-method-0 .pv {
	MARGIN: 2px; WIDTH: 112px; HEIGHT: 152px
}
.pvp-p-method-0 .pv-outer {
	TOP: 16px; LEFT: 16px
}
.pvp-p-method-0 .pv-label {
	WIDTH: 112px; HEIGHT: 40px; TOP: 94px; LEFT: -16px
}
.pvp-p-method-10 .pv {
	MARGIN: 2px; WIDTH: 152px; HEIGHT: 192px
}
.pvp-p-method-10 .pv-outer {
	TOP: 16px; LEFT: 16px
}
.pvp-p-method-10 .pv-label {
	WIDTH: 152px; HEIGHT: 40px; TOP: 132px; LEFT: -16px
}
.pvp-p-method-10 .pv .folder {
	TOP: 41px
}
.pvp-p-method-11 .pv {
	MARGIN: 2px; WIDTH: 232px; HEIGHT: 272px
}
.pvp-p-method-11 .pv-outer {
	TOP: 16px; LEFT: 16px
}
.pvp-p-method-11 .pv-label {
	WIDTH: 232px; HEIGHT: 36px; TOP: 220px; LEFT: -16px
}
.pvp-p-method-11 .pv .folder {
	TOP: 56px; LEFT: 56px
}
.pvp-p-method-11 .pv-pad {
	WIDTH: 232px; HEIGHT: 232px; TOP: -16px; LEFT: -16px
}
.pvp-p-method-11 .folder .pv-pad {
	TOP: -56px; LEFT: -56px
}
.pvp-method-0 .pv {
	MARGIN: 2px; WIDTH: 112px; HEIGHT: 112px
}
.pvp-method-0 .pv-outer {
	TOP: 16px; LEFT: 16px
}
.pvp-method-10 .pv {
	MARGIN: 1px; WIDTH: 148px; HEIGHT: 148px
}
.pvp-method-10 .pv-outer {
	TOP: 14px; LEFT: 14px
}
.pvp-method-11 .pv {
	MARGIN: 2px; WIDTH: 232px; HEIGHT: 232px
}
.pvp-method-11 .pv-outer {
	TOP: 16px; LEFT: 16px
}
.pvp-method-11 .pv .folder {
	TOP: 56px; LEFT: 56px
}
.pvp-method-11 .pv-pad {
	WIDTH: 232px; HEIGHT: 232px; TOP: -16px; LEFT: -16px
}
.pvp-method-11 .folder .pv-pad {
	TOP: -56px; LEFT: -56px
}
.pg-method-0 .pv-inner {
	WIDTH: 80px; HEIGHT: 53px; TOP: 14px; LEFT: 0px
}
.pg-method-10 .folder .pv-inner {
	WIDTH: 80px; HEIGHT: 53px; TOP: 14px; LEFT: 0px
}
.pg-method-11 .folder .pv-inner {
	WIDTH: 120px; HEIGHT: 80px; TOP: 20px; LEFT: 0px
}
.pg-method-10 .pv-inner {
	WIDTH: 120px; HEIGHT: 80px; TOP: 20px; LEFT: 0px
}
.pg-method-11 .pv-inner {
	WIDTH: 200px; HEIGHT: 133px; TOP: 34px; LEFT: 0px
}
.pg-method-0 .pv-s-password .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/thumbnail-placeholder-80.jpg)
}
.pg-method-10 .pv-s-password .folder .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/thumbnail-placeholder-80.jpg)
}
.pg-method-11 .pv-s-password .folder .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/thumbnail-placeholder-120.gif)
}
.pg-method-10 .pv-s-password .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/thumbnail-placeholder-120.gif)
}
.pg-method-11 .pv-s-password .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/thumbnail-placeholder-200.gif)
}
.pg-method-0 .pv-s-3 .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/protected-photo-80.jpg)
}
.pg-method-0 .pv-s-noaccess .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/protected-photo-80.jpg)
}
.pg-method-10 .pv-s-3 .folder .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/protected-photo-80.jpg)
}
.pg-method-10 .pv-s-noaccess .folder .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/protected-photo-80.jpg)
}
.pg-method-10 .pv-s-3 .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/protected-photo-120.gif)
}
.pg-method-10 .pv-s-noaccess .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/protected-photo-120.gif)
}
.pg-method-11 .pv-s-3 .folder .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/protected-photo-120.gif)
}
.pg-method-11 .pv-s-noaccess .folder .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/protected-photo-120.gif)
}
.pg-method-11 .pv-s-3 .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/protected-photo-200.gif)
}
.pg-method-11 .pv-s-noaccess .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/protected-photo-200.gif)
}
.pg .pv-s-2 .folder .pv-inner {
	DISPLAY: none
}
.pvp-method-1 .pv {
	PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 64px; PADDING-RIGHT: =
2px; HEIGHT: 64px; PADDING-TOP: 2px
}
.pvp-method-1 .pv-outer {
	TOP: 2px; LEFT: 2px
}
.pvp-method-1 .pv-inner {
	WIDTH: 60px; HEIGHT: 60px
}
.pvp-method-1 .pv-s-password .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/thumbnail-placeholder-60.jpg)
}
.myphoto {
=09
}
.myphoto .pv {
=09
}
.myphoto .pv-outer {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: =
14px; FLOAT: left; HEIGHT: auto; PADDING-TOP: 8px
}
.myphoto .pv-inner {
	POSITION: relative; WIDTH: 83px; HEIGHT: 111px; TOP: 0px !important; =
LEFT: 0px !important
}
.myphoto .pv-s-empty .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/photog-placeholder-bw.png); POSITION: =
relative; WIDTH: 83px; BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: left top; HEIGHT: 111px
}
.pf .pv-outer {
	ZOOM: 1
}
.pf-plane {
	ZOOM: 1
}
.pf-frame {
	Z-INDEX: 1; POSITION: relative
}
.pf-plane {
	POSITION: absolute; WIDTH: 100%
}
.pf .pv-inner {
	POSITION: relative; MARGIN: 0px auto; CURSOR: auto; LEFT: 0px =
!important
}
.pv-overlay {
	BACKGROUND-IMAGE: url(/zf/img/null.gif); POSITION: absolute; WIDTH: =
100%; BACKGROUND-REPEAT: no-repeat; HEIGHT: 100%; TOP: 0px; LEFT: 0px
}
.pv-password {
	POSITION: absolute; FLOAT: left; TOP: 45%; LEFT: 50%
}
.pv-password .password-box {
	POSITION: relative; MIN-HEIGHT: 100px; WIDTH: 340px; TOP: -75px; LEFT: =
-50%
}
.popup {
	Z-INDEX: 6; BORDER-BOTTOM: 2px solid; POSITION: absolute; BORDER-LEFT: =
2px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: =
10px; DISPLAY: none; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid; =
PADDING-TOP: 10px
}
.popup-title {
	PADDING-BOTTOM: 12px; FONT-WEIGHT: bold
}
.popup-footer {
	HEIGHT: 24px; PADDING-TOP: 10px
}
.popup-footer .button {
	MARGIN: 0px 4px 0px 30px; FLOAT: right
}
.popup-footer A {
	PADDING-BOTTOM: 0px; LINE-HEIGHT: 17px; PADDING-LEFT: 30px; =
PADDING-RIGHT: 4px; FLOAT: right; PADDING-TOP: 0px
}
.feeds {
	WIDTH: 200px
}
.feeds-line {
	LINE-HEIGHT: 18px; PADDING-LEFT: 10px
}
.feeds-pair {
	TEXT-ALIGN: right; WIDTH: 80px; PADDING-RIGHT: 10px; FLOAT: right
}
.links {
	WIDTH: 560px
}
.links-box {
	PADDING-BOTTOM: 2px; LINE-HEIGHT: 14px; PADDING-LEFT: 4px; WIDTH: =
550px; PADDING-RIGHT: 4px; HEIGHT: 14px; PADDING-TOP: 2px
}
.links-border1 {
	BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px =
solid; BORDER-RIGHT: 1px solid
}
.links-tip {
	PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
PADDING-TOP: 2px
}
.links-line {
	PADDING-BOTTOM: 5px; LINE-HEIGHT: 16px; CLEAR: both
}
.links-label {
	PADDING-BOTTOM: 4px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; =
PADDING-TOP: 2px
}
.links-share {
	POSITION: relative; FLOAT: right
}
.links-share-label {
	POSITION: absolute; RIGHT: 40px
}
.links-fb-icon {
	BACKGROUND-IMAGE: url(/zf/img/icons/facebook-12.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top; RIGHT: 18px
}
.links-twitter-icon {
	BACKGROUND-IMAGE: url(/zf/img/icons/twitter-12.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top; RIGHT: 0px
}
.links-share-icon {
	POSITION: absolute; MARGIN: 1px; WIDTH: 16px; DISPLAY: inline-block; =
BACKGROUND-POSITION: 2px 2px; HEIGHT: 16px; TOP: 0px
}
.links-share-icon-hover {
	BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; MARGIN: 0px; =
BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid
}
.links-tip P {
	MARGIN: 0.5em 0px
}
.links-directLabel {
	TEXT-ALIGN: right; LINE-HEIGHT: 20px; TEXT-INDENT: 8px; WIDTH: 210px
}
.links-direct {
	MARGIN-TOP: 5px
}
.links-container {
	POSITION: relative
}
.links-direct TABLE {
	BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 100%; BORDER-COLLAPSE: =
collapse; BORDER-TOP: 0px; BORDER-RIGHT: 0px
}
.links-direct TD {
	PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
PADDING-TOP: 1px
}
.links-direct .links-box {
	PADDING-BOTTOM: 1px; MARGIN: 0px 0px 0px 14px; PADDING-LEFT: 4px; =
WIDTH: 342px; PADDING-RIGHT: 4px; PADDING-TOP: 1px
}
.links-warning {
	Z-INDEX: 0; BORDER-BOTTOM: 1px solid; POSITION: absolute; BORDER-LEFT: =
1px solid; WIDTH: 569px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; =
LEFT: -5px
}
.links-warningText {
	POSITION: absolute; PADDING-BOTTOM: 2px; LINE-HEIGHT: 14px; =
PADDING-LEFT: 20px; PADDING-RIGHT: 6px; FLOAT: left; HEIGHT: 14px; TOP: =
-9px; FONT-WEIGHT: bold; PADDING-TOP: 2px; LEFT: 16px
}
.links-warningIcon {
	BACKGROUND-IMAGE: url(/zf/img/icons/warning-12.png); POSITION: =
absolute; WIDTH: 12px; BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: left top; HEIGHT: 12px; TOP: 3px; LEFT: 4px
}
.listheader {
	PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 0px; =
FONT-WEIGHT: bold; PADDING-TOP: 8px
}
.listitem {
	PADDING-LEFT: 14px; PADDING-TOP: 3px
}
.exif-popup .listheader {
	PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; =
PADDING-TOP: 3px
}
.exif-popup .listitem {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-TOP: 3px
}
.shortexif {
	POSITION: relative; TEXT-ALIGN: left; MARGIN: 2px 7px; ZOOM: 1
}
.shortexif A:hover {
	TEXT-DECORATION: none
}
.shortexif-tip {
	Z-INDEX: 10; BORDER-BOTTOM: 2px solid; POSITION: absolute; TEXT-ALIGN: =
left; FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=3D90); =
BORDER-LEFT: 2px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: =
200px; PADDING-RIGHT: 7px; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px =
solid; PADDING-TOP: 7px
}
.shortexif-text SPAN {
	WHITE-SPACE: nowrap
}
.shortexif-loading {
	FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=3D70); ZOOM: 1
}
.exif-loading {
	FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=3D70); =
PADDING-LEFT: 5px; ZOOM: 1
}
.exif-popup {
	Z-INDEX: 5; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 260px; =
PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.exif-popup-content {
	PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; PADDING-LEFT: 5px; =
PADDING-RIGHT: 5px; PADDING-TOP: 5px
}
.exif {
	OVERFLOW-X: hidden
}
.exif-popup-background {
	Z-INDEX: -1; POSITION: absolute; FILTER: =
progid:DXImageTransform.Microsoft.Alpha(opacity=3D90); WIDTH: 100%; =
HEIGHT: 100%; TOP: 0px; LEFT: 0px
}
.exif-name {
	TEXT-ALIGN: right; LINE-HEIGHT: 16px; WIDTH: 120px; PADDING-RIGHT: =
10px; FLOAT: left; HEIGHT: auto
}
.exif-value {
	TEXT-ALIGN: left; LINE-HEIGHT: 16px; HEIGHT: auto; MARGIN-LEFT: 130px
}
.password .copyright {
	TEXT-ALIGN: center; LINE-HEIGHT: 20px; PADDING-TOP: 10px
}
.password .center-outer {
	POSITION: relative; TOP: 48%
}
.password .center-inner {
	POSITION: relative; WIDTH: 380px; HEIGHT: 300px; TOP: -72px
}
.password-box {
	BORDER-BOTTOM: 2px solid; POSITION: relative; BORDER-LEFT: 2px solid; =
PADDING-BOTTOM: 18px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; =
FONT-SIZE: 12px; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid; =
PADDING-TOP: 18px
}
.password-box .text {
	LINE-HEIGHT: 18px
}
.password-box .item {
	LINE-HEIGHT: 22px; MARGIN: 10px 0px 0px; CLEAR: left
}
.password-box .input {
	LINE-HEIGHT: 22px
}
.dlinput .password-box .separator {
	BORDER-BOTTOM: 0px; MARGIN: 10px 0px
}
.password-box .prompt {
	TEXT-ALIGN: right; WIDTH: 30%; PADDING-RIGHT: 10px; FLOAT: left
}
.password-hint-text {
	WIDTH: 65%; FLOAT: left
}
.password-box .form {
	MARGIN: 0px
}
.password-box INPUT {
	PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 160px; PADDING-RIGHT: =
2px; HEIGHT: 18px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px
}
.password-box A {
	PADDING-LEFT: 8px; FONT-WEIGHT: bold
}
.password-box .incorrect {
	TEXT-ALIGN: center; MARGIN-TOP: 12px; FONT-WEIGHT: bold
}
#passwordPopup {
	POSITION: absolute; DISPLAY: none; TOP: 0px; LEFT: 0px
}
.download-input {
	Z-INDEX: 10; POSITION: absolute; WIDTH: 450px
}
.download-input .separator {
	MARGIN-TOP: 8px
}
.download-input .buttons {
	HEIGHT: 25px; PADDING-TOP: 10px
}
.download-input .button {
	PADDING-LEFT: 10px; FLOAT: right
}
.overlay-iroot {
	Z-INDEX: 2; POSITION: absolute; WIDTH: 100%; HEIGHT: 0px; TOP: 0px; =
LEFT: 0px
}
.overlay-oroot {
	Z-INDEX: 10; POSITION: absolute; WIDTH: 0px; HEIGHT: 0px; TOP: 0px; =
LEFT: 0px
}
.overlay-hotspot {
	POSITION: absolute
}
.overlay-window {
	FONT-FAMILY: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; =
COLOR: #f0f0f0; FONT-SIZE: 11px
}
.overlay-menu-hotspot {
	WIDTH: 32px; HEIGHT: 100%; OVERFLOW: hidden; TOP: 0px; LEFT: 0px
}
.overlay-menu-bar {
	POSITION: absolute; WIDTH: 100%; HEIGHT: 100%; TOP: 0px; LEFT: -32px
}
.overlay-background {
	Z-INDEX: -1; POSITION: absolute; FILTER: =
progid:DXImageTransform.Microsoft.Alpha(opacity=3D70); BACKGROUND-COLOR: =
black; WIDTH: 100%; HEIGHT: 100%; TOP: 0px; LEFT: 0px
}
.overlay-background DIV {
	VISIBILITY: hidden
}
.overlay-exif-icon {
	FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=3D1); WIDTH: =
20px; BACKGROUND: url(/zf/img/layout/info-overlay-icon-20.gif) =
no-repeat; HEIGHT: 20px; TOP: 3px; CURSOR: pointer; RIGHT: 3px
}
.overlayMenu {
	POSITION: absolute; PADDING-BOTTOM: 4px; FONT-FAMILY: "Lucida Grande", =
Verdana, Helvetica, Arial, sans-serif; COLOR: #f0f0f0; FONT-SIZE: 11px
}
.overlayMenu .item {
	POSITION: relative; LINE-HEIGHT: 20px; BACKGROUND-REPEAT: no-repeat; =
HEIGHT: 20px; CURSOR: pointer
}
.overlayMenu .item-hover {
	BACKGROUND-COLOR: #606060
}
.overlayMenu .text {
	WHITE-SPACE: nowrap
}
.overlayMenu-separator {
	BORDER-BOTTOM: #606060 2px solid; LINE-HEIGHT: 0px; BACKGROUND-COLOR: =
red; MARGIN: 4px 4px 0px; HEIGHT: 0px; OVERFLOW: hidden
}
.iconMenu .overlay-background {
	DISPLAY: none
}
.iconMenu .item {
	FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=3D100); MARGIN: =
4px 0px 0px 6px; WIDTH: 26px; BACKGROUND-POSITION: 2px 2px
}
.iconMenu .item-addToCart {
	BACKGROUND-IMAGE: url(/zf/img/layout/cart-bw-16.gif)
}
.iconMenu .item-share {
	BACKGROUND-IMAGE: url(/zf/img/layout/send-link.gif)
}
.iconMenu .item-dimLights {
	BACKGROUND-IMAGE: url(/zf/img/layout/larger-image.gif)
}
.iconMenu .item-download {
	BACKGROUND-IMAGE: url(/zf/img/layout/download-original.gif)
}
.iconMenu .item-downloadOriginal {
	BACKGROUND-IMAGE: url(/zf/img/layout/download-original.gif)
}
.iconMenu .item-collect {
	BACKGROUND-IMAGE: url(/zf/img/layout/add-collection.gif)
}
.iconMenu .item-slideshow {
	BACKGROUND-IMAGE: url(/zf/img/layout/play-slideshow.gif)
}
.iconMenu .item-admin {
	BACKGROUND-IMAGE: url(/zf/img/layout/overlay-admin.gif)
}
.photoMenu .item {
	PADDING-BOTTOM: 0px; MARGIN: 4px 4px 0px; PADDING-LEFT: 4px; =
PADDING-RIGHT: 6px; PADDING-TOP: 0px
}
.photoMenu-main .text {
	TEXT-TRANSFORM: uppercase
}
.photoMenu-main .item {
	PADDING-LEFT: 0px; MARGIN-LEFT: 0px
}
.photoMenu-main .icon {
	DISPLAY: none
}
.collectionMenu-box {
	TEXT-ALIGN: left; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; WIDTH: =
285px; PADDING-RIGHT: 8px; FLOAT: left; PADDING-TOP: 8px
}
.collectionMenu-icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/collection-16.png); POSITION: =
absolute; WIDTH: 16px; BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: left top; HEIGHT: 16px; TOP: 5px; LEFT: 4px
}
.collectionMenu-header {
	BORDER-BOTTOM: #202020 1px solid; POSITION: relative; PADDING-BOTTOM: =
8px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; HEIGHT: 18px; FONT-SIZE: =
15px; PADDING-TOP: 4px
}
.collectionMenu-para {
	PADDING-BOTTOM: 15px; LINE-HEIGHT: 150%; PADDING-LEFT: 2px; =
PADDING-RIGHT: 2px; PADDING-TOP: 8px
}
.collectionMenu-button {
	TEXT-ALIGN: center; PADDING-BOTTOM: 4px; LINE-HEIGHT: 14px; =
BACKGROUND-COLOR: #383838; PADDING-LEFT: 8px; WIDTH: 80px; =
PADDING-RIGHT: 8px; FLOAT: right; HEIGHT: 14px; COLOR: #5e86bf; =
MARGIN-LEFT: 8px; FONT-SIZE: 12px; CURSOR: pointer; FONT-WEIGHT: bold; =
PADDING-TOP: 4px
}
.collectionMenu-loading {
	PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; WIDTH: 200px; PADDING-RIGHT: =
4px; HEIGHT: 30px; PADDING-TOP: 4px
}
.collectionMenu-box .overlay-background {
	WIDTH: 100%; HEIGHT: 100%
}
.collectionMenu .item .icon {
	POSITION: absolute; WIDTH: 16px; HEIGHT: 16px; TOP: 4px; LEFT: 4px
}
.collectionMenu .item .text {
	MARGIN-LEFT: 22px
}
.collectionMenu .item-collectNew .icon {
	BACKGROUND: url(/zf/img/layout/new-collection-16.gif) no-repeat
}
.collectionMenu .item-collectEdit .icon {
	BACKGROUND: url(/zf/img/layout/edit-16.gif) no-repeat; TOP: 2px
}
.collectionMenu .icon {
	BACKGROUND: url(/zf/img/layout/collection-12.gif) no-repeat; TOP: 2px
}
.collectionMenu .item .folder {
	COLOR: #c0c0c0
}
.overlay-message {
	Z-INDEX: auto; TEXT-ALIGN: center; LINE-HEIGHT: 30px; MIN-HEIGHT: 30px; =
HEIGHT: auto; VISIBILITY: hidden
}
.overlay-message SPAN {
	PADDING-BOTTOM: 0px; LINE-HEIGHT: 30px; PADDING-LEFT: 30px; =
PADDING-RIGHT: 30px; DISPLAY: block; PADDING-TOP: 0px
}
.overlay-message A:hover {
	TEXT-DECORATION: none
}
.overlay-message-error SPAN {
	COLOR: red
}
.dimlights {
	Z-INDEX: 3; POSITION: absolute; WIDTH: 100%; HEIGHT: 100%; TOP: 0px; =
LEFT: 0px
}
.dimlights .pf-frame {
	MARGIN: 0px 50px
}
.dimlights .pv-inner {
	Z-INDEX: 1
}
.dimlights-decoration .pv-border {
	BORDER-BOTTOM-COLOR: #404040; PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: =
1px; BACKGROUND-COLOR: black; BORDER-TOP-COLOR: #404040; PADDING-LEFT: =
1px; PADDING-RIGHT: 1px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: =
1px; BORDER-RIGHT-COLOR: #404040; BORDER-LEFT-COLOR: #404040; =
BORDER-LEFT-WIDTH: 1px; TOP: -2px; PADDING-TOP: 1px; LEFT: -2px
}
.dimlights-center {
	POSITION: absolute; WIDTH: 100%; TOP: 50%; LEFT: 0px
}
.dimlights-hot {
	BACKGROUND-IMAGE: url(/zf/img/null.gif); Z-INDEX: 1; POSITION: =
absolute; FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=3D40); =
WIDTH: 100%; BACKGROUND-REPEAT: no-repeat; HEIGHT: 300px; TOP: -150px; =
LEFT: 0px
}
.dimlights-pad {
	BACKGROUND-IMAGE: url(/zf/img/null.gif); Z-INDEX: 1; POSITION: =
absolute; FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=3D10); =
WIDTH: 220px; BACKGROUND-REPEAT: no-repeat; HEIGHT: 300px; TOP: -150px; =
CURSOR: pointer
}
.dimlights-left {
	LEFT: 0px
}
.dimlights-right {
	RIGHT: 0px
}
.dimlights-button {
	POSITION: absolute; WIDTH: 40px; HEIGHT: 116px; TOP: 92px
}
.dimlights-left .dimlights-button {
	BACKGROUND-IMAGE: url(/zf/img/layout/dimlights-previous2.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top; LEFT: 10px
}
.dimlights-right .dimlights-button {
	BACKGROUND-IMAGE: url(/zf/img/layout/dimlights-next2.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top; RIGHT: 10px
}
.dimlights-closebox {
	Z-INDEX: 1; POSITION: absolute; FILTER: =
progid:DXImageTransform.Microsoft.Alpha(opacity=3D10); WIDTH: 40px; =
HEIGHT: 40px; TOP: 10px; RIGHT: 10px
}
.dimlights-close {
	BACKGROUND-IMAGE: url(/zf/img/layout/dimlights-close2.png); POSITION: =
relative; WIDTH: 40px; BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: left top; HEIGHT: 40px; CURSOR: pointer
}
.prefetch .prefetch-15 {
	BACKGROUND: url(/zf/img/icons/rss-12.png)
}
.prefetch-photo .prefetch-14 {
	BACKGROUND: url(/zf/img/layout/comments-close.png)
}
.guestbooklink-wide .mailboxlink-view {
	DISPLAY: block; FLOAT: left
}
.guestbooklink-wide .mailboxlink-add {
	DISPLAY: block; FLOAT: right
}
.mailboxlink-view .pair-0 {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
PADDING-TOP: 0px
}
.guestbooklink-compact {
	FLOAT: right
}
.commentslink {
	FLOAT: right; MARGIN-LEFT: 14px
}
.guestbook {
	MAX-WIDTH: 800px
}
.guestbookBin .bin-title-suffix {
	POSITION: absolute; DISPLAY: block; TOP: 0px; RIGHT: 27px
}
.guestbookBin .bin-title {
=09
}
.guestbookBin .bin-header-middle {
	PADDING-RIGHT: 100px
}
.guestbookBin .bin-header {
	OVERFLOW: hidden
}
.guestbookBin .bin-content {
	PADDING-TOP: 2px
}
.guestbook .ml-item {
	MARGIN-LEFT: 12px
}
.guestbook .sb {
	DISPLAY: none
}
.mv {
	PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: =
hidden; PADDING-TOP: 6px
}
.mv-index {
	PADDING-BOTTOM: 2px; PADDING-RIGHT: 3px; DISPLAY: block; FLOAT: left
}
.mv-poster {
	DISPLAY: block; FONT-WEIGHT: bold
}
.mv-s-deleted .mv-poster-name {
	TEXT-DECORATION: line-through
}
.mv-unregistered {
	PADDING-LEFT: 5px
}
.mv-private {
	PADDING-LEFT: 7px
}
.mv-private-icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/lock-red-12.png); POSITION: =
relative; MARGIN: 0px 3px 0px 1px; WIDTH: 8px; DISPLAY: inline-block; =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top; HEIGHT: =
16px; TOP: 3px
}
.mv-header {
	LINE-HEIGHT: 20px; OVERFLOW: hidden
}
.mv-title {
=09
}
.mv-date {
	LINE-HEIGHT: 20px; FLOAT: right
}
.mv-content {
	PADDING-LEFT: 25px; PADDING-TOP: 5px
}
.mv-body {
=09
}
.mv-deleted {
	FLOAT: left; PADDING-TOP: 6px
}
.mv-footer {
	LINE-HEIGHT: 16px; MARGIN-TOP: 6px; OVERFLOW: hidden
}
.mv-controls {
	FLOAT: right
}
.mv-control-separator {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; =
PADDING-TOP: 0px
}
.mv-border1 {
	BORDER-TOP: 1px solid
}
.mv-s-editing .mv-controls {
	VISIBILITY: hidden
}
.mv-s-editing .mv-attachment {
	VISIBILITY: hidden
}
.mv-attachment {
	POSITION: relative; PADDING-LEFT: 45px; WIDTH: 300px
}
.mv-attachment .icon {
	POSITION: absolute; WIDTH: 16px; HEIGHT: 16px; TOP: 0px; LEFT: 25px
}
.mv-attachment A:hover {
	TEXT-DECORATION: none
}
.mv-attachment A:active {
	TEXT-DECORATION: none
}
.mv-attachment-crop .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/comment-crop.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.mv-attachment-area .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/comment-area.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.mv-censored {
	TEXT-ALIGN: center; LINE-HEIGHT: 20px; TEXT-TRANSFORM: uppercase; =
BACKGROUND-COLOR: red; MARGIN-TOP: 4px; FONT-FAMILY: Verdana, Helvetica, =
Arial, sans-serif; HEIGHT: 20px; COLOR: white; FONT-SIZE: 12px; =
FONT-WEIGHT: bold
}
.mv-info {
	PADDING-BOTTOM: 4px; PADDING-LEFT: 25px; PADDING-RIGHT: 0px; =
PADDING-TOP: 5px
}
.mv-info DIV {
	PADDING-BOTTOM: 1px
}
.mv-poster-link {
	BACKGROUND-IMAGE: url(/zf/img/layout/photog-bw-12.png); POSITION: =
relative; MARGIN: 0px 5px; WIDTH: 12px; DISPLAY: inline-block; =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top; HEIGHT: =
12px; TOP: -1px; LEFT: -1px
}
.mv-poster-link:hover {
	BACKGROUND-IMAGE: url(/zf/img/layout/photog-12.png); POSITION: =
relative; WIDTH: 12px; DISPLAY: inline-block; BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top; HEIGHT: 12px; TOP: -1px; LEFT: =
-1px
}
.me {
	POSITION: relative
}
.me-form {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; OVERFLOW: hidden; PADDING-TOP: 0px
}
.me-field {
	POSITION: relative; MARGIN: 5px 0px; PADDING-LEFT: 130px
}
.me-tip {
	TEXT-ALIGN: center; MARGIN: 2px 0px 12px
}
.me-label {
	POSITION: absolute; TEXT-ALIGN: right; LINE-HEIGHT: 22px; WIDTH: 120px; =
HEIGHT: 22px; TOP: 0px; LEFT: 0px
}
.me-required .me-label {
	FONT-WEIGHT: bold
}
.me-input-outer {
	POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; =
PADDING-RIGHT: 4px; PADDING-TOP: 0px
}
.me-input {
	POSITION: relative; PADDING-BOTTOM: 2px; LINE-HEIGHT: 16px; MARGIN: =
0px; PADDING-LEFT: 3px; WIDTH: 100%; PADDING-RIGHT: 3px; HEIGHT: 16px; =
TOP: -1px; PADDING-TOP: 2px; LEFT: -4px
}
.me-readonly .me-input {
	MIN-HEIGHT: 16px; HEIGHT: auto
}
.me-field .me-textarea {
	HEIGHT: 128px; OVERFLOW: auto
}
.me-border1 {
	BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px =
solid; BORDER-RIGHT: 1px solid
}
.me-access {
	MARGIN: 15px 0px
}
.me-attachment {
	MARGIN: 15px 0px 20px
}
.me-radio {
	POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 18px; =
PADDING-RIGHT: 0px; PADDING-TOP: 4px
}
.me-radio INPUT {
	POSITION: absolute; MARGIN-LEFT: 0px; TOP: 0px; LEFT: -4px
}
.me-private-icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/lock-red-12.png); POSITION: =
relative; MARGIN: 0px 3px; WIDTH: 8px; DISPLAY: inline-block; =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top; HEIGHT: =
12px; TOP: -2px
}
.me-disabled-tip {
	DISPLAY: none
}
.me-disabled .me-disabled-tip {
	DISPLAY: block
}
.me-disabled-tip {
	MARGIN: 5px 0px 10px 20px
}
.me-attachment .me-radio {
	PADDING-LEFT: 38px
}
.me-attachment .icon {
	POSITION: absolute; WIDTH: 16px; HEIGHT: 16px; TOP: 5px; LEFT: 18px
}
.me-attachment-text .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/comment-text.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.me-attachment-crop .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/comment-crop.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.me-attachment-area .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/comment-area.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.me-footer {
	POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 20px 0px 10px; =
MIN-HEIGHT: 24px; PADDING-LEFT: 132px; PADDING-RIGHT: 150px; =
PADDING-TOP: 0px
}
.me-buttons {
	POSITION: absolute; TOP: 0px; RIGHT: 0px
}
.me-buttons .abutton {
	FLOAT: right; MARGIN-LEFT: 5px
}
.me-message {
	TEXT-ALIGN: left; LINE-HEIGHT: 24px
}
.me-top {
	DISPLAY: none
}
.me-header {
	DISPLAY: none
}
.me-header {
	PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
PADDING-TOP: 6px
}
.me-s-editing .me-top {
	DISPLAY: block
}
.me-s-editing .me-header {
	DISPLAY: block
}
.me-s-editing .me-access {
	DISPLAY: none
}
.me-s-editing .me-name {
	DISPLAY: none
}
.me-add {
	DISPLAY: block
}
.me-save {
	DISPLAY: none
}
.me-s-editing .me-add {
	DISPLAY: none
}
.me-s-editing .me-save {
	DISPLAY: block
}
.me-access-info {
	MARGIN: 10px 0px 0px 130px
}
.me-public-info-text {
	DISPLAY: none
}
.me-private-info-text {
	DISPLAY: none
}
.me-public-info .me-public-info-text {
	DISPLAY: block
}
.me-private-info .me-private-info-text {
	DISPLAY: block
}
.me-saving {
	POSITION: absolute; WIDTH: 100%; DISPLAY: none; HEIGHT: 100%; TOP: 0px; =
LEFT: 0px
}
.me-continue {
	POSITION: absolute; WIDTH: 100%; DISPLAY: none; HEIGHT: 100%; TOP: 0px; =
LEFT: 0px
}
.me-s-continue .me-form {
	VISIBILITY: hidden
}
.me-s-saving .me-form {
	VISIBILITY: hidden
}
.me-s-saving .me-saving {
	DISPLAY: block
}
.me-s-continue .me-continue {
	DISPLAY: block
}
.me-saving-message {
	POSITION: relative; TEXT-ALIGN: center; MARGIN-TOP: -20px; TOP: 50%
}
.me-continue-message {
	POSITION: relative; TEXT-ALIGN: center; MARGIN-TOP: -20px; TOP: 50%
}
.me-saving-message-inner {
	POSITION: relative; PADDING-LEFT: 30px
}
.me-waiting {
	POSITION: absolute; WIDTH: 23px; HEIGHT: 23px; TOP: -5px; LEFT: 0px
}
.me-continue .me-footer {
	POSITION: absolute; BOTTOM: 0px; RIGHT: 0px
}
.ml-s-not-allowed .ml-not-allowed {
	DISPLAY: block
}
.ml-s-login-required .ml-login-required {
	DISPLAY: block
}
.ml-s-adding .ml-new-prompt {
	DISPLAY: block
}
.ml-s-has-more .ml-more {
	DISPLAY: block
}
.ml-s-loading .ml-loading {
	DISPLAY: block
}
.ml-s-empty .ml-empty {
	DISPLAY: block
}
.ml-s-not-allowed .ml-addlink {
	DISPLAY: none
}
.ml-s-login-required .ml-addlink {
	DISPLAY: none
}
.ml-s-adding .ml-addlink {
	DISPLAY: none
}
.mv-s-editing .ml-addlink {
	DISPLAY: none
}
.ml-s-not-allowed .ml-toplink {
	DISPLAY: none
}
.ml-s-login-required .ml-toplink {
	DISPLAY: none
}
.ml-s-adding .ml-toplink {
	DISPLAY: none
}
.mv-s-editing .ml-toplink {
	DISPLAY: none
}
.ml-header {
	POSITION: relative; PADDING-BOTTOM: 8px; MIN-HEIGHT: 24px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 8px
}
.ml-addlink {
	PADDING-LEFT: 24px
}
.ml-addlink .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/icon-plus-16.png); DISPLAY: block; =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top; TOP: 4px; =
LEFT: 4px
}
.ml-toplink {
	POSITION: absolute; TOP: 8px; RIGHT: 0px
}
.ml-toplink .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/icon-go-top.png); DISPLAY: block; =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top; TOP: 3px; =
LEFT: 1px
}
.ml-not-allowed {
	TEXT-ALIGN: center
}
.ml-login-required {
	TEXT-ALIGN: center
}
.ml-new-prompt {
	TEXT-ALIGN: center
}
.ml-login-required-note {
	MARGIN-TOP: 4px
}
.ml-not-allowed {
	LINE-HEIGHT: 24px
}
.ml-new-prompt {
	LINE-HEIGHT: 24px
}
.ml-more {
	PADDING-TOP: 5px
}
.ml-more A {
	LINE-HEIGHT: 20px; PADDING-LEFT: 3px
}
.ml-border1 {
	BORDER-BOTTOM: 1px solid
}
.ml-border2 {
	BORDER-TOP: 1px solid
}
.ml-empty {
	PADDING-BOTTOM: 0px; LINE-HEIGHT: 20px; PADDING-LEFT: 3px; =
PADDING-RIGHT: 0px; PADDING-TOP: 6px
}
.ml-outer {
	POSITION: relative
}
.ml-inner {
	POSITION: relative
}
.ml-item {
	POSITION: relative
}
.ml-morecount {
	PADDING-RIGHT: 3px
}
.cap-arena {
	POSITION: absolute; WIDTH: 100%; BACKGROUND: url(/zf/img/null.gif); =
HEIGHT: 100%; VISIBILITY: hidden; TOP: 0px; LEFT: 0px
}
.cap-active {
	VISIBILITY: inherit
}
.cap-active-ro {
	VISIBILITY: inherit
}
.cap-active {
	CURSOR: crosshair
}
.cap-active DIV {
	CURSOR: crosshair
}
.cap-oframe {
	BORDER-BOTTOM: #ff8d42 1px solid; POSITION: absolute; BORDER-LEFT: =
#ff8d42 1px solid; VISIBILITY: hidden; BORDER-TOP: #ff8d42 1px solid; =
BORDER-RIGHT: #ff8d42 1px solid
}
.cap-iframe {
	BORDER-BOTTOM: #a8d231 5px solid; POSITION: absolute; FILTER: =
progid:DXImageTransform.Microsoft.Alpha(opacity=3D30); BORDER-LEFT: =
#a8d231 5px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; WIDTH: 100%; =
PADDING-RIGHT: 1px; HEIGHT: 100%; BORDER-TOP: #a8d231 5px solid; TOP: =
-6px; BORDER-RIGHT: #a8d231 5px solid; PADDING-TOP: 1px; LEFT: -6px
}
.cap-close {
	BACKGROUND-IMAGE: url(/zf/img/icons/cancel-16.png); POSITION: absolute; =
WIDTH: 16px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left =
top; HEIGHT: 16px; TOP: -9px; CURSOR: pointer; RIGHT: -9px
}
.cap-active .cap-close {
	VISIBILITY: hidden
}
.ccp-arena {
	POSITION: absolute; WIDTH: 100%; HEIGHT: 100%; VISIBILITY: hidden; TOP: =
0px; LEFT: 0px
}
.ccp-active {
	VISIBILITY: inherit
}
.ccp-active-ro {
	VISIBILITY: inherit
}
.ccp-frame {
	BORDER-BOTTOM: #ff8d42 2px solid; POSITION: absolute; BORDER-LEFT: =
#ff8d42 2px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; BACKGROUND: url(/zf/img/null.gif); BORDER-TOP: =
#ff8d42 2px solid; CURSOR: move; BORDER-RIGHT: #ff8d42 2px solid; =
PADDING-TOP: 0px
}
.ccp-active-ro .ccp-frame {
	BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: =
none; BORDER-LEFT-STYLE: none; CURSOR: default
}
.ccp-active .ccp-shadow {
	POSITION: absolute; FILTER: =
progid:DXImageTransform.Microsoft.Alpha(opacity=3D70); BACKGROUND-COLOR: =
black; OVERFLOW: hidden
}
.ccp-active-ro .ccp-shadow {
	POSITION: absolute; FILTER: =
progid:DXImageTransform.Microsoft.Alpha(opacity=3D85); BACKGROUND-COLOR: =
black; OVERFLOW: hidden
}
.ccp-shadow-n {
	WIDTH: 100%; TOP: 0px; LEFT: 0px
}
.ccp-shadow-s {
	WIDTH: 100%; BOTTOM: 0px; LEFT: 0px
}
.ccp-shadow-w {
	LEFT: 0px
}
.ccp-shadow-e {
	RIGHT: 0px
}
.ccp-active .ccp-handle {
	BACKGROUND-IMAGE: url(/zf/img/crop-handle.png); POSITION: absolute; =
WIDTH: 14px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left =
top; HEIGHT: 14px
}
.ccp-active-ro .ccp-handle {
	POSITION: absolute; WIDTH: 15px; HEIGHT: 15px
}
.ccp-active .ccp-handle-nw {
	TOP: -8px; CURSOR: nw-resize; LEFT: -8px
}
.ccp-active-ro .ccp-handle-nw {
	BACKGROUND-IMAGE: url(/zf/img/crop-nw.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top; TOP: -2px; CURSOR: default; =
LEFT: -2px
}
.ccp-active .ccp-handle-sw {
	BOTTOM: -8px; CURSOR: sw-resize; LEFT: -8px
}
.ccp-active-ro .ccp-handle-sw {
	BACKGROUND-IMAGE: url(/zf/img/crop-sw.png); BOTTOM: -6px; =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top; CURSOR: =
default; LEFT: -2px
}
.ccp-active .ccp-handle-ne {
	TOP: -8px; CURSOR: ne-resize; RIGHT: -8px
}
.ccp-active-ro .ccp-handle-ne {
	BACKGROUND-IMAGE: url(/zf/img/crop-ne.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top; TOP: -2px; CURSOR: default; =
RIGHT: -6px
}
.ccp-active .ccp-handle-se {
	BOTTOM: -8px; CURSOR: se-resize; RIGHT: -8px
}
.ccp-active-ro .ccp-handle-se {
	BACKGROUND-IMAGE: url(/zf/img/crop-se.png); BOTTOM: -6px; =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top; CURSOR: =
default; RIGHT: -6px
}
.ccp-close {
	BACKGROUND-IMAGE: url(/zf/img/icons/cancel-16.png); POSITION: absolute; =
WIDTH: 16px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left =
top; HEIGHT: 16px; TOP: -14px; CURSOR: pointer; RIGHT: -18px
}
.ccp-active .ccp-close {
	VISIBILITY: hidden
}
.cb {
	Z-INDEX: 3; POSITION: absolute; OVERFLOW: hidden
}
.cb-header {
	LINE-HEIGHT: 32px; MARGIN: -10px -10px 10px; PADDING-LEFT: 10px; =
HEIGHT: 32px
}
.cb-close {
	POSITION: absolute; PADDING-BOTTOM: 0px; LINE-HEIGHT: 32px; =
PADDING-LEFT: 26px; PADDING-RIGHT: 10px; DISPLAY: block; HEIGHT: 32px; =
TOP: 0px; CURSOR: pointer; RIGHT: 0px; PADDING-TOP: 0px
}
.cb-close .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/comments-close2.png); POSITION: =
absolute; WIDTH: 24px; BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: left top; HEIGHT: 24px; TOP: 4px; LEFT: 0px
}
.cb-close-hover .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/comments-close.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.cb-body {
	POSITION: relative
}
.cb-left {
	POSITION: absolute; TOP: 0px; LEFT: 0px
}
.cb-flipper {
	BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px =
solid; BORDER-RIGHT: 1px solid
}
.cb-help {
	POSITION: relative; MARGIN-BOTTOM: 10px; HEIGHT: 40px
}
.cb-navigation {
	POSITION: relative; MARGIN-BOTTOM: 10px; HEIGHT: 40px
}
.cb-help-text {
	POSITION: absolute; WIDTH: 100%; BOTTOM: 0px; LEFT: 0px
}
.cb-help-text SPAN {
	POSITION: relative; PADDING-LEFT: 20px
}
.cb-help-icon {
	POSITION: absolute; WIDTH: 16px; HEIGHT: 16px; TOP: -1px; LEFT: 0px
}
.cb-help-icon-area {
	BACKGROUND-IMAGE: url(/zf/img/layout/comment-area.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.cb-help-icon-crop {
	BACKGROUND-IMAGE: url(/zf/img/layout/comment-crop.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.cb-navigation .pair-middle {
	MARGIN: 0px
}
.cb-navigation .abutton {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
PADDING-TOP: 0px
}
.cb-navigation .abutton .icon {
	DISPLAY: block
}
.cb-navigationButton {
	POSITION: absolute; WIDTH: 38px; HEIGHT: 38px; TOP: 0px
}
.cb-navigationBack {
	LEFT: 0px
}
.cb-navigationNext {
	RIGHT: 0px
}
.cb-navigationSeekBack {
	LEFT: 45px
}
.cb-navigationSeekNext {
	RIGHT: 45px
}
.cb-navigationButton .icon {
	WIDTH: 22px; HEIGHT: 22px; TOP: 9px; LEFT: 8px
}
.cb-navigationBack .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/prev-bw.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top
}
.cb-navigationNext .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/next-bw.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top
}
.cb-navigationSeekBack .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/prev-comment-16.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top; TOP: 11px
}
.cb-navigationSeekBack .icon-disabled {
	BACKGROUND-IMAGE: url(/zf/img/layout/prev-comment-16-disabled.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.cb-navigationSeekNext .icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/next-comment-16.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top; TOP: 11px
}
.cb-navigationSeekNext .icon-disabled {
	BACKGROUND-IMAGE: url(/zf/img/layout/next-comment-16-disabled.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.cb-navigationBox {
	HEIGHT: 100%; MARGIN-LEFT: 90px; MARGIN-RIGHT: 90px
}
.cb-navigation .pair-box {
	POSITION: relative; TOP: 8px
}
.cb-help {
	TEXT-ALIGN: center
}
.cb .shortexif {
	POSITION: absolute; MARGIN: 0px; BOTTOM: 5px; LEFT: 5px
}
.cb-title {
	MARGIN: 10px 5px 5px
}
.cb-right {
	BORDER-BOTTOM: 1px solid; POSITION: relative; BORDER-LEFT: 1px solid; =
BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid
}
.cb-ml-header {
	BORDER-BOTTOM: 1px solid; LINE-HEIGHT: 32px; PADDING-LEFT: 10px; =
HEIGHT: 32px
}
.cb .ml-header {
	PADDING-BOTTOM: 13px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 12px
}
.cb .ml-item {
	MARGIN: 0px 5px
}
.cb .ml-more {
	MARGIN: 0px 5px
}
.cb .ml-empty {
	MARGIN: 0px 5px
}
.cb .mv {
	PADDING-BOTTOM: 6px; PADDING-LEFT: 5px; PADDING-RIGHT: 20px; CURSOR: =
default; PADDING-TOP: 6px
}
.cb .sv-scroll .ml-item {
	MARGIN: 0px 20px 0px 5px
}
.cb .sv-scroll .ml-more {
	MARGIN: 0px 20px 0px 5px
}
.cb .sv-scroll .ml-empty {
	MARGIN: 0px 20px 0px 5px
}
.cb .sv-scroll .mv {
	PADDING-BOTTOM: 6px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; =
PADDING-TOP: 6px
}
.cb-edit {
	DISPLAY: none
}
.cb-view {
	DISPLAY: none
}
.cb-s-editing .cb-edit {
	DISPLAY: block
}
.cb-s-viewing .cb-view {
	DISPLAY: block
}
.cb .me {
	MARGIN-RIGHT: 60px
}
.cb .me-s-saving {
	MARGIN-LEFT: 60px
}
.cb .me-s-continue {
	MARGIN-LEFT: 60px
}
.cb .me-field .me-textarea {
	HEIGHT: 150px
}
.cb-s-compact .me-field .me-textarea {
	HEIGHT: 80px
}
.cb-s-compact .me-access-info SPAN {
	FONT-SIZE: 11px
}
.cb-s-compact .me-footer {
	MARGIN-TOP: 5px
}
.cb .ml-inmost {
	PADDING-BOTTOM: 10px
}
.cb .me-header {
	MARGIN-LEFT: 10px
}
.cb-help {
	DISPLAY: none
}
.cb-navigation {
	DISPLAY: none
}
.cb-s-editing .cb-help {
	DISPLAY: block
}
.cb-s-viewing .cb-navigation {
	DISPLAY: block
}
.cb-s-compact .cb-title {
	DISPLAY: none
}
.cb-s-compact .shortexif {
	DISPLAY: none
}
.recentcomments {
	MARGIN: 2px 7px
}
.recentcomments-borders {
	BORDER-BOTTOM: 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; =
PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: 1px solid; =
PADDING-TOP: 9px
}
DIV.recentcomments-s-empty {
	BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: =
0px; MARGIN: 2px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: =
medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px
}
.recentcomments-links {
	MARGIN-TOP: 7px
}
.recentcomments-text {
	MARGIN-TOP: 7px; PADDING-LEFT: 20px
}
.recentcomments-date {
	WHITE-SPACE: nowrap
}
.recentcomments-empty {
	DISPLAY: none
}
.recentcomments-empty .recentcomments-add {
	PADDING-LEFT: 5px
}
.recentcomments-box .recentcomments-add {
	DISPLAY: block; FLOAT: right
}
DIV.recentcomments-s-no-add .recentcomments-add {
	DISPLAY: none
}
.recentcomments-s-empty .recentcomments-empty {
	DISPLAY: block
}
.recentcomments-s-empty .recentcomments-box {
	DISPLAY: none
}
.recentcomments-s-empty .recentcomments-loading {
	DISPLAY: none
}
.recentcomments-loading {
	DISPLAY: none
}
.recentcomments-s-loading .recentcomments-box {
	DISPLAY: none
}
.recentcomments-s-loading .recentcomments-empty {
	DISPLAY: none
}
.recentcomments-s-loading .recentcomments-loading {
	DISPLAY: block
}
.homeshow {
	POSITION: relative
}
.homeshow .pv-inner {
	POSITION: relative; MARGIN: 0px auto; LEFT: 0px !important
}
.homeshow .pv-img {
	Z-INDEX: -100; POSITION: relative; WIDTH: 100%
}
.page-dimmed .homeshow .pv-img {
	DISPLAY: none
}
.sb {
	Z-INDEX: 100; POSITION: absolute; WIDTH: 15px; HEIGHT: 100%; =
VISIBILITY: hidden; OVERFLOW: hidden; TOP: 0px; RIGHT: 0px
}
.sb DIV {
	Z-INDEX: 110; BORDER-BOTTOM: 1px solid; POSITION: absolute; =
BORDER-LEFT: 1px solid; WIDTH: 13px; BORDER-TOP: 1px solid; =
BORDER-RIGHT: 1px solid; LEFT: 0px
}
.sb DIV DIV {
	WIDTH: 100%; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center =
50%; HEIGHT: 100%; TOP: -1px; LEFT: -1px
}
.sb .sb-upper {
	BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px
}
.sb .sb-lower {
	BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px
}
.sb .sb-upper DIV {
	BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; TOP: 0px
}
.sb .sb-lower DIV {
	BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; TOP: 0px
}
.sb-top {
	HEIGHT: 12px; TOP: 0px
}
.sb-bottom {
	BOTTOM: 0px; HEIGHT: 12px
}
.sb .sb-top DIV {
	BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; HEIGHT: 12px; =
BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid
}
.sb .sb-bottom DIV {
	BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; HEIGHT: 12px; =
BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid
}
.sb .sb-thumb {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 9px; PADDING-RIGHT: 0px; =
HEIGHT: 33px; PADDING-TOP: 0px; LEFT: 2px
}
.sb-bgimage1 {
	BACKGROUND-IMAGE: url(/zf/img/layout/sb-top.gif)
}
.sb-bgimage2 {
	BACKGROUND-IMAGE: url(/zf/img/layout/sb-bottom.gif)
}
.sb-bgimage3 {
	BACKGROUND-IMAGE: url(/zf/img/layout/sb-grip.gif)
}
.addToCart {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 964px; PADDING-RIGHT: =
0px; HEIGHT: 600px; OVERFLOW: visible; PADDING-TOP: 0px
}
.addToCart-header {
	Z-INDEX: 7; POSITION: relative; LINE-HEIGHT: 51px; PADDING-LEFT: 50px; =
HEIGHT: 52px
}
.addToCart-icon {
	BACKGROUND-IMAGE: url(/zf/img/layout/cart-24.png); POSITION: absolute; =
WIDTH: 24px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left =
top; HEIGHT: 24px; TOP: 14px; LEFT: 14px
}
.addToCart-headerInfo {
	Z-INDEX: 7; POSITION: absolute; TEXT-ALIGN: right; WIDTH: 540px; =
PADDING-RIGHT: 10px; HEIGHT: 52px; TOP: 0px; RIGHT: 0px
}
.addToCart-stack {
	BACKGROUND-IMAGE: url(/zf/img/layout/icon-stack.png); POSITION: =
absolute; WIDTH: 53px; BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: left top; HEIGHT: 52px; TOP: 0px; RIGHT: 4px
}
.addToCart-photoCount {
	POSITION: absolute; TEXT-ALIGN: right; LINE-HEIGHT: normal; WIDTH: =
180px; HEIGHT: 31px; TOP: 52px; RIGHT: 10px
}
.addToCart-pricelist .addToCart-stack {
	DISPLAY: none
}
.addToCart-pricelist .addToCart-photoCount {
	DISPLAY: none
}
.addToCart-header .pv {
	Z-INDEX: 7; POSITION: absolute; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; =
WIDTH: 80px; PADDING-RIGHT: 4px; HEIGHT: 80px; TOP: 2px; RIGHT: 8px; =
PADDING-TOP: 4px
}
.addToCart-header .pv-outer {
	POSITION: absolute; WIDTH: 80px; HEIGHT: 80px; TOP: 4px; LEFT: 4px
}
.addToCart-header .pv-iborder {
	BORDER-BOTTOM: 1px solid; POSITION: absolute; BORDER-LEFT: 1px solid; =
PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; WIDTH: 100%; PADDING-RIGHT: 1px; =
HEIGHT: 100%; BORDER-TOP: 1px solid; TOP: -2px; BORDER-RIGHT: 1px solid; =
PADDING-TOP: 1px; LEFT: -2px
}
.addToCart-headerRight {
	POSITION: absolute; TEXT-ALIGN: right; LINE-HEIGHT: 18px; WIDTH: 400px; =
HEIGHT: 52px; RIGHT: 65px
}
.addToCart-photoInfo {
	POSITION: absolute; BOTTOM: -18px; RIGHT: 0px
}
.addToCart-prefSelector {
	POSITION: absolute; PADDING-BOTTOM: 6px; LINE-HEIGHT: 20px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 40px; RIGHT: 0px; =
PADDING-TOP: 6px
}
.addToCart-prefSelector A {
	FONT-WEIGHT: bold
}
.addToCart-prefSelector P {
	MARGIN: 0px
}
.addToCart-prefSelector P.nocurrency {
	LINE-HEIGHT: 40px
}
.addToCart-body {
	POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; =
PADDING-RIGHT: 10px; HEIGHT: 60px; PADDING-TOP: 488px
}
.addToCart-view {
	POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: =
944px; PADDING-RIGHT: 0px; HEIGHT: 488px; VISIBILITY: hidden; TOP: 0px; =
PADDING-TOP: 0px; LEFT: 10px
}
.addToCart-emptyView DIV {
	TEXT-ALIGN: center; MARGIN-TOP: 210px
}
.addToCart-emptyView .warning-icon {
	BACKGROUND-IMAGE: url(/zf/img/warning.png); WIDTH: 64px; DISPLAY: =
inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left =
top; HEIGHT: 64px
}
.addToCart-emptyView .currency-mismatch-warning {
	DISPLAY: inline-block; VERTICAL-ALIGN: top; PADDING-TOP: 4px
}
.addToCart-status {
	TEXT-ALIGN: left; LINE-HEIGHT: 36px; DISPLAY: none; HEIGHT: 36px
}
.addToCart-catNothing {
	LINE-HEIGHT: 36px; DISPLAY: none
}
.addToCart-prodNothing {
	LINE-HEIGHT: normal; MARGIN-TOP: 2px; DISPLAY: none
}
.addToCart-breadcrumbs {
	HEIGHT: 31px; PADDING-TOP: 11px
}
.addToCart-breadcrumbs IMG {
	POSITION: relative; WIDTH: 13px; HEIGHT: 12px; VERTICAL-ALIGN: =
baseline; TOP: 2px; CURSOR: pointer
}
.addToCart-catPopup {
	Z-INDEX: 100; LINE-HEIGHT: 130%; BORDER-RIGHT-WIDTH: 1px; =
BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px
}
.addToCart-catPopupCur {
=09
}
.addToCart-countries-o {
	BORDER-BOTTOM: 1px solid; POSITION: relative; BORDER-LEFT: 1px solid; =
MARGIN-TOP: 42px; HEIGHT: 444px; BORDER-TOP: 1px solid; BORDER-RIGHT: =
1px solid
}
.addToCart-countries-i {
	TEXT-ALIGN: center; PADDING-BOTTOM: 40px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; PADDING-TOP: 40px
}
.addToCart-countries-msg {
	MARGIN-BOTTOM: 30px
}
.addToCart-country {
	POSITION: relative; LINE-HEIGHT: 31px; MARGIN: 20px auto; WIDTH: 280px; =
DISPLAY: block
}
.addToCart .addToCart-countries-i A:hover {
	TEXT-DECORATION: none
}
.addToCart-countries-i .col2 {
	MARGIN: 10px 20px; DISPLAY: inline-block
}
.addToCart-countries-i .col3 {
	MARGIN: 10px; DISPLAY: inline-block
}
.addToCart-country .btn-flag {
	POSITION: absolute; WIDTH: 27px; DISPLAY: block; HEIGHT: 21px; TOP: =
5px; LEFT: 5px
}
.addToCart-country .btn-flag-US {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-us-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-USD {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-us-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-CA {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-canada-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-CAD {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-canada-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-UK {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-uk-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-GBP {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-uk-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-EU {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-eu-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-EUR {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-eu-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-WW {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-world-large.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-AUD {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-australia-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-CZK {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-czech-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-DKK {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-denmark-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-HKD {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-hongkong-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-HUF {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-hungary-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-ILS {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-israel-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-JPY {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-japan-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-MXN {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-mexico-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-NZD {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-newzealand-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-NOK {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-norway-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-PLN {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-poland-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-SGD {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-singapore-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-SEK {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-sweden-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart-country .btn-flag-CHF {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-switzerland-large.gif); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.addToCart .small-flag-US {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-us.gif)
}
.addToCart .small-flag-CA {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-canada.gif)
}
.addToCart .small-flag-UK {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-uk.gif)
}
.addToCart .small-flag-EU {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-eu.gif)
}
.addToCart .small-flag-WW {
	BACKGROUND-IMAGE: url(/zf/img/icons/flag-world.png)
}
.addToCart-small-flag {
	PADDING-LEFT: 20px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: =
left center
}
.addToCart-cats-o {
	BORDER-BOTTOM: 1px solid; POSITION: relative; BORDER-LEFT: 1px solid; =
HEIGHT: 444px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid
}
.addToCart-cats-i {
	POSITION: relative; HEIGHT: 100%; OVERFLOW: hidden
}
.addToCart-cats {
	PADDING-BOTTOM: 18px; PADDING-LEFT: 45px; PADDING-RIGHT: 45px; =
PADDING-TOP: 18px
}
.addToCart-category {
	POSITION: relative; PADDING-BOTTOM: 6px; LINE-HEIGHT: 17px; =
PADDING-LEFT: 118px; WIDTH: 166px; PADDING-RIGHT: 0px; FLOAT: left; =
HEIGHT: 122px; PADDING-TOP: 4px
}
.addToCart-subcat {
	POSITION: relative; PADDING-LEFT: 10px; WIDTH: 166px; LEFT: -10px
}
.addToCart-subcat-new A {
	BACKGROUND-IMAGE: url(/zf/img/new.png); PADDING-RIGHT: 31px; =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: right center
}
.addToCart-catsWide .addToCart-category {
	MARGIN: 20px 0px
}
.addToCart-catMain {
	MARGIN: 0px 0px 4px
}
.addToCart-category A {
	MARGIN-LEFT: 8px
}
.addToCart-bestFit {
	BACKGROUND-IMAGE: url(/zf/img/layout/thumb-bw.png); BORDER-BOTTOM: 0px; =
POSITION: relative; BORDER-LEFT: 0px; WIDTH: 14px; BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top; HEIGHT: 15px; VERTICAL-ALIGN: =
middle; BORDER-TOP: 0px; TOP: -3px; BORDER-RIGHT: 0px
}
.addToCart .addToCart-cats .pv {
	POSITION: absolute; VISIBILITY: inherit; TOP: -8px; LEFT: 0px
}
.addToCart .addToCart-cats .pv-inner {
	WIDTH: 80px; HEIGHT: 80px; TOP: 0px; LEFT: 0px
}
.addToCart-flatBox {
	POSITION: relative; PADDING-LEFT: 230px; PADDING-RIGHT: 284px; HEIGHT: =
444px
}
.addToCart-noVendors .addToCart-flatBox {
	PADDING-LEFT: 0px
}
.addToCart-vendors {
	POSITION: absolute; WIDTH: 230px; HEIGHT: 410px; TOP: 33px; LEFT: 0px
}
.addToCart-noVendors .addToCart-vendors {
	DISPLAY: none
}
.addToCart-products {
	BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 6px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 8px; HEIGHT: 432px; OVERFLOW: hidden; =
BORDER-TOP: 1px solid; BORDER-RIGHT: 1px dotted; PADDING-TOP: 6px
}
.addToCart-info {
	BORDER-BOTTOM: 1px solid; POSITION: absolute; BORDER-LEFT: 1px; WIDTH: =
283px; HEIGHT: 444px; BORDER-TOP: 1px solid; TOP: 0px; RIGHT: 0px; =
BORDER-RIGHT: 1px solid
}
.addToCart-vendor {
	BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; WIDTH: 229px; =
MARGIN-BOTTOM: -1px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px
}
.addToCart-currentVendor {
	WIDTH: 230px
}
.addToCart-vendorTab {
	BORDER-LEFT: 0px; PADDING-BOTTOM: 10px; PADDING-LEFT: 15px; =
PADDING-RIGHT: 10px; OVERFLOW: hidden; CURSOR: pointer; PADDING-TOP: =
10px
}
.addToCart-currentVendor .addToCart-vendorTab {
	BORDER-LEFT: 4px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: 11px; =
PADDING-RIGHT: 11px; CURSOR: default; PADDING-TOP: 10px
}
.addToCart-vendorName {
	MARGIN-BOTTOM: 4px; FONT-WEIGHT: bold
}
.addToCart-th {
	POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 0px; =
PADDING-LEFT: 84px; PADDING-RIGHT: 142px; MARGIN-BOTTOM: 4px; HEIGHT: =
24px; PADDING-TOP: 0px
}
.addToCart-thSets {
	POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; WIDTH: =
74px; PADDING-RIGHT: 0px; TOP: 0px; PADDING-TOP: 6px; LEFT: 8px
}
.addToCart-thPrice {
	POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; WIDTH: =
140px; PADDING-RIGHT: 0px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 6px
}
.addToCart-thProduct {
	PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
PADDING-TOP: 6px
}
.addToCart-prodTable-o {
	POSITION: relative; HEIGHT: 390px
}
.addToCart-prodTable-i {
	POSITION: relative; PADDING-RIGHT: 6px; HEIGHT: 100%; OVERFLOW: hidden
}
.addToCart-prodTable {
	BORDER-BOTTOM: 1px solid; POSITION: relative; PADDING-BOTTOM: 8px; =
PADDING-LEFT: 8px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.sv-scroll .addToCart-prodTable-i {
	PADDING-RIGHT: 23px
}
.addToCart-colProduct {
	POSITION: relative; PADDING-BOTTOM: 3px; MIN-HEIGHT: 20px; =
PADDING-LEFT: 78px; PADDING-RIGHT: 0px; BORDER-TOP: 1px solid; CURSOR: =
pointer; PADDING-TOP: 8px
}
.addToCart-colProduct-f {
	BORDER-TOP: 0px
}
.addToCart-colSets {
	POSITION: absolute; TEXT-ALIGN: center; WIDTH: 64px; TOP: 5px; LEFT: =
6px
}
.addToCart-colPrice {
	TEXT-ALIGN: center; MIN-HEIGHT: 20px; WIDTH: 140px; FLOAT: right
}
.sv-scroll .addToCart-colPrice {
	WIDTH: 122px
}
.addToCart-resolution {
	WHITE-SPACE: nowrap
}
.addToCart-warning {
	PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
PADDING-TOP: 4px
}
.addToCart-group {
	POSITION: relative; MARGIN-TOP: 6px
}
.addToCart-prodTable-i H6 {
	Z-INDEX: 1; POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 23px; =
MARGIN: 0px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; HEIGHT: 23px; =
PADDING-TOP: 0px
}
.addToCart .popup-footer {
	PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: =
36px; PADDING-TOP: 12px
}
.addToCart .popup-footer A {
	BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 4px; =
LINE-HEIGHT: 26px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; DISPLAY: =
block; MARGIN-LEFT: 10px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px =
solid; PADDING-TOP: 4px
}
.addToCart .popup-footer A:hover {
	TEXT-DECORATION: none
}
.addToCart .popup-footer A.disabled {
	CURSOR: default
}
.addToCart .mbox-footer {
	DISPLAY: none
}
.addToCart-redir {
	TEXT-ALIGN: center; MARGIN-TOP: 284px
}
.addToCart-redir IMG {
	VERTICAL-ALIGN: middle; MARGIN-RIGHT: 10px
}
.addToCart-license-text {
	PADDING-BOTTOM: 15px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; =
PADDING-TOP: 15px
}
DIV.sv-scroll .addToCart-license-view-m {
	WIDTH: 910px
}
.addToCart-license-view-o {
	MARGIN: 20px 0px 10px
}
.addToCart-license-view-o {
	POSITION: relative; HEIGHT: 458px; OVERFLOW: hidden
}
.addToCart-license-view-m {
	POSITION: relative; HEIGHT: 458px; OVERFLOW: hidden
}
.addToCart-license-text PRE {
	MARGIN: 0px; FONT-FAMILY: Consolas, "Lucida Console", monospace; =
WHITE-SPACE: pre-wrap; FONT-SIZE: 14px
}
.addToCart-license-text TEXTAREA {
	MARGIN: 0px; WIDTH: 100%; FONT-FAMILY: Consolas, monospace; HEIGHT: =
100%
}
.cartInfo-i {
	POSITION: relative; HEIGHT: 100%; OVERFLOW: hidden
}
.cartInfo-c {
	PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; WIDTH: 246px; PADDING-RIGHT: =
12px; PADDING-TOP: 6px
}
.sv-scroll .cartInfo-c {
	WIDTH: 246px
}
.cartInfo-c H5 {
	TEXT-ALIGN: center; TEXT-TRANSFORM: uppercase; MARGIN: 0px 0px 10px; =
FONT-SIZE: 10px; FONT-WEIGHT: bold
}
.cartInfo-icon {
	TEXT-ALIGN: center; PADDING-BOTTOM: 11px; MARGIN: 0px auto 4px; =
PADDING-LEFT: 6px; WIDTH: 240px; PADDING-RIGHT: 6px; OVERFLOW: hidden; =
PADDING-TOP: 7px
}
.cartInfo-desc {
	PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.7em; PADDING-LEFT: 6px; =
PADDING-RIGHT: 6px; PADDING-TOP: 0px
}
.cartInfo-desc P {
	MARGIN: 0px 0px 1em
}
.cartInfo-desc UL {
	MARGIN: 0px 0px 1em 15px; PADDING-LEFT: 0px
}
.cartInfo-desc #download-resolution-p {
	FONT-WEIGHT: bold
}
.cartInfo-desc #download-resolution {
	FONT-WEIGHT: normal
}
.ce-info-dlg .ce-info {
	POSITION: relative; HEIGHT: 470px
}
.ce-info-dlg .cartInfo-c {
	WIDTH: 316px
}
.ce-info-dlg .sv-scroll .cartInfo-c {
	WIDTH: 316px
}
.ews {
	POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 15px; WIDTH: =
32px; PADDING-RIGHT: 15px; HEIGHT: 14px; PADDING-TOP: 3px
}
.ews INPUT {
	BORDER-BOTTOM: 1px solid; POSITION: absolute; TEXT-ALIGN: right; =
BORDER-LEFT: 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; WIDTH: =
24px; PADDING-RIGHT: 3px; HEIGHT: 14px; BORDER-TOP: 1px solid; TOP: 0px; =
BORDER-RIGHT: 1px solid; PADDING-TOP: 2px; LEFT: 15px
}
.ews DIV {
	BORDER-BOTTOM: 1px solid; POSITION: absolute; TEXT-ALIGN: right; =
BORDER-LEFT: 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; WIDTH: =
24px; PADDING-RIGHT: 3px; HEIGHT: 14px; BORDER-TOP: 1px solid; TOP: 0px; =
BORDER-RIGHT: 1px solid; PADDING-TOP: 2px; LEFT: 15px
}
.ews DIV {
	DISPLAY: none
}
.ews SPAN {
	POSITION: absolute; PADDING-BOTTOM: 3px; LINE-HEIGHT: normal; =
PADDING-LEFT: 0px; WIDTH: 15px; PADDING-RIGHT: 0px; BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: center 50%; HEIGHT: 14px; OVERFLOW: =
hidden; TOP: 0px; CURSOR: pointer; PADDING-TOP: 3px
}
.ews-down {
	BACKGROUND-IMAGE: url(/zf/img/layout/icon-minus.gif); LEFT: 0px
}
.ews-up {
	BACKGROUND-IMAGE: url(/zf/img/layout/icon-plus.gif); RIGHT: 0px
}
.ews-ro INPUT {
	DISPLAY: none
}
.ews-ro SPAN {
	DISPLAY: none
}
.ews-ro DIV {
	DISPLAY: block
}
.userLtRt-left {
	WIDTH: 290px; FLOAT: left
}
.userLtRt-right {
	MARGIN-LEFT: 330px
}
.userLtRt-rightInner {
=09
}
.userLtRt .aboutBin {
	MARGIN-BOTTOM: 5px
}
.userLtRt .featuredBin {
	MARGIN-BOTTOM: 10px
}
.userLtRt .recentBin {
	MARGIN-BOTTOM: 10px
}
.userLtRt .rootBin {
	MARGIN-BOTTOM: 10px
}
.userRtLt-right {
	WIDTH: 290px; FLOAT: right
}
.userRtLt-left .clear {
	CLEAR: left
}
.userRtLt-left {
	MARGIN-RIGHT: 330px
}
.userRtLt-leftInner {
=09
}
.userRtLt-right .copyright {
	TEXT-ALIGN: right
}
.userRtLt .aboutBin {
	MARGIN-BOTTOM: 10px
}
.userRtLt .featuredBin {
	MARGIN-BOTTOM: 10px
}
.userRtLt .recentBin {
	MARGIN-BOTTOM: 10px
}
.userRtLt .rootBin {
	MARGIN-BOTTOM: 10px
}
.userCtr-top {
	PADDING-BOTTOM: 4px
}
.userCtr-topRight {
	FLOAT: right; HEIGHT: 30px
}
.userCtr-topLeft {
	MIN-HEIGHT: 30px
}
.userCtr .breadcrumbs {
=09
}
.userCtr-topInner {
	HEIGHT: 24px
}
.userCtr-topInner .pair-box {
	LINE-HEIGHT: 20px
}
.userCtr-topRight .pair-box {
	LINE-HEIGHT: 26px
}
.userCtr-topRight .pair-left {
	MARGIN: 0px 0px 0px 20px
}
.userCtr .mailboxlink {
	FLOAT: left
}
.userCtr .userCtr-topInner .mailboxlink {
	FLOAT: right
}
.userCtr-about .bin-content {
	ZOOM: 1
}
.userCtr-about .contactInfo {
	WIDTH: 100%
}
.userCtr-about {
	POSITION: relative; BORDER-RIGHT-WIDTH: 0px; WIDTH: 100%; =
BORDER-COLLAPSE: collapse; BORDER-TOP-WIDTH: 0px; TABLE-LAYOUT: fixed; =
BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px
}
.userCtr-about TR {
	BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; VERTICAL-ALIGN: top; BORDER-LEFT-WIDTH: 0px
}
.userCtr-about TD {
	BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; VERTICAL-ALIGN: top; BORDER-LEFT-WIDTH: 0px
}
.userCtr-about TD {
	POSITION: relative; VERTICAL-ALIGN: top
}
.userCtr-fixedCell {
	PADDING-LEFT: 20px; WIDTH: 290px
}
.userCtr .copyright {
	TEXT-ALIGN: center; LINE-HEIGHT: 20px; PADDING-TOP: 10px
}
.userCtr .aboutBin {
	MARGIN-BOTTOM: 10px
}
.userCtr .featuredBin {
	MARGIN-BOTTOM: 10px
}
.userCtr .recentBin {
	MARGIN-BOTTOM: 10px
}
.userCtr .rootBin {
	MARGIN-BOTTOM: 10px
}
.userCtr-fixedCell .bin-header {
	PADDING-BOTTOM: 5px; LINE-HEIGHT: 16px; HEIGHT: 16px
}
.userCtr .guestbooklink-compact {
	MARGIN-LEFT: 14px
}
.userPortD-top {
	TEXT-ALIGN: center; PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; PADDING-TOP: 2px
}
.userPortD-left {
	WIDTH: 290px; FLOAT: left
}
.userPortD-right {
	MARGIN-LEFT: 330px
}
.userPortD-rightInner {
=09
}
.userPortD .aboutBin {
	MARGIN-BOTTOM: 5px
}
.userPortD .featuredBin {
	MARGIN-BOTTOM: 10px
}
.userPortD .recentBin {
	MARGIN-BOTTOM: 10px
}
.userPortD .rootBin {
	MARGIN-BOTTOM: 10px
}
.folderLtRt-left {
	POSITION: relative; WIDTH: 290px; FLOAT: left
}
.folderLtRt-right {
	POSITION: relative; MARGIN-LEFT: 330px
}
.folderCtr .breadcrumbs {
	PADDING-BOTTOM: 0px
}
.folderCtr-info {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; =
PADDING-TOP: 0px
}
.folderCtr .fpg {
	MARGIN: 10px 0px
}
.folderCtr .copyright {
	TEXT-ALIGN: center; LINE-HEIGHT: 20px; PADDING-TOP: 10px
}
.folderCtr .guestbookBin {
	MARGIN-TOP: 10px
}
.folderCtr .guestbooklink-compact {
	FLOAT: right; MARGIN-LEFT: 14px
}
.photoSetLtRt-left {
	POSITION: relative; WIDTH: 290px; FLOAT: left
}
.photoSetLtRt-right {
	POSITION: relative; MARGIN-LEFT: 330px
}
.photoSetLtRt .pager {
	MARGIN-TOP: 8px
}
.photoSetLtRt .captionbox {
	MARGIN-BOTTOM: 12px
}
.photoSetLtRt .guestbookBin {
	MARGIN-TOP: 10px
}
.photoSetCtr .breadcrumbs {
	PADDING-BOTTOM: 0px
}
.photoSetCtr-info {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; =
PADDING-TOP: 0px
}
.photoSetCtr .captionbox {
	MARGIN-TOP: 10px
}
.photoSetCtr .pspg {
	MARGIN: 5px 0px
}
.photoSetCtr-content {
	POSITION: relative; MARGIN-TOP: 8px; ZOOM: 1
}
.photoSetCtr-bottom {
	PADDING-TOP: 10px
}
.photoSetCtr-bottomRight {
	WIDTH: 290px; FLOAT: right
}
.photoSetCtr-bottomLeft {
	MARGIN-RIGHT: 310px
}
.photoSetCtr .copyright {
	TEXT-ALIGN: center; PADDING-TOP: 12px
}
.photoSetCtr .guestbooklink-compact {
	FLOAT: right; MARGIN-LEFT: 14px
}
.photoLtRtTh .breadcrumbs {
	PADDING-BOTTOM: 0px
}
.photoLtRtTh-left {
	POSITION: relative; ZOOM: 1; MARGIN-RIGHT: 300px
}
.photoLtRtTh-right {
	WIDTH: 290px; FLOAT: right
}
.photoLtRtTh-info {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; =
PADDING-TOP: 0px
}
.photoLtRtTh-navigation {
	POSITION: relative; MARGIN: 8px 0px; HEIGHT: 40px
}
.photoLtRtTh-navigation .pair-middle {
	MARGIN: 0px
}
.photoLtRtTh-navigationButton {
	POSITION: absolute; TOP: 0px
}
.photoLtRtTh-navigationBack {
	LEFT: 0px
}
.photoLtRtTh-navigationNext {
	RIGHT: 0px
}
.photoLtRtTh-navigationButton .standard {
	WIDTH: 46px; HEIGHT: 38px
}
.photoLtRtTh-navigationButton .hover {
	WIDTH: 46px; HEIGHT: 38px
}
.photoLtRtTh-navigationButton .image {
	POSITION: absolute; WIDTH: 22px; HEIGHT: 22px; TOP: 9px; LEFT: 12px
}
.photoLtRtTh-navigationBack .image {
	BACKGROUND-IMAGE: url(/zf/img/layout/prev-bw.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top
}
.photoLtRtTh-navigationNext .image {
	BACKGROUND-IMAGE: url(/zf/img/layout/next-bw.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top
}
.photoLtRtTh-navigationBox {
	HEIGHT: 100%; MARGIN-LEFT: 58px; MARGIN-RIGHT: 58px
}
.photoLtRtTh-navigation .pair-box {
	POSITION: relative; TOP: 8px
}
.photoLtRtTh .tab-inner {
	WIDTH: 145px
}
.photoLtRtTh .pager-ie-fix {
	PADDING-TOP: 4px
}
.photoLtRtTh .pager {
	MARGIN-TOP: 0px
}
.photoLtRtTh .copyright {
	TEXT-ALIGN: center; PADDING-TOP: 10px
}
.photoLtRtTh .recentcomments {
	MARGIN-TOP: 12px
}
.photoLtRtTh .recentcomments-empty {
	TEXT-ALIGN: center
}
.photoLtRtTh .captionbox {
	MARGIN: 5px auto 0px
}
.photoLtRt .breadcrumbs {
	PADDING-BOTTOM: 0px
}
.photoLtRt-left {
	POSITION: relative; ZOOM: 1; MARGIN-RIGHT: 300px
}
.photoLtRt-right {
	WIDTH: 290px; FLOAT: right
}
.photoLtRt-separators {
=09
}
.photoLtRt-info {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; =
PADDING-TOP: 0px
}
.photoLtRt-navigation {
	POSITION: relative; MARGIN-TOP: 8px; HEIGHT: 84px
}
.photoLtRt-navigation .pair-box {
	MARGIN-TOP: 29px
}
.photoLtRt-navigation .label {
	POSITION: absolute; TEXT-TRANSFORM: uppercase; BOTTOM: 0px; FONT-SIZE: =
9px
}
.photoLtRt-navigationButton {
	POSITION: absolute; WIDTH: 50%; HEIGHT: 76px; TOP: 6px; CURSOR: pointer
}
.photoLtRt-navigationButton .pv {
	POSITION: absolute; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; TOP: 0px; PADDING-TOP: 0px
}
.photoLtRt-navigationBack {
	LEFT: 8px
}
.photoLtRt-navigationBack .label {
	LEFT: 0px
}
.photoLtRt-navigationBack .pv {
	LEFT: 0px
}
.photoLtRt-navigationNext {
	RIGHT: 8px
}
.photoLtRt-navigationNext .label {
	RIGHT: 0px
}
.photoLtRt-navigationNext .pv {
	RIGHT: 0px
}
.photoLtRt .captionbox {
	MARGIN-TOP: 8px
}
.photoLtRt .spacer {
	LINE-HEIGHT: 10px; HEIGHT: 10px; OVERFLOW: hidden
}
.photoCtrTh .breadcrumbs {
	PADDING-BOTTOM: 0px
}
.photoCtrTh-info {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; =
PADDING-TOP: 0px
}
.photoCtrTh-thumbs {
	POSITION: relative
}
.photoCtrTh-grid {
	PADDING-BOTTOM: 2px; PADDING-LEFT: 90px; PADDING-RIGHT: 90px; HEIGHT: =
68px; PADDING-TOP: 2px
}
.photoCtrTh .pvp .pv {
	PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; =
PADDING-TOP: 2px
}
.photoCtrTh-navigationButton {
	POSITION: absolute; TOP: 11px
}
.photoCtrTh-navigationButton .standard {
	WIDTH: 48px; HEIGHT: 48px
}
.photoCtrTh-navigationButton .hover {
	WIDTH: 48px; HEIGHT: 48px
}
.photoCtrTh-navigationButton .image {
	POSITION: absolute; WIDTH: 22px; HEIGHT: 22px; TOP: 13px; LEFT: 13px
}
.photoCtrTh-navigationBack .image {
	BACKGROUND-IMAGE: url(/zf/img/layout/prev-bw.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top
}
.photoCtrTh-navigationNext .image {
	BACKGROUND-IMAGE: url(/zf/img/layout/next-bw.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top
}
.photoCtrTh-navigationBack {
	LEFT: 0px
}
.photoCtrTh-navigationNext {
	RIGHT: 0px
}
.photoCtrTh-navigationPageButton {
	POSITION: absolute; TOP: 21px
}
.photoCtrTh-navigationPageButton .standard {
	WIDTH: 28px; HEIGHT: 28px
}
.photoCtrTh-navigationPageButton .hover {
	WIDTH: 28px; HEIGHT: 28px
}
.photoCtrTh-navigationPageButton .image {
	POSITION: absolute; WIDTH: 22px; HEIGHT: 22px; TOP: 5px; LEFT: 3px
}
.photoCtrTh-navigationPageBack .image {
	BACKGROUND-IMAGE: url(/zf/img/layout/prev-page-bw.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.photoCtrTh-navigationPageNext .image {
	BACKGROUND-IMAGE: url(/zf/img/layout/next-page-bw.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.photoCtrTh-navigationPageBack {
	LEFT: 64px
}
.photoCtrTh-navigationPageNext {
	RIGHT: 64px
}
.photoCtrTh-left {
	POSITION: relative; ZOOM: 1; MARGIN-RIGHT: 300px
}
.photoCtrTh-right {
	WIDTH: 290px; FLOAT: right
}
.photoCtrTh .captionbox {
	MARGIN-TOP: 8px
}
.photoCtrTh .spacer {
	LINE-HEIGHT: 10px; HEIGHT: 10px; OVERFLOW: hidden
}
.photoCtr {
=09
}
.photoCtr .breadcrumbs {
	PADDING-BOTTOM: 0px
}
.photoCtr-info {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; =
PADDING-TOP: 0px
}
.photoCtr-main {
	POSITION: relative; MARGIN-TOP: 8px; ZOOM: 1
}
.photoCtr-main .stretcher {
	POSITION: relative; MARGIN: 0px 26px; OVERFLOW: visible
}
.photoCtr-main .photoCtr-navigationButton {
	POSITION: absolute; WIDTH: 26px; FLOAT: none; HEIGHT: 100%; TOP: -1px
}
.photoCtr-navigationBack {
	LEFT: -26px
}
.photoCtr-navigationNext {
	RIGHT: -26px
}
.photoCtr-navigationButton .standard {
	POSITION: relative; WIDTH: 24px; HEIGHT: 100%
}
.photoCtr-navigationButton .hover {
	POSITION: relative; WIDTH: 24px; HEIGHT: 100%
}
.photoCtr-navigationButton .image {
	POSITION: absolute; MARGIN-TOP: -11px; WIDTH: 22px; HEIGHT: 22px; TOP: =
50%; LEFT: 1px
}
.photoCtr-navigationBack .image {
	BACKGROUND-IMAGE: url(/zf/img/layout/prev-bw.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top
}
.photoCtr-navigationNext .image {
	BACKGROUND-IMAGE: url(/zf/img/layout/next-bw.png); BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: left top
}
.photoCtr .categoriesBin {
	MARGIN-TOP: 8px
}
.photoCtr-bottom {
	POSITION: relative
}
.photoCtr .shortexif {
	TEXT-ALIGN: center; MARGIN-TOP: 12px
}
.photoCtr .copyright {
	TEXT-ALIGN: center; PADDING-TOP: 10px
}
.photoCtr .recentcomments {
	MARGIN-TOP: 12px
}
.photoCtr .captionbox {
	MARGIN: 5px auto 0px
}
.photoCtr .recentcomments-empty {
	TEXT-ALIGN: center
}
.search .breadcrumbs {
	PADDING-BOTTOM: 6px
}
.search .copyright {
	TEXT-ALIGN: center; PADDING-TOP: 12px
}
.search-empty {
	POSITION: absolute; TEXT-ALIGN: center; MARGIN-TOP: -25px; WIDTH: 100%; =
TOP: 50%; LEFT: 0%
}
.search-empty SPAN {
	LINE-HEIGHT: 160%; FONT-SIZE: 160%; FONT-WEIGHT: normal
}
.search-emptyTip {
	LINE-HEIGHT: 100%; PADDING-TOP: 4px
}
.search .pager-ie-fix {
	PADDING-TOP: 1px
}
.search .pager {
	MARGIN-TOP: 9px
}
.denied .breadcrumbs {
=09
}
.denied .copyright {
	TEXT-ALIGN: center; LINE-HEIGHT: 20px; PADDING-TOP: 10px
}
.denied .center-outer {
	POSITION: relative; TOP: 48%
}
.denied .center-inner {
	POSITION: relative; WIDTH: 340px; HEIGHT: 300px; TOP: -72px
}
.denied-box {
	BORDER-BOTTOM: 2px solid; POSITION: relative; TEXT-ALIGN: center; =
BORDER-LEFT: 2px solid; PADDING-BOTTOM: 60px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; FONT-SIZE: 12px; BORDER-TOP: 2px solid; =
BORDER-RIGHT: 2px solid; PADDING-TOP: 60px
}
BODY {
	BACKGROUND-COLOR: #000; FONT-FAMILY: Georgia, Times, Sans-serif; COLOR: =
#999; FONT-SIZE: 11px
}
A {
	BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; COLOR: #f93; BORDER-LEFT-WIDTH: 0px
}
TEXTAREA {
	FONT-FAMILY: Georgia, Times, Sans-serif
}
.header-bgcolor1 {
	BACKGROUND-COLOR: #404040
}
.header-font1 {
=09
}
.header-bgimage1 {
=09
}
.header-bgcolor2 {
	BACKGROUND-COLOR: #555
}
.header-bgimage2 {
=09
}
.header-searchInput {
	BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; =
PADDING-BOTTOM: 2px; LINE-HEIGHT: 12px; PADDING-LEFT: 3px; =
PADDING-RIGHT: 0px; FONT-FAMILY: Verdana, Lucida, Sans-Serif; HEIGHT: =
12px; FONT-SIZE: 11px; VERTICAL-ALIGN: middle; BORDER-TOP: #333 1px =
solid; BORDER-RIGHT: #333 1px solid; PADDING-TOP: 1px
}
.header-bgcolor3 {
	BACKGROUND-COLOR: white
}
.header-bgcolor4 {
	BACKGROUND-COLOR: #666
}
.header-border1 {
	BORDER-BOTTOM-COLOR: #505050; BORDER-TOP-COLOR: #505050; =
BORDER-RIGHT-COLOR: #505050; BORDER-LEFT-COLOR: #505050
}
.header-border2 {
	BORDER-BOTTOM-COLOR: #808080; BORDER-TOP-COLOR: #808080; =
BORDER-RIGHT-COLOR: #808080; BORDER-LEFT-COLOR: #808080
}
.header-border3 {
	BORDER-BOTTOM-COLOR: #808080; BORDER-TOP-COLOR: #808080; =
BORDER-RIGHT-COLOR: #808080; BORDER-LEFT-COLOR: #808080
}
.header-color1 {
	COLOR: #ddd
}
.header-color2 {
	COLOR: #ddd
}
.header-color3 {
	COLOR: #333
}
.header-color5 {
	COLOR: #f93
}
.header-color6 {
	COLOR: #666
}
.header-font7 {
	LETTER-SPACING: 1.2px; FONT-SIZE: 19px; FONT-WEIGHT: normal
}
.header-color7 {
	COLOR: #ddd
}
.header-controlMenu {
	TOP: 3px; LEFT: -13px
}
.header-logo {
	BACKGROUND-IMAGE: url(/zf/img/layout/zenfolio-logo-white.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.footer-bgcolor1 {
=09
}
.footer-border1 {
	BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: =
#555; BORDER-LEFT-COLOR: #555
}
.footer-color1 {
	COLOR: #999
}
.footer-font1 {
	FONT-SIZE: 12px
}
.footer-font2 {
	FONT-SIZE: 10px
}
.footer-logo {
=09
}
.layout-bgcolor1 {
=09
}
.layout-bgimage1 {
=09
}
.layout-bgimage2 {
=09
}
.layout-bgimage3 {
=09
}
.layout-bgcolor4 {
	BACKGROUND: none transparent scroll repeat 0% 0%
}
.layout-bgcolor5 {
	BACKGROUND-COLOR: transparent
}
.layout-border5 {
	BORDER-BOTTOM-COLOR: #333; BORDER-TOP-COLOR: #333; BORDER-RIGHT-COLOR: =
#333; BORDER-LEFT-COLOR: #333
}
.layout-color5 {
	COLOR: #000
}
.breadcrumbs .home {
	COLOR: #ccc; FONT-WEIGHT: normal
}
.breadcrumbs-font1 {
	FONT-SIZE: 16px
}
.breadcrumbs-color1 {
=09
}
.breadcrumbs-font2 {
	FONT-SIZE: 13px
}
.breadcrumbs-font3 {
	FONT-SIZE: 17px
}
.userCtr .breadcrumbs-font1 {
	FONT-SIZE: 19px
}
.breadcrumbs-color3 {
	COLOR: #999
}
.pair-color1 {
	COLOR: #999
}
.pair-font1 {
	FONT-SIZE: 11px
}
.pair-color2 {
	COLOR: #ccc
}
.pair-font2 {
	FONT-SIZE: 11px
}
.pair-color3 {
	COLOR: #ccc
}
.bin-bgcolor1 {
	BACKGROUND-COLOR: #404040
}
.bin-bgimage1 {
=09
}
.bin-bgcolor3 {
=09
}
.bin-bgimage3 {
=09
}
.bin-font1 {
	FONT-SIZE: 14px
}
.bin-color1 {
	COLOR: #999
}
.bin-color2 {
	COLOR: #ccc
}
.bin-border1 {
	BORDER-BOTTOM: #555 1px solid; BORDER-TOP: #000 1px solid
}
.bin-border2 {
	BORDER-BOTTOM: #000 1px solid; BORDER-TOP: #555 1px solid
}
.bin-border3 {
=09
}
.bin-border4 {
=09
}
.bin-header .button-border1 {
	BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: =
#555; BORDER-LEFT-COLOR: #555
}
.bin-header .button-bgcolor1 {
	BACKGROUND-COLOR: #535353
}
.bin-header .button-bgcolor2 {
	BACKGROUND-COLOR: #666
}
.bin-header .button-border2 {
	BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: =
#555; BORDER-LEFT-COLOR: #555
}
.copyright-color1 {
	COLOR: #999
}
.separator-border1 {
	BORDER-TOP: #555 1px solid
}
.separator-border2 {
	BORDER-TOP: #555 1px solid
}
.caption-color1 {
	COLOR: #999
}
.caption-bgcolor1 {
	BACKGROUND-COLOR: #000
}
.caption-border1 {
	BORDER-BOTTOM-COLOR: #333; BORDER-TOP-COLOR: #333; BORDER-RIGHT-COLOR: =
#333; BORDER-LEFT-COLOR: #333
}
.caption-font1 {
	LINE-HEIGHT: 1.4em; FONT-SIZE: 12px
}
.caption-font2 {
	FONT-SIZE: 18px
}
.button-font1 {
	FONT-SIZE: 12px
}
.button-color1 {
	COLOR: #f90
}
.button-bgcolor1 {
	BACKGROUND-COLOR: #000
}
.button-border1 {
	BORDER-BOTTOM-COLOR: #333; BORDER-TOP-COLOR: #333; BORDER-RIGHT-COLOR: =
#333; BORDER-LEFT-COLOR: #333
}
.button-color2 {
	COLOR: #fff
}
.button-bgcolor2 {
	BACKGROUND-COLOR: #222
}
.button-border2 {
	BORDER-BOTTOM-COLOR: #333; BORDER-TOP-COLOR: #333; BORDER-RIGHT-COLOR: =
#333; BORDER-LEFT-COLOR: #333
}
.button-color3 {
	COLOR: #555
}
.button-bgcolor3 {
	BACKGROUND-COLOR: #000
}
.button-border3 {
	BORDER-BOTTOM-COLOR: #111; BORDER-TOP-COLOR: #111; BORDER-RIGHT-COLOR: =
#111; BORDER-LEFT-COLOR: #111
}
.placeholder-font1 {
	FONT-SIZE: 12px
}
.shortexif-color1 {
	COLOR: #999999
}
.defdec .pv-border {
	BORDER-BOTTOM-COLOR: #555; PADDING-BOTTOM: 4px; BORDER-RIGHT-WIDTH: =
1px; BACKGROUND-COLOR: #000; BORDER-TOP-COLOR: #555; PADDING-LEFT: 4px; =
PADDING-RIGHT: 4px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; =
BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; BORDER-LEFT-WIDTH: =
1px; TOP: -5px; PADDING-TOP: 4px; LEFT: -5px
}
.defdec .pv-ihover .pv-border {
	BORDER-BOTTOM-COLOR: #f93; BORDER-TOP-COLOR: #f93; BORDER-RIGHT-COLOR: =
#f93; BORDER-LEFT-COLOR: #f93
}
.defdec .folder .pv-border {
	BORDER-BOTTOM-COLOR: #555; PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: =
1px; BORDER-TOP-COLOR: #555; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: =
#555; BORDER-LEFT-COLOR: #555; BORDER-LEFT-WIDTH: 1px; TOP: -1px; =
PADDING-TOP: 0px; LEFT: -1px
}
.commentsimage .pv-border {
	BORDER-BOTTOM-COLOR: #fff; PADDING-BOTTOM: 2px; BORDER-RIGHT-WIDTH: =
0px; BACKGROUND-COLOR: #000; BORDER-TOP-COLOR: #fff; PADDING-LEFT: 2px; =
PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; =
BORDER-RIGHT-COLOR: #fff; BORDER-LEFT-COLOR: #fff; BORDER-LEFT-WIDTH: =
0px; TOP: -2px; PADDING-TOP: 2px; LEFT: -2px
}
.defdec .pv-folder {
	BACKGROUND-IMAGE: url(/zf/img/layout/fineart-black/group-icon.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.defdec-method-11 .pv-folder {
	BACKGROUND-IMAGE: url(/zf/img/layout/fineart-black/group-icon-xl.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.defdec .pv-ohover .pv-folder {
	BACKGROUND-IMAGE: =
url(/zf/img/layout/fineart-black/group-icon-highlight.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.defdec-method-11 .pv-ohover .pv-folder {
	BACKGROUND-IMAGE: =
url(/zf/img/layout/fineart-black/group-icon-highlight-xl.png); =
BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left top
}
.defdec-method-0 .pv-s-1 .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/layout/fineart-black/thumbnail-empty.gif)
}
.defdec-method-10 .pv-s-1 .pv-img {
	BACKGROUND-IMAGE: =
url(/zf/img/layout/fineart-black/thumbnail-empty-120.gif)
}
.defdec-method-11 .pv-s-1 .pv-img {
	BACKGROUND-IMAGE: =
url(/zf/img/layout/fineart-black/thumbnail-empty-200.gif)
}
.defdec-method-0 .pv-s-2 .pv-img {
	BACKGROUND-IMAGE: url(/zf/img/layout/fineart-black/thumbnail-empty.gif)
}
.defdec-method-10 .pv-s-2 .pv-img {
	BACKGROUND-IMAGE: =
url(/zf/img/layout/fineart-black/thumbnail-empty-120.gif)
}
.defdec-method-11 .pv-s-2 .pv-img {
	BACKGROUND-IMAGE: =
url(/zf/img/layout/fineart-black/thumbnail-empty-200.gif)
}
.defdec .pv-pad {
	BACKGROUND-COLOR: #151515
}
.pvp-method-11 .pv-pad {
	DISPLAY: none
}
.pv-label .title {
	LINE-HEIGHT: 15px; FONT-SIZE: 12px
}
.pv-label .pair {
	FONT-SIZE: 10px
}
.pv-label .pair-0 {
	FONT-SIZE: 12px
}
.pv-index {
	BACKGROUND-COLOR: #f93; FONT-FAMILY: "Lucida Grande", Verdana, =
Helvetica, Arial, sans-serif; COLOR: #000
}
.defdec .pv-index {
	TOP: -4px; RIGHT: -4px
}
.square .pv-border {
	BORDER-BOTTOM-COLOR: #333; PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: =
1px; BACKGROUND-COLOR: #000; BORDER-TOP-COLOR: #333; PADDING-LEFT: 1px; =
PADDING-RIGHT: 1px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; =
BORDER-RIGHT-COLOR: #333; BORDER-LEFT-COLOR: #333; BORDER-LEFT-WIDTH: =
1px; TOP: -2px; PADDING-TOP: 1px; LEFT: -2px
}
.square .pv-index {
	TOP: -1px; RIGHT: -1px
}
.square .pg-selected .pv-border {
	BORDER-BOTTOM-COLOR: #c70; PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: =
2px; BORDER-TOP-COLOR: #c70; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-RIGHT-COLOR: =
#c70; BORDER-LEFT-COLOR: #c70; BORDER-LEFT-WIDTH: 2px; PADDING-TOP: 0px
}
.square .pv-ihover .pv-border {
	BORDER-BOTTOM-COLOR: #c70; BORDER-TOP-COLOR: #c70; BORDER-RIGHT-COLOR: =
#c70; BORDER-LEFT-COLOR: #c70
}
.largeimage .pv-border {
	BORDER-BOTTOM-COLOR: #333; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: =
1px; BACKGROUND-COLOR: #000; BORDER-TOP-COLOR: #333; PADDING-LEFT: 8px; =
PADDING-RIGHT: 8px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; =
BORDER-RIGHT-COLOR: #333; BORDER-LEFT-COLOR: #333; BORDER-LEFT-WIDTH: =
1px; TOP: -9px; PADDING-TOP: 8px; LEFT: -9px
}
.largeimage .pv-ihover .pv-border {
	BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: =
#555; BORDER-LEFT-COLOR: #555
}
.biothumb .pv-border {
	BORDER-BOTTOM-COLOR: #333; PADDING-BOTTOM: 4px; BORDER-RIGHT-WIDTH: =
1px; BACKGROUND-COLOR: #000; BORDER-TOP-COLOR: #333; PADDING-LEFT: 4px; =
PADDING-RIGHT: 4px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; =
BORDER-RIGHT-COLOR: #333; BORDER-LEFT-COLOR: #333; BORDER-LEFT-WIDTH: =
1px; TOP: -5px; PADDING-TOP: 4px; LEFT: -5px
}
.pager-border1 {
	BORDER-BOTTOM-COLOR: #222; BORDER-TOP-COLOR: #222; BORDER-RIGHT-COLOR: =
#222; BORDER-LEFT-COLOR: #222
}
.pager-border3 {
	BORDER-BOTTOM-COLOR: #f93; BORDER-TOP-COLOR: #f93; BORDER-RIGHT-COLOR: =
#f93; BORDER-LEFT-COLOR: #f93
}
.pager-bgcolor3 {
	BACKGROUND-COLOR: #333
}
.pager-bgcolor4 {
	BACKGROUND-COLOR: #222
}
.popup-bgcolor1 {
	BACKGROUND-COLOR: #222
}
.popup-border1 {
	BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: =
#555; BORDER-LEFT-COLOR: #555
}
.popup-color1 {
	COLOR: #c0c0c0
}
.popup-font1 {
	FONT-SIZE: 13px
}
.popup-font2 {
	FONT-SIZE: 14px
}
.popup-bgcolor2 {
	BACKGROUND-COLOR: #333
}
.links-font1 {
	FONT-FAMILY: Georgia, Times, Sans-serif; FONT-SIZE: 11px
}
.links-border1 {
	BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: =
#666; BORDER-LEFT-COLOR: #666
}
.links-bgcolor1 {
	BACKGROUND-COLOR: #333
}
.links-color1 {
	COLOR: #ddd
}
.links-font2 {
	FONT-SIZE: 11px
}
.links-border2 {
	BORDER-BOTTOM-COLOR: #ce790f; BORDER-TOP-COLOR: #ce790f; =
BORDER-RIGHT-COLOR: #ce790f; BORDER-LEFT-COLOR: #ce790f
}
.links-color2 {
	BACKGROUND-COLOR: #222; COLOR: #ce790f
}
.addToCart-font1 {
	FONT-SIZE: 19px; FONT-WEIGHT: normal
}
.addToCart-color1 {
	COLOR: #fff
}
.addToCart-color2 {
	COLOR: #c0c0c0
}
.addToCart-font2 {
	FONT-SIZE: 12px
}
.addToCart .pv-iborder {
	COLOR: #555
}
.addToCart-bgcolor1 {
	BACKGROUND-COLOR: #333
}
.addToCart-font3 {
	FONT-SIZE: 17px
}
.addToCart-border1 {
	BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: =
#555; BORDER-LEFT-COLOR: #555
}
.addToCart-border2 {
	BORDER-BOTTOM-COLOR: #f93; BORDER-TOP-COLOR: #f93; BORDER-RIGHT-COLOR: =
#f93; BORDER-LEFT-COLOR: #f93
}
.addToCart-font4 {
	TEXT-TRANSFORM: uppercase; FONT-SIZE: 11px; FONT-WEIGHT: bold
}
.addToCart-bgcolor3 {
	BACKGROUND-COLOR: #111
}
.addToCart-border3 {
	BORDER-BOTTOM-COLOR: #333; BORDER-TOP-COLOR: #333; BORDER-RIGHT-COLOR: =
#333; BORDER-LEFT-COLOR: #333
}
.addToCart-color3 {
	COLOR: #f93
}
.addToCart-color4 {
	COLOR: #ddd
}
.addToCart-bgcolor4 {
	BACKGROUND-COLOR: #666
}
.addToCart-bgcolor5 {
	BACKGROUND-COLOR: #111
}
.addToCart-bgcolor6 {
	BACKGROUND-COLOR: #333
}
.addToCart-color6 {
	COLOR: #fff
}
.addToCart .button-font1 {
	FONT-SIZE: 11px
}
.ews-font1 {
	FONT-FAMILY: Verdana, Lucida Grande, Arial, Helvetica, sans-serif; =
FONT-SIZE: 11px
}
.ews-bgcolor1 {
	BACKGROUND-COLOR: #fff
}
.ews-border1 {
	BORDER-BOTTOM-COLOR: #f93; BORDER-TOP-COLOR: #f93; BORDER-RIGHT-COLOR: =
#f93; BORDER-LEFT-COLOR: #f93
}
.ews-color1 {
	COLOR: #000
}
.ews-bgcolor2 {
	BACKGROUND-COLOR: #e5e5e5
}
.ews-border2 {
	BORDER-BOTTOM-COLOR: #ccc; BORDER-TOP-COLOR: #ccc; BORDER-RIGHT-COLOR: =
#ccc; BORDER-LEFT-COLOR: #ccc
}
.ews-color2 {
	COLOR: #333
}
.ews-bgcolor3 {
	BACKGROUND-COLOR: #f93
}
.sb-color1 {
	COLOR: #666
}
.sb-color4 {
	COLOR: #333
}
.sb-bgcolor1 {
	BACKGROUND-COLOR: #000
}
.sb-bgcolor4 {
	BACKGROUND-COLOR: #666
}
.sb-bgimage1 {
	BACKGROUND-IMAGE: url(/zf/img/layout/sb-top.gif)
}
.sb-bgimage2 {
	BACKGROUND-IMAGE: url(/zf/img/layout/sb-bottom.gif)
}
.sb-bgimage3 {
	BACKGROUND-IMAGE: url(/zf/img/layout/sb-grip.gif)
}
.tab-color1 {
	COLOR: #c0c0c0
}
.tab-color2 {
	COLOR: #999
}
.tab-color3 {
	COLOR: #999
}
.tab-font1 {
	FONT-SIZE: 12px
}
.tab-bgcolor1 {
	BACKGROUND-COLOR: #000
}
.tab-bgcolor2 {
	BACKGROUND-COLOR: #222
}
.tab-bgcolor3 {
	BACKGROUND-COLOR: #555
}
.tab-border1 {
	BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: =
#555; BORDER-LEFT-COLOR: #555
}
.listheader-font1 {
	FONT-SIZE: 13px
}
.listheader-color1 {
	COLOR: #c0c0c0
}
.listheader-color2 {
	COLOR: #999999
}
.passwordBox {
	BORDER-BOTTOM: #666666 2px solid; BORDER-LEFT: #666666 2px solid; =
BACKGROUND-COLOR: #404040; FONT-SIZE: 12px; BORDER-TOP: #666666 2px =
solid; BORDER-RIGHT: #666666 2px solid
}
.passwordBox INPUT {
	BORDER-BOTTOM: #5e86bf 1px solid; BORDER-LEFT: #5e86bf 1px solid; =
BORDER-TOP: #5e86bf 1px solid; BORDER-RIGHT: #5e86bf 1px solid
}
.passwordBox A {
	FONT-WEIGHT: bold
}
.passwordBox .passwordIncorrect {
	COLOR: #d07a0f
}
.prefetch-user .prefetch-0 {
	BACKGROUND: url(/zf/img/layout/fineart-black/group-icon-highlight.png)
}
.prefetch-folder .prefetch-0 {
	BACKGROUND: url(/zf/img/layout/fineart-black/group-icon-highlight.png)
}
.prefetch-user .prefetch-1 {
	BACKGROUND: =
url(/zf/img/layout/fineart-black/group-icon-highlight-xl.png)
}
.prefetch-folder .prefetch-1 {
	BACKGROUND: =
url(/zf/img/layout/fineart-black/group-icon-highlight-xl.png)
}
.ml-border1 {
	BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: =
#666; BORDER-LEFT-COLOR: #666
}
.ml-border2 {
	BORDER-BOTTOM-COLOR: #4d4d4d; BORDER-TOP-COLOR: #4d4d4d; =
BORDER-RIGHT-COLOR: #4d4d4d; BORDER-LEFT-COLOR: #4d4d4d
}
.ml-font1 {
	FONT-SIZE: 12px; FONT-WEIGHT: bold
}
.ml-font3 {
	FONT-SIZE: 12px
}
.ml-font4 {
	FONT-SIZE: 11px
}
.ml-color4 {
	COLOR: #888
}
.mv-bgcolor1 {
=09
}
.ml-s-selected .mv-bgcolor1 {
	BACKGROUND-COLOR: #333
}
.mv-font1 {
	LINE-HEIGHT: 20px; FONT-SIZE: 12px
}
.mv-color1 {
	COLOR: #999
}
.ml-s-selected .mv-color1 {
	COLOR: #eee
}
.mv-color2 {
	COLOR: #666
}
.mv-color3 {
	COLOR: #ccc
}
.mv-font2 {
	FONT-SIZE: 12px
}
.mv-font3 {
	FONT-SIZE: 11px
}
.mv-color4 {
	COLOR: #888
}
.me-border1 {
	BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: =
#666; BORDER-LEFT-COLOR: #666
}
.me-bgcolor1 {
	BACKGROUND-COLOR: white
}
.me-color1 {
	COLOR: #333
}
.me-color2 {
=09
}
.me-disabled .me-color2 {
	COLOR: #666
}
.me-readonly .me-color1 {
	COLOR: #666
}
.me-missing .me-color2 {
	COLOR: #d07a0f
}
.me-missing .me-border1 {
	BORDER-BOTTOM-COLOR: #d07a0f; BORDER-TOP-COLOR: #d07a0f; =
BORDER-RIGHT-COLOR: #d07a0f; BORDER-LEFT-COLOR: #d07a0f
}
.me-readonly .me-bgcolor1 {
	BACKGROUND-COLOR: #ddd
}
.me-font1 {
	FONT-FAMILY: Georgia, Times, Sans-serif; FONT-SIZE: 12px
}
.me-font2 {
	FONT-SIZE: 11px
}
.me-color3 {
	COLOR: #d07a0f
}
.recentcomments-color1 {
	COLOR: #cccccc
}
.recentcomments-font1 {
	FONT-WEIGHT: bold
}
.recentcomments-font2 {
	FONT-SIZE: 11px
}
.cb-border1 {
	BORDER-BOTTOM-COLOR: #595959; BORDER-TOP-COLOR: #595959; =
BORDER-RIGHT-COLOR: #595959; BORDER-LEFT-COLOR: #595959
}
.cb-font1 {
	FONT-SIZE: 17px
}
.cb-font2 {
	FONT-SIZE: 14px
}
.cb-font3 {
	FONT-SIZE: 12px
}

------=_NextPart_000_0000_01CA8EAD.1803D070
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.zenfolio.com/zf/script/en-US/ie8/windows/8JB1M1BSEWT7S/layout.js

=EF=BB=BF
/* Copyright (C) 2004-2008 Zenfolio, Inc. All rights reserved. */
; var __zfl_start =3D new Date().getTime(); function =
_zf_stdTrapError(message, url, line) { try {
zf_stdServerRequest("POST", "/zf/core/core.asmx", "ReportError", [ =
message.toString(), location.href,
url, line ]); } catch (e) { } return true; } window.onerror =3D =
_zf_stdTrapError; function zf_Debug()
{ this._debugWindow =3D null; this._startTime =3D new Date().getTime(); =
} zf_Debug.prototype.activate
=3D function() { if (this._debugWindow =3D=3D null) { var wnd =3D =
window.open("about:blank", "_blank",
"width=3D500,left=3D400,resizable,scrollbars"); if (wnd !=3D null) { =
this._debugWindow =3D wnd; zf_stdAttachEvent(window,
"unload", function() { wnd.close(); }); } else { alert("Cannot open =
debug window (check popup blocker settings)");
return; } } this._debugWindow.document.writeln('<html><head><style =
type=3D"text/css">'); this._debugWindow.document.writeln("BODY { font: =
9pt 'Lucida Console', 'Courier New'; margin: 4px; }");
this._debugWindow.document.writeln("P { background: #F0F0F0; margin: 0px =
0px 1px 0px; }"); =
this._debugWindow.document.writeln("</style></head><body></body></html>")=
;
this.log("logging started"); }; zf_Debug.prototype.log =3D =
function(format) { for (var i =3D 1; i < arguments.length;
i++) { var re =3D new RegExp("\\{" + (i - 1) + "\\}", "g"); format =3D =
format.replace(re, arguments[i]);
} var timestamp =3D new Date().getTime() - this._startTime; var ms =3D =
(timestamp % 1000).toString();
var s =3D Math.floor(timestamp / 1000).toString(); while (ms.length < 3) =
ms =3D "0" + ms; while (s.length
< 2) s =3D " " + s; if (window.console && window.console.log) =
window.console.log(["[", s, ".", ms, "] ",
format].join("")); if (this._debugWindow =3D=3D null || =
this._debugWindow.closed) return; var message
=3D [ "<p>[", s, ".", ms, "] ", format, "</p>" ].join(""); =
this._debugWindow.document.body.innerHTML
+=3D message; this._debugWindow.scrollTo(0, 10000000); }; zf_debug =3D =
new zf_Debug(); function zf_assert(expr,
exprQuote, fileName, lineNumber) { if (!expr) { var context; var =
message; if (exprQuote =3D=3D null)
{ context =3D zf_assert.caller.toString(); if (context.length > 512) =
context =3D context.substr(0, 512);
message =3D "Assertion failed in " + context; } else { message =3D =
"Assertion (" + exprQuote + ") failed.";
} if (fileName =3D=3D null) fileName =3D "<unknown>"; if (lineNumber =
=3D=3D null) lineNumber =3D 0; zf_stdServerRequest("POST",
"/zf/core/core.asmx", "ReportError", [ message, document.location.href, =
fileName, lineNumber ]);
} } function zf_log(format) { zf_Debug.prototype.log.apply(zf_debug, =
arguments); }
; function zf_stdNoArgs(args) { return args.length =3D=3D 1 && args[0] =
=3D=3D zf_stdNoArgs; } function zf_stdTrue()
{ return true; } function zf_stdFalse() { return false; } function =
zf_stdCopyFields(dest, src, fields)
{ for (var i =3D 0; i < fields.length; i++) { var fieldName =3D =
fields[i]; if (src[fieldName] !=3D=3D undefined)
dest[fieldName] =3D src[fieldName]; } return dest; } function =
zf_stdShallowCopy(dest, src) { for (var
field in src) { dest[field] =3D src[field]; } return dest; } =
Function.prototype.inherits =3D function(base1)
{ this.prototype =3D {}; for (var i =3D 0; i < arguments.length; i++) { =
for (var method in arguments[i].prototype)
{ if (arguments[i].prototype[method] instanceof Function) { =
this.prototype[method] =3D arguments[i].prototype[method];
} } } this.prototype.constructor =3D this; };
; function zf_stdGetEvent(e) { if (window.event) e =3D window.event; =
return e; } function zf_stdStopPropagation(e)
{ if (window.event) window.event.cancelBubble =3D true; else if =
(e.stopPropagation) e.stopPropagation();
} function zf_stdPreventDefault(e) { if (window.event) =
window.event.returnValue =3D false; else if (e.preventDefault)
e.preventDefault(); } function zf_stdAttachEvent(dom, evt, handler) { if =
(typeof(dom) =3D=3D "string")
dom =3D document.getElementById(dom); if (dom.attachEvent) =
dom.attachEvent("on" + evt, handler);
else if (dom.addEventListener) dom.addEventListener(evt, handler, =
false); } function zf_stdDetachEvent(dom,
evt, handler) { if (typeof(dom) =3D=3D "string") dom =3D =
document.getElementById(dom); if (dom.detachEvent)
dom.detachEvent("on" + evt, handler); else if (dom.removeEventListener) =
dom.removeEventListener(evt,
handler, false); } function zf_stdGetEventSource(e) { e =3D =
zf_stdGetEvent(e); if (e.srcElement)
return e.srcElement; else if (e.target) return e.target; else if =
(e.currentTarget) return e.currentTarget;
return null; } function zf_stdIsLeftButton(e) { e =3D zf_stdGetEvent(e); =
var left; left =3D 1; return (e.button
=3D=3D left); } function zf_Event(domEvent) { if (window.event) =
this.domEvent =3D window.event; else
this.domEvent =3D domEvent; } zf_Event.prototype.getSource =3D =
function() { if (window.event) return this.domEvent.srcElement;
else return this.domEvent.target; }; zf_Event.prototype.getSourceWithTag =
=3D function(tagName) {
var domSource =3D this.getSource(); while (domSource !=3D null && =
domSource.tagName !=3D tagName) domSource
=3D domSource.parentNode; return domSource; }; =
zf_Event.prototype.getSourceWithClass =3D function(tagClass)
{ var domSource =3D this.getSource(); while (domSource !=3D null && =
domSource.className !=3D tagClass)
domSource =3D domSource.parentNode; return domSource; }; =
zf_Event.prototype.stopPropagation =3D function()
{ if (window.event) this.domEvent.cancelBubble =3D true; else if =
(this.domEvent.stopPropagation)
this.domEvent.stopPropagation(); }; zf_Event.prototype.preventDefault =
=3D function() { if (window.event)
this.domEvent.returnValue =3D false; else if =
(this.domEvent.preventDefault) this.domEvent.preventDefault();
};
; function zf_NumberFormat() { } zf_NumberFormat.prototype.formatNumber =
=3D function(num, decimalDigits)
{ if (decimalDigits =3D=3D null) decimalDigits =3D =
this.numberDecimalDigits; var numStr =3D =
zf_NumberFormat._formatNumber(Math.abs(num),
decimalDigits, this.numberDecimalSeparator, this.numberGroupSizes, =
this.numberGroupSeparator);
if (num < 0) { var pattern =3D =
zf_NumberFormat._negNumberPatterns[this.numberNegativePattern]; if =
(!pattern)
pattern =3D zf_NumberFormat._negNumberPatterns[0]; return =
zf_stdFormatString(pattern, this.negativeSign,
numStr); } return numStr; }; zf_NumberFormat.prototype.formatMoney =3D =
function(amount, currency)
{ var pattern; if (currency && currency.code =3D=3D "USD") { pattern =3D =
amount >=3D 0 ? zf_NumberFormat._posCurrencyPatterns[0]
: zf_NumberFormat._negCurrencyPatterns[0]; } else if (amount >=3D 0) { =
pattern =3D =
zf_NumberFormat._posCurrencyPatterns[this.currencyPositivePattern];
if (!pattern) pattern =3D zf_NumberFormat._posCurrencyPatterns[0]; } =
else { amount =3D -amount; pattern
=3D zf_NumberFormat._negCurrencyPatterns[this.currencyNegativePattern]; =
if (!pattern) pattern =3D zf_NumberFormat._negCurrencyPatterns[0];
} var numStr =3D zf_NumberFormat._formatNumber(amount, =
this.currencyDecimalDigits, this.currencyDecimalSeparator,
this.currencyGroupSizes, this.currencyGroupSeparator); var symbol =3D =
currency ? currency.symbol : '';
return zf_stdFormatString(pattern, this.negativeSign, symbol, =
numStr).replace(/^\s+|\s+$/g, '');
}; zf_NumberFormat._formatNumber =3D function(num, decimalDigits, =
decimalSeparator, groupSizes, groupSeparator)
{ groupSizes =3D groupSizes.concat(); var result =3D []; var numStr =3D =
num.toFixed(decimalDigits); var
pos =3D numStr.lastIndexOf('.'); if (pos < 0) pos =3D numStr.length; =
else result.unshift(decimalSeparator,
numStr.substring(pos + 1)); var groupSize =3D groupSizes.length > 0 ? =
groupSizes.shift() : 0; while
(groupSize !=3D 0 && pos > 0) { var from =3D pos - groupSize >=3D 0 ? =
pos - groupSize : 0; result.unshift(numStr.substring(from,
pos)); pos =3D from; if (pos > 0) result.unshift(groupSeparator); if =
(groupSizes.length > 0) groupSize
=3D groupSizes.shift(); } if (pos > 0) =
result.unshift(numStr.substring(0, pos)); return result.join('');
}; zf_NumberFormat._negNumberPatterns =3D [ '({1})', '{0}{1}', '{0} =
{1}', '{1}{0}', '{1} {0}' ];
zf_NumberFormat._negCurrencyPatterns =3D [ '({1}{2})', '{0}{1}{2}', =
'{1}{0}{2}', '{1}{2}{0}', '({2}{1})',
'{0}{2}{1}', '{2}{0}{1}', '{2}{1}{0}', '{0}{2} {1}', '{0}{1} {2}', '{2} =
{1}{0}', '{1} {2}{0}',
'{1} {0}{2}', '{2}{0} {1}', '({1} {2})', '({2} {1})' ]; =
zf_NumberFormat._posCurrencyPatterns =3D [
'{1}{2}', '{2}{1}', '{1} {2}', '{2} {1}' ]; function =
zf_stdFormatEditableDecimal(val, numDecimals)
{ var format =3D zf_NumberFormat.current; if (numDecimals =3D=3D=3D =
undefined) numDecimals =3D 6; var res
=3D val.toFixed(numDecimals); if(res.indexOf(".") !=3D -1) { res =3D =
res.replace(/0+$/, ""); res =3D res.replace(/\.$/,
""); } return res.replace(/\./i, format.numberDecimalSeparator); } =
function zf_stdParseEditableDecimal(val)
{ if (val && val.length > 0) val =3D val.replace(/^\s+|\s+$/g, ''); var =
format =3D zf_NumberFormat.current;
var separator =3D format.numberDecimalSeparator; if (!new =
RegExp("^-?\\d*\\" + separator + "?\\d*$").test(val))
{ return NaN; } return parseFloat(val.replace(new RegExp("(\\" + =
separator + ")"), ".")); } function
zf_stdCheckEditableDecimal(val) { if =
(isNaN(zf_stdParseEditableDecimal(val))) { return =
zf_stdFormatString("Please use the correct decimal format (e.g. {0})",
zf_stdFormatEditableDecimal(12.3)); } return undefined; } function =
zf_stdFormatEditableInteger(val)
{ return val.toFixed(0); } function zf_stdParseEditableInteger(val) { if =
(!new RegExp("^-?\\d+$").test(val))
{ return NaN; } return parseInt(val); } function =
zf_stdCheckEditableInteger(val) { if =
(isNaN(zf_stdParseEditableInteger(val)))
{ return zf_stdFormatString("Please use the correct integer format (e.g. =
{0})", zf_stdFormatEditableInteger(42));
} return undefined; }
; function zf_stdTrim(str) { var re =3D /^\s*(\S?[\s\S]*?)\s*$/; =
re.exec(str); return RegExp.$1; }
function zf_stdFormatString(format) { var args =3D arguments; for (var i =
=3D 1; i < arguments.length;
i++) { var re =3D new RegExp("\\{" + (i - 1) + "\\}", "g"); format =3D =
format.replace(re, args[i]);
} return format; } var zf_stdCompareString =3D ("".localeCompare) ? =
function(a, b) { return a.localeCompare(b);
} : function(a, b) { return (a < b) ? -1 : (a > b) ? 1 : 0; }; function =
zf_stdFormatByteSize(value)
{ if (value =3D=3D null) return null; var sign =3D false; if (value < 0) =
{ value =3D -value; sign =3D true;
} var i =3D 0; var sz =3D value; var scale =3D 1; while (sz >=3D 1024 && =
i < 12) { rem =3D value % 1024;
sz =3D Math.floor(sz / 1024); scale *=3D 1024; i +=3D 3; } var format; =
switch (i) { case 0: format =3D "{0} bytes";
break; case 3: format =3D "{0} KB"; break; case 6: format =3D "{0} MB"; =
break; case 9: format =3D "{0} GB";
break; case 12: format =3D "{0} TB"; break; default: zf_assert(false); =
break; } var decimalDigits
=3D 0; if (scale > 1) { value /=3D scale; decimalDigits =3D value < 10 ? =
2 : 1; } if (sign) value =3D -value;
return zf_stdFormatString(format, =
zf_NumberFormat.current.formatNumber(value, decimalDigits)); }
function zf_stdInsertBreakHints(text) { return text; } function =
zf_stdIsValidEmail(email) { return =
(/^[\w-\.]+@([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}$/.test(email))
|| =
(/^[\w-\.]+@\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\]$/.test(ema=
il)); }
; var _zf_stdMonthNames =3D [ "January", "February", "March", "April", =
"May", "June", "July", "August",
"September", "October", "November", "December" ]; function =
zf_stdFormatDate(date) { if (date =3D=3D null)
return null; var yr =3D date.getFullYear() % 100; var mo =3D =
_zf_stdMonthNames[date.getMonth()].substr(0,
3); var dt =3D date.getDate(); if (yr < 10) yr =3D "0" + yr; return dt + =
"-" + mo + "-" + yr; } function
zf_stdFormatDateTime(date, seconds) { if (date =3D=3D null) return null; =
var yr =3D date.getFullYear() %
100; var mo =3D _zf_stdMonthNames[date.getMonth()].substr(0, 3); var dt =
=3D date.getDate(); var hh =3D date.getHours();
var mm =3D date.getMinutes(); if (yr < 10) yr =3D "0" + yr; if (hh < 10) =
hh =3D "0" + hh; if (mm < 10)
mm =3D "0" + mm; var s =3D dt + "-" + mo + "-" + yr + " " + hh + ":" + =
mm; if (seconds) { var ss =3D date.getSeconds();
if (ss < 10) ss =3D "0" + ss; s +=3D ":" + ss; } return s; } function =
zf_stdFormatDateTimeEx(date, seconds)
{ if (date =3D=3D null) return null; var t =3D new Date(); var y =3D new =
Date(t); y.setDate(t.getDate()
- 1); var format =3D null; if (date.getFullYear() =3D=3D t.getFullYear() =
&& date.getMonth() =3D=3D t.getMonth()
&& date.getDate() =3D=3D t.getDate()) { format =3D "Today, {0}"; } else =
if (date.getFullYear() =3D=3D y.getFullYear()
&& date.getMonth() =3D=3D y.getMonth() && date.getDate() =3D=3D =
y.getDate()) { format =3D "Yesterday, {0}";
} if (!format) return zf_stdFormatDateTime(date, seconds); var hh =3D =
date.getHours(); var mm =3D date.getMinutes();
if (hh < 10) hh =3D "0" + hh; if (mm < 10) mm =3D "0" + mm; var s =3D hh =
+ ":" + mm; if (seconds) { var
ss =3D date.getSeconds(); if (ss < 10) ss =3D "0" + ss; s +=3D ":" + ss; =
} return zf_stdFormatString(format,
s); } function zf_stdParseDateTimeUTC(value) { var regExp =3D =
/([0-9]{4})-([0-9]{2})-([0-9]{2})\s+([0-9]{2}):([0-9]{2}):([0-9]{2})Z?/;
regExp.exec(value); var yr =3D parseInt(RegExp.$1, 10); var mo =3D =
parseInt(RegExp.$2, 10) - 1; var
dt =3D parseInt(RegExp.$3, 10); var hh =3D parseInt(RegExp.$4, 10); var =
mm =3D parseInt(RegExp.$5, 10);
var ss =3D parseInt(RegExp.$6, 10); var date =3D new Date(); =
date.setUTCFullYear(yr, mo, dt); date.setUTCHours(hh,
mm, ss); return date; } function zf_stdParseDateTime(value) { var regExp =
=3D =
/([0-9]{4})-([0-9]{2})-([0-9]{2})\s+([0-9]{2}):([0-9]{2}):([0-9]{2})Z?/;
regExp.exec(value); var yr =3D parseInt(RegExp.$1, 10); var mo =3D =
parseInt(RegExp.$2, 10) - 1; var
dt =3D parseInt(RegExp.$3, 10); var hh =3D parseInt(RegExp.$4, 10); var =
mm =3D parseInt(RegExp.$5, 10);
var ss =3D parseInt(RegExp.$6, 10); var date =3D new Date(); =
date.setFullYear(yr, mo, dt); date.setHours(hh,
mm, ss); return date; } function zf_stdFormatTimeInterval(value) { if =
(value =3D=3D null) return null;
var nHours =3D Math.floor(value / 3600); var nMin =3D Math.floor(value / =
60) % 60; var nSec =3D Math.floor(value
+ 0.5) % 60; var strFormat; if (value < 60) strFormat =3D "{2} sec"; =
else if (nHours =3D=3D 0 && nSec =3D=3D
0) strFormat =3D "{1} min"; else if (nHours =3D=3D 0) strFormat =3D "{1} =
min {2} sec"; else if (nMin =3D=3D 0)
strFormat =3D "{0} hr"; else strFormat =3D "{0} hr {1} min"; return =
zf_stdFormatString(strFormat, nHours,
nMin, nSec); }
; function zf_stdHtmlEncode(text) { return text.replace(/\&/g, "&amp;") =
.replace(/\</g, "&lt;")
.replace(/\>/g, "&gt;") .replace(/\n/g, "<br/>") .replace(/\r/g, ""); } =
function zf_stdHtmlDecode(text)
{ return text.replace(/\<\/?br\/?\>/g, "\n") .replace(/\&amp;/g, "&") =
.replace(/\&lt;/g, "<") .replace(/\&gt;/g,
">"); } function zf_stdScriptEncode(text) { return =
text.replace(/([\\\x22\x27])/g, '\\$1') .replace(/\r/g,
"\\r") .replace(/\n/g, "\\n") .replace(/\t/g, "\\t") .replace(/</g, =
"\\x3C"); } function zf_stdSetText(dom,
text) { if (typeof(dom) =3D=3D "string") dom =3D =
document.getElementById(dom); if (dom.innerText) { if
(dom.innerText !=3D text) dom.innerText =3D text; } else if =
(dom.textContent) { if (dom.textContent
!=3D text) dom.textContent =3D text; } else { while (dom.firstChild !=3D =
null) dom.removeChild(dom.firstChild);
dom.appendChild(document.createTextNode(text)); } } function =
zf_stdGetText(dom) { if (typeof(dom)
=3D=3D "string") dom =3D document.getElementById(dom); if =
(dom.innerText) return dom.innerText; else if
(dom.textContent) return dom.textContent; else if (dom.firstChild !=3D =
null) return dom.firstChild.nodeValue;
else return ""; } function zf_stdSetValue(element, value) { if =
(typeof(element) =3D=3D "string") element
=3D document.getElementById(element); if (element !=3D null) =
element.value =3D value; } function zf_stdGetValue(element)
{ if (typeof(element) =3D=3D "string") element =3D =
document.getElementById(element); return (element !=3D
null) ? element.value : ""; } function zf_stdGetClientWidth() { if =
(document.documentElement) return document.documentElement.clientWidth;
else if (window.innerWidth) return window.innerWidth; else return 1024; =
} function zf_stdGetClientHeight()
{ if (document.documentElement) return =
document.documentElement.clientHeight; else if (window.innerHeight)
return window.innerHeight; else return 768; } function =
zf_stdGetOffset(elem, parent) { if (parent
!=3D null) { var elemOffset =3D zf_stdGetOffset(elem); var parentOffset =
=3D zf_stdGetOffset(parent);
return { cx : elemOffset.cx - parentOffset.cx, cy: elemOffset.cy - =
parentOffset.cy }; } if (typeof(elem)
=3D=3D "string") elem =3D document.getElementById(elem); var cx =3D 0, =
cy =3D 0; for (var obj =3D elem; obj !=3D
null; obj =3D obj.offsetParent) { cx +=3D obj.offsetLeft; cy +=3D =
obj.offsetTop; } return { cx : cx, cy
: cy }; }
; function zf_stdReplaceClassName(elem, remove, add) { if (remove =3D=3D =
add) return; if (typeof(elem)
=3D=3D "string") elem =3D document.getElementById(elem); if (elem =3D=3D =
null) return; var classNames =3D elem.className.split(" ");
var removeAt =3D -1; var foundAt =3D -1; for (var i =3D 0; i < =
classNames.length; i++) { if (classNames[i]
=3D=3D remove) removeAt =3D i; else if (classNames[i] =3D=3D add) =
foundAt =3D i; } var updated =3D false; if (removeAt
!=3D -1) { classNames.splice(removeAt, 1); updated =3D true; } if =
(foundAt =3D=3D -1 && add !=3D null) {
classNames.push(add); updated =3D true; } if (updated) { =
classNames.sort(); elem.className =3D classNames.join(" ");
} } function zf_stdHasClassName(elem, className) { if (typeof(elem) =
=3D=3D "string") elem =3D document.getElementById(elem);
if (elem =3D=3D null) return false; if (elem.className =3D=3D null || =
elem.className =3D=3D "") return false;
var classNames =3D elem.className.split(" "); for (var i =3D 0; i < =
classNames.length; i++) { if (classNames[i]
=3D=3D className) return true; } return false; } function =
zf_stdGetCurrentStyle(obj, styleCss, styleProperty)
{ if (styleProperty =3D=3D null) styleProperty =3D styleCss; var style =
=3D "0px"; if (obj.currentStyle)
style =3D obj.currentStyle[styleProperty]; else { style =3D =
document.defaultView.getComputedStyle(obj,
null); if (style !=3D null) style =3D style.getPropertyValue(styleCss); =
} return style; } function zf_stdExtractPixels(value)
{ if (value =3D=3D null || value.indexOf("px") =3D=3D -1) return 0; =
return parseInt(value.substr(0, value.length
- 2), 10); } function zf_stdGetHeightAbove(obj) { return =
zf_stdExtractPixels( zf_stdGetCurrentStyle(obj,
'padding-top', 'paddingTop')) + zf_stdExtractPixels( =
zf_stdGetCurrentStyle(obj, 'border-top-width',
'borderTopWidth')) + zf_stdExtractPixels( zf_stdGetCurrentStyle(obj, =
'margin-top', 'marginTopWidth'));
} function zf_stdGetHeightBelow(obj) { return zf_stdExtractPixels( =
zf_stdGetCurrentStyle(obj, 'padding-bottom',
'paddingBottom')) + zf_stdExtractPixels( zf_stdGetCurrentStyle(obj, =
'border-bottom-width', 'borderBottomWidth'))
+ zf_stdExtractPixels( zf_stdGetCurrentStyle(obj, 'margin-bottom', =
'marginBottomWidth')); } function
zf_stdGetHeightOverall(obj) { var cyHeight =3D obj.offsetHeight; if =
(typeof(cyHeight) !=3D "number")
cyHeight =3D 0; return cyHeight + zf_stdExtractPixels( =
zf_stdGetCurrentStyle(obj, 'margin-top', 'marginTop'))
+ zf_stdExtractPixels( zf_stdGetCurrentStyle(obj, 'margin-bottom', =
'marginBottom')); }
; function zf_stdSetCookie(name, value, expire, noescape, specificHost) =
{ if (!noescape) value =3D escape(value);
var cookie =3D name + "=3D" + value + ";path=3D/"; var hostname =3D =
document.location.hostname; if (!specificHost
&& hostname.length > zf_defaultDomain.length && =
hostname.lastIndexOf(zf_defaultDomain) =3D=3D hostname.length
- zf_defaultDomain.length) cookie +=3D ";domain=3D" + =
zf_defaultDomain.substr(1); if (expire !=3D null)
cookie +=3D ";expires=3D" + expire.toGMTString(); document.cookie =3D =
cookie; } function zf_stdGetCookie(name)
{ var cookie =3D document.cookie; var start; var end; if ((start =3D =
cookie.indexOf(name + "=3D")) =3D=3D -1)
return null; start +=3D name.length + 1; if ((end =3D =
cookie.indexOf(";", start)) =3D=3D -1) end =3D cookie.length;
return unescape(cookie.substring(start, end)); } function =
zf_stdRemoveCookie(name) { var expires
=3D new Date(); expires.setFullYear(expires.getFullYear() - 1); =
zf_stdSetCookie(name, "", expires, true);
} function zf_stdGetTransferUrl(target) { var k =3D =
target.indexOf("://"); ; var n =3D target.indexOf("/",
k + 3); ; var schema =3D target.substring(0, k + 1); var host =3D =
target.substring(k + 3, n); var path
=3D target.substr(n); if ((k =3D host.indexOf(":")) !=3D -1) host =3D =
host.substring(0, k); var i =3D host.lastIndexOf(zf_defaultDomain);
var j =3D location.host.lastIndexOf(zf_defaultDomain); var defaultTarget =
=3D i !=3D -1 && i + zf_defaultDomain.length
=3D=3D host.length; var defaultOrigin =3D j !=3D -1 && j + =
zf_defaultDomain.length =3D=3D location.host.length;
if (location.protocol =3D=3D schema) { if (host =3D=3D location.host) =
return path; if ((defaultOrigin && defaultTarget))
return target; } if (schema =3D=3D "https") host =3D "s"; else if (host =
=3D=3D zf_defaultHost) host =3D "z";
else if (host =3D=3D location.host) host =3D "-"; else if =
(defaultTarget) host =3D host.substr(0, host.length
- zf_defaultDomain.length); if (path =3D=3D "/") path =3D ""; return [ =
"/zf/transfer/", host, path ].join("");
} function _zf_stdSetTimezoneOffset() { var expires =3D new Date(); =
expires.setFullYear(expires.getFullYear()
+ 10); zf_stdSetCookie("zf_10y_tz", -(new Date().getTimezoneOffset()), =
expires); }
; function zf_stdCreateXMLHttpRequest() { if (window.XMLHttpRequest) =
return new XMLHttpRequest();
else return new ActiveXObject("Microsoft.XMLHTTP"); } function =
zf_stdServerRequest(method, url,
api, params, callback) { ; ; ; var request =3D =
zf_stdCreateXMLHttpRequest(); request.onreadystatechange
=3D function() { if (request.readyState !=3D 4) return; =
request.onreadystatechange =3D zf_stdFalse; if
(callback !=3D null) { var retVal =3D null; if (request.status =3D=3D =
200) { retVal =3D request.responseText;
retVal =3D "return _zf_stdTransformResponse(" + retVal + ")"; retVal =3D =
new Function(retVal)(); }
callback(request.status, retVal); } }; var body =3D { method: api, =
params: [], id: 0 }; if (params
!=3D null) body.params =3D params; body =3D =
_zf_stdJsonSerialize(body).join(""); if (method =3D=3D "GET")
{ url +=3D "?request=3D" + encodeURIComponent(body); body =3D null; } =
request.open(method, url, true);
if (method =3D=3D "POST") request.setRequestHeader("Content-Type", =
"application/json"); request.send(body);
} function zf_stdServerRequestEx(method, url, api, params, callback) { =
zf_stdServerRequest(method,
url, api, params, function(status, retVal) { var error; var result; if =
(status !=3D 200) { result
=3D null; error =3D { message: status =3D=3D 403 ? "Access Denied." : =
"An unexpected error has occurred. Please try again later. If this =
problem persists, contact Support."
}; } else { result =3D retVal.result; error =3D retVal.error; } =
callback(result, error); }); } function
_zf_stdJsonSerialize(val) { var json =3D []; var i; var v; switch =
(typeof(val)) { case "boolean":
json.push(val ? "true" : "false"); break; case "number": =
json.push(val.toString()); break; case
"string": json.push('"', _zf_stdJsonEncode(val), '"'); break; case =
"object": if (val =3D=3D null) {
json.push("null"); break; } if (val.constructor =3D=3D Array) { =
json.push("["); var last =3D val.length;
for (i =3D 0; i < last; i++) { if (i > 0) json.push(","); if ((v =3D =
val[i]) =3D=3D=3D null) json.push("null");
else switch (typeof(v)) { case "boolean": json.push(v ? "true" : =
"false"); break; case "number":
json.push(v.toString()); break; case "string": json.push('"', =
_zf_stdJsonEncode(v), '"'); break;
case "object": json =3D json.concat(_zf_stdJsonSerialize(v)); break; =
default: ; json.push("null");
break; } } json.push("]"); break; } if (val.constructor =3D=3D Date) { =
json.push('{"$type":"Date","value":"',
val.toUTCString(), '"}'); break; } json.push("{"); i =3D 0; for (var =
prop in val) { v =3D val[prop];
if (prop !=3D "prototype" && typeof(v) !=3D "function") { if (i > 0) =
json.push(","); json.push('"',
_zf_stdJsonEncode(prop.toString()), '":'); if (v =3D=3D=3D null) =
json.push("null"); else switch (typeof(v))
{ case "boolean": json.push(v ? "true" : "false"); break; case "number": =
json.push(v.toString());
break; case "string": json.push('"', _zf_stdJsonEncode(v), '"'); break; =
case "object": json =3D json.concat(_zf_stdJsonSerialize(v));
break; default: ; json.push("null"); break; } i++; } } json.push("}"); =
break; default: ; json.push("null");
break; } return json; } function _zf_stdJsonEncode(text) { text =3D =
text.replace(/([\\\x22])/g, "\\$1");
text =3D text.replace(/\r/g, "\\r"); text =3D text.replace(/\n/g, =
"\\n"); text =3D text.replace(/\t/g,
"\\t"); return text; } function _zf_stdTransformResponse(val, objects, =
metas) { if (typeof(val)
!=3D "object") return val; if (val =3D=3D null) return null; if (val =
instanceof Array) { for (var i =3D 0;
i < val.length; i++) { if (typeof(val[i]) =3D=3D "object") val[i] =3D =
_zf_stdTransformResponse(val[i], objects,
metas); } return val; } var metaDate =3D val["$date"]; if (metaDate !=3D =
null) return zf_stdParseDateTimeUTC(metaDate);
var metaRoot =3D val["$root"]; if (metaRoot !=3D null) { return =
_zf_stdTransformResponse(metaRoot, val["$objects"],
val["$meta"]); } var metaRef =3D val["$ref"]; if (metaRef !=3D null) { =
return _zf_stdTransformCachedObject(metaRef,
objects, metas); } var metaObj =3D val["$obj"]; if (metaObj !=3D null) { =
return _zf_stdTransformInlineObject(metaObj,
objects, metas); } var metaType =3D val["$type"]; if (metaType =3D=3D =
"DateTime") return zf_stdParseDateTimeUTC(val["Value"]);
var obj =3D val; if (metaType !=3D null) { obj =3D =
_zf_stdCreateInstance(metaType); } var propName; var
propVal; for (propName in val) { if (propName.charAt(0) !=3D "$") { =
propVal =3D val[propName]; if (typeof(propVal)
=3D=3D "object") propVal =3D _zf_stdTransformResponse(propVal, objects, =
metas); obj[propName] =3D propVal;
} } if (obj.postSerialize) obj.postSerialize(); return obj; } var _$ =3D =
_zf_stdTransformResponse;
function _zf_stdCreateInstance(className) { var type =3D className; if =
(className.indexOf("zf") !=3D 0)
type =3D "zf_" + type; ; var obj =3D new Function("return typeof(" + =
type + ") =3D=3D 'function' ? new " +
type + "() : {}")(); obj["$type"] =3D className; return obj; } function =
_zf_stdTransformCachedObject(index,
objects, metas) { var cached =3D objects[index]; if (!(cached instanceof =
Array)) return cached; var
obj =3D _zf_stdTransformInlineObject(cached, objects, metas); =
objects[index] =3D obj; return obj; }
function _zf_stdTransformInlineObject(fields, objects, metas) { var meta =
=3D metas[fields[0]]; var
type =3D meta[0]; var obj =3D type !=3D null ? =
_zf_stdCreateInstance(type) : {}; for (var i =3D 1; i < fields.length;
i++) { var propName =3D meta[i]; var propVal =3D fields[i]; if (propVal =
=3D=3D null) continue; if (propName.charAt(0)
=3D=3D "$") continue; if (typeof(propVal) =3D=3D "object") propVal =3D =
_zf_stdTransformResponse(propVal, objects,
metas); obj[propName] =3D propVal; } if (obj.postSerialize) =
obj.postSerialize(); return obj; }
; function zf_stdLoadScript(fileName, callback, fragment) { ; if =
(callback =3D=3D null) callback =3D zf_stdFalse;
var entry =3D _zf_stdDelayLoad[fileName]; switch (typeof(entry)) { case =
"string": _zf_stdDelayLoad[fileName]
=3D callback; break; case "function": _zf_stdDelayLoad[fileName] =3D [ =
entry, callback ]; return; case
"object": if (entry =3D=3D null) callback(); else if (entry.constructor =
=3D=3D Array) entry.push(callback);
return; default: ; return; } var url =3D entry; if (fragment) url +=3D =
fragment; var script =3D document.createElement("SCRIPT");
script.type =3D "text/javascript"; script.src =3D url; =
document.body.appendChild(script); } function
zf_stdNotifyScriptLoad(fileName) { if (typeof(_zf_stdDelayLoad) =3D=3D =
"undefined") return; switch (typeof(_zf_stdDelayLoad[fileName]))
{ case "function": _zf_stdDelayLoad[fileName](); =
_zf_stdDelayLoad[fileName] =3D null; break; case
"object": var list =3D _zf_stdDelayLoad[fileName]; if (list !=3D null && =
list.constructor =3D=3D Array)
{ for (var i =3D 0; i < list.length; i++) list[i](); } =
_zf_stdDelayLoad[fileName] =3D null; break;
default: break; } } function zf_stdPrefetchScript(fileName) { ; var uid; =
if (zf_stdPrefetchScript.uid
=3D=3D null) uid =3D zf_stdPrefetchScript.uid =3D 0; else uid =3D =
++zf_stdPrefetchScript.uid; var entry =3D _zf_stdDelayLoad[fileName];
if (typeof(entry) =3D=3D "string") { var frame =3D =
document.createElement("IFRAME"); frame.style.cssText
=3D "position: absolute; visibility: hidden; left:0px; top: 0px;"; =
document.body.appendChild(frame);
setTimeout( function() { var doc =3D frame.contentWindow.document; var =
script =3D doc.createElement("SCRIPT");
script.type =3D "text/javascript"; script.src =3D entry; =
doc.body.appendChild(script); frame =3D null;
doc =3D null; }, 100); } }
; function zf_Object() { } zf_Object.prototype.closure =3D =
function(method) { ; var self =3D this;
if (arguments.length =3D=3D 1) return function() { return =
method.apply(self, arguments); }; var args
=3D []; for (var i =3D 1; i < arguments.length; i++) =
args.push(arguments[i]); return function() { var
a =3D []; for (var i =3D 0; i < arguments.length; i++) =
a.push(arguments[i]); return method.apply(self,
a.concat(args)); }; };
; var _zf_stdObjectMap =3D { }; function zf_stdSetClientObject(dom, =
client) { if (typeof(dom) =3D=3D "string")
dom =3D document.getElementById(dom); _zf_stdObjectMap[dom.uniqueID] =3D =
client; } function zf_stdGetClientObject(dom)
{ if (dom =3D=3D null) return null; if (typeof(dom) =3D=3D "string") { =
dom =3D document.getElementById(dom);
if (dom =3D=3D null) return null; } var client; client =3D =
_zf_stdObjectMap[dom.uniqueID]; return client;
} function zf_Control(id, clientObject) { if (zf_stdNoArgs(arguments)) =
return; ; ; if (clientObject
=3D=3D null) clientObject =3D zf_Control.getClientObject(id); this.id =
=3D id; this.clientObject =3D clientObject;
} zf_Control.inherits(zf_Object); zf_Control.getClientObject =3D =
function(id) { return (id.charAt(0)
=3D=3D '_' ? "_zf" : "_zf_") + id; }; zf_Control.prototype.dom =3D =
function(suffix) { var id =3D [ this.id
]; for (var i =3D 0; i < arguments.length; i++) id.push(arguments[i]); =
return document.getElementById(id.join("-"));
}; zf_Control.prototype.$ =3D function(selector) { return selector =
=3D=3D null ? $(this.dom()) : $(selector,
this.dom()); }; zf_Control.prototype.eventHandler =3D function(method) { =
; var self =3D this; if (arguments.length
=3D=3D 1) return function(e) { return method.apply(self, =
[zf_stdGetEvent(e)]); }; var args =3D []; for
(var i =3D 1; i < arguments.length; i++) args.push(arguments[i]); return =
function(e) { return method.apply(self,
[zf_stdGetEvent(e)].concat(args)); }; };
; var zf_stdDeferCallV =3D (function() { var queue =3D []; var yield =3D =
1; var slice =3D 400; var batch =3D
0; var tagged =3D {}; var onexecute =3D function() { ++batch; ; ; var =
start =3D new Date().getTime();
while (queue.length > 0) { var task =3D queue[0]; var tag =3D task.tag; =
if (tag) { ; delete tagged[tag];
task.tag =3D null; } var taskStart =3D new Date().getTime(); =
task.method.apply(task.self, task.args);
queue.shift(); ; if (new Date().getTime() - start > slice) break; } if =
(queue.length > 0) { ; setTimeout(onexecute,
yield); } ; }; return function(tag, method, self, args) { ; ; if =
(queue.length =3D=3D 0) setTimeout(onexecute,
yield); if (tag) { if (tagged[tag]) { var found; for (var i =3D 0; i < =
queue.length; i++) { if (queue[i].tag
=3D=3D tag) { ; queue.splice(i, 1); found =3D true; break; } } ; } else =
{ tagged[tag] =3D true; } } ; queue.push(
{ tag : tag, method : method, self : self, args : args }); }; })(); =
function zf_stdDeferCall(tag,
method, self) { var args =3D []; for (var a =3D 3; a < arguments.length; =
a++) args.push(arguments[a]);
zf_stdDeferCallV(tag, method, self, args); } function =
zf_stdMakeDeferred(tag, method) { return function()
{ zf_stdDeferCallV(tag, method, this, arguments); }; } function =
zf_stdMakeMethodsDeferred(obj, id,
names) { var bake =3D function(tag, method, obj) { return function() { =
zf_stdDeferCallV(tag, method,
obj, arguments); }; }; for (var i =3D 0; i < names.length; i++) { var =
name =3D names[i]; var method =3D
obj[name]; ; obj[name] =3D bake(id + "." + name, method, obj); } }
; function zf_RequestQueue(interval, concurrent) { this._interval =3D =
interval; this._concurrent =3D concurrent
!=3D null ? concurrent : 1; this._queue =3D []; } =
zf_RequestQueue.prototype.enqueue =3D function(method,
url, api, params, callback, tag) { var request =3D { method: method, =
url: url, api: api, params: params,
callback : callback, executing : false, tag: tag }; =
this._queue.push(request); if (this._queue.length
<=3D this._concurrent) this._execute(request); }; =
zf_RequestQueue.prototype.enqueueEx =3D function(method,
url, api, params, callback, tag) { this.enqueue(method, url, api, =
params, function(status, retVal)
{ var error; var result; if (status !=3D 200) { result =3D null; error =
=3D { message: status =3D=3D 403 ? "Access Denied."
: "An unexpected error has occurred. Please try again later. If this =
problem persists, contact Support."
}; } else { result =3D retVal.result; error =3D retVal.error; } =
callback(result, error); }, tag ); };
zf_RequestQueue.prototype.bump =3D function(tag) { var highest =3D -1; =
for (var i =3D 0; i < this._queue.length;
i++) { var request =3D this._queue[i]; if (request.tag =3D=3D tag) { if =
(i =3D=3D 0 || request.executing)
break; this._queue =3D this._queue.splice(i, 1).concat(this._queue); =
break; } if (highest =3D=3D -1 && !request.executing)
highest =3D i; } }; zf_RequestQueue.prototype._execute =3D =
function(request) { ; var self =3D this; var
callback =3D function(status, retVal) { for (var i =3D 0; i < =
self._queue.length; i++) { if (self._queue[i]
=3D=3D request) break; } ; self._queue.splice(i, 1); =
request.callback(status, retVal); for (var j =3D 0;
j < self._concurrent; j++) { if (j =3D=3D self._queue.length) break; var =
r =3D self._queue[j]; if (!r.executing)
{ r.executing =3D true; setTimeout(function() { self._execute(r); }, =
self._interval); break; } }
}; request.executing =3D true; zf_stdDeferCall(null, =
zf_stdServerRequest, null, request.method, request.url,
request.api, request.params, callback); };
; function zf_Loadable() { if (zf_stdNoArgs(arguments)) return; =
this.loaded =3D this.requested =3D false;
this._nextSinkId =3D 0; this._uniqueId =3D zf_Loadable._counter++; =
this._callbacks =3D {}; } zf_Loadable._counter
=3D 0; zf_Loadable.inprogress =3D {}; zf_Loadable.watcher =3D =
setInterval(function() { var now =3D new Date();
for (var key in zf_Loadable.inprogress) { var loadable =3D =
zf_Loadable.inprogress[key]; if (now.getTime()
- loadable._requestTime.getTime() > 1000) loadable.setDelayed(); } }, =
500); zf_Loadable.notifyLoaded
=3D function(loadable, callback) { ; if (loadable.loaded) { =
callback(loadable); return true; } else
{ var sink =3D {}; loadable.advise(sink, function() { =
loadable.unadvise(sink); callback(loadable); });
return false; } }; zf_Loadable.prototype.getPart =3D function(partType, =
extra) { ; ; var partName
=3D partType.name; var part; if ((part =3D this[partName]) =3D=3D null) =
{ part =3D this[partName] =3D new partType(this);
part.setRequested(); var args =3D $.makeArray(arguments); args.shift(); =
zf_Loadable.notifyLoaded(this,
function() { part.load.apply(part, args); }); } ; ; return part; }; =
zf_Loadable.prototype.advise
=3D function(sink, onload, ondelay) { if (this.loaded) return; var =
sinkId =3D null; if (sink.__loadables
=3D=3D null) sink.__loadables =3D {}; else sinkId =3D =
sink.__loadables[this._uniqueId]; if (sinkId =3D=3D null)
{ sinkId =3D this._nextSinkId++; sink.__loadables[this._uniqueId] =3D =
sinkId; } this._callbacks[sinkId]
=3D [ onload, ondelay ]; if (this.delayed && ondelay !=3D null) =
ondelay.call(this); }; zf_Loadable.prototype.unadvise
=3D function(sink) { var sinkId =3D null; var loadables =3D =
sink.__loadables; if (loadables !=3D null)
sinkId =3D loadables[this._uniqueId]; if (sinkId !=3D null) { =
loadables[this._uniqueId] =3D null; delete
loadables[this._uniqueId]; this._callbacks[sinkId] =3D null; delete =
this._callbacks[sinkId]; } };
zf_Loadable.prototype.done =3D function() { if (this.loaded) return; =
this.requested =3D this.loaded =3D
true; for (var sinkId in this._callbacks) =
this._callbacks[sinkId][0].call(this); delete =
zf_Loadable.inprogress[this._uniqueId];
}; zf_Loadable.prototype.postSerialize =3D function() { this.requested =
=3D this.loaded =3D true; }; zf_Loadable.prototype.setRequested
=3D function() { ; ; ; this.requested =3D true; this._requestTime =3D =
new Date(); zf_Loadable.inprogress[this._uniqueId]
=3D this; }; zf_Loadable.prototype.setDelayed =3D function() { ; ; ; =
this.delayed =3D true; delete zf_Loadable.inprogress[this._uniqueId];
for (var sinkId in this._callbacks) { var callback =3D =
this._callbacks[sinkId][1]; if (callback !=3D null)
callback.call(this); } };
; function zf_Animation(states, callback) { ; ; this.inprogress =3D =
false; this._timer =3D null; this._variable
=3D 0; this._from =3D this._to =3D 0; this._end =3D this._start =3D new =
Date().getTime(); this._states =3D states;
this._callback =3D callback; var self =3D this; this._clear =3D =
function() { self.inprogress =3D false;
self._oncomplete =3D null; if (self._timer) { =
clearInterval(self._timer); self._timer =3D null; } };
} zf_Animation.prototype._run =3D function() { var oncomplete =3D =
this._oncomplete; this._clear();
this.inprogress =3D true; var self =3D this; var callback =3D function() =
{ var now =3D new Date().getTime();
if (now >=3D self._end || self._from =3D=3D self._to || self._end =3D=3D =
self._start) self._variable =3D self._to;
if (self._variable =3D=3D self._to) { self._clear(); =
self._callback(self._to); if (oncomplete) oncomplete();
return; } var total =3D self._end - self._start; var spent =3D now - =
self._start; var dtotal =3D Math.abs(self._from
- self._to); var dspent =3D Math.ceil(spent * dtotal / total); if =
(self._from < self._to) { self._variable
=3D self._from + dspent; if (self._variable > self._to) self._variable =
=3D self._to; } else { self._variable
=3D self._from - dspent; if (self._variable < self._to) self._variable =
=3D self._to; } if (self._variable
=3D=3D self._to) { self._clear(); if (oncomplete) oncomplete(); } if =
(dspent =3D=3D 0) return; self._callback(self._variable);
}; this._timer =3D setInterval(callback, 10); =
this._callback(this._variable); }; zf_Animation.prototype.jump
=3D function(state) { ; this._clear(); this._from =3D this._to =3D =
this._states[state]; this._variable
=3D this._to; this._callback(this._variable); }; =
zf_Animation.prototype.resync =3D function() { =
this._callback(this._variable);
}; zf_Animation.prototype.animate =3D function(state, speed, oncomplete) =
{ ; this._from =3D this._variable;
this._to =3D this._states[state]; this._start =3D new Date().getTime(); =
this._end =3D this._start; this._oncomplete
=3D oncomplete; if (this._to =3D=3D this._variable) { if (oncomplete) =
oncomplete(); this._clear(); return;
} var diff =3D Math.abs(this._variable - this._to); var time =3D =
Math.ceil(speed.t * diff / speed.s);
this._end =3D this._start + time; this._run(); };
; function zf_DelayedInvoke(delay) { this.delay =3D delay; } =
zf_DelayedInvoke.prototype.invoke =3D function(callback)
{ ; this.clear(); this.callback =3D callback; var self =3D this; var =
pending =3D setTimeout( function()
{ if (pending =3D=3D self.pending) { self.pending =3D null; callback(); =
} }, this.delay); this.pending
=3D pending; }; zf_DelayedInvoke.prototype.clear =3D function() { if =
(!this.pending) return; clearTimeout(this.pending);
};
; var _zf_stdBase32Digits =3D "123456789ABCDEFGHJKMNPQRSTUVWXYZ"; =
function zf_stdBase32Encode(number)
{ var res =3D ""; while (number > 0) { res =3D =
_zf_stdBase32Digits.charAt(number & 0x1F) + res; number
>>>=3D 5; } return res; } function zf_stdBase32Decode(encoded) { encoded =
=3D encoded.toUpperCase();
var res =3D 0; for (var i =3D 0; i < encoded.length; i++) { res <<=3D 5; =
res |=3D _zf_stdBase32Digits.indexOf(encoded.charAt(i));
} return res; }
; function zf_BasicImage(id, width, height, timestamp, volume, token) { =
if (arguments.length > 0)
{ ; if (id <=3D 0) { width =3D 0; height =3D 0; timestamp =3D ""; volume =
=3D null; token =3D null; } ; ; ;
; ; this.id =3D id; this.width =3D width; this.height =3D height; =
this.timestamp =3D timestamp; this.volume
=3D volume; this.token =3D token; } else { this.timestamp =3D ""; } } =
zf_BasicImage.Photo =3D "p"; zf_BasicImage.UserFile
=3D "f"; zf_BasicImage.prototype.getScaledSize =3D function(method) { =
var cx =3D this.width; var cy =3D this.height;
if (cx !=3D 0 && cy !=3D 0) { if (method =3D=3D =
zf_ProcessingMethod.WatermarkThumbnail || method =3D=3D =
zf_ProcessingMethod.WatermarkSmallThumbnail)
{ return { cx: method.cx, cy: method.cy }; } if (method =3D=3D =
zf_ProcessingMethod.StandardSmallThumbnail)
cx =3D cy =3D Math.min(this.width, this.height); var width =3D =
method.cx; var height =3D method.cy; if (width
< cx || height < cy) { var ratio =3D width / cx; if (cy * ratio > =
height) ratio =3D height / cy; var
bankersRound =3D function(x) { var r =3D Math.round(x); if (r % 2 =3D=3D =
0 || r =3D=3D x) return r; var f =3D Math.floor(x);
return x - f =3D=3D 0.5 ? f : r; }; cx =3D Math.max(1, bankersRound(cx * =
ratio)); cy =3D Math.max(1, bankersRound(cy
* ratio)); } } return { cx: cx, cy: cy }; }; =
zf_BasicImage.prototype.getUrlCore =3D function() {
; return null; }; zf_BasicImage.prototype.getOriginalUrl =3D =
function(ext) { ; ; var core =3D this.getUrlCore();
return core !=3D null ? core + ext : null; }; =
zf_BasicImage.prototype.getGeneratedUrl =3D function(method,
forBrowser) { ; var core =3D this.getUrlCore(); if (core !=3D null) { =
var url =3D [ core, "-", method.code,
method.type, forBrowser ? "?sn=3D" : "?ts=3D", this.timestamp ]; if =
(this.token !=3D null) url.push("&tk=3D",
this.token); var keyRing; var host =3D []; var inlined =3D false; if =
(zf_imageHosts.length > 0 && location.protocol
!=3D "https:") { var imageHost =3D zf_imageHosts[this.id % =
zf_imageHosts.length]; host =3D [ location.protocol,
"//", imageHost ]; var hostname =3D location.hostname; var k =3D =
hostname.indexOf(zf_defaultDomain);
if (imageHost.indexOf(zf_defaultDomain) =3D=3D -1 || k =3D=3D -1 || k =
!=3D hostname.length - zf_defaultDomain.length)
{ inlined =3D true; if (zf_BasicImage._token =3D=3D undefined) =
zf_BasicImage._token =3D zf_stdGetCookie("zf_token");
if (zf_BasicImage._visitor =3D=3D undefined) zf_BasicImage._visitor =3D =
zf_stdGetCookie("zf_5y_visitor");
if (zf_BasicImage._token !=3D null) url.push("&token=3D", =
zf_BasicImage._token); keyRing =3D zf_stdGetCookie("zf_keyring");
if (keyRing !=3D null) url.push("&keyring=3D", keyRing); if =
(zf_BasicImage._visitor !=3D null) url.push("&visitor=3D",
zf_BasicImage._visitor); } } var secured =3D this.timestamp !=3D null && =
zf_stdBase32Decode(this.timestamp)
& 1; if (secured =3D=3D 1) { if (zf_userId !=3D 0) url.push("&uid=3D", =
zf_userId); if (!inlined) { keyRing
=3D zf_stdGetCookie("zf_keyring"); if (keyRing !=3D null) =
url.push("&keyringx=3D", keyRing); } } return host.concat(url).join("");
} return null; }; zf_BasicImage.prototype.getExternalUrl =3D =
function(method) { ; var core =3D this.getUrlCore();
return core !=3D null ? [ core, "-", method.code, method.type ].join("") =
: null; };
; function zf_PhotoImage(id, width, height, timestamp, volume, token) { =
if (zf_stdNoArgs(arguments))
return; zf_BasicImage.prototype.constructor.apply(this, arguments); =
this.prefix =3D "p"; } zf_PhotoImage.inherits(zf_BasicImage);
zf_PhotoImage._fields =3D [ "id", "photoId", "width", "height", =
"timestamp", "volume", "token", "prefix"
]; zf_PhotoImage.clone =3D function(photo) { if (photo =3D=3D null) =
return null; return zf_stdCopyFields(new
zf_PhotoImage(), photo, zf_PhotoImage._fields); }; =
zf_PhotoImage.prototype.createLoader =3D function(method,
photoType) { ; if (this.photoId <=3D 0) return null; if (photoType =
=3D=3D null) photoType =3D zf_BasicImage.Photo;
return new zf_ImageLoader(photoType, this, method); }; =
zf_PhotoImage.prototype.getUrlCore =3D function()
{ if (this.id <=3D 0) return null; return "/img/v" + this.volume + "/p" =
+ this.id; };
; function zf_FileImage(id, width, height, timestamp, volume, token) { =
if (zf_stdNoArgs(arguments))
return; zf_BasicImage.prototype.constructor.apply(this, arguments); =
this.prefix =3D "u"; } zf_FileImage.inherits(zf_BasicImage);
zf_FileImage._fields =3D [ "id", "width", "height", "timestamp", =
"volume", "token", "prefix" ]; zf_FileImage.clone
=3D function(file) { if (file =3D=3D null) return null; return =
zf_stdCopyFields(new zf_FileImage(), file,
zf_FileImage._fields); }; zf_FileImage.prototype.getUrlCore =3D =
function() { if (this.id <=3D 0) return null;
return "/img/v" + this.volume + "/u" + this.id; };
; var zf_AccessType =3D { Public: "Public", Private: "Private", =
Password: "Password", Protected: "Protected",
Derived: "Derived" };
var zf_AccessMask =3D { None: 0x00000000, ProtectOriginals: 0x00000001, =
ProtectExtraLarge: 0x00000002,
NoCollections: 0x00000004, PasswordProtectOriginals: 0x00000008, =
Reserved16: 0x00000010, ProtectUserStats:
0x00000020, ProtectVisits: 0x00000040, NoRecentList: 0x00000080, =
NoPrivateSearch: 0x00000100, Reserved512:
0x00000200, Reserved1024: 0x00000400, Reserved2048: 0x00000800, =
Reserved4096: 0x00001000, NoPublicSearch:
0x00002000, ProtectDateCreated: 0x00004000, ProtectDateModified: =
0x00008000, ProtectDateTaken:
0x00010000, ProtectExif: 0x00020000, ProtectLarge: 0x00040000, =
ProtectMedium: 0x00080000, ProtectMeta:
0x00004000 | 0x00008000 | 0x00020000 | 0x00010000, =
NoPublicGuestbookPosts: 0x00100000, NoPrivateGuestbookPosts:
0x00200000, NoAnonymousGuestbookPosts: 0x00400000, NoPublicComments: =
0x00800000, NoPrivateComments:
0x01000000, NoAnonymousComments: 0x02000000, ProtectGuestbook: =
0x04000000, ProtectComments: 0x08000000,
ImageSizeLimitExtraLarge: 0x00000000, ImageSizeLimitLarge: 0x00000002, =
ImageSizeLimitMedium: 0x00000002
| 0x00040000, ImageSizeLimitSmall: 0x00000002 | 0x00040000 | 0x00080000, =
ImageSizeMask: 0x00000002
| 0x00040000 | 0x00080000, SearchAny: 0x00000000, SearchLocalOnly: =
0x00002000, SearchNone: 0x00002000
| 0x00000100, SearchMask: 0x00002000 | 0x00000100 };
function zf_AccessRealm(type, mask) { this.realmId =3D 0; this.ownerId =
=3D 0; this.type =3D type !=3D null
? type : zf_AccessType.Public; this.mask =3D mask !=3D null ? mask : =
zf_AccessMask.None; this.viewers
=3D []; this.password =3D zf_AccessRealm.NotAvailable; this.passwordHint =
=3D ""; this.srcPassword =3D "";
this.srcPasswordHint =3D ""; } zf_AccessRealm.NotAvailable =3D {}; =
zf_AccessRealm._fields =3D [ "type",
"mask", "realmId", "ownerId", "viewers", "password", "passwordHint", =
"srcPassword", "srcPasswordHint"
]; zf_AccessRealm.clone =3D function(realm) { if (realm =3D=3D null) =
return null; var clone =3D zf_stdCopyFields(new
zf_AccessRealm(), realm, zf_AccessRealm._fields); clone.viewers =3D =
realm.viewers !=3D null ? [].concat(realm.viewers)
: []; return clone; };
; function zf_AccessInfo(parent, type, mask) { this.parent =3D parent; =
if (arguments.length =3D=3D 0)
{ this.isDerived =3D true; =
zf_AccessRealm.prototype.constructor.call(this); } else if (parent !=3D =
null
&& type =3D=3D null) { this.isDerived =3D true; =
zf_AccessRealm.prototype.constructor.call(this, parent.type,
parent.mask); } else { this.isDerived =3D false; =
zf_AccessRealm.prototype.constructor.call(this, type,
mask); } } zf_AccessInfo._fields =3D [ "isCensored", "isDerived", =
"parent" ].concat(zf_AccessRealm._fields);
zf_AccessInfo.clone =3D function(info) { if (info =3D=3D null) return =
null; var clone =3D zf_stdCopyFields(new
zf_AccessInfo(), info, zf_AccessInfo._fields); clone.viewers =3D =
info.viewers !=3D null ? [].concat(info.viewers)
: []; return clone; }; zf_AccessInfo.prototype.getRealm =3D function() { =
var info =3D this; while (info.isDerived)
info =3D info.parent; return info; };
; var zf_PhotoFlags =3D { None: 0, HasTitle: 1, HasCaption: 2, =
HasCategories: 4, HasKeywords: 8,
HasExif: 16, HasComments: 32, HasImage0: 1024, HasImage1: 2048, =
HasImage10: 4096, HasImage11: 8192
};
; function _zf_stdCategoryCompare(a, b) { if ((a % 1000) !=3D 0) a =3D =
0; else if ((a % 100000) !=3D 0)
a =3D 1; else a =3D 2; if ((b % 1000) !=3D 0) b =3D 0; else if ((b % =
100000) !=3D 0) b =3D 1; else b =3D 2; return a
- b; }
; var zf_stdFileTypes =3D { ".jpg" : { type: "JPEG", mime: "image/jpeg", =
ext: ".jpg" }, ".gif" : { type:
"GIF", mime: "image/gif", ext: ".gif" }, ".png" : { type: "PNG", mime: =
"image/png", ext: ".png" },
".tif" : { type: "TIFF", mime: "image/tiff", ext: ".tif" }, ".bmp" : { =
type: "BMP", mime: "image/bmp",
ext: ".bmp" } }; var zf_stdMimeTypes =3D { "image/jpeg" : { type: =
"JPEG", mime: "image/jpeg", ext: ".jpg"
}, "image/gif" : { type: "GIF", mime: "image/gif", ext: ".gif" }, =
"image/png" : { type: "PNG", mime:
"image/png", ext: ".png" }, "image/tiff" : { type: "TIFF", mime: =
"image/tiff", ext: ".tif" }, "image/bmp"
: { type: "BMP", mime: "image/bmp", ext: ".bmp" } };
; var zf_ProcessingMethod =3D { StandardThumbnail: { code: 0, isThumb: =
true, cx: 80, cy: 80, type:
".jpg", format: "Small Thumbnail ({0} x {1})" }, StandardSmallThumbnail: =
{ code: 1, isThumb: true,
cx: 60, cy: 60, type: ".jpg", format: "Square Thumbnail (60 x 60)" }, =
StandardSmallSize: { code:
2, isThumb: false, cx: 400, cy: 400, type: ".jpg", format: "Small Image =
({0} x {1})" }, StandardMediumSize:
{ code: 3, isThumb: false, cx: 580, cy: 450, type: ".jpg", format: =
"Medium Image ({0} x {1})" },
StandardLargeSize: { code: 4, isThumb: false, cx: 800, cy: 630, type: =
".jpg", format: "Large Image ({0} x {1})"
}, StandardVeryLargeSize: { code: 5, isThumb: false, cx: 1100, cy: 850, =
type: ".jpg", format: "Very Large Image ({0} x {1})"
}, StandardLargeThumbnail: { code: 10, isThumb: true, cx: 120, cy: 120, =
type: ".jpg", format: "Medium Thumbnail ({0} x {1})"
}, StandardVeryLargeThumbnail: { code: 11, isThumb: true, cx: 200, cy: =
200, type: ".jpg", format:
"Large Thumbnail ({0} x {1})" }, StandardBioPhoto: { code: 50, isThumb: =
true, cx: 120, cy: 120, type:
".jpg" }, StandardSmallBioPhoto: { code: 51, isThumb: true, cx: 80, cy: =
80, type: ".jpg" }, StandardMediumBioPhoto:
{ code: 52, isThumb: true, cx: 100, cy: 100, type: ".jpg" }, =
WatermarkThumbnail: { code: 60, isThumb:
true, cx: 80, cy: 80, type: ".png" }, WatermarkSmallThumbnail: { code: =
61, isThumb: true, cx: 60,
cy: 60, type: ".png" }, WatermarkNormalizedHorz: { code: 62, isThumb: =
false, type: ".jpg" }, WatermarkNormalizedVert:
{ code: 63, isThumb: false, type: ".jpg" } }; =
zf_ProcessingMethod.fromCode =3D function(code) { var
method =3D zf_ProcessingMethod[code]; if (method !=3D null) return =
method; for (method in zf_ProcessingMethod)
{ if (zf_ProcessingMethod[method].code =3D=3D code) { method =3D =
zf_ProcessingMethod[method]; zf_ProcessingMethod[code]
=3D method; return method; } } ; return null; };
; function zf_PhotoLoader(photo, method) { this._uid =3D =
++zf_PhotoLoader._lastUid; this._photo =3D
photo; this._method =3D method; this._retries =3D 0; this.state =3D =
photo.id > 0 ? zf_PhotoLoader.Initialized
: zf_PhotoLoader.Complete; } zf_PhotoLoader.Initialized =3D 0; =
zf_PhotoLoader.Loading =3D 1; zf_PhotoLoader.Complete
=3D 2; zf_PhotoLoader.NotFound =3D -1; zf_PhotoLoader.AccessDenied =3D =
-2; zf_PhotoLoader.AuthRequired
=3D -3; zf_PhotoLoader.PasswordRequired =3D -4; zf_PhotoLoader.Failed =
=3D -5; zf_PhotoLoader._lastUid
=3D 0; zf_PhotoLoader._active =3D 0; zf_PhotoLoader._queue =3D []; =
zf_PhotoLoader._waitList =3D {}; zf_PhotoLoader._waitCount
=3D 0; zf_PhotoLoader._images =3D []; zf_PhotoLoader.prototype.start =3D =
function() { if (this.state =3D=3D
zf_PhotoLoader.Initialized) { this.state =3D zf_PhotoLoader.Loading; =
this._image =3D new Image(); this._push();
} else if (this.state !=3D zf_PhotoLoader.Loading) { ; if (this.onload =
!=3D null) this.onload(this.state,
this._src); } }; zf_PhotoLoader.prototype.getPhoto =3D function() { =
return this._photo; }; zf_PhotoLoader.prototype.getMethod
=3D function() { return this._method; }; zf_PhotoLoader.prototype._push =
=3D function() { if (zf_PhotoLoader._active
< 60) { zf_PhotoLoader._active++; this._load(); } else =
zf_PhotoLoader._queue.push(this); }; zf_PhotoLoader.prototype._load
=3D function() { var url =3D this._photo.getGeneratedUrl(this._method); =
if (this._retries !=3D 0) { if
(url.indexOf('?') !=3D -1) url +=3D "&r=3D" + this._retries; else url =
+=3D "?r=3D" + this._retries; } this._src
=3D url; var self =3D this; ; this._image.onload =3D function() { =
self._onLoad(); }; this._image.onerror
=3D function() { self._onError(); }; setTimeout(function() { =
self._image.src =3D url; }, 1); }; zf_PhotoLoader.prototype._done
=3D function() { if (zf_PhotoLoader._queue.length > 0) =
zf_PhotoLoader._queue.shift()._load(); else
--zf_PhotoLoader._active; }; zf_PhotoLoader.prototype._ready =3D =
function(state) { if (state !=3D zf_PhotoLoader.Complete)
{ this.state =3D state; if (this.onload !=3D null) =
this.onload(this.state, this._src); } else this._push();
}; zf_PhotoLoader.prototype._wait =3D function() { var photo =3D =
this._photo; var key =3D [ photo.prefix,
photo.id, photo.timestamp, photo.volume, this._method.code ]; if =
(photo.token !=3D null) key.push(photo.token);
key =3D key.join('/'); var entry =3D zf_PhotoLoader._waitList[key]; if =
(entry =3D=3D null) zf_PhotoLoader._waitList[key]
=3D this; else if (entry instanceof Array) entry.push(this); else =
zf_PhotoLoader._waitList[key] =3D [
entry, this ]; if (zf_PhotoLoader._waitCount++ =3D=3D 0) =
window.setTimeout(zf_PhotoLoader._check, 1000);
}; zf_PhotoLoader._check =3D function() { var list =3D []; var keys =3D =
[]; for (key in zf_PhotoLoader._waitList)
{ keys.push(key); key =3D key.split('/'); list.push({ type: key[0], =
photoId: parseInt(key[1], 10),
timestamp: key[2], volume: key[3], method: parseInt(key[4], 10), token: =
key.length > 5 ? key[5] :
null }); } if (list.length =3D=3D 0) return; var self =3D this; =
zf_stdServerRequestEx("POST", "/zf/core/core.asmx",
"GetImageState", [ list ], function(result, error) { if (error !=3D =
null) return; for (var i =3D 0; i
< result.length; i++) { if (result[i] =3D=3D zf_PhotoLoader.Loading) =
continue; var key =3D keys[i]; var
loader =3D zf_PhotoLoader._waitList[key]; if (loader instanceof Array) { =
for (var k =3D 0; k < loader.length;
k++) loader[k]._ready(result[i]); zf_PhotoLoader._waitCount -=3D =
loader.length; } else if (loader !=3D
null) { loader._ready(result[i]); --zf_PhotoLoader._waitCount; } delete =
zf_PhotoLoader._waitList[key];
} if (zf_PhotoLoader._waitCount > 0) =
window.setTimeout(zf_PhotoLoader._check, 1000); }); }; =
zf_PhotoLoader.prototype._onLoad
=3D function() { this._image.onload =3D null; this._image.onerror =3D =
null; var self =3D this; setTimeout(function()
{ self._done(); }, 1); this.state =3D zf_PhotoLoader.Complete; if =
(!this._method.isThumb) { if (zf_PhotoLoader._images.length
> 50) zf_PhotoLoader._images.shift(); =
zf_PhotoLoader._images.push(this._image); } this._image =3D null;
if (this.onload !=3D null) this.onload(this.state, this._src); }; =
zf_PhotoLoader.prototype._onError
=3D function() { this._done(); this._retries++; this._wait(); };
; function zf_PhotoView(id, plugins, context, view) { this.id =3D id; =
this.waitTimeout =3D 3000; this.context
=3D context; this._plugins =3D plugins !=3D null ? plugins : []; if =
(view =3D=3D null) view =3D this.dom();
zf_stdSetClientObject(view, this); this._completeInit(view); } =
zf_PhotoView.inherits(zf_Control);
zf_PhotoView.createHtml =3D function(id, href, styles, plugins, context, =
photo, method, burnable, x,
y) { styles =3D styles !=3D null ? [].concat(styles) : []; if (photo =
!=3D null && photo.id < 0) styles.push("pv-s-"
+ (-photo.id)); var smap =3D {}; for (var i =3D 0; i < styles.length; =
i++) smap[styles[i]] =3D true;
var markup =3D zf_PhotoView._createInnerHtml(id, href, plugins, smap, =
context, photo, method, burnable);
var viewStyle =3D ""; if (x !=3D null && y !=3D null) { viewStyle =3D [' =
style=3D"left:', x, 'px;top:', y,
'px;visibility:inherit;"'].join(""); } styles =3D ["pv"].concat(styles); =
styles.sort(); styles =3D styles.join(" ");
return ['<div class=3D"', styles, '" id=3D"', id, '" ', viewStyle, '>', =
markup, '</div>'].join(""); };
zf_PhotoView.prototype.reinit =3D function(view, href, styles, context, =
photo, method, burnable, x,
y) { this.detachContext(this.context); this.context =3D context; styles =
=3D styles !=3D null ? [].concat(styles)
: []; if (photo !=3D null && photo.id < 0) styles.push("pv-s-" + =
(-photo.id)); var smap =3D {}; for
(var i =3D 0; i < styles.length; i++) smap[styles[i]] =3D true; var =
markup =3D zf_PhotoView._createInnerHtml(this.id,
href, this._plugins, smap, context, photo, method, burnable); var =
viewStyle =3D ""; if (x !=3D null
&& y !=3D null) { viewStyle =3D ['left:', x, 'px;top:', y, =
'px;visibility:inherit;'].join(""); } styles
=3D ["pv"].concat(styles); styles.sort(); styles =3D styles.join(" "); =
if (view =3D=3D null) view =3D this.dom();
if (view.className !=3D styles) view.className =3D styles; if =
(view.style.cssText !=3D viewStyle) view.style.cssText
=3D viewStyle; if (this._loader !=3D null) { this._loader.onload =3D =
null; this._loader =3D null; } view.innerHTML
=3D markup; this._completeInit(view); }; zf_PhotoView.prototype.load =3D =
function(photo, method, noresize)
{ var self =3D this; if (this._loader !=3D null) this._loader.onload =3D =
null; var loader; if (photo instanceof
zf_PhotoLoader) { loader =3D photo; photo =3D loader.getPhoto(); method =
=3D loader.getMethod(); } else
loader =3D new zf_PhotoLoader(photo, method); this._loader =3D loader; =
loader.onload =3D this.closure(this._onLoad,
photo, method); if (!noresize) { if (photo.id < 0) =
this.setSpecial((-photo.id).toString()); else
this._resize(photo, method); } loader.start(); if (loader.state =3D=3D =
zf_PhotoLoader.Loading) { if (this._waitTimer
!=3D null) window.clearTimeout(this._waitTimer); this._waitTimer =3D =
window.setTimeout( function()
{ if (self._waitTimer !=3D null) { self.setSpecial("wait", true); if =
(self.onwait) self.onwait();
} }, this.waitTimeout); } }; zf_PhotoView.prototype.clear =3D function() =
{ this.setSpecial(null);
var image =3D this.dom("img"); var inner =3D image.parentNode; =
image.style.cssText =3D ""; inner.style.cssText
=3D ""; if (this._loader !=3D null) { this._loader.onload =3D null; =
this._loader =3D null; } if (this._waitTimer
!=3D null) { window.clearTimeout(this._waitTimer); this._waitTimer =3D =
null; } this._photo =3D null;
this._method =3D null; }; zf_PhotoView.prototype.attachContext =3D =
function(context) { this.context
=3D context; var image =3D this.dom("img"); var inner =3D =
image.parentNode; var outer =3D inner.parentNode;
var view =3D outer.parentNode; for (var i =3D 0; i < =
this._plugins.length; i++) { var plugin =3D this._plugins[i];
if (plugin.onCreateDom !=3D null) plugin.onCreateDom(view, outer, inner, =
context, false); } }; zf_PhotoView.prototype.detachContext
=3D function(context, view) { var inner =3D null; var outer =3D null; =
for (var i =3D 0; i < this._plugins.length;
i++) { var plugin =3D this._plugins[i]; if (plugin.onDestroyDom !=3D =
null) { if (view =3D=3D null) view
=3D this.dom(); if (outer =3D=3D null) { outer =3D view.firstChild; =
while (outer.className !=3D "pv-outer")
outer =3D outer.nextSibling; inner =3D outer.firstChild; while =
(inner.className !=3D "pv-inner") inner
=3D inner.nextSibling; } plugin.onDestroyDom(view, outer, inner, =
context); } } }; zf_PhotoView.prototype.setStyle
=3D function(styles, view) { styles =3D (styles !=3D null ? =
["pv"].concat(styles) : ["pv"]); styles.sort();
styles =3D styles.join(" "); if (view !=3D null) view =3D this.dom(); if =
(view.className !=3D styles) view.className
=3D styles; }; zf_PhotoView.prototype.setLink =3D function(href) { var =
inner =3D this.dom("img").parentNode;
if (href =3D=3D null) inner.removeAttribute("href"); else inner.href =3D =
href; }; zf_PhotoView.prototype.setSpecial
=3D function(style, noclear) { var view =3D =
document.getElementById(this.id); var update =3D false; var
styles =3D view.className.split(" "); for (var i =3D styles.length - 1; =
i >=3D 0; i--) { if (styles[i].indexOf("pv-s-")
=3D=3D 0) styles.splice(i, 1); } var photo =3D this._photo; var method =
=3D this._method; if (style !=3D null)
{ styles.push("pv-s-" + style); photo =3D null; method =3D null; } var =
className =3D styles.join(" ");
if (view.className !=3D className) view.className =3D className; if =
(!noclear) { if (this._special =3D=3D
style) return; this._special =3D style; =
this.detachContext(this.context); var inner =3D =
this.dom("img").parentNode;
var smap =3D {}; for (i =3D 0; i < styles.length; i++) smap[styles[i]] =
=3D true; var markup =3D zf_PhotoView._createInnerHtml(this.id,
inner.href, this._plugins, smap, this.context, photo, method, false); =
view.innerHTML =3D markup;
this._completeInit(view); } }; zf_PhotoView.prototype.getInner =3D =
function() { return this.dom("img").parentNode;
}; zf_PhotoView.prototype.getPhoto =3D function() { if (this._loader =
!=3D null) return this._loader.getPhoto();
return this._photo; }; zf_PhotoView.prototype.getMethod =3D function() { =
if (this._loader !=3D null)
return this._loader.getMethod(); return this._method; }; =
zf_PhotoView._createInnerHtml =3D function(id,
href, plugins, smap, context, photo, method, burnable) { if (plugins =
=3D=3D null) plugins =3D []; var
inner =3D []; var outer =3D []; for (var i =3D 0; i < plugins.length; =
i++) { var plugin =3D plugins[i];
if (plugin.getOuterContent !=3D null) =
outer.push(plugin.getOuterContent(id, context, smap)); if =
(plugin.getInnerContent
!=3D null) inner.push(plugin.getInnerContent(id, context, smap)); } href =
=3D (href !=3D null && href !=3D
"") ? [' href=3D"', href, '"'].join("") : ""; var innerStyle =3D ""; var =
imgStyle =3D ""; if (photo !=3D null
&& method !=3D null && photo.id > 0) { var size =3D =
photo.getScaledSize(method); var innerLeft =3D (method.cx
- size.cx) / 2; var innerTop =3D (method.cy - size.cy) / 2; innerStyle =
=3D [' style=3D"left:', innerLeft,
'px;top:', innerTop, 'px;width:', size.cx, 'px;height:', size.cy, 'px;"' =
].join(""); if (burnable)
{ imgStyle =3D [' width=3D"', size.cx, '" height=3D"', size.cy, '" =
style=3D"background-image:url(', photo.getGeneratedUrl(method,
true), ');"'].join(""); } } return [ '<div class=3D"pv-outer">', =
outer.join(""), '<a class=3D"pv-inner"',
href, innerStyle, '>', '<img class=3D"pv-img" id=3D"', id, '-img"', =
imgStyle, ' src=3D"/zf/img/null.gif" />',
inner.join(""), '</a>', '</div>' ].join(""); }; =
zf_PhotoView.prototype._completeInit =3D function(view)
{ var outer =3D view.firstChild; while (outer.className !=3D "pv-outer") =
outer =3D outer.nextSibling;
var inner =3D outer.firstChild; while (inner.className !=3D "pv-inner") =
inner =3D inner.nextSibling;
var self =3D this; if (inner.getAttribute("href") =3D=3D null) =
inner.onclick =3D zf_stdFalse; outer.onmouseenter
=3D function(e) { self._onOuterMouseEnter(this, e); }; =
outer.onmouseleave =3D function(e) { self._onOuterMouseLeave(this,
e); }; inner.onmouseenter =3D function(e) { =
self._onInnerMouseEnter(this, e); }; inner.onmouseleave
=3D function(e) { self._onInnerMouseLeave(this, e); }; for (var i =3D 0; =
i < this._plugins.length; i++)
{ var plugin =3D this._plugins[i]; if (plugin.onCreateDom !=3D null) =
plugin.onCreateDom(view, outer,
inner, this.context, true); } outer =3D null; inner =3D null; view =3D =
null; }; zf_PhotoView.prototype._onLoad
=3D function(state, src, photo, method) { if (this._waitTimer !=3D null) =
{ window.clearTimeout(this._waitTimer);
this._waitTimer =3D null; } this._photo =3D photo; this._method =3D =
method; if (this.onload) { if (this.onload(state))
return; } switch (state) { case zf_PhotoLoader.Complete: if (photo.id > =
0) { this.setSpecial(null);
var image =3D this._setImage(src, method); try { for (var i =3D 0; i < =
image.filters.length; i++) {
var filter =3D image.filters[i]; if (filter.mirror || filter.rotation) { =
filter.enabled =3D false;
filter.mirror =3D false; filter.rotation =3D false; } } } catch (e) { =
image.style.filter =3D ""; } }
break; case zf_PhotoLoader.NotFound: this.setSpecial("notfound"); break; =
case zf_PhotoLoader.AccessDenied:
case zf_PhotoLoader.AuthRequired: this.setSpecial("noaccess"); break; =
case zf_PhotoLoader.PasswordRequired:
this.setSpecial("password"); break; case zf_PhotoLoader.Failed: default: =
this.setSpecial("failed");
break; } }; zf_PhotoView.prototype._setImage =3D function(src, method) { =
var image =3D this.dom("img");
image.style.backgroundImage =3D "url(" + src + ")"; return image; }; =
zf_PhotoView.prototype._resize
=3D function(photo, method) { var inner =3D this.dom("img").parentNode; =
var size =3D photo.getScaledSize(method);
var x =3D (method.cx - size.cx) / 2; var y =3D (method.cy - size.cy) / =
2; inner.style.left =3D x + "px";
inner.style.top =3D y + "px"; inner.style.width =3D size.cx + "px"; =
inner.style.height =3D size.cy + "px";
}; zf_PhotoView.prototype._onOuterMouseEnter =3D function(outer, e) { =
zf_stdReplaceClassName(this.id,
null, "pv-ohover"); }; zf_PhotoView.prototype._onOuterMouseLeave =3D =
function(outer, e) { zf_stdReplaceClassName(this.id,
"pv-ohover", null); }; zf_PhotoView.prototype._onInnerMouseEnter =3D =
function(inner, e) { zf_stdReplaceClassName(this.id,
null, "pv-ihover"); }; zf_PhotoView.prototype._onInnerMouseLeave =3D =
function(inner, e) { zf_stdReplaceClassName(this.id,
"pv-ihover", null); };
; function zf_PhotoGrid(id, flags) { =
zf_Control.prototype.constructor.call(this, id); this._selectionMode
=3D flags & 0x03; this._dragDropMode =3D flags & 0x04; this._items =3D =
[]; this._views =3D []; this._selected
=3D {}; this._pendingSelect =3D {}; this._left =3D 0; this._height =3D =
-1; this._pageIndex =3D 0; this._anchorIndex
=3D -1; this._firstVisible =3D 0; this._lastVisible =3D 0; this._lastUid =
=3D 0; } zf_PhotoGrid.inherits(zf_Control);
zf_PhotoGrid.None =3D 0x00; zf_PhotoGrid.Single =3D 0x01; =
zf_PhotoGrid.SingleForced =3D 0x02; zf_PhotoGrid.Multiple
=3D 0x03; zf_PhotoGrid.KeepVisible =3D 0x01; zf_PhotoGrid._nullPhoto =3D =
new zf_BasicImage(0); zf_PhotoGrid.prototype.init
=3D function(plugins) { this._plugins =3D plugins !=3D null ? =
[].concat(plugins) : []; var self =3D this;
var node =3D this.dom(); if (this._selectionMode !=3D zf_PhotoGrid.None) =
{ node.ondblclick =3D node.onmousedown
=3D function(e) { self._onGridClick(e); return false; }; } =
node.onselectstart =3D zf_stdFalse; node
=3D null; }; zf_PhotoGrid.prototype.getLayoutInfo =3D function(flags) { =
if (flags =3D=3D null) flags =3D zf_PhotoGrid.None;
; ; var grid =3D this.dom(); var info =3D {}; if (this._cellWidth =3D=3D =
null) this._measureCell(grid);
info.width =3D grid.offsetWidth; info.itemsPerRow =3D =
Math.floor(info.width / this._cellWidth); if (info.itemsPerRow
=3D=3D 0) info.itemsPerRow =3D 1; var rowsPerGrid; var actualHeight; if =
(this._height =3D=3D -1) { info.rowsPerPage
=3D Math.ceil(this._items.length / info.itemsPerRow); if (this.minRows =
!=3D null && info.rowsPerPage
< this.minRows) info.rowsPerPage =3D this.minRows; if (this.maxRows !=3D =
null && info.rowsPerPage > this.maxRows)
info.rowsPerPage =3D this.maxRows; info.height =3D this._cellHeight * =
info.rowsPerPage; } else { info.height
=3D this._height; info.rowsPerPage =3D Math.floor(info.height / =
this._cellHeight); if (this.minRows
!=3D null && info.rowsPerPage < this.minRows) { info.rowsPerPage =3D =
this.minRows; info.height =3D this._cellHeight
* info.rowsPerPage; } if (this.maxRows !=3D null && info.rowsPerPage > =
this.maxRows) { info.rowsPerPage
=3D this.maxRows; info.height =3D this._cellHeight * info.rowsPerPage; } =
} if (info.rowsPerPage =3D=3D 0)
info.rowsPerPage =3D 1; if (this.minHeight !=3D null && info.height < =
this.minHeight) info.height =3D this.minHeight;
info.itemsPerPage =3D info.itemsPerRow * info.rowsPerPage; if =
(this._height =3D=3D -1) { info.currentPage
=3D 0; info.totalPages =3D 1; } else { info.totalPages =3D =
Math.ceil(this._items.length / info.itemsPerPage);
var anchorIndex =3D this._anchorIndex; if (anchorIndex =3D=3D -1) =
anchorIndex =3D this._firstVisible; if
((flags & zf_PhotoGrid.KeepVisible) !=3D 0) info.currentPage =3D =
Math.floor(anchorIndex / info.itemsPerPage);
else info.currentPage =3D this._pageIndex; if (info.currentPage >=3D =
info.totalPages) info.currentPage
=3D Math.max(info.totalPages - 1, 0); } info.firstVisible =3D =
info.currentPage * info.itemsPerPage;
info.lastVisible =3D Math.min(this._items.length, info.firstVisible + =
info.itemsPerPage); grid =3D null;
return info; }; zf_PhotoGrid.prototype.recalcLayout =3D function(info) { =
if (info =3D=3D null) info =3D this.getLayoutInfo();
; this._pageIndex =3D info.currentPage; if (this._anchorIndex =3D=3D -1) =
this._anchorIndex =3D info.firstVisible;
var height =3D info.height; if (this._height =3D=3D -1 && height =3D=3D =
0) height =3D "auto"; else height +=3D "px";
var grid =3D this.dom(); if (grid.style.height !=3D height) =
grid.style.height =3D height; var first =3D info.firstVisible;
var last =3D info.lastVisible; if (this.onlayoutchange !=3D null && =
(this._firstVisible !=3D first || this._lastVisible
!=3D last)) { zf_stdDeferCall(this.id + ".onlayoutchange", =
this.onlayoutchange, this, info); } for
(var i =3D first; i < last; i++) { if (this._items[i] =3D=3D null) =
this.onqueryitem(i); } for (i =3D this._firstVisible;
i < this._lastVisible; i++) { var item =3D this._items[i]; if (item !=3D =
null && item.visible && (i <
first || i >=3D last)) this._destroyDom(item); } this._firstVisible =3D =
first; this._lastVisible =3D last;
this._cellsPerRow =3D info.itemsPerRow; this._left =3D (info.width - =
info.itemsPerRow * this._cellWidth)
/ 2; for (i =3D first; i < last; i++) { item =3D this._items[i]; if =
(item !=3D null) { if (item._view
=3D=3D null) this._createDom(item); else this._showItem(i, item); } } =
var self =3D this; window.setTimeout(function()
{ self._trimPool(); }, 5000); zf_stdReplaceClassName(grid, =
this._items.length > 0 ? "pg-empty" : null,
this._items.length > 0 ? null : "pg-empty"); grid =3D null; extra =3D =
null; return info; }; zf_PhotoGrid.prototype.clear
=3D function() { for (var id in this._items) { var item =3D =
this._items[id]; if (item._view !=3D null)
this._destroyDom(item); } this._items =3D []; this._selected =3D {}; =
this._anchor =3D null; this._pageIndex
=3D 0; this._firstVisible =3D 0; this._lastVisible =3D 0; var self =3D =
this; window.setTimeout(function()
{ self._trimPool(); }, 5000); }; zf_PhotoGrid.prototype.getCellSize =3D =
function() { if (this._cellWidth
=3D=3D null) this._measureCell(this.dom()); return { cx: =
this._cellWidth, cy: this._cellHeight }; };
zf_PhotoGrid.prototype.setHeight =3D function(cy) { if (cy =3D=3D null) =
cy =3D -1; this._height =3D cy; };
zf_PhotoGrid.prototype.setSize =3D function(count) { ; var length =3D =
this._items.length; if (count
< length) { this._deleteItems(count, length); } else if (count > length) =
{ this._items =3D this._items.concat(new
Array(count - length)); } }; zf_PhotoGrid.prototype.getSize =3D =
function() { return this._items.length;
}; zf_PhotoGrid.prototype.setPage =3D function(page) { ; if (page !=3D =
this._pageIndex) { ; this._pageIndex
=3D page; this._anchorIndex =3D -1; } }; zf_PhotoGrid.prototype.getPage =
=3D function() { return this._pageIndex;
}; zf_PhotoGrid.prototype.setItem =3D function(index, id, href, photo, =
method, burnable, styles, context)
{ ; if (photo =3D=3D null) photo =3D zf_PhotoGrid._nullPhoto; styles =3D =
styles !=3D null ? [].concat(styles)
: []; var item =3D this._items[index]; if (item !=3D null) { if =
(item._view !=3D null) item._view.detachContext(item.context);
delete this._items[item.id]; this._items[id] =3D item; if =
(item.selected) { delete this._selected[item.id];
this._selected[id] =3D item; } item.id =3D id; item.href =3D href; =
item.photo =3D photo; item.method =3D method;
item.burnable =3D burnable; item.styles =3D styles; item.context =3D =
context; styles =3D [].concat(styles);
if (item.selected) styles.push("pg-selected"); if (item._view !=3D null) =
{ item._view.reinit(null,
href, styles, context, item.photo, item.method, item.burnable, item._x, =
item._y); if (!item.burnable)
item._view.load(photo, method, true); } } else { item =3D { id: id, =
index: index, href: href, photo:
photo, method: method, burnable: burnable, styles: styles, context: =
context, _grid: this, _view:
null }; if (this._pendingSelect[index]) { this._selectItem(item); delete =
this._pendingSelect[index];
} this._items[index] =3D item; this._items[id] =3D item; } return item; =
}; zf_PhotoGrid.prototype.getItem
=3D function(index) { return this._items[index]; }; =
zf_PhotoGrid.prototype.getPhotoView =3D function(item)
{ if (typeof(item) !=3D "object") item =3D this._items[item]; return =
item !=3D null ? item._view : null;
}; zf_PhotoGrid.prototype.getItemPage =3D function(index) { if =
(typeof(index) =3D=3D "string") { var item
=3D this._items[index]; if (item =3D=3D null) return 0; index =3D =
item.index; } else if (typeof(index) =3D=3D
"object") { if (index =3D=3D null) return 0; index =3D index.index; } =
return Math.floor(index / this.getLayoutInfo().itemsPerPage);
}; zf_PhotoGrid.prototype.getSelectedItem =3D function() { for (var id =
in this._selected) return this._selected[id];
return null; }; zf_PhotoGrid.prototype.getSelectedItems =3D function() { =
var items =3D []; for (var
id in this._selected) items.push(this._selected[id]); return items; }; =
zf_PhotoGrid.prototype.getSelectedIndices
=3D function() { var indices =3D []; for (var id in this._selected) =
indices.push(this._selected[id].index);
for (var idx in this._pendingSelect) indices.push(parseInt(idx, 10)); =
return indices; }; zf_PhotoGrid.prototype.deleteItem
=3D function(index) { var item; if (typeof(index) =3D=3D "string") { =
item =3D this._items[index]; if (item
=3D=3D null) return; index =3D item.index; } else if (typeof(index) =
=3D=3D "object") index =3D item.index;
this._deleteItems(index, index + 1); for (var i =3D index; i < =
this._items.length; i++) { item =3D this._items[i];
if (item !=3D null) item.index =3D i; } }; =
zf_PhotoGrid.prototype.updateItem =3D function(item, context)
{ ; if (typeof(item) !=3D "object") item =3D this.getItem(item); if =
(item !=3D null) { if (item._view
!=3D null) { item._view.detachContext(item.context); =
item._view.attachContext(context); } item.context
=3D context; } }; zf_PhotoGrid.prototype._createDom =3D function(item) { =
var styles =3D [].concat(item.styles);
if (item.selected) styles.push("pg-selected"); var index =3D item.index =
- this._firstVisible; var
row =3D Math.floor(index / this._cellsPerRow); var col =3D index % =
this._cellsPerRow; var x =3D this._left
+ col * this._cellWidth + this._cellLeft; var y =3D row * =
this._cellHeight + this._cellTop; item._x
=3D x; item._y =3D y; var self =3D this; var view; var viewNode; var =
onmousedown =3D function(e) { self._item_onmousedown(e,
this, item); }; var onmouseup =3D function(e) { self._item_onmouseup(e, =
this, item); }; if (this._views.length
> 0) { view =3D this._views.pop(); viewNode =3D view.dom(); if =
(this._selectionMode !=3D zf_PhotoGrid.None)
{ viewNode.onmousedown =3D onmousedown; viewNode.onmouseup =3D =
onmouseup; } view.reinit(viewNode, item.href,
styles, item.context, item.photo, item.method, item.burnable, item._x, =
item._y); item._view =3D view;
} else { var viewId =3D [this.id, "_i", ++this._lastUid].join(""); var =
html =3D zf_PhotoView.createHtml(viewId,
item.href, styles, this._plugins, item.context, item.photo, item.method, =
item.burnable, x, y);
var grid =3D document.getElementById(this.id); var node =3D =
document.createElement("DIV"); node.innerHTML
=3D html; grid.appendChild(node.removeChild(node.firstChild)); viewNode =
=3D grid.lastChild; grid =3D null;
node =3D null; viewNode.onselectstart =3D zf_stdFalse; =
viewNode.ondblclick =3D zf_stdStopPropagation;
if (this._selectionMode !=3D zf_PhotoGrid.None) { viewNode.onmousedown =
=3D onmousedown; viewNode.onmouseup
=3D onmouseup; } item._view =3D new zf_PhotoView(viewId, this._plugins, =
item.context, viewNode); }
item.visible =3D true; viewNode =3D null; if (!item.burnable) =
item._view.load(item.photo, item.method,
true); }; zf_PhotoGrid.prototype._destroyDom =3D function(item) { var =
view =3D item._view; item._view
=3D null; item._x =3D null; item._y =3D null; item.visible =3D false; =
var viewNode =3D view.dom(); view.detachContext(item.context,
viewNode); viewNode.style.cssText =3D ""; viewNode.onmousedown =3D null; =
if (this._views.length < 256)
this._views.push(view); else viewNode.parentNode.removeChild(viewNode); =
}; zf_PhotoGrid.prototype._trimPool
=3D function() { if (this._views.length > 64) { var extra =3D =
this._views.splice(64, this._views.length
- 64); for (var i =3D 0; i < extra.length; i++) { var node =3D =
document.getElementById(extra[i].id);
node.parentNode.removeChild(node); } } }; =
zf_PhotoGrid.prototype._showItem =3D function(index, item)
{ index -=3D this._firstVisible; var row =3D Math.floor(index / =
this._cellsPerRow); var col =3D index
% this._cellsPerRow; var x =3D this._left + col * this._cellWidth + =
this._cellLeft; var y =3D row * this._cellHeight
+ this._cellTop; if (item._x =3D=3D x && item._y =3D=3D y) return; =
item._x =3D x; item._y =3D y; item.visible
=3D true; var node =3D item._view.dom(); node.style.left =3D x + "px"; =
node.style.top =3D y + "px"; node.style.visibility
=3D "inherit"; }; zf_PhotoGrid.prototype._hideItem =3D function(index, =
item) { if (item._x !=3D null ||
item._y !=3D null) { var node =3D item._view.dom(); =
node.style.visibility =3D "hidden"; item._x =3D null;
item._y =3D null; item.visible =3D false; } }; =
zf_PhotoGrid.prototype._measureCell =3D function(grid)
{ ; var node =3D document.createElement("DIV"); node.className =3D "pv"; =
grid.appendChild(node); var
props; var i; if (node.currentStyle) { props =3D [ "width", =
"paddingLeft", "paddingRight", "borderLeftWidth",
"borderRightWidth", "marginLeft", "marginRight", "height", "paddingTop", =
"paddingBottom", "borderTopWidth",
"borderBottomWidth", "marginTop", "marginBottom" ]; for (i =3D 0; i < =
props.length; i++) props[i]
=3D node.currentStyle[props[i]]; } else { props =3D [ "width", =
"padding-left", "padding-right", "border-left-width",
"border-right-width", "margin-left", "margin-right", "height", =
"padding-top", "padding-bottom",
"border-top-width", "border-bottom-width", "margin-top", "margin-bottom" =
]; var style =3D document.defaultView.getComputedStyle(node,
null); for (i =3D 0; i < props.length; i++) props[i] =3D =
style.getPropertyValue(props[i]); } grid.removeChild(node);
var width =3D 0; var height =3D 0; for (i =3D 0; i < 7; i++) width +=3D =
(props[i] =3D parseInt(props[i], 10));
for (i =3D 7; i < 14; i++) height +=3D (props[i] =3D parseInt(props[i], =
10)); ; ; ; ; this._cellWidth
=3D width; this._cellHeight =3D height; this._cellLeft =3D props[5]; =
this._cellTop =3D props[12]; }; zf_PhotoGrid.prototype._item_onmousedown
=3D function(e, node, item) { ; ; e =3D zf_stdGetEvent(e); =
zf_stdStopPropagation(e); zf_stdPreventDefault(e);
if (node.setActive) node.setActive(); if (zf_stdIsLeftButton(e)) =
this._clickSelect(e, node, item,
true); if (this._dragInfo !=3D null) { this._dragStop(); } else if =
(zf_stdIsLeftButton(e) && this._dragDropMode
!=3D zf_PhotoGrid.None) { var self =3D this; this._dragInfo =3D { =
dropIndex: -1, anchorX: e.clientX,
anchorY: e.clientY, baseX: item._x, baseY: item._y, timer: =
setTimeout(function() { self._dragStart(item);
}, 1000), lastScroll: new Date().getTime() }; node.onmousemove =3D =
function(e) { self._item_onmousemove(e,
item); }; if (document.addEventListener) { =
document.addEventListener("mousemove", node.onmousemove,
true); document.addEventListener("mouseup", node.onmouseup, true); } =
else node.setCapture(false);
} node =3D null; e =3D null; }; zf_PhotoGrid.prototype._item_onmouseup =
=3D function(e, node, item) {
; ; if (node =3D=3D document) node =3D item._view.dom(); e =3D =
zf_stdGetEvent(e); zf_stdStopPropagation(e);
zf_stdPreventDefault(e); var dragDone =3D false; if (this._dragInfo !=3D =
null) { dragDone =3D this._dragStop(true);
if (document.removeEventListener) { =
document.removeEventListener("mousemove", node.onmousemove, true);
document.removeEventListener("mouseup", node.onmouseup, true); } else =
node.releaseCapture(false);
node.onmousemove =3D zf_stdFalse; } if (!dragDone) this._clickSelect(e, =
node, item, false); node =3D null;
e =3D null; }; zf_PhotoGrid.prototype._clickSelect =3D function(e, node, =
item, down) { ; ; ; var ctrl
=3D false; var shift =3D false; if (this._selectionMode =3D=3D =
zf_PhotoGrid.Multiple) { ctrl =3D e.ctrlKey
|| e.metaKey; shift =3D e.shiftKey; } if ((ctrl || shift) && !down) =
return; var change =3D false; var
anchor =3D this._anchor; if (ctrl) { if (item.selected) change =3D =
this._deselectItem(item, node);
else if (!item.selected) change =3D this._selectItem(item, node); =
this._anchor =3D item; } else if (shift
&& anchor !=3D null && anchor !=3D item) { var deselect =3D []; var =
itemIndex =3D item.index; var anchorIndex
=3D anchor.index; for (var id in this._selected) { var sel =3D =
this._selected[id]; var index =3D sel.index;
if (index < anchorIndex && index < itemIndex || index > anchorIndex && =
index > itemIndex) { deselect.push(index);
} } for (var i =3D 0; i < deselect.length; i++) change =3D =
this._deselectItem(deselect[i]) || change;
var start =3D Math.min(itemIndex, anchorIndex); var end =3D =
Math.max(itemIndex, anchorIndex); for (i =3D
start; i <=3D end; i++) change =3D this._selectItem(i) || change; } else =
{ if (item.selected && !down
|| !item.selected && down) { change =3D this._deselectAll(item); change =
=3D this._selectItem(item, node)
|| change; this._anchor =3D item; } } if (change && this.onselchange =
!=3D null) this.onselchange(item);
}; zf_PhotoGrid.prototype._onGridClick =3D function(e) { if =
(this._selectionMode !=3D zf_PhotoGrid.SingleForced)
{ if (this._deselectAll() && this.onselchange !=3D null) =
this.onselchange(null); } }; zf_PhotoGrid.prototype._selectItem
=3D function(item, node) { if (typeof(item) =3D=3D "number") { var index =
=3D item; if (index < 0 || index
>=3D this._items.length) return false; item =3D this._items[index]; if =
(item =3D=3D null) { if (!this._pendingSelect[index])
{ this._pendingSelect[index] =3D true; return true; } return false; } } =
else if (typeof(item) !=3D "object")
item =3D this._items[item]; if (item =3D=3D null || item.selected) =
return false; if (this._selectionMode
=3D=3D zf_PhotoGrid.Single || this._selectionMode =3D=3D =
zf_PhotoGrid.SingleForced) { var other =3D this.getSelectedItem();
if (other !=3D null) this._deselectItem(other); } =
this._selected[item.id] =3D item; if (node =3D=3D null &&
item._view !=3D null) node =3D document.getElementById(item._view.id); =
if (node !=3D null) zf_stdReplaceClassName(node,
null, "pg-selected"); item.selected =3D true; return true; }; =
zf_PhotoGrid.prototype._deselectItem
=3D function(item, node) { if (typeof(item) =3D=3D "number") { var index =
=3D item; if (index < 0 || index
>=3D this._items.length) return false; item =3D this._items[index]; if =
(item =3D=3D null) { if (!this._pendingSelect[index])
return false; delete this._pendingSelect[index]; return true; } } else =
if (typeof(item) !=3D "object")
item =3D this._items[item]; if (item =3D=3D null || !item.selected) =
return false; delete this._selected[item.id];
if (node =3D=3D null && item._view !=3D null) node =3D =
document.getElementById(item._view.id); if (node
!=3D null) zf_stdReplaceClassName(node, "pg-selected", null); =
item.selected =3D false; return true;
}; zf_PhotoGrid.prototype._deselectAll =3D function(item) { var change =
=3D false; for (var id in this._selected)
{ var sel =3D this._selected[id]; if (sel !=3D item) { if (sel._view =
!=3D null) zf_stdReplaceClassName(sel._view.id,
"pg-selected", null); sel.selected =3D false; change =3D true; } } =
this._selected =3D {}; if (item !=3D null
&& item.selected) this._selected[item.id] =3D item; this._pendingSelect =
=3D {}; return change; }; zf_PhotoGrid.prototype.selectItem
=3D zf_PhotoGrid.prototype._selectItem; =
zf_PhotoGrid.prototype.deselectItem =3D =
zf_PhotoGrid.prototype._deselectItem;
zf_PhotoGrid.prototype.deselectAll =3D =
zf_PhotoGrid.prototype._deselectAll; zf_PhotoGrid.prototype._deleteItems
=3D function(first, last) { for (var index =3D last - 1; index >=3D =
first; index--) { var item =3D this._items[index];
if (item !=3D null) { if (item._view !=3D null) this._destroyDom(item); =
delete this._items[item.id];
delete this._selected[item.id]; } else delete =
this._pendingSelect[index]; } this._items.splice(first,
last - first); };
; function zf_Pager(id, width, size, current, flags) { ; ; ; ; =
zf_Control.prototype.constructor.call(this,
id); this._width =3D width; this._size =3D size; this._current =3D =
current; this._infinite =3D (flags & 1)
!=3D 0; this._showAll =3D (flags & 2) !=3D 0; this._selectAll =3D (flags =
& 4) !=3D 0; this._noUpdate =3D (flags
& 8) !=3D 0; this._mode =3D zf_Pager.Paged; this.update =3D =
zf_stdMakeDeferred(this.id + ".update", this._update);
if (size > 0 && !this._noUpdate) this.update(size, current); if =
(this._showAll) { this._linkEvent("a",
"onall"); this._linkEvent("p", "onpaged"); } if (this._selectAll) =
this._linkEvent("s", "onselectall");
} zf_Pager.inherits(zf_Control); zf_Pager.Paged =3D 0; zf_Pager.All =3D =
1; zf_Pager.prototype.getMode
=3D function() { return this._mode; }; zf_Pager.prototype.setMode =3D =
function(mode) { ; if (this._mode
=3D=3D mode) return; var paged =3D (mode =3D=3D zf_Pager.Paged) ? "none" =
: "block"; var all =3D (mode =3D=3D zf_Pager.Paged)
? "block" : "none"; var backNode =3D this.dom("b"); var nextNode =3D =
this.dom("n"); var pageNode =3D this.dom("p");
var allNode =3D this.dom("a"); backNode.style.display =3D all; =
nextNode.style.display =3D all; allNode.style.display
=3D all; pageNode.style.display =3D paged; if (mode =3D=3D zf_Pager.All) =
this._update(0, 0, false); this._mode
=3D mode; }; zf_Pager.prototype._update =3D function(size, current, =
fromEvent) { if (this._mode =3D=3D zf_Pager.All)
return; ; ; ; var maxSlots =3D this._width + (this._infinite ? 3 : 4); =
var oldSlots =3D Math.min(this._size,
maxSlots); var newSlots =3D Math.min(size, maxSlots); var backNode =3D =
this.dom("b"); var nextNode =3D
this.dom("n"); var parentNode =3D nextNode.parentNode; var i; for (i =3D =
oldSlots; i > newSlots; --i)
parentNode.removeChild(nextNode.previousSibling); for (i =3D oldSlots; i =
< newSlots; ++i) parentNode.insertBefore(document.createElement("A"),
nextNode); this._size =3D size; this._current =3D current; if =
(this._size > 0) { ++current; var node
=3D backNode.nextSibling; var halfWidth =3D Math.floor(this._width / 2); =
var remainder =3D this._size -
this._width; var halfRemainder =3D this._size - halfWidth; if =
(this._size < this._width + 4) { this._updatePageButtons(node,
1, this._size); } else if (current <=3D halfWidth + 3) { node =3D =
this._updatePageButtons(node, 1, this._width
+ 2); node =3D this._updateEllipsis(node, this._width + 3); if =
(!this._infinite) this._updatePageButtons(node,
this._size, this._size); } else if (!this._infinite && current >=3D =
halfRemainder - 2) { node =3D this._updatePageButtons(node,
1, 1); node =3D this._updateEllipsis(node, remainder - 2); =
this._updatePageButtons(node, remainder -
1, this._size); } else if (this._infinite && current >=3D halfRemainder =
- 1) { node =3D this._updatePageButtons(node,
1, 1); node =3D this._updateEllipsis(node, remainder - 1); =
this._updatePageButtons(node, remainder,
this._size); } else { node =3D this._updatePageButtons(node, 1, 1); node =
=3D this._updateEllipsis(node,
current - halfWidth - 1); node =3D this._updatePageButtons(node, current =
- halfWidth, current + halfWidth);
node =3D this._updateEllipsis(node, current + halfWidth + 1); if =
(!this._infinite) this._updatePageButtons(node,
this._size, this._size); } --current; } backNode.ondblclick =3D =
backNode.onmousedown =3D this._getHandler(current
- 1); backNode.onselectstart =3D backNode.onclick =3D zf_stdFalse; =
nextNode.ondblclick =3D nextNode.onmousedown
=3D this._getHandler(current + 1); nextNode.onselectstart =3D =
nextNode.onclick =3D zf_stdFalse; this._setStyleHandlers(backNode);
this._setStyleHandlers(nextNode); backNode.style.visibility =3D (current =
> 0) ? "inherit" : "hidden";
nextNode.style.visibility =3D (current < size - 1) ? "inherit" : =
"hidden"; backNode =3D null; nextNode
=3D null; parentNode =3D null; if (fromEvent && this.onchange !=3D null) =
this.onchange(this._current);
}; zf_Pager.prototype._updatePageButtons =3D function(node, from, to) { =
for (var i =3D from; i <=3D to;
++i) { node.href =3D "#"; zf_stdSetText(node, i.toString()); if ((i - 1) =
!=3D this._current) { node.ondblclick
=3D node.onmousedown =3D this._getHandler(i - 1); node.className =3D =
"pager-color1 pager-bgcolor1 pager-border1";
} else { node.ondblclick =3D node.onmousedown =3D zf_stdFalse; =
node.className =3D "pager-color3 pager-bgcolor3 pager-border3 pager-c";
} this._setStyleHandlers(node); node.onselectstart =3D node.onclick =3D =
zf_stdFalse; node =3D node.nextSibling;
} return node; }; zf_Pager.prototype._updateEllipsis =3D function(node, =
page) { node.href =3D "#";
zf_stdSetText(node, "..."); node.className =3D "pager-color1 =
pager-bgcolor1 pager-border1"; node.ondblclick
=3D node.onmousedown =3D this._getHandler(page - 1); node.onselectstart =
=3D node.onclick =3D zf_stdFalse;
this._setStyleHandlers(node); return node.nextSibling; }; =
zf_Pager.prototype._getHandler =3D function(page)
{ var size =3D this._size; var self =3D this; var handler =3D =
function(e) { if (!zf_stdIsLeftButton(e))
return true; this.blur(); self._update(size, page, true); return false; =
}; return handler; }; zf_Pager.prototype._linkEvent
=3D function(id, handler) { var self =3D this; var node =3D =
this.dom(id); node.ondblclick =3D node.onmousedown
=3D function(e) { if (!zf_stdIsLeftButton(e)) return true; this.blur(); =
if (self[handler]) self[handler].apply(self);
return false; }; this._setStyleHandlers(node); node.onselectstart =3D =
node.onclick =3D zf_stdFalse;
node =3D null; }; zf_Pager.prototype._setStyleHandlers =3D =
function(node) { node.onmouseover =3D function()
{ var className =3D this.className.split(' '); if (className[0] =3D=3D =
"pager-color1") className[0] =3D "pager-color2";
if (className[1] =3D=3D "pager-bgcolor1") className[1] =3D =
"pager-bgcolor2"; if (className[2] =3D=3D "pager-border1")
className[2] =3D "pager-border2"; this.className =3D className.join(' =
'); }; node.onmouseout =3D function()
{ var className =3D this.className.split(' '); if (className[0] =3D=3D =
"pager-color2") className[0] =3D "pager-color1";
if (className[1] =3D=3D "pager-bgcolor2") className[1] =3D =
"pager-bgcolor1"; if (className[2] =3D=3D "pager-border2")
className[2] =3D "pager-border1"; this.className =3D className.join(' =
'); }; };
; function zf_Prefetch(id, slots) { =
zf_Control.prototype.constructor.call(this, id); var i =3D 0;
var self =3D this; var append =3D function() { var item =3D =
document.createElement("DIV"); item.className
=3D "prefetch-" + i; self.dom().appendChild(item); item =3D null; if =
(++i < slots) setTimeout(append,
200); }; setTimeout(append, 1000); } zf_Prefetch.inherits(zf_Control);
;     =20
/*jsl:ignoreall*/
/*
 * jQuery JavaScript Library v1.3.2
 * http://jquery.com/
 *
 * Copyright (c) 2009 John Resig
 * Dual licensed under the MIT and GPL licenses.
 * http://docs.jquery.com/License
 *
 * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
 * Revision: 6246
 */
(function(){var =
l=3Dthis,g,y=3Dl.jQuery,p=3Dl.$,o=3Dl.jQuery=3Dl.$=3Dfunction(E,F){return=
 new =
o.fn.init(E,F)},D=3D/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=3D/^.[^:#\[\.=
,]*$/;o.fn=3Do.prototype=3D{init:function(E,H){E=3DE||document;if(E.nodeT=
ype){this[0]=3DE;this.length=3D1;this.context=3DE;return this}if(typeof =
E=3D=3D=3D"string"){var =
G=3DD.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=3Do.clean([G[1]],H)}else{var =
I=3Ddocument.getElementById(G[3]);if(I&&I.id!=3DG[3]){return =
o().find(E)}var F=3Do(I||[]);F.context=3Ddocument;F.selector=3DE;return =
F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return =
o(document).ready(E)}}if(E.selector&&E.context){this.selector=3DE.selecto=
r;this.context=3DE.context}return =
this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",=
size:function(){return this.length},get:function(E){return =
E=3D=3D=3Dg?Array.prototype.slice.call(this):this[E]},pushStack:function(=
F,H,E){var =
G=3Do(F);G.prevObject=3Dthis;G.context=3Dthis.context;if(H=3D=3D=3D"find"=
){G.selector=3Dthis.selector+(this.selector?" =
":"")+E}else{if(H){G.selector=3Dthis.selector+"."+H+"("+E+")"}}return =
G},setArray:function(E){this.length=3D0;Array.prototype.push.apply(this,E=
);return this},each:function(F,E){return =
o.each(this,F,E)},index:function(E){return =
o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var =
E=3DF;if(typeof F=3D=3D=3D"string"){if(H=3D=3D=3Dg){return =
this[0]&&o[G||"attr"](this[0],F)}else{E=3D{};E[F]=3DH}}return =
this.each(function(I){for(F in =
E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E=
,F){if((E=3D=3D"width"||E=3D=3D"height")&&parseFloat(F)<0){F=3Dg}return =
this.attr(E,F,"curCSS")},text:function(F){if(typeof =
F!=3D=3D"object"&&F!=3Dnull){return =
this.empty().append((this[0]&&this[0].ownerDocument||document).createText=
Node(F))}var =
E=3D"";o.each(F||this,function(){o.each(this.childNodes,function(){if(thi=
s.nodeType!=3D8){E+=3Dthis.nodeType!=3D1?this.nodeValue:o.fn.text([this])=
}})});return E},wrapAll:function(E){if(this[0]){var =
F=3Do(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBef=
ore(this[0])}F.map(function(){var =
G=3Dthis;while(G.firstChild){G=3DG.firstChild}return =
G}).append(this)}return this},wrapInner:function(E){return =
this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){re=
turn this.each(function(){o(this).wrapAll(E)})},append:function(){return =
this.domManip(arguments,true,function(E){if(this.nodeType=3D=3D1){this.ap=
pendChild(E)}})},prepend:function(){return =
this.domManip(arguments,true,function(E){if(this.nodeType=3D=3D1){this.in=
sertBefore(E,this.firstChild)}})},before:function(){return =
this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,=
this)})},after:function(){return =
this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,=
this.nextSibling)})},end:function(){return =
this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:f=
unction(E){if(this.length=3D=3D=3D1){var =
F=3Dthis.pushStack([],"find",E);F.length=3D0;o.find(E,this[0],F);return =
F}else{return this.pushStack(o.unique(o.map(this,function(G){return =
o.find(E,G)})),"find",E)}},clone:function(G){var =
E=3Dthis.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){va=
r I=3Dthis.outerHTML;if(!I){var =
J=3Dthis.ownerDocument.createElement("div");J.appendChild(this.cloneNode(=
true));I=3DJ.innerHTML}return o.clean([I.replace(/ =
jQuery\d+=3D"(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return =
this.cloneNode(true)}});if(G=3D=3D=3Dtrue){var =
H=3Dthis.find("*").andSelf(),F=3D0;E.find("*").andSelf().each(function(){=
if(this.nodeName!=3D=3DH[F].nodeName){return}var =
I=3Do.data(H[F],"events");for(var K in I){for(var J in =
I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return =
E},filter:function(E){return =
this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return =
E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return =
F.nodeType=3D=3D=3D1})),"filter",E)},closest:function(E){var =
G=3Do.expr.match.POS.test(E)?o(E):null,F=3D0;return =
this.map(function(){var =
H=3Dthis;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(=
H,"closest",F);return =
H}H=3DH.parentNode;F++}})},not:function(E){if(typeof =
E=3D=3D=3D"string"){if(f.test(E)){return =
this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=3Do.multiFilter=
(E,this)}}var F=3DE.length&&E[E.length-1]!=3D=3Dg&&!E.nodeType;return =
this.filter(function(){return =
F?o.inArray(this,E)<0:this!=3DE})},add:function(E){return =
this.pushStack(o.unique(o.merge(this.get(),typeof =
E=3D=3D=3D"string"?o(E):o.makeArray(E))))},is:function(E){return =
!!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return =
!!E&&this.is("."+E)},val:function(K){if(K=3D=3D=3Dg){var =
E=3Dthis[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{=
}).specified?E.value:E.text}if(o.nodeName(E,"select")){var =
I=3DE.selectedIndex,L=3D[],M=3DE.options,H=3DE.type=3D=3D"select-one";if(=
I<0){return null}for(var F=3DH?I:0,J=3DH?I+1:M.length;F<J;F++){var =
G=3DM[F];if(G.selected){K=3Do(G).val();if(H){return K}L.push(K)}}return =
L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof =
K=3D=3D=3D"number"){K+=3D""}return =
this.each(function(){if(this.nodeType!=3D1){return}if(o.isArray(K)&&/radi=
o|checkbox/.test(this.type)){this.checked=3D(o.inArray(this.value,K)>=3D0=
||o.inArray(this.name,K)>=3D0)}else{if(o.nodeName(this,"select")){var =
N=3Do.makeArray(K);o("option",this).each(function(){this.selected=3D(o.in=
Array(this.value,N)>=3D0||o.inArray(this.text,N)>=3D0)});if(!N.length){th=
is.selectedIndex=3D-1}}else{this.value=3DK}}})},html:function(E){return =
E=3D=3D=3Dg?(this[0]?this[0].innerHTML.replace(/ =
jQuery\d+=3D"(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWit=
h:function(E){return this.after(E).remove()},eq:function(E){return =
this.slice(E,+E+1)},slice:function(){return =
this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.=
prototype.slice.call(arguments).join(","))},map:function(E){return =
this.pushStack(o.map(this,function(G,F){return =
E.call(G,F,G)}))},andSelf:function(){return =
this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var =
I=3D(this[0].ownerDocument||this[0]).createDocumentFragment(),F=3Do.clean=
(J,(this[0].ownerDocument||this[0]),I),H=3DI.firstChild;if(H){for(var =
G=3D0,E=3Dthis.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.c=
loneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return =
M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbo=
dy")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn=
.init.prototype=3Do.fn;function =
z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o=
.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.pa=
rentNode.removeChild(F)}}function e(){return +new =
Date}o.extend=3Do.fn.extend=3Dfunction(){var =
J=3Darguments[0]||{},H=3D1,I=3Darguments.length,E=3Dfalse,G;if(typeof =
J=3D=3D=3D"boolean"){E=3DJ;J=3Darguments[1]||{};H=3D2}if(typeof =
J!=3D=3D"object"&&!o.isFunction(J)){J=3D{}}if(I=3D=3DH){J=3Dthis;--H}for(=
;H<I;H++){if((G=3Darguments[H])!=3Dnull){for(var F in G){var =
K=3DJ[F],L=3DG[F];if(J=3D=3D=3DL){continue}if(E&&L&&typeof =
L=3D=3D=3D"object"&&!L.nodeType){J[F]=3Do.extend(E,K||(L.length!=3Dnull?[=
]:{}),L)}else{if(L!=3D=3Dg){J[F]=3DL}}}}}return J};var =
b=3D/z-?index|font-?weight|opacity|zoom|line-?height/i,q=3Ddocument.defau=
ltView||{},s=3DObject.prototype.toString;o.extend({noConflict:function(E)=
{l.$=3Dp;if(E){l.jQuery=3Dy}return o},isFunction:function(E){return =
s.call(E)=3D=3D=3D"[object Function]"},isArray:function(E){return =
s.call(E)=3D=3D=3D"[object Array]"},isXMLDoc:function(E){return =
E.nodeType=3D=3D=3D9&&E.documentElement.nodeName!=3D=3D"HTML"||!!E.ownerD=
ocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.t=
est(G)){var =
F=3Ddocument.getElementsByTagName("head")[0]||document.documentElement,E=3D=
document.createElement("script");E.type=3D"text/javascript";if(o.support.=
scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=3DG}F.i=
nsertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){ret=
urn =
F.nodeName&&F.nodeName.toUpperCase()=3D=3DE.toUpperCase()},each:function(=
G,K,F){var E,H=3D0,I=3DG.length;if(F){if(I=3D=3D=3Dg){for(E in =
G){if(K.apply(G[E],F)=3D=3D=3Dfalse){break}}}else{for(;H<I;){if(K.apply(G=
[H++],F)=3D=3D=3Dfalse){break}}}}else{if(I=3D=3D=3Dg){for(E in =
G){if(K.call(G[E],E,G[E])=3D=3D=3Dfalse){break}}}else{for(var =
J=3DG[0];H<I&&K.call(J,H,J)!=3D=3Dfalse;J=3DG[++H]){}}}return =
G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=3DI.call(H,F)}return =
typeof =
I=3D=3D=3D"number"&&G=3D=3D"curCSS"&&!b.test(E)?I+"px":I},className:{add:=
function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType=3D=3D=
1&&!o.className.has(E.className,H)){E.className+=3D(E.className?" =
":"")+H}})},remove:function(E,F){if(E.nodeType=3D=3D1){E.className=3DF!=3D=
=3Dg?o.grep(E.className.split(/\s+/),function(G){return =
!o.className.has(F,G)}).join(" "):""}},has:function(F,E){return =
F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:functi=
on(H,G,I){var E=3D{};for(var F in =
G){E[F]=3DH.style[F];H.style[F]=3DG[F]}I.call(H);for(var F in =
G){H.style[F]=3DE[F]}},css:function(H,F,J,E){if(F=3D=3D"width"||F=3D=3D"h=
eight"){var =
L,G=3D{position:"absolute",visibility:"hidden",display:"block"},K=3DF=3D=3D=
"width"?["Left","Right"]:["Top","Bottom"];function =
I(){L=3DF=3D=3D"width"?H.offsetWidth:H.offsetHeight;if(E=3D=3D=3D"border"=
){return}o.each(K,function(){if(!E){L-=3DparseFloat(o.curCSS(H,"padding"+=
this,true))||0}if(E=3D=3D=3D"margin"){L+=3DparseFloat(o.curCSS(H,"margin"=
+this,true))||0}else{L-=3DparseFloat(o.curCSS(H,"border"+this+"Width",tru=
e))||0}})}if(H.offsetWidth!=3D=3D0){I()}else{o.swap(H,G,I)}return =
Math.max(0,Math.round(L))}return =
o.curCSS(H,F,J)},curCSS:function(I,F,G){var =
L,E=3DI.style;if(F=3D=3D"opacity"&&!o.support.opacity){L=3Do.attr(E,"opac=
ity");return =
L=3D=3D""?"1":L}if(F.match(/float/i)){F=3Dw}if(!G&&E&&E[F]){L=3DE[F]}else=
{if(q.getComputedStyle){if(F.match(/float/i)){F=3D"float"}F=3DF.replace(/=
([A-Z])/g,"-$1").toLowerCase();var =
M=3Dq.getComputedStyle(I,null);if(M){L=3DM.getPropertyValue(F)}if(F=3D=3D=
"opacity"&&L=3D=3D""){L=3D"1"}}else{if(I.currentStyle){var =
J=3DF.replace(/\-(\w)/g,function(N,O){return =
O.toUpperCase()});L=3DI.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?=
$/i.test(L)&&/^\d/.test(L)){var =
H=3DE.left,K=3DI.runtimeStyle.left;I.runtimeStyle.left=3DI.currentStyle.l=
eft;E.left=3DL||0;L=3DE.pixelLeft+"px";E.left=3DH;I.runtimeStyle.left=3DK=
}}}}return L},clean:function(F,K,I){K=3DK||document;if(typeof =
K.createElement=3D=3D=3D"undefined"){K=3DK.ownerDocument||K[0]&&K[0].owne=
rDocument||document}if(!I&&F.length=3D=3D=3D1&&typeof =
F[0]=3D=3D=3D"string"){var =
H=3D/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var=
 =
G=3D[],E=3D[],L=3DK.createElement("div");o.each(F,function(P,S){if(typeof=
 S=3D=3D=3D"number"){S+=3D""}if(!S){return}if(typeof =
S=3D=3D=3D"string"){S=3DS.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){re=
turn =
T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"=
></"+T+">"});var =
O=3DS.replace(/^\s+/,"").substring(0,10).toLowerCase();var =
Q=3D!O.indexOf("<opt")&&[1,"<select =
multiple=3D'multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>"=
,"</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>",=
"</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||=
(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></t=
body></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>=
","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>=
"]||[0,"",""];L.innerHTML=3DQ[1]+S+Q[2];while(Q[0]--){L=3DL.lastChild}if(=
!o.support.tbody){var =
R=3D/<tbody/i.test(S),N=3D!O.indexOf("<table")&&!R?L.firstChild&&L.firstC=
hild.childNodes:Q[1]=3D=3D"<table>"&&!R?L.childNodes:[];for(var =
M=3DN.length-1;M>=3D0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.=
length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespa=
ce&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.=
firstChild)}S=3Do.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=
=3Do.merge(G,S)}});if(I){for(var =
J=3D0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLo=
werCase()=3D=3D=3D"text/javascript")){E.push(G[J].parentNode?G[J].parentN=
ode.removeChild(G[J]):G[J])}else{if(G[J].nodeType=3D=3D=3D1){G.splice.app=
ly(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.=
appendChild(G[J])}}return E}return =
G},attr:function(J,G,K){if(!J||J.nodeType=3D=3D3||J.nodeType=3D=3D8){retu=
rn g}var =
H=3D!o.isXMLDoc(J),L=3DK!=3D=3Dg;G=3DH&&o.props[G]||G;if(J.tagName){var =
F=3D/href|src|style/.test(G);if(G=3D=3D"selected"&&J.parentNode){J.parent=
Node.selectedIndex}if(G in =
J&&H&&!F){if(L){if(G=3D=3D"type"&&o.nodeName(J,"input")&&J.parentNode){th=
row"type property can't be =
changed"}J[G]=3DK}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return =
J.getAttributeNode(G).nodeValue}if(G=3D=3D"tabIndex"){var =
I=3DJ.getAttributeNode("tabIndex");return =
I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|text=
area)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return =
J[G]}if(!o.support.style&&H&&G=3D=3D"style"){return =
o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var =
E=3D!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G)=
;return =
E=3D=3D=3Dnull?g:E}if(!o.support.opacity&&G=3D=3D"opacity"){if(L){J.zoom=3D=
1;J.filter=3D(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=3D=
=3D"NaN"?"":"alpha(opacity=3D"+K*100+")")}return =
J.filter&&J.filter.indexOf("opacity=3D")>=3D0?(parseFloat(J.filter.match(=
/opacity=3D([^)]*)/)[1])/100)+"":""}G=3DG.replace(/-([a-z])/ig,function(M=
,N){return N.toUpperCase()});if(L){J[G]=3DK}return =
J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:=
function(G){var E=3D[];if(G!=3Dnull){var =
F=3DG.length;if(F=3D=3Dnull||typeof =
G=3D=3D=3D"string"||o.isFunction(G)||G.setInterval){E[0]=3DG}else{while(F=
){E[--F]=3DG[F]}}}return E},inArray:function(G,H){for(var =
E=3D0,F=3DH.length;E<F;E++){if(H[E]=3D=3D=3DG){return E}}return =
-1},merge:function(H,E){var =
F=3D0,G,I=3DH.length;if(!o.support.getAll){while((G=3DE[F++])!=3Dnull){if=
(G.nodeType!=3D8){H[I++]=3DG}}}else{while((G=3DE[F++])!=3Dnull){H[I++]=3D=
G}}return H},unique:function(K){var F=3D[],E=3D{};try{for(var =
G=3D0,H=3DK.length;G<H;G++){var =
J=3Do.data(K[G]);if(!E[J]){E[J]=3Dtrue;F.push(K[G])}}}catch(I){F=3DK}retu=
rn F},grep:function(F,J,E){var G=3D[];for(var =
H=3D0,I=3DF.length;H<I;H++){if(!E!=3D!J(F[H],H)){G.push(F[H])}}return =
G},map:function(E,J){var F=3D[];for(var G=3D0,H=3DE.length;G<H;G++){var =
I=3DJ(E[G],G);if(I!=3Dnull){F[F.length]=3DI}}return =
F.concat.apply([],F)}});var =
C=3Dnavigator.userAgent.toLowerCase();o.browser=3D{version:(C.match(/.+(?=
:rv|it|ra|ie)[\/: =
]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),ms=
ie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compati=
ble|webkit)/.test(C)};o.each({parent:function(E){return =
E.parentNode},parents:function(E){return =
o.dir(E,"parentNode")},next:function(E){return =
o.nth(E,2,"nextSibling")},prev:function(E){return =
o.nth(E,2,"previousSibling")},nextAll:function(E){return =
o.dir(E,"nextSibling")},prevAll:function(E){return =
o.dir(E,"previousSibling")},siblings:function(E){return =
o.sibling(E.parentNode.firstChild,E)},children:function(E){return =
o.sibling(E.firstChild)},contents:function(E){return =
o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.make=
Array(E.childNodes)}},function(E,F){o.fn[E]=3Dfunction(G){var =
H=3Do.map(this,F);if(G&&typeof =
G=3D=3D"string"){H=3Do.multiFilter(G,H)}return =
this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"p=
repend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith=
"},function(E,F){o.fn[E]=3Dfunction(G){var J=3D[],L=3Do(G);for(var =
K=3D0,H=3DL.length;K<H;K++){var =
I=3D(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=3DJ.conc=
at(I)}return =
this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"")=
;if(this.nodeType=3D=3D1){this.removeAttribute(E)}},addClass:function(E){=
o.className.add(this,E)},removeClass:function(E){o.className.remove(this,=
E)},toggleClass:function(F,E){if(typeof =
E!=3D=3D"boolean"){E=3D!o.className.has(this,F)}o.className[E?"add":"remo=
ve"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",=
this).add([this]).each(function(){o.event.remove(this);o.removeData(this)=
});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:functio=
n(){o(this).children().remove();while(this.firstChild){this.removeChild(t=
his.firstChild)}}},function(E,F){o.fn[E]=3Dfunction(){return =
this.each(F,arguments)}});function j(E,F){return =
E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var =
h=3D"jQuery"+e(),v=3D0,A=3D{};o.extend({cache:{},data:function(F,E,G){F=3D=
F=3D=3Dl?A:F;var =
H=3DF[h];if(!H){H=3DF[h]=3D++v}if(E&&!o.cache[H]){o.cache[H]=3D{}}if(G!=3D=
=3Dg){o.cache[H][E]=3DG}return =
E?o.cache[H][E]:H},removeData:function(F,E){F=3DF=3D=3Dl?A:F;var =
H=3DF[h];if(E){if(o.cache[H]){delete o.cache[H][E];E=3D"";for(E in =
o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete =
F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete =
o.cache[H]}},queue:function(F,E,H){if(F){E=3D(E||"fx")+"queue";var =
G=3Do.data(F,E);if(!G||o.isArray(H)){G=3Do.data(F,E,o.makeArray(H))}else{=
if(H){G.push(H)}}}return G},dequeue:function(H,G){var =
E=3Do.queue(H,G),F=3DE.shift();if(!G||G=3D=3D=3D"fx"){F=3DE[0]}if(F!=3D=3D=
g){F.call(H)}}});o.fn.extend({data:function(E,G){var =
H=3DE.split(".");H[1]=3DH[1]?"."+H[1]:"";if(G=3D=3D=3Dg){var =
F=3Dthis.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F=3D=3D=3Dg&&this.l=
ength){F=3Do.data(this[0],E)}return =
F=3D=3D=3Dg&&H[1]?this.data(H[0]):F}else{return =
this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G=
)})}},removeData:function(E){return =
this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeo=
f E!=3D=3D"string"){F=3DE;E=3D"fx"}if(F=3D=3D=3Dg){return =
o.queue(this[0],E)}return this.each(function(){var =
G=3Do.queue(this,E,F);if(E=3D=3D"fx"&&G.length=3D=3D1){G[0].call(this)}})=
},dequeue:function(E){return =
this.each(function(){o.dequeue(this,E)})}});
/*
 * Sizzle CSS Selector Engine - v0.9.3
 *  Copyright 2009, The Dojo Foundation
 *  Released under the MIT, BSD, and GPL Licenses.
 *  More information: http://sizzlejs.com/
 */
(function(){var =
R=3D/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]=
'"]+)+\]|\\.|[^ =
>+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=3D0,H=3DObject.prototype.toString;var =
F=3Dfunction(Y,U,ab,ac){ab=3Dab||[];U=3DU||document;if(U.nodeType!=3D=3D1=
&&U.nodeType!=3D=3D9){return[]}if(!Y||typeof Y!=3D=3D"string"){return =
ab}var =
Z=3D[],W,af,ai,T,ad,V,X=3Dtrue;R.lastIndex=3D0;while((W=3DR.exec(Y))!=3D=3D=
null){Z.push(W[1]);if(W[2]){V=3DRegExp.rightContext;break}}if(Z.length>1&=
&M.exec(Y)){if(Z.length=3D=3D=3D2&&I.relative[Z[0]]){af=3DJ(Z[0]+Z[1],U)}=
else{af=3DI.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=3DZ.shift=
();if(I.relative[Y]){Y+=3DZ.shift()}af=3DJ(Y,af)}}}else{var =
ae=3Dac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length=3D=3D=3D1&&U.par=
entNode?U.parentNode:U,Q(U));af=3DF.filter(ae.expr,ae.set);if(Z.length>0)=
{ai=3DE(af)}else{X=3Dfalse}while(Z.length){var =
ah=3DZ.pop(),ag=3Dah;if(!I.relative[ah]){ah=3D""}else{ag=3DZ.pop()}if(ag=3D=
=3Dnull){ag=3DU}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=3Daf}if(!ai){throw=
"Syntax error, unrecognized expression: =
"+(ah||Y)}if(H.call(ai)=3D=3D=3D"[object =
Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType=3D=3D=3D1){for(va=
r =
aa=3D0;ai[aa]!=3Dnull;aa++){if(ai[aa]&&(ai[aa]=3D=3D=3Dtrue||ai[aa].nodeT=
ype=3D=3D=3D1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var =
aa=3D0;ai[aa]!=3Dnull;aa++){if(ai[aa]&&ai[aa].nodeType=3D=3D=3D1){ab.push=
(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=3Dfalse;=
ab.sort(G);if(hasDuplicate){for(var =
aa=3D1;aa<ab.length;aa++){if(ab[aa]=3D=3D=3Dab[aa-1]){ab.splice(aa--,1)}}=
}}}return ab};F.matches=3Dfunction(T,U){return =
F(T,null,null,U)};F.find=3Dfunction(aa,T,ab){var =
Z,X;if(!aa){return[]}for(var W=3D0,V=3DI.order.length;W<V;W++){var =
Y=3DI.order[W],X;if((X=3DI.match[Y].exec(aa))){var =
U=3DRegExp.leftContext;if(U.substr(U.length-1)!=3D=3D"\\"){X[1]=3D(X[1]||=
"").replace(/\\/g,"");Z=3DI.find[Y](X,T,ab);if(Z!=3Dnull){aa=3Daa.replace=
(I.match[Y],"");break}}}}if(!Z){Z=3DT.getElementsByTagName("*")}return{se=
t:Z,expr:aa}};F.filter=3Dfunction(ad,ac,ag,W){var =
V=3Dad,ai=3D[],aa=3Dac,Y,T,Z=3Dac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){f=
or(var ab in I.filter){if((Y=3DI.match[ab].exec(ad))!=3Dnull){var =
U=3DI.filter[ab],ah,af;T=3Dfalse;if(aa=3D=3Dai){ai=3D[]}if(I.preFilter[ab=
]){Y=3DI.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=3Dah=3Dtrue}else{if(Y=3D=3D=
=3Dtrue){continue}}}if(Y){for(var =
X=3D0;(af=3Daa[X])!=3Dnull;X++){if(af){ah=3DU(af,Y,X,aa);var =
ae=3DW^!!ah;if(ag&&ah!=3Dnull){if(ae){T=3Dtrue}else{aa[X]=3Dfalse}}else{i=
f(ae){ai.push(af);T=3Dtrue}}}}}if(ah!=3D=3Dg){if(!ag){aa=3Dai}ad=3Dad.rep=
lace(I.match[ab],"");if(!T){return[]}break}}}if(ad=3D=3DV){if(T=3D=3Dnull=
){throw"Syntax error, unrecognized expression: =
"+ad}else{break}}V=3Dad}return aa};var =
I=3DF.selectors=3D{order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\u=
FFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=3D[=
'"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFF=
F_-]|\\.)+)\s*(?:(\S?=3D)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\u=
FFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+=
-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=3D[^-]=
|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^=
\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHan=
dle:{href:function(T){return =
T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=3Dtypeof =
T=3D=3D=3D"string",ab=3DX&&!/\W/.test(T),Y=3DX&&!ab;if(ab&&!Z){T=3DT.toUp=
perCase()}for(var =
W=3D0,V=3Daa.length,U;W<V;W++){if((U=3Daa[W])){while((U=3DU.previousSibli=
ng)&&U.nodeType!=3D=3D1){}aa[W]=3DY||U&&U.nodeName=3D=3D=3DT?U||false:U=3D=
=3D=3DT}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=3Dtypeof =
U=3D=3D=3D"string";if(X&&!/\W/.test(U)){U=3Daa?U:U.toUpperCase();for(var =
V=3D0,T=3DZ.length;V<T;V++){var Y=3DZ[V];if(Y){var =
W=3DY.parentNode;Z[V]=3DW.nodeName=3D=3D=3DU?W:false}}}else{for(var =
V=3D0,T=3DZ.length;V<T;V++){var =
Y=3DZ[V];if(Y){Z[V]=3DX?Y.parentNode:Y.parentNode=3D=3D=3DU}}if(X){F.filt=
er(U,Z,true)}}},"":function(W,U,Y){var =
V=3DL++,T=3DS;if(!U.match(/\W/)){var =
X=3DU=3DY?U:U.toUpperCase();T=3DP}T("parentNode",U,V,W,X,Y)},"~":function=
(W,U,Y){var V=3DL++,T=3DS;if(typeof =
U=3D=3D=3D"string"&&!U.match(/\W/)){var =
X=3DU=3DY?U:U.toUpperCase();T=3DP}T("previousSibling",U,V,W,X,Y)}},find:{=
ID:function(U,V,W){if(typeof V.getElementById!=3D=3D"undefined"&&!W){var =
T=3DV.getElementById(U[1]);return =
T?[T]:[]}},NAME:function(V,Y,Z){if(typeof =
Y.getElementsByName!=3D=3D"undefined"){var =
U=3D[],X=3DY.getElementsByName(V[1]);for(var =
W=3D0,T=3DX.length;W<T;W++){if(X[W].getAttribute("name")=3D=3D=3DV[1]){U.=
push(X[W])}}return U.length=3D=3D=3D0?null:U}},TAG:function(T,U){return =
U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=3D=
" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var =
X=3D0,Y;(Y=3DU[X])!=3Dnull;X++){if(Y){if(Z^(Y.className&&(" =
"+Y.className+" =
").indexOf(W)>=3D0)){if(!V){T.push(Y)}}else{if(V){U[X]=3Dfalse}}}}return =
false},ID:function(T){return =
T[1].replace(/\\/g,"")},TAG:function(U,T){for(var =
V=3D0;T[V]=3D=3D=3Dfalse;V++){}return =
T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=3D=3D"nt=
h"){var =
U=3D/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=3D=3D"even"&&"2n"||T[2]=3D=3D"od=
d"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=3D(U[1]+(U[2]||1))-0=
;T[3]=3DU[3]-0}T[0]=3DL++;return T},ATTR:function(X,U,V,T,Y,Z){var =
W=3DX[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=3DI.attrMap[W]}if(X[=
2]=3D=3D=3D"~=3D"){X[4]=3D" "+X[4]+" "}return =
X},PSEUDO:function(X,U,V,T,Y){if(X[1]=3D=3D=3D"not"){if(X[3].match(R).len=
gth>1||/^\w/.test(X[3])){X[3]=3DF(X[3],null,null,U)}else{var =
W=3DF.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return =
false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return =
true}}return X},POS:function(T){T.unshift(true);return =
T}},filters:{enabled:function(T){return =
T.disabled=3D=3D=3Dfalse&&T.type!=3D=3D"hidden"},disabled:function(T){ret=
urn T.disabled=3D=3D=3Dtrue},checked:function(T){return =
T.checked=3D=3D=3Dtrue},selected:function(T){T.parentNode.selectedIndex;r=
eturn T.selected=3D=3D=3Dtrue},parent:function(T){return =
!!T.firstChild},empty:function(T){return =
!T.firstChild},has:function(V,U,T){return =
!!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},tex=
t:function(T){return"text"=3D=3D=3DT.type},radio:function(T){return"radio=
"=3D=3D=3DT.type},checkbox:function(T){return"checkbox"=3D=3D=3DT.type},f=
ile:function(T){return"file"=3D=3D=3DT.type},password:function(T){return"=
password"=3D=3D=3DT.type},submit:function(T){return"submit"=3D=3D=3DT.typ=
e},image:function(T){return"image"=3D=3D=3DT.type},reset:function(T){retu=
rn"reset"=3D=3D=3DT.type},button:function(T){return"button"=3D=3D=3DT.typ=
e||T.nodeName.toUpperCase()=3D=3D=3D"BUTTON"},input:function(T){return/in=
put|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:functio=
n(U,T){return T=3D=3D=3D0},last:function(V,U,T,W){return =
U=3D=3D=3DW.length-1},even:function(U,T){return =
T%2=3D=3D=3D0},odd:function(U,T){return =
T%2=3D=3D=3D1},lt:function(V,U,T){return =
U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return =
T[3]-0=3D=3DU},eq:function(V,U,T){return =
T[3]-0=3D=3DU}},filter:{PSEUDO:function(Z,V,W,aa){var =
U=3DV[1],X=3DI.filters[U];if(X){return =
X(Z,W,V,aa)}else{if(U=3D=3D=3D"contains"){return(Z.textContent||Z.innerTe=
xt||"").indexOf(V[3])>=3D0}else{if(U=3D=3D=3D"not"){var Y=3DV[3];for(var =
W=3D0,T=3DY.length;W<T;W++){if(Y[W]=3D=3D=3DZ){return false}}return =
true}}}},CHILD:function(T,W){var =
Z=3DW[1],U=3DT;switch(Z){case"only":case"first":while(U=3DU.previousSibli=
ng){if(U.nodeType=3D=3D=3D1){return false}}if(Z=3D=3D"first"){return =
true}U=3DT;case"last":while(U=3DU.nextSibling){if(U.nodeType=3D=3D=3D1){r=
eturn false}}return true;case"nth":var =
V=3DW[2],ac=3DW[3];if(V=3D=3D1&&ac=3D=3D0){return true}var =
Y=3DW[0],ab=3DT.parentNode;if(ab&&(ab.sizcache!=3D=3DY||!T.nodeIndex)){va=
r =
X=3D0;for(U=3Dab.firstChild;U;U=3DU.nextSibling){if(U.nodeType=3D=3D=3D1)=
{U.nodeIndex=3D++X}}ab.sizcache=3DY}var =
aa=3DT.nodeIndex-ac;if(V=3D=3D0){return =
aa=3D=3D0}else{return(aa%V=3D=3D0&&aa/V>=3D0)}}},ID:function(U,T){return =
U.nodeType=3D=3D=3D1&&U.getAttribute("id")=3D=3D=3DT},TAG:function(U,T){r=
eturn(T=3D=3D=3D"*"&&U.nodeType=3D=3D=3D1)||U.nodeName=3D=3D=3DT},CLASS:f=
unction(U,T){return(" "+(U.className||U.getAttribute("class"))+" =
").indexOf(T)>-1},ATTR:function(Y,W){var =
V=3DW[1],T=3DI.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=3Dnull?Y[V]:Y.getAt=
tribute(V),Z=3DT+"",X=3DW[2],U=3DW[4];return =
T=3D=3Dnull?X=3D=3D=3D"!=3D":X=3D=3D=3D"=3D"?Z=3D=3D=3DU:X=3D=3D=3D"*=3D"=
?Z.indexOf(U)>=3D0:X=3D=3D=3D"~=3D"?(" "+Z+" =
").indexOf(U)>=3D0:!U?Z&&T!=3D=3Dfalse:X=3D=3D=3D"!=3D"?Z!=3DU:X=3D=3D=3D=
"^=3D"?Z.indexOf(U)=3D=3D=3D0:X=3D=3D=3D"$=3D"?Z.substr(Z.length-U.length=
)=3D=3D=3DU:X=3D=3D=3D"|=3D"?Z=3D=3D=3DU||Z.substr(0,U.length+1)=3D=3D=3D=
U+"-":false},POS:function(X,U,V,Y){var =
T=3DU[2],W=3DI.setFilters[T];if(W){return W(X,V,U,Y)}}}};var =
M=3DI.match.POS;for(var O in =
I.match){I.match[O]=3DRegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/=
.source)}var =
E=3Dfunction(U,T){U=3DArray.prototype.slice.call(U);if(T){T.push.apply(T,=
U);return T}return =
U};try{Array.prototype.slice.call(document.documentElement.childNodes)}ca=
tch(N){E=3Dfunction(X,W){var U=3DW||[];if(H.call(X)=3D=3D=3D"[object =
Array]"){Array.prototype.push.apply(U,X)}else{if(typeof =
X.length=3D=3D=3D"number"){for(var =
V=3D0,T=3DX.length;V<T;V++){U.push(X[V])}}else{for(var =
V=3D0;X[V];V++){U.push(X[V])}}}return U}}var =
G;if(document.documentElement.compareDocumentPosition){G=3Dfunction(U,T){=
var =
V=3DU.compareDocumentPosition(T)&4?-1:U=3D=3D=3DT?0:1;if(V=3D=3D=3D0){has=
Duplicate=3Dtrue}return V}}else{if("sourceIndex" in =
document.documentElement){G=3Dfunction(U,T){var =
V=3DU.sourceIndex-T.sourceIndex;if(V=3D=3D=3D0){hasDuplicate=3Dtrue}retur=
n V}}else{if(document.createRange){G=3Dfunction(W,U){var =
V=3DW.ownerDocument.createRange(),T=3DU.ownerDocument.createRange();V.sel=
ectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var =
X=3DV.compareBoundaryPoints(Range.START_TO_END,T);if(X=3D=3D=3D0){hasDupl=
icate=3Dtrue}return X}}}}(function(){var =
U=3Ddocument.createElement("form"),V=3D"script"+(new =
Date).getTime();U.innerHTML=3D"<input name=3D'"+V+"'/>";var =
T=3Ddocument.documentElement;T.insertBefore(U,T.firstChild);if(!!document=
.getElementById(V)){I.find.ID=3Dfunction(X,Y,Z){if(typeof =
Y.getElementById!=3D=3D"undefined"&&!Z){var =
W=3DY.getElementById(X[1]);return W?W.id=3D=3D=3DX[1]||typeof =
W.getAttributeNode!=3D=3D"undefined"&&W.getAttributeNode("id").nodeValue=3D=
=3D=3DX[1]?[W]:g:[]}};I.filter.ID=3Dfunction(Y,W){var X=3Dtypeof =
Y.getAttributeNode!=3D=3D"undefined"&&Y.getAttributeNode("id");return =
Y.nodeType=3D=3D=3D1&&X&&X.nodeValue=3D=3D=3DW}}T.removeChild(U)})();(fun=
ction(){var =
T=3Ddocument.createElement("div");T.appendChild(document.createComment(""=
));if(T.getElementsByTagName("*").length>0){I.find.TAG=3Dfunction(U,Y){va=
r X=3DY.getElementsByTagName(U[1]);if(U[1]=3D=3D=3D"*"){var =
W=3D[];for(var =
V=3D0;X[V];V++){if(X[V].nodeType=3D=3D=3D1){W.push(X[V])}}X=3DW}return =
X}}T.innerHTML=3D"<a href=3D'#'></a>";if(T.firstChild&&typeof =
T.firstChild.getAttribute!=3D=3D"undefined"&&T.firstChild.getAttribute("h=
ref")!=3D=3D"#"){I.attrHandle.href=3Dfunction(U){return =
U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){=
var T=3DF,U=3Ddocument.createElement("div");U.innerHTML=3D"<p =
class=3D'TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").l=
ength=3D=3D=3D0){return}F=3Dfunction(Y,X,V,W){X=3DX||document;if(!W&&X.no=
deType=3D=3D=3D9&&!Q(X)){try{return =
E(X.querySelectorAll(Y),V)}catch(Z){}}return =
T(Y,X,V,W)};F.find=3DT.find;F.filter=3DT.filter;F.selectors=3DT.selectors=
;F.matches=3DT.matches})()}if(document.getElementsByClassName&&document.d=
ocumentElement.getElementsByClassName){(function(){var =
T=3Ddocument.createElement("div");T.innerHTML=3D"<div class=3D'test =
e'></div><div =
class=3D'test'></div>";if(T.getElementsByClassName("e").length=3D=3D=3D0)=
{return}T.lastChild.className=3D"e";if(T.getElementsByClassName("e").leng=
th=3D=3D=3D1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=3Dfunction(=
U,V,W){if(typeof V.getElementsByClassName!=3D=3D"undefined"&&!W){return =
V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var =
ab=3DU=3D=3D"previousSibling"&&!ac;for(var =
W=3D0,V=3Dad.length;W<V;W++){var =
T=3Dad[W];if(T){if(ab&&T.nodeType=3D=3D=3D1){T.sizcache=3DY;T.sizset=3DW}=
T=3DT[U];var =
X=3Dfalse;while(T){if(T.sizcache=3D=3D=3DY){X=3Dad[T.sizset];break}if(T.n=
odeType=3D=3D=3D1&&!ac){T.sizcache=3DY;T.sizset=3DW}if(T.nodeName=3D=3D=3D=
Z){X=3DT;break}T=3DT[U]}ad[W]=3DX}}}function S(U,Z,Y,ad,aa,ac){var =
ab=3DU=3D=3D"previousSibling"&&!ac;for(var =
W=3D0,V=3Dad.length;W<V;W++){var =
T=3Dad[W];if(T){if(ab&&T.nodeType=3D=3D=3D1){T.sizcache=3DY;T.sizset=3DW}=
T=3DT[U];var =
X=3Dfalse;while(T){if(T.sizcache=3D=3D=3DY){X=3Dad[T.sizset];break}if(T.n=
odeType=3D=3D=3D1){if(!ac){T.sizcache=3DY;T.sizset=3DW}if(typeof =
Z!=3D=3D"string"){if(T=3D=3D=3DZ){X=3Dtrue;break}}else{if(F.filter(Z,[T])=
.length>0){X=3DT;break}}}T=3DT[U]}ad[W]=3DX}}}var =
K=3Ddocument.compareDocumentPosition?function(U,T){return =
U.compareDocumentPosition(T)&16}:function(U,T){return =
U!=3D=3DT&&(U.contains?U.contains(T):true)};var Q=3Dfunction(T){return =
T.nodeType=3D=3D=3D9&&T.documentElement.nodeName!=3D=3D"HTML"||!!T.ownerD=
ocument&&Q(T.ownerDocument)};var J=3Dfunction(T,aa){var =
W=3D[],X=3D"",Y,V=3Daa.nodeType?[aa]:aa;while((Y=3DI.match.PSEUDO.exec(T)=
)){X+=3DY[0];T=3DT.replace(I.match.PSEUDO,"")}T=3DI.relative[T]?T+"*":T;f=
or(var Z=3D0,U=3DV.length;Z<U;Z++){F(T,V[Z],W)}return =
F.filter(X,W)};o.find=3DF;o.filter=3DF.filter;o.expr=3DF.selectors;o.expr=
[":"]=3Do.expr.filters;F.selectors.filters.hidden=3Dfunction(T){return =
T.offsetWidth=3D=3D=3D0||T.offsetHeight=3D=3D=3D0};F.selectors.filters.vi=
sible=3Dfunction(T){return =
T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=3Dfunctio=
n(T){return o.grep(o.timers,function(U){return =
T=3D=3D=3DU.elem}).length};o.multiFilter=3Dfunction(V,T,U){if(U){V=3D":no=
t("+V+")"}return F.matches(V,T)};o.dir=3Dfunction(V,U){var =
T=3D[],W=3DV[U];while(W&&W!=3Ddocument){if(W.nodeType=3D=3D1){T.push(W)}W=
=3DW[U]}return T};o.nth=3Dfunction(X,T,V,W){T=3DT||1;var =
U=3D0;for(;X;X=3DX[V]){if(X.nodeType=3D=3D1&&++U=3D=3DT){break}}return =
X};o.sibling=3Dfunction(V,U){var =
T=3D[];for(;V;V=3DV.nextSibling){if(V.nodeType=3D=3D1&&V!=3DU){T.push(V)}=
}return =
T};return;l.Sizzle=3DF})();o.event=3D{add:function(I,F,H,K){if(I.nodeType=
=3D=3D3||I.nodeType=3D=3D8){return}if(I.setInterval&&I!=3Dl){I=3Dl}if(!H.=
guid){H.guid=3Dthis.guid++}if(K!=3D=3Dg){var =
G=3DH;H=3Dthis.proxy(G);H.data=3DK}var =
E=3Do.data(I,"events")||o.data(I,"events",{}),J=3Do.data(I,"handle")||o.d=
ata(I,"handle",function(){return typeof =
o!=3D=3D"undefined"&&!o.event.triggered?o.event.handle.apply(arguments.ca=
llee.elem,arguments):g});J.elem=3DI;o.each(F.split(/\s+/),function(M,N){v=
ar =
O=3DN.split(".");N=3DO.shift();H.type=3DO.slice().sort().join(".");var =
L=3DE[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O=
)}if(!L){L=3DE[N]=3D{};if(!o.event.special[N]||o.event.special[N].setup.c=
all(I,K,O)=3D=3D=3Dfalse){if(I.addEventListener){I.addEventListener(N,J,f=
alse)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=3DH;o.e=
vent.global[N]=3Dtrue});I=3Dnull},guid:1,global:{},remove:function(K,H,J)=
{if(K.nodeType=3D=3D3||K.nodeType=3D=3D8){return}var =
G=3Do.data(K,"events"),F,E;if(G){if(H=3D=3D=3Dg||(typeof =
H=3D=3D=3D"string"&&H.charAt(0)=3D=3D".")){for(var I in =
G){this.remove(K,I+(H||""))}}else{if(H.type){J=3DH.handler;H=3DH.type}o.e=
ach(H.split(/\s+/),function(M,O){var Q=3DO.split(".");O=3DQ.shift();var =
N=3DRegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){i=
f(J){delete G[O][J.guid]}else{for(var P in =
G[O]){if(N.test(G[O][P].type)){delete =
G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K=
,Q)}for(F in =
G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.ca=
ll(K,Q)=3D=3D=3Dfalse){if(K.removeEventListener){K.removeEventListener(O,=
o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.d=
ata(K,"handle"))}}}F=3Dnull;delete G[O]}}})}for(F in G){break}if(!F){var =
L=3Do.data(K,"handle");if(L){L.elem=3Dnull}o.removeData(K,"events");o.rem=
oveData(K,"handle")}}},trigger:function(I,K,H,E){var =
G=3DI.type||I;if(!E){I=3Dtypeof =
I=3D=3D=3D"object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf(=
"!")>=3D0){I.type=3DG=3DG.slice(0,-1);I.exclusive=3Dtrue}if(!H){I.stopPro=
pagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&t=
his.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeTyp=
e=3D=3D3||H.nodeType=3D=3D8){return =
g}I.result=3Dg;I.target=3DH;K=3Do.makeArray(K);K.unshift(I)}I.currentTarg=
et=3DH;var =
J=3Do.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&=
G=3D=3D"click"))&&H["on"+G]&&H["on"+G].apply(H,K)=3D=3D=3Dfalse){I.result=
=3Dfalse}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=3D=3D=
"click")){this.triggered=3Dtrue;try{H[G]()}catch(L){}}this.triggered=3Dfa=
lse;if(!I.isPropagationStopped()){var =
F=3DH.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},ha=
ndle:function(K){var =
J,E;K=3Darguments[0]=3Do.event.fix(K||l.event);K.currentTarget=3Dthis;var=
 =
L=3DK.type.split(".");K.type=3DL.shift();J=3D!L.length&&!K.exclusive;var =
I=3DRegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=3D(o.dat=
a(this,"events")||{})[K.type];for(var G in E){var =
H=3DE[G];if(J||I.test(H.type)){K.handler=3DH;K.data=3DH.data;var =
F=3DH.apply(this,arguments);if(F!=3D=3Dg){K.result=3DF;if(F=3D=3D=3Dfalse=
){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStop=
ped()){break}}}},props:"altKey attrChange attrName bubbles button =
cancelable charCode clientX clientY ctrlKey currentTarget data detail =
eventPhase fromElement handler keyCode metaKey newValue originalTarget =
pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey =
srcElement target toElement view wheelDelta which".split(" =
"),fix:function(H){if(H[h]){return H}var F=3DH;H=3Do.Event(F);for(var =
G=3Dthis.props.length,J;G;){J=3Dthis.props[--G];H[J]=3DF[J]}if(!H.target)=
{H.target=3DH.srcElement||document}if(H.target.nodeType=3D=3D3){H.target=3D=
H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=3D=
H.fromElement=3D=3DH.target?H.toElement:H.fromElement}if(H.pageX=3D=3Dnul=
l&&H.clientX!=3Dnull){var =
I=3Ddocument.documentElement,E=3Ddocument.body;H.pageX=3DH.clientX+(I&&I.=
scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=3DH.clientY+(I&=
&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCo=
de||H.charCode=3D=3D=3D0)?H.charCode:H.keyCode)){H.which=3DH.charCode||H.=
keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=3DH.ctrlKey}if(!H.which&&H.bu=
tton){H.which=3D(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return =
H},proxy:function(F,E){E=3DE||function(){return =
F.apply(this,arguments)};E.guid=3DF.guid=3DF.guid||E.guid||this.guid++;re=
turn =
E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setu=
p:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.lengt=
h){var =
E=3D0,F=3DRegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").=
live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(=
this,G[0],c)}}}}}};o.Event=3Dfunction(E){if(!this.preventDefault){return =
new =
o.Event(E)}if(E&&E.type){this.originalEvent=3DE;this.type=3DE.type}else{t=
his.type=3DE}this.timeStamp=3De();this[h]=3Dtrue};function k(){return =
false}function u(){return =
true}o.Event.prototype=3D{preventDefault:function(){this.isDefaultPrevent=
ed=3Du;var =
E=3Dthis.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefaul=
t()}E.returnValue=3Dfalse},stopPropagation:function(){this.isPropagationS=
topped=3Du;var =
E=3Dthis.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagat=
ion()}E.cancelBubble=3Dtrue},stopImmediatePropagation:function(){this.isI=
mmediatePropagationStopped=3Du;this.stopPropagation()},isDefaultPrevented=
:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var =
a=3Dfunction(F){var =
E=3DF.relatedTarget;while(E&&E!=3Dthis){try{E=3DE.parentNode}catch(G){E=3D=
this}}if(E!=3Dthis){F.type=3DF.data;o.event.handle.apply(this,arguments)}=
};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.e=
vent.special[E]=3D{setup:function(){o.event.add(this,F,a,E)},teardown:fun=
ction(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){re=
turn =
F=3D=3D"unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E=
||G,E&&G)})},one:function(G,H,F){var =
E=3Do.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply=
(this,arguments)});return =
this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){r=
eturn =
this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){re=
turn =
this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function=
(E,G){if(this[0]){var =
F=3Do.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G=
,this[0]);return F.result}},toggle:function(G){var =
E=3Darguments,F=3D1;while(F<E.length){o.event.proxy(G,E[F++])}return =
this.click(o.event.proxy(G,function(H){this.lastToggle=3D(this.lastToggle=
||0)%F;H.preventDefault();return =
E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F)=
{return =
this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.c=
all(document,o)}else{o.readyList.push(E)}return =
this},live:function(G,F){var =
E=3Do.event.proxy(F);E.guid+=3Dthis.selector+G;o(document).bind(i(G,this.=
selector),this.selector,E);return =
this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.g=
uid+this.selector+F}:null);return this}});function c(H){var =
E=3DRegExp("(^|\\.)"+H.type+"(\\.|$)"),G=3Dtrue,F=3D[];o.each(o.data(this=
,"events").live||[],function(I,J){if(E.test(J.type)){var =
K=3Do(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort=
(function(J,I){return =
o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){i=
f(this.fn.call(this.elem,H,this.fn.data)=3D=3D=3Dfalse){return(G=3Dfalse)=
}});return G}function =
i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ =
/g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){=
if(!o.isReady){o.isReady=3Dtrue;if(o.readyList){o.each(o.readyList,functi=
on(){this.call(document,o)});o.readyList=3Dnull}o(document).triggerHandle=
r("ready")}}});var x=3Dfalse;function =
B(){if(x){return}x=3Dtrue;if(document.addEventListener){document.addEvent=
Listener("DOMContentLoaded",function(){document.removeEventListener("DOMC=
ontentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.=
attachEvent){document.attachEvent("onreadystatechange",function(){if(docu=
ment.readyState=3D=3D=3D"complete"){document.detachEvent("onreadystatecha=
nge",arguments.callee);o.ready()}});if(document.documentElement.doScroll&=
&l=3D=3Dl.top){(function(){if(o.isReady){return}try{document.documentElem=
ent.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.rea=
dy()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,=
scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseo=
ut,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,erro=
r").split(","),function(F,E){o.fn[E]=3Dfunction(G){return =
G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var=
 E in =
o.cache){if(E!=3D1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.e=
lem)}}});(function(){o.support=3D{};var =
F=3Ddocument.documentElement,G=3Ddocument.createElement("script"),K=3Ddoc=
ument.createElement("div"),J=3D"script"+(new =
Date).getTime();K.style.display=3D"none";K.innerHTML=3D'   =
<link/><table></table><a href=3D"/a" =
style=3D"color:red;float:left;opacity:.5;">a</a><select><option>text</opt=
ion></select><object><param/></object>';var =
H=3DK.getElementsByTagName("*"),E=3DK.getElementsByTagName("a")[0];if(!H|=
|!H.length||!E){return}o.support=3D{leadingWhitespace:K.firstChild.nodeTy=
pe=3D=3D3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.get=
ElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSeria=
lize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttrib=
ute("style")),hrefNormalized:E.getAttribute("href")=3D=3D=3D"/a",opacity:=
E.style.opacity=3D=3D=3D"0.5",cssFloat:!!E.style.cssFloat,scriptEval:fals=
e,noCloneEvent:true,boxModel:null};G.type=3D"text/javascript";try{G.appen=
dChild(document.createTextNode("window."+J+"=3D1;"))}catch(I){}F.insertBe=
fore(G,F.firstChild);if(l[J]){o.support.scriptEval=3Dtrue;delete =
l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("oncli=
ck",function(){o.support.noCloneEvent=3Dfalse;K.detachEvent("onclick",arg=
uments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var =
L=3Ddocument.createElement("div");L.style.width=3DL.style.paddingLeft=3D"=
1px";document.body.appendChild(L);o.boxModel=3Do.support.boxModel=3DL.off=
setWidth=3D=3D=3D2;document.body.removeChild(L).style.display=3D"none"})}=
)();var =
w=3Do.support.cssFloat?"cssFloat":"styleFloat";o.props=3D{"for":"htmlFor"=
,"class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly=
",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabin=
dex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(type=
of G!=3D=3D"string"){return this._load(G)}var I=3DG.indexOf(" =
");if(I>=3D0){var E=3DG.slice(I,G.length);G=3DG.slice(0,I)}var =
H=3D"GET";if(J){if(o.isFunction(J)){K=3DJ;J=3Dnull}else{if(typeof =
J=3D=3D=3D"object"){J=3Do.param(J);H=3D"POST"}}}var =
F=3Dthis;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,=
L){if(L=3D=3D"success"||L=3D=3D"notmodified"){F.html(E?o("<div/>").append=
(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.respon=
seText)}if(K){F.each(K,[M.responseText,L,M])}}});return =
this},serialize:function(){return =
o.param(this.serializeArray())},serializeArray:function(){return =
this.map(function(){return =
this.elements?o.makeArray(this.elements):this}).filter(function(){return =
this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.no=
deName)||/text|hidden|password|search/i.test(this.type))}).map(function(E=
,F){var G=3Do(this).val();return =
G=3D=3Dnull?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,va=
lue:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajax=
Complete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=
=3Dfunction(G){return this.bind(F,G)}});var =
r=3De();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=3DG;G=3Dnul=
l}return =
o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:functio=
n(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return =
o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=3DG;G=3D=
{}}return =
o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:functi=
on(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:=
true,type:"GET",contentType:"application/x-www-form-urlencoded",processDa=
ta:true,async:true,xhr:function(){return l.ActiveXObject?new =
ActiveXObject("Microsoft.XMLHTTP"):new =
XMLHttpRequest()},accepts:{xml:"application/xml, =
text/xml",html:"text/html",script:"text/javascript, =
application/javascript",json:"application/json, =
text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:=
function(M){M=3Do.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var =
W,F=3D/=3D\?(&|$)/g,R,V,G=3DM.type.toUpperCase();if(M.data&&M.processData=
&&typeof =
M.data!=3D=3D"string"){M.data=3Do.param(M.data)}if(M.dataType=3D=3D"jsonp=
"){if(G=3D=3D"GET"){if(!M.url.match(F)){M.url+=3D(M.url.match(/\?/)?"&":"=
?")+(M.jsonp||"callback")+"=3D?"}}else{if(!M.data||!M.data.match(F)){M.da=
ta=3D(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=3D?"}}M.dataType=3D"j=
son"}if(M.dataType=3D=3D"json"&&(M.data&&M.data.match(F)||M.url.match(F))=
){W=3D"jsonp"+r++;if(M.data){M.data=3D(M.data+"").replace(F,"=3D"+W+"$1")=
}M.url=3DM.url.replace(F,"=3D"+W+"$1");M.dataType=3D"script";l[W]=3Dfunct=
ion(X){V=3DX;I();L();l[W]=3Dg;try{delete =
l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=3D=3D"script"&&M.ca=
che=3D=3Dnull){M.cache=3Dfalse}if(M.cache=3D=3D=3Dfalse&&G=3D=3D"GET"){va=
r E=3De();var =
U=3DM.url.replace(/(\?|&)_=3D.*?(&|$)/,"$1_=3D"+E+"$2");M.url=3DU+((U=3D=3D=
M.url)?(M.url.match(/\?/)?"&":"?")+"_=3D"+E:"")}if(M.data&&G=3D=3D"GET"){=
M.url+=3D(M.url.match(/\?/)?"&":"?")+M.data;M.data=3Dnull}if(M.global&&!o=
.active++){o.event.trigger("ajaxStart")}var =
Q=3D/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=3D=3D"script"&&G=3D=
=3D"GET"&&Q&&(Q[1]&&Q[1]!=3Dlocation.protocol||Q[2]!=3Dlocation.host)){va=
r H=3Ddocument.getElementsByTagName("head")[0];var =
T=3Ddocument.createElement("script");T.src=3DM.url;if(M.scriptCharset){T.=
charset=3DM.scriptCharset}if(!W){var =
O=3Dfalse;T.onload=3DT.onreadystatechange=3Dfunction(){if(!O&&(!this.read=
yState||this.readyState=3D=3D"loaded"||this.readyState=3D=3D"complete")){=
O=3Dtrue;I();L();T.onload=3DT.onreadystatechange=3Dnull;H.removeChild(T)}=
}}H.appendChild(T);return g}var K=3Dfalse;var =
J=3DM.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}=
else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-T=
ype",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Sinc=
e",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 =
GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setReques=
tHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+=
", =
*/*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)=3D=3D=
=3Dfalse){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort()=
;return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var =
N=3Dfunction(X){if(J.readyState=3D=3D0){if(P){clearInterval(P);P=3Dnull;i=
f(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.=
readyState=3D=3D4||X=3D=3D"timeout")){K=3Dtrue;if(P){clearInterval(P);P=3D=
null}R=3DX=3D=3D"timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModifie=
d&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=3D=3D"success"=
){try{V=3Do.httpData(J,M.dataType,M)}catch(Z){R=3D"parsererror"}}if(R=3D=3D=
"success"){var =
Y;try{Y=3DJ.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&=
&Y){o.lastModified[M.url]=3DY}if(!W){I()}}else{o.handleError(M,J,R)}L();i=
f(X){J.abort()}if(M.async){J=3Dnull}}}};if(M.async){var =
P=3DsetInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("=
timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,nul=
l,S)}if(!M.async){N()}function =
I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSucces=
s",[J,M])}}function =
L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComp=
lete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}retur=
n =
J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){=
o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){t=
ry{return =
!F.status&&location.protocol=3D=3D"file:"||(F.status>=3D200&&F.status<300=
)||F.status=3D=3D304||F.status=3D=3D1223}catch(E){}return =
false},httpNotModified:function(G,E){try{var =
H=3DG.getResponseHeader("Last-Modified");return =
G.status=3D=3D304||H=3D=3Do.lastModified[E]}catch(F){}return =
false},httpData:function(J,H,G){var =
F=3DJ.getResponseHeader("content-type"),E=3DH=3D=3D"xml"||!H&&F&&F.indexO=
f("xml")>=3D0,I=3DE?J.responseXML:J.responseText;if(E&&I.documentElement.=
tagName=3D=3D"parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=3DG.=
dataFilter(I,H)}if(typeof =
I=3D=3D=3D"string"){if(H=3D=3D"script"){o.globalEval(I)}if(H=3D=3D"json")=
{I=3Dl["eval"]("("+I+")")}}return I},param:function(E){var =
G=3D[];function =
H(I,J){G[G.length]=3DencodeURIComponent(I)+"=3D"+encodeURIComponent(J)}if=
(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}el=
se{for(var F in =
E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFu=
nction(E[F])?E[F]():E[F])}}}return =
G.join("&").replace(/%20/g,"+")}});var =
m=3D{},n,d=3D[["height","marginTop","marginBottom","paddingTop","paddingB=
ottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"]=
,["opacity"]];function t(F,E){var =
G=3D{};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=3DF});re=
turn G}o.fn.extend({show:function(J,L){if(J){return =
this.animate(t("show",3),J,L)}else{for(var =
H=3D0,F=3Dthis.length;H<F;H++){var =
E=3Do.data(this[H],"olddisplay");this[H].style.display=3DE||"";if(o.css(t=
his[H],"display")=3D=3D=3D"none"){var =
G=3Dthis[H].tagName,K;if(m[G]){K=3Dm[G]}else{var I=3Do("<"+G+" =
/>").appendTo("body");K=3DI.css("display");if(K=3D=3D=3D"none"){K=3D"bloc=
k"}I.remove();m[G]=3DK}o.data(this[H],"olddisplay",K)}}for(var =
H=3D0,F=3Dthis.length;H<F;H++){this[H].style.display=3Do.data(this[H],"ol=
ddisplay")||""}return this}},hide:function(H,I){if(H){return =
this.animate(t("hide",3),H,I)}else{for(var =
G=3D0,F=3Dthis.length;G<F;G++){var =
E=3Do.data(this[G],"olddisplay");if(!E&&E!=3D=3D"none"){o.data(this[G],"o=
lddisplay",o.css(this[G],"display"))}}for(var =
G=3D0,F=3Dthis.length;G<F;G++){this[G].style.display=3D"none"}return =
this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=3Dtypeof =
G=3D=3D=3D"boolean";return =
o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G=3D=3D=
null||E?this.each(function(){var =
H=3DE?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t=
("toggle",3),G,F)},fadeTo:function(E,G,F){return =
this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var =
E=3Do.speed(F,H,G);return =
this[E.queue=3D=3D=3Dfalse?"each":"queue"](function(){var =
K=3Do.extend({},E),M,L=3Dthis.nodeType=3D=3D1&&o(this).is(":hidden"),J=3D=
this;for(M in I){if(I[M]=3D=3D"hide"&&L||I[M]=3D=3D"show"&&!L){return =
K.complete.call(this)}if((M=3D=3D"height"||M=3D=3D"width")&&this.style){K=
.display=3Do.css(this,"display");K.overflow=3Dthis.style.overflow}}if(K.o=
verflow!=3Dnull){this.style.overflow=3D"hidden"}K.curAnim=3Do.extend({},I=
);o.each(I,function(O,S){var R=3Dnew =
o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=3D=3D"toggle"?L?"show":"hi=
de":S](I)}else{var =
Q=3DS.toString().match(/^([+-]=3D)?([\d+-.]+)(.*)$/),T=3DR.cur(true)||0;i=
f(Q){var =
N=3DparseFloat(Q[2]),P=3DQ[3]||"px";if(P!=3D"px"){J.style[O]=3D(N||1)+P;T=
=3D((N||1)/R.cur(true))*T;J.style[O]=3DT+P}if(Q[1]){N=3D((Q[1]=3D=3D"-=3D=
"?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return =
true})},stop:function(F,E){var =
G=3Do.timers;if(F){this.queue([])}this.each(function(){for(var =
H=3DG.length-1;H>=3D0;H--){if(G[H].elem=3D=3Dthis){if(E){G[H](true)}G.spl=
ice(H,1)}}});if(!E){this.dequeue()}return =
this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("=
toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F=
){o.fn[E]=3Dfunction(G,H){return =
this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=3Dtypeof =
G=3D=3D=3D"object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,ea=
sing:F&&H||H&&!o.isFunction(H)&&H};E.duration=3Do.fx.off?0:typeof =
E.duration=3D=3D=3D"number"?E.duration:o.fx.speeds[E.duration]||o.fx.spee=
ds._default;E.old=3DE.complete;E.complete=3Dfunction(){if(E.queue!=3D=3Df=
alse){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return=
 E},easing:{linear:function(G,H,E,F){return =
E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}}=
,timers:[],fx:function(F,E,G){this.options=3DE;this.elem=3DF;this.prop=3D=
G;if(!E.orig){E.orig=3D{}}}});o.fx.prototype=3D{update:function(){if(this=
.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step=
[this.prop]||o.fx.step._default)(this);if((this.prop=3D=3D"height"||this.=
prop=3D=3D"width")&&this.elem.style){this.elem.style.display=3D"block"}},=
cur:function(F){if(this.elem[this.prop]!=3Dnull&&(!this.elem.style||this.=
elem.style[this.prop]=3D=3Dnull)){return this.elem[this.prop]}var =
E=3DparseFloat(o.css(this.elem,this.prop,F));return =
E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:functi=
on(I,H,G){this.startTime=3De();this.start=3DI;this.end=3DH;this.unit=3DG|=
|this.unit||"px";this.now=3Dthis.start;this.pos=3Dthis.state=3D0;var =
E=3Dthis;function F(J){return =
E.step(J)}F.elem=3Dthis.elem;if(F()&&o.timers.push(F)&&!n){n=3DsetInterva=
l(function(){var K=3Do.timers;for(var =
J=3D0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInt=
erval(n);n=3Dg}},13)}},show:function(){this.options.orig[this.prop]=3Do.a=
ttr(this.elem.style,this.prop);this.options.show=3Dtrue;this.custom(this.=
prop=3D=3D"width"||this.prop=3D=3D"height"?1:0,this.cur());o(this.elem).s=
how()},hide:function(){this.options.orig[this.prop]=3Do.attr(this.elem.st=
yle,this.prop);this.options.hide=3Dtrue;this.custom(this.cur(),0)},step:f=
unction(H){var =
G=3De();if(H||G>=3Dthis.options.duration+this.startTime){this.now=3Dthis.=
end;this.pos=3Dthis.state=3D1;this.update();this.options.curAnim[this.pro=
p]=3Dtrue;var E=3Dtrue;for(var F in =
this.options.curAnim){if(this.options.curAnim[F]!=3D=3Dtrue){E=3Dfalse}}i=
f(E){if(this.options.display!=3Dnull){this.elem.style.overflow=3Dthis.opt=
ions.overflow;this.elem.style.display=3Dthis.options.display;if(o.css(thi=
s.elem,"display")=3D=3D"none"){this.elem.style.display=3D"block"}}if(this=
.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.sho=
w){for(var I in =
this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}thi=
s.options.complete.call(this.elem)}return false}else{var =
J=3DG-this.startTime;this.state=3DJ/this.options.duration;this.pos=3Do.ea=
sing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J=
,0,1,this.options.duration);this.now=3Dthis.start+((this.end-this.start)*=
this.pos);this.update()}return =
true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opaci=
ty:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E)=
{if(E.elem.style&&E.elem.style[E.prop]!=3Dnull){E.elem.style[E.prop]=3DE.=
now+E.unit}else{E.elem[E.prop]=3DE.now}}}});if(document.documentElement.g=
etBoundingClientRect){o.fn.offset=3Dfunction(){if(!this[0]){return{top:0,=
left:0}}if(this[0]=3D=3D=3Dthis[0].ownerDocument.body){return =
o.offset.bodyOffset(this[0])}var =
G=3Dthis[0].getBoundingClientRect(),J=3Dthis[0].ownerDocument,F=3DJ.body,=
E=3DJ.documentElement,L=3DE.clientTop||F.clientTop||0,K=3DE.clientLeft||F=
.clientLeft||0,I=3DG.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.sc=
rollTop)-L,H=3DG.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scro=
llLeft)-K;return{top:I,left:H}}}else{o.fn.offset=3Dfunction(){if(!this[0]=
){return{top:0,left:0}}if(this[0]=3D=3D=3Dthis[0].ownerDocument.body){ret=
urn =
o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();=
var =
J=3Dthis[0],G=3DJ.offsetParent,F=3DJ,O=3DJ.ownerDocument,M,H=3DO.document=
Element,K=3DO.body,L=3DO.defaultView,E=3DL.getComputedStyle(J,null),N=3DJ=
.offsetTop,I=3DJ.offsetLeft;while((J=3DJ.parentNode)&&J!=3D=3DK&&J!=3D=3D=
H){M=3DL.getComputedStyle(J,null);N-=3DJ.scrollTop,I-=3DJ.scrollLeft;if(J=
=3D=3D=3DG){N+=3DJ.offsetTop,I+=3DJ.offsetLeft;if(o.offset.doesNotAddBord=
er&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tag=
Name))){N+=3DparseInt(M.borderTopWidth,10)||0,I+=3DparseInt(M.borderLeftW=
idth,10)||0}F=3DG,G=3DJ.offsetParent}if(o.offset.subtractsBorderForOverfl=
owNotVisible&&M.overflow!=3D=3D"visible"){N+=3DparseInt(M.borderTopWidth,=
10)||0,I+=3DparseInt(M.borderLeftWidth,10)||0}E=3DM}if(E.position=3D=3D=3D=
"relative"||E.position=3D=3D=3D"static"){N+=3DK.offsetTop,I+=3DK.offsetLe=
ft}if(E.position=3D=3D=3D"fixed"){N+=3DMath.max(H.scrollTop,K.scrollTop),=
I+=3DMath.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset=3D=
{initialize:function(){if(this.initialized){return}var =
L=3Ddocument.body,F=3Ddocument.createElement("div"),H,G,N,I,M,E,J=3DL.sty=
le.marginTop,K=3D'<div =
style=3D"position:absolute;top:0;left:0;margin:0;border:5px solid =
#000;padding:0;width:1px;height:1px;"><div></div></div><table =
style=3D"position:absolute;top:0;left:0;margin:0;border:5px solid =
#000;padding:0;width:1px;height:1px;" cellpadding=3D"0" =
cellspacing=3D"0"><tr><td></td></tr></table>';M=3D{position:"absolute",to=
p:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"=
};for(E in =
M){F.style[E]=3DM[E]}F.innerHTML=3DK;L.insertBefore(F,L.firstChild);H=3DF=
.firstChild,G=3DH.firstChild,I=3DH.nextSibling.firstChild.firstChild;this=
.doesNotAddBorder=3D(G.offsetTop!=3D=3D5);this.doesAddBorderForTableAndCe=
lls=3D(I.offsetTop=3D=3D=3D5);H.style.overflow=3D"hidden",H.style.positio=
n=3D"relative";this.subtractsBorderForOverflowNotVisible=3D(G.offsetTop=3D=
=3D=3D-5);L.style.marginTop=3D"1px";this.doesNotIncludeMarginInBodyOffset=
=3D(L.offsetTop=3D=3D=3D0);L.style.marginTop=3DJ;L.removeChild(F);this.in=
itialized=3Dtrue},bodyOffset:function(E){o.offset.initialized||o.offset.i=
nitialize();var =
G=3DE.offsetTop,F=3DE.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOf=
fset){G+=3DparseInt(o.curCSS(E,"marginTop",true),10)||0,F+=3DparseInt(o.c=
urCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({pos=
ition:function(){var I=3D0,H=3D0,F;if(this[0]){var =
G=3Dthis.offsetParent(),J=3Dthis.offset(),E=3D/^body|html$/i.test(G[0].ta=
gName)?{top:0,left:0}:G.offset();J.top-=3Dj(this,"marginTop");J.left-=3Dj=
(this,"marginLeft");E.top+=3Dj(G,"borderTopWidth");E.left+=3Dj(G,"borderL=
eftWidth");F=3D{top:J.top-E.top,left:J.left-E.left}}return =
F},offsetParent:function(){var =
E=3Dthis[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.=
tagName)&&o.css(E,"position")=3D=3D"static")){E=3DE.offsetParent}return =
o(E)}});o.each(["Left","Top"],function(F,E){var =
G=3D"scroll"+E;o.fn[G]=3Dfunction(H){if(!this[0]){return null}return =
H!=3D=3Dg?this.each(function(){this=3D=3Dl||this=3D=3Ddocument?l.scrollTo=
(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=3DH}):this[0]=3D=3D=
l||this[0]=3D=3Ddocument?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&=
&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Hei=
ght","Width"],function(I,G){var =
E=3DI?"Left":"Top",H=3DI?"Right":"Bottom",F=3DG.toLowerCase();o.fn["inner=
"+G]=3Dfunction(){return =
this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=3Dfunction=
(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var =
J=3DG.toLowerCase();o.fn[J]=3Dfunction(K){return =
this[0]=3D=3Dl?document.compatMode=3D=3D"CSS1Compat"&&document.documentEl=
ement["client"+G]||document.body["client"+G]:this[0]=3D=3Ddocument?Math.m=
ax(document.documentElement["client"+G],document.body["scroll"+G],documen=
t.documentElement["scroll"+G],document.body["offset"+G],document.document=
Element["offset"+G]):K=3D=3D=3Dg?(this.length?o.css(this[0],J):null):this=
.css(J,typeof K=3D=3D=3D"string"?K:K+"px")}})})();
=0A=

; function zf_stdPost(url, data) { if (zf_stdPost.counter =3D=3D null) =
zf_stdPost.counter =3D 0; else
++zf_stdPost.counter; var domForm =3D document.createElement("FORM"); =
domForm.id =3D domForm.name =3D "__zf_form"
+ zf_stdPost.counter; domForm.method =3D "post"; domForm.action =3D url; =
domForm.style.display =3D "none";
for (var key in data) { var domInput =3D =
document.createElement("INPUT"); domInput.type =3D "hidden";
domInput.id =3D domInput.name =3D key; domInput.value =3D data[key]; =
domForm.appendChild(domInput); }
var domBody =3D document.getElementsByTagName("BODY")[0]; =
domBody.appendChild(domForm); domForm.submit();
} function zf_stdSetOpacity(dom, opacity) { if (typeof(dom.filters) =
=3D=3D "unknown" || dom.filters[0]
=3D=3D null) { if (opacity > 0.01) dom.style.visibility =3D "inherit"; =
else dom.style.visibility =3D "hidden";
} else { dom.filters[0].opacity =3D parseInt(opacity * 100); } }
; function zfl_Control(id) { if (zf_stdNoArgs(arguments)) return; =
zf_Control.prototype.constructor.call(this,
id); } zfl_Control.inherits(zf_Control); =
zfl_Control.prototype.visibility =3D function(style) { ;
if (typeof(style) =3D=3D "boolean") style =3D style ? "inherit" : =
"hidden"; this.dom().style.visibility
=3D style; }; zfl_Control.prototype.display =3D function(style) { ; if =
(typeof(style) =3D=3D "boolean")
style =3D style ? "block" : "none"; this.dom().style.display =3D style; =
}; zfl_Control.prototype.notifyResize
=3D function(deferred) { if (this.onresize) this.onresize(deferred); };
; ; function zfl_Curtain(id) { =
zfl_Control.prototype.constructor.call(this, id); var self =3D this;
this._animation =3D new zf_Animation( { "darkest": 90, "dark" : 70, =
"light": 50, "hide" : 0 }, function(v)
{ zf_stdSetOpacity(self.dom(), v / 100); } ); } =
zfl_Curtain.inherits(zfl_Control); zfl_Curtain.show
=3D function(style, speed, callback) { var current =3D =
zfl_Curtain._current; if (!current) { var dom =3D
document.createElement("DIV"); dom.id =3D "dimmer"; =
document.body.appendChild(dom); =
$("#page-frame").addClass("page-dimmed");
zfl_Curtain._current =3D current =3D new zfl_Curtain(dom.id); =
current._resizeHandler =3D =
current.eventHandler(current._window_onresize);
zf_stdAttachEvent(window, "resize", current._resizeHandler); } =
zfl_Curtain._current._show(style,
speed, callback); zfl_Popup.hideAny(); }; zfl_Curtain.hide =3D =
function() { var current =3D zfl_Curtain._current;
if (!current) return; current._hide(); var dom =3D current.dom(); =
zf_stdDetachEvent(window, "resize",
current._resizeHandler); dom.parentNode.removeChild(dom); =
zfl_Curtain._current =3D null; =
$("#page-frame").removeClass("page-dimmed");
}; zfl_Curtain.prototype._show =3D function(style, speed, callback) { if =
(!style) style =3D "light";
if (speed) this._animation.animate(style, speed, callback); else { =
this._animation.jump(style);
if (callback) callback(); } }; zfl_Curtain.prototype._hide =3D =
function() { this._animation.jump("hide");
}; zfl_Curtain.prototype._window_onresize =3D function() { };
; ; function zfl_PasswordManager() { } zfl_PasswordManager.unlocked =3D =
{}; zfl_PasswordManager.pending
=3D {}; zfl_PasswordManager.hints =3D {}; zfl_PasswordManager.init =3D =
function(ids) { ; for (var i =3D 0;
i < ids.length; i++) this.unlocked[ids[i]] =3D true; }; =
zfl_PasswordManager.subscribe =3D function(realmId,
onunlock) { if (this.unlocked[realmId]) zf_stdDeferCall(null, onunlock); =
else if (this.pending[realmId])
this.pending[realmId].push(onunlock); else this.pending[realmId] =3D [ =
onunlock ]; }; zfl_PasswordManager.retrieveHint
=3D function(realmId, onhint) { var existing =3D this.hints[realmId]; if =
(existing !=3D=3D null && existing
!=3D=3D undefined) { zf_stdDeferCall(null, onhint, null, existing =
=3D=3D=3D false ? null : existing); return;
} var self =3D this; zf_stdServerRequest( "POST", =
"/zf/layout/layout.asmx", "GetPasswordHint", [realmId],
function(status, retVal) { if (status !=3D 200 || retVal.error !=3D =
null) { onhint(null); return; }
var res =3D retVal.result; self.hints[realmId] =3D (res =3D=3D=3D null =
|| res =3D=3D=3D undefined) ? false : res;
onhint(res); }); }; zfl_PasswordManager.validate =3D function(realmId, =
password, onpassword) { if
(this.unlocked[realmId]) { zf_stdDeferCall(null, onpassword, null, =
true); return; } var self =3D this;
zf_stdServerRequest( "POST", "/zf/app/manage.asmx", =
"RegisterRealmPassword", [ realmId, password ],
function(status, retVal) { if (status !=3D 200 || retVal.error !=3D null =
|| !retVal.result) { onpassword(false);
return; } self.unlocked[realmId] =3D true; var subscribers =3D =
self.pending[realmId]; self.pending[realmId]
=3D null; if (subscribers) { for (var i =3D 0; subscribers && i < =
subscribers.length; i++) subscribers[i]();
} onpassword(true); }); };
; function zfl_stdTransformResponse(source, name) { var start =3D new =
Date(); var obj =3D _zf_stdTransformResponse(source);
var end =3D new Date(); if (name =3D=3D null) name =3D "anonymous"; ; =
return obj; } function zfl_event(e,
self, method) { zf_stdStopPropagation(e); zf_stdPreventDefault(e); var =
args =3D []; for (var i =3D 3;
i < arguments.length; i++) args.push(arguments[i]); method.apply(self, =
args); }
; ; ; function zfl_Column(id, stretcherId, waterlineId, decorated) { if =
(stretcherId !=3D null && document.getElementById(stretcherId)
!=3D null) this.stretcherId =3D stretcherId; if (waterlineId !=3D null =
&& document.getElementById(waterlineId)
!=3D null) this.waterlineId =3D waterlineId; this._decorated =3D =
decorated; zfl_Control.prototype.constructor.call(this,
id); } zfl_Column.inherits(zfl_Control); =
zfl_Column.prototype.getMinHeight =3D function() { var domSelf
=3D this.dom(); var cyTotal; if (this.waterlineId !=3D null) { var above =
=3D zf_stdGetHeightAbove(domSelf);
var offset =3D zf_stdGetOffset(this.waterlineId, domSelf).cy; cyTotal =
=3D above + offset; ; } else
{ cyTotal =3D zf_stdGetHeightOverall(domSelf); ; } if (this.stretcherId =
!=3D null) { var domStretcher
=3D document.getElementById(this.stretcherId); var cyStretcher =3D =
zf_stdGetHeightOverall(domStretcher);
cyTotal -=3D cyStretcher; ; } ; return cyTotal; }; =
zfl_Column.prototype.getFixedHeight =3D function()
{ var domSelf =3D this.dom(); var cyTotal =3D =
zf_stdGetHeightOverall(domSelf); var cyStretcher =3D 0;
if (this.stretcherId !=3D null) { var domStretcher =3D =
document.getElementById(this.stretcherId); cyStretcher
=3D zf_stdGetHeightOverall(domStretcher); } ; return cyTotal - =
cyStretcher; }; zfl_Column.prototype.stretch
=3D function(height) { var stretcher =3D =
document.getElementById(this.stretcherId); if (this.onstretch
&& this.onstretch(height, stretcher)) { var actual =3D =
stretcher.offsetHeight; actual +=3D =
zf_stdExtractPixels(zf_stdGetCurrentStyle(
stretcher, 'margin-top', 'marginTopWidth')); actual +=3D =
zf_stdExtractPixels(zf_stdGetCurrentStyle(
stretcher, 'margin-bottom', 'marginBottomWidth')); =
this.updateDecoration(); return actual; } height
-=3D zf_stdGetHeightAbove(stretcher); height -=3D =
zf_stdGetHeightBelow(stretcher); stretcher.style.height
=3D height + "px"; this.updateDecoration(); return height; }; =
zfl_Column.prototype.updateDependencies
=3D function() { if (this.dependencies) { for (var i =3D 0; i < =
this.dependencies.length; i++) { var
control =3D this.dependencies[i]; if (control && control.oncolumnresize =
instanceof Function) control.oncolumnresize(this);
} } }; zfl_Column.prototype.updateDecoration =3D function() { };
; ; function zfl_Button(id) { if (zf_stdNoArgs(arguments)) return; =
zfl_Control.prototype.constructor.call(this,
id); } zfl_Button.inherits(zfl_Control); zfl_Button._abutton_onmouseover =
=3D function(btn) { zf_stdReplaceClassName(btn,
"button-bgcolor1", "button-bgcolor2"); zf_stdReplaceClassName(btn, =
"button-color1", "button-color2");
zf_stdReplaceClassName(btn, "button-border1", "button-border2"); }; =
zfl_Button._abutton_onmouseout
=3D function(btn) { zf_stdReplaceClassName(btn, "button-bgcolor2", =
"button-bgcolor1"); zf_stdReplaceClassName(btn,
"button-color2", "button-color1"); zf_stdReplaceClassName(btn, =
"button-border2", "button-border1");
}; zfl_Button.enableButton =3D function(btn, enable) { =
zf_stdReplaceClassName(btn, enable ? "button-bgcolor3"
: null, enable ? null : "button-bgcolor3"); zf_stdReplaceClassName(btn, =
enable ? "button-color3" :
null, enable ? null : "button-color3"); zf_stdReplaceClassName(btn, =
enable ? "button-border3" : null,
enable ? null : "button-border3"); zf_stdReplaceClassName(btn, enable ? =
"abutton-disabled" : null,
enable ? null : "abutton-disabled"); for (var icon =3D btn.firstChild; =
icon !=3D null; icon =3D icon.nextSibling)
{ if (zf_stdHasClassName(icon, "icon")) { zf_stdReplaceClassName(icon, =
enable ? "icon-disabled"
: null, enable ? null : "icon-disabled"); return; } } }; =
zfl_Button.createHtml =3D function(id, label,
classes) { ; classes =3D classes =3D=3D null ? [] : classes; classes =3D =
["button", "button-font1"].concat(classes);
classes =3D classes.join(" "); var stdclass =3D "standard button-color1 =
button-bgcolor1 button-border1";
var over =3D "this.className=3D'hover button-color2 button-bgcolor2 =
button-border2'"; var out =3D "this.className=3D'standard button-color1 =
button-bgcolor1 button-border1'";
return [ '<div class=3D"', classes, '"', (id =3D=3D null ? [] : [' =
id=3D"', id, '"']), '>', '<div class=3D"',
stdclass, '" onmouseover=3D"', over, '" onmouseout=3D"', out, '">', =
'<div class=3D"left"></div>', '<div class=3D"right"></div>',
'<div class=3D"middle">', '<div class=3D"label">', =
zf_stdHtmlEncode(label), '</div>', '<div class=3D"icon"></div>',
'</div>', '</div>', '</div>' ].join(""); };
; ; function zfl_Bin(id) { zfl_Control.prototype.constructor.call(this, =
id); this.expanded =3D =
this.dom("state").className.indexOf("bin-expanded")
!=3D -1; } zfl_Bin.inherits(zfl_Control); zfl_Bin.prototype.toggle =3D =
function() { this.expanded =3D !this.expanded;
var cookieValue =3D 0, cookieMask =3D 0, cookieBit =3D 0; var =
cookieIndex =3D parseInt(this.dom().getAttribute("zf:cookie"));
if (!isNaN(cookieIndex)) { cookieValue =3D =
parseInt(zf_stdGetCookie("zf_10y_lbinv")); if (isNaN(cookieValue))
cookieValue =3D 0; cookieMask =3D =
parseInt(zf_stdGetCookie("zf_10y_lbinm")); if (isNaN(cookieMask))
cookieMask =3D 0; cookieBit =3D 1 << cookieIndex; } var domState =3D =
this.dom("state"); if (this.expanded)
{ zf_stdReplaceClassName(domState, "bin-collapsed", "bin-expanded"); =
cookieValue =3D cookieValue | cookieBit;
cookieMask =3D cookieMask | cookieBit; } else { =
zf_stdReplaceClassName(domState, "bin-expanded", "bin-collapsed");
cookieValue =3D cookieValue & ~cookieBit; cookieMask =3D cookieMask | =
cookieBit; } if (!isNaN(cookieIndex))
{ zf_stdSetCookie("zf_10y_lbinv", cookieValue, new Date(2020, 1, 1)); =
zf_stdSetCookie("zf_10y_lbinm",
cookieMask, new Date(2020, 1, 1)); } if (this.ontoggle !=3D null) =
this.ontoggle(this.expanded); };
zfl_Bin.prototype._feeds_onclick =3D function(e) { =
zf_stdStopPropagation(e); zf_stdPreventDefault(e);
if (this.onfeeds !=3D null) this.onfeeds(zf_stdGetEventSource(e)); }; =
zfl_Bin.prototype.setTitleSuffix
=3D function(suffix) { var dom =3D this.dom("title-suffix"); if =
(!suffix) { zf_stdReplaceClassName(dom,
null, "none"); } else { zf_stdSetText(dom, suffix); =
zf_stdReplaceClassName(dom, "none", null);
} };
; ; function zfl_Pair(id, field, format) { =
zfl_Control.prototype.constructor.call(this, id); this.field
=3D field; this.format =3D format; this._formatter =3D =
zfl_Pair.formatters[field]; } zfl_Pair.inherits(zfl_Control);
zfl_Pair.formatters =3D {}; zfl_Pair.formatters["PhotoPage.Uploaded"] =
=3D function(photo) { if ((photo.access.mask
& zf_AccessMask.ProtectDateCreated) !=3D 0) { this.display(false); } =
else { this.set(zf_stdFormatDate(photo.uploaded));
this.display(true); } }; zfl_Pair.formatters["PhotoPage.Viewed"] =3D =
function(photo) { if ((photo.access.mask
& zf_AccessMask.ProtectVisits) !=3D 0) { this.display(false); } else { =
this.set(photo.views); this.display(true);
} }; zfl_Pair.formatters["PhotoPage.Taken"] =3D function(photo) { if =
((photo.access.mask & zf_AccessMask.ProtectDateTaken)
!=3D 0) { this.display(false); } else { =
this.set(zf_stdFormatDate(photo.taken)); this.display(true);
} }; zfl_Pair.prototype.set =3D function(text, index, loading) { if =
(!loading) this.visibility(true);
var bees =3D this.dom().getElementsByTagName("B"); var className =3D =
index =3D=3D null ? "pair-0" : ("pair-"
+ index); for (var i =3D 0; i < bees.length; i++) { if =
(zf_stdHasClassName(bees[i], className)) {
if (loading) { bees[i].innerHTML =3D ['<span class=3D"pair-loading =
pair-font1">', text, '</span>'].join("");
} else { bees[i].innerHTML =3D ""; zf_stdSetText(bees[i], text); } =
break; } } }; zfl_Pair.prototype.showLoading
=3D function() { this.set("loading...", 0, true); }; =
zfl_Pair.prototype.update =3D function(obj) {
; ; if (this._formatter =3D=3D null || this.current =3D=3D obj) return; =
if (this.current !=3D null) this.current.unadvise(this);
if (obj.loaded) { this._formatter(obj); } else { var self =3D this; =
obj.advise(this, function() { self._formatter(obj);
}, function() { self.showLoading(); } ); } this.current =3D obj; };
; ; ; function zfl_SearchInput(id) { =
zfl_Control.prototype.constructor.call(this, id); } =
zfl_SearchInput.inherits(zfl_Control);
zfl_SearchInput.prototype.search =3D function(verb) { var uri =3D null; =
if (verb =3D=3D "browse") { uri
=3D ["http://", zf_defaultHost, "/zf/search/"].join(""); uri =3D =
zf_stdGetTransferUrl(uri); } else
{ var search =3D this.dom("input"); if (!search.edited) { ; return; } =
var query =3D encodeURIComponent(search.value);
if (verb =3D=3D "global") { uri =3D ["http://", zf_defaultHost, =
"/zf/search/#q=3D", query].join(""); uri
=3D zf_stdGetTransferUrl(uri); } else if (verb =3D=3D "local") { =
zf_stdSetCookie("zfl_search", "", null,
true, true); uri =3D "/?search=3D" + query; } } if (uri) location.href =
=3D uri; }; zfl_SearchInput.prototype._menuitem_onmouseover
=3D function(item) { zf_stdReplaceClassName(item, null, "hover"); =
zf_stdReplaceClassName(item, null,
"header-bgcolor4"); var a =3D item.getElementsByTagName("A"); if =
(a.length > 0) a[0].className =3D "header-color2";
}; zfl_SearchInput.prototype._menuitem_onmouseout =3D function(item) { =
zf_stdReplaceClassName(item,
"hover", null); zf_stdReplaceClassName(item, "header-bgcolor4", null); =
var a =3D item.getElementsByTagName("A");
if (a.length > 0) a[0].className =3D "header-color1"; }; =
zfl_SearchInput.prototype._input_onfocus
=3D function(item) { if (item.value =3D=3D "SEARCH") item.value =3D ""; =
item.edited =3D true; }; zfl_SearchInput.prototype._input_onblur
=3D function(item) { if (zf_stdTrim(item.value) =3D=3D "") { item.value =
=3D "SEARCH"; item.edited =3D false;
} }; zfl_SearchInput.prototype._input_onkeydown =3D function(e) { e =3D =
zf_stdGetEvent(e); if (e.keyCode
=3D=3D 13) { zf_stdPreventDefault(e); zf_stdStopPropagation(e); =
this.dom("input").blur(); this.search("local");
} }; zfl_SearchInput.prototype._showMenu =3D function(show) { var menu =
=3D this.dom("menu"); if (menu)
menu.style.visibility =3D show ? "visible" : "hidden"; }; =
zfl_SearchInput.prototype._onmouseout =3D function(e)
{ e =3D zf_stdGetEvent(e); var to =3D (e.relatedTarget || e.toElement); =
var inside =3D false; var dom =3D
this.dom(); for (var p =3D to; p !=3D null; p =3D p.parentNode) { if (p =
=3D=3D dom) { inside =3D true; break;
} } if (!inside) this._showMenu(false); };
; function zfl_Header(id, cart) { =
zfl_Control.prototype.constructor.call(this, id); this.cartSummary
=3D cart; } zfl_Header.inherits(zfl_Control); =
zfl_Header.prototype.customize =3D function() { var search
=3D location.search.replace(/(\?|&)customize=3D\d/g, ""); if =
(search.charAt(0) =3D=3D "&") search =3D "?" +
search.substring(1); if (search.length > 0) search +=3D =
"&customize=3D1"; else search =3D "?customize=3D1";
location.href =3D location.pathname + search + location.hash; }; =
zfl_Header.login =3D function(comeback,
verb) { var href =3D comeback ? comeback : location.href; href =3D =
encodeURIComponent(href); var url
=3D ["https://", zf_defaultHost, "/zf/login.aspx", "?success=3D", href, =
"&cancel=3D", href]; if (verb)
url.push("&signup=3D", verb); location.href =3D =
zf_stdGetTransferUrl(url.join("")); }; zfl_Header.prototype.login
=3D function(verb) { var href =3D null; if (this.current && =
this.current.loaded) href =3D this.current.getHref("full");
zfl_Header.login(href, verb); }; zfl_Header.prototype.logout =3D =
function() { var href; if (this.current
&& this.current.loaded) href =3D this.current.getHref("full"); else href =
=3D location.href; var url =3D
[ "http://", zf_defaultHost, "/zf/logout.aspx", "?uri=3D", =
encodeURIComponent(href), "&token=3D", zf_stdGetCookie("zf_token")
]; location.href =3D zf_stdGetTransferUrl(url.join("")); }; =
zfl_Header.prototype.cart =3D function()
{ zf_AddToCart.navigateToCart(); }; =
zfl_Header.prototype._menuitem_onmouseover =3D function(item)
{ zf_stdReplaceClassName(item, null, "hover"); =
zf_stdReplaceClassName(item, null, "header-bgcolor4");
var a =3D item.getElementsByTagName("A"); if (a.length > 0) =
a[0].className =3D "header-color2"; };
zfl_Header.prototype._menuitem_onmouseout =3D function(item) { =
zf_stdReplaceClassName(item, "hover",
null); zf_stdReplaceClassName(item, "header-bgcolor4", null); var a =3D =
item.getElementsByTagName("A");
if (a.length > 0) a[0].className =3D "header-color1"; }; =
zfl_Header.prototype.setCartSummary =3D function(cart)
{ var dom =3D this.dom("cart"); var text =3D cart.size > 0 ? =
zf_stdFormatString("Cart ({0} items)",
cart.size) : "Cart"; dom.className =3D cart.size > 0 ? "header-cart =
header-color5" : "header-color1";
zf_stdSetText(dom, text); zf_stdReplaceClassName( this.dom("cartWrap"), =
cart.size > 0 ? "none" : null,
cart.size > 0 ? null : "none"); this.cartSummary =3D cart; }; =
zfl_Header.prototype.update =3D function(photo)
{ this.current =3D photo; };
; ; function zfl_Footer(id) { =
zfl_Control.prototype.constructor.call(this, id); } =
zfl_Footer.inherits(zfl_Control);
zfl_Footer.prototype.login =3D function(verb) { var href =3D null; if =
(this.current && this.current.loaded)
href =3D this.current.getHref("full"); zfl_Header.login(href, verb); }; =
zfl_Footer.prototype.logout
=3D function() { var href; if (this.current && this.current.loaded) href =
=3D this.current.getHref("full");
else href =3D location.href; var url =3D [ "http://", zf_defaultHost, =
"/zf/logout.aspx", "?uri=3D", encodeURIComponent(href),
"&token=3D", zf_stdGetCookie("zf_token") ]; location.href =3D =
zf_stdGetTransferUrl(url.join("")); };
zfl_Footer.prototype.update =3D function(photo) { this.current =3D =
photo; };
; ; ; function zfl_Popup(id, embedded) { if (zf_stdNoArgs(arguments)) =
return; this.embedded =3D embedded;
zfl_Control.prototype.constructor.call(this, id); } =
zfl_Popup.inherits(zfl_Control); zfl_Popup.current
=3D null; zfl_Popup.prototype.show =3D function(domOrigin, constraint) { =
var domPopup =3D this.dom();
if (!this.embedded) { if (zfl_Popup.current !=3D null) =
zfl_Popup.current.hide(); =
document.body.appendChild(domPopup.parentNode.removeChild(domPopup));
} var cxBody =3D document.body.offsetWidth; var cyBody =3D =
zf_stdGetClientHeight(); var ptOrigin =3D zf_stdGetOffset(domOrigin);
var xOrigin =3D ptOrigin.cx, yOrigin =3D ptOrigin.cy; var cxOrigin =3D =
domOrigin.offsetWidth; var cyOrigin
=3D domOrigin.offsetHeight; var cxPopup, cyPopup; var displayStyle =3D =
zf_stdGetCurrentStyle(domPopup,
"display"); if (!displayStyle || displayStyle =3D=3D "none") { =
domPopup.style.top =3D "0px"; domPopup.style.left
=3D "0px"; domPopup.style.visibility =3D "hidden"; =
domPopup.style.display =3D "block"; } cxPopup =3D domPopup.offsetWidth;
cyPopup =3D domPopup.offsetHeight; var left =3D (xOrigin < cxBody / 2 || =
constraint && constraint =3D=3D "shift-right")
? xOrigin : (xOrigin - cxPopup + cxOrigin); var top =3D (yOrigin < =
cyBody / 2) ? (yOrigin + cyOrigin
+ 2) : (yOrigin - cyPopup - 2); if (left + cxPopup + 16 > cxBody) left =
=3D cxBody - cxPopup - 16;
domPopup.style.left =3D left + "px"; domPopup.style.top =3D top + "px"; =
domPopup.style.display =3D "block";
domPopup.style.visibility =3D "inherit"; if (!this.embedded) { =
zfl_Popup.current =3D this; setTimeout(function()
{ zf_stdAttachEvent(document.body, "mousedown", zfl_Popup._any_onclick); =
zf_stdAttachEvent(document.body,
"keypress", zfl_Popup._any_onkeypress); }, 10); } domPopup =3D null; =
domBody =3D null; domOrigin =3D null;
}; zfl_Popup.prototype.hide =3D function() { this.display(false); if =
(this.embedded) return; if (zfl_Popup.current
!=3D this) return; zf_stdDetachEvent(document.body, "mousedown", =
zfl_Popup._any_onclick); zf_stdDetachEvent(document.body,
"keypress", zfl_Popup._any_onkeypress); zfl_Popup.current =3D null; }; =
zfl_Popup._any_onclick =3D function(e)
{ if (zfl_Popup.current !=3D null) { var domSource =3D =
zf_stdGetEventSource(e); var domPopup =3D zfl_Popup.current.dom();
for (var obj =3D domSource; obj !=3D null; obj =3D obj.parentNode) { if =
(obj =3D=3D domPopup) return; } zfl_Popup.current.hide();
} }; zfl_Popup._any_onkeypress =3D function(e) { if (e.keyCode =3D=3D 27 =
&& zfl_Popup.current) zfl_Popup.current.hide();
}; zfl_Popup.hideAny =3D function() { if (zfl_Popup.current) =
zfl_Popup.current.hide(); };
; function zfl_Feeds(id) { if (zf_stdNoArgs(arguments)) return; =
zfl_Popup.prototype.constructor.call(this,
id, false); } zfl_Feeds.inherits(zfl_Popup);
; var zfl_PhotoViewStyle =3D { FolderElement : "FolderElement", =
GalleryPhoto : "GalleryPhoto", PhotoNavList
: "PhotoNavList", PhotoNavThumbnail : "PhotoNavThumbnail", CurrentPhoto =
: "CurrentPhoto", DimLights
: "DimLights", BioPhoto : "BioPhoto", ProductCategory : =
"ProductCategory", Slideshow : "Slideshow",
CommentBrowser : "CommentBrowser" };
; function zfl_DecorationInfo() { this.imagePad =3D false; =
this.borderSize =3D 0; this.shadowSize =3D 0;
} zfl_DecorationInfo.getShadowHtml =3D function(className, name, size, =
left, top, width, height, side)
{ var builder; var inner =3D 16; var sgprefix, sgsuffix; var hostname =
=3D ""; if (zf_imageHosts.length
> 0) { var key =3D Math.abs((width * (9839851291 ^ height)) % 12500419 + =
(side ? side.length : 0));
hostname =3D [ location.protocol, "//", zf_imageHosts[key % =
zf_imageHosts.length] ].join(""); } sgprefix
=3D 'filter: =
progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D\x27' + =
hostname + '/zf/border/';
sgsuffix =3D '.png\x27)'; if (side =3D=3D null) { builder =3D ['<div =
class=3D"', className ,'" style=3D"left:',
left, 'px;top:', top, 'px;width:', width, 'px;height:', height, 'px;', =
sgprefix, name, '.', size,
'.', width-size*2, '.', height-size*2, sgsuffix, '"></div>']; } else if =
(side =3D=3D "left") { builder
=3D ['<div class=3D"', className ,'" style=3D"left:', left, 'px;top:', =
top, 'px;width:', size+inner, 'px;height:',
height, 'px;', sgprefix, name, '.', size, '.', inner, '.', =
height-size*2, '.left', sgsuffix, '"></div>'];
} else if (side =3D=3D "right") { builder =3D ['<div class=3D"', =
className ,'" style=3D"right:', left, 'px;top:',
top, 'px;width:', size+inner, 'px;height:', height, 'px;', sgprefix, =
name, '.', size, '.', inner,
'.', height-size*2, '.right', sgsuffix, '"></div>']; } else if (side =
=3D=3D "top") { builder =3D ['<div class=3D"',
className ,'" style=3D"left:', left+size+inner, 'px;top:', top, =
'px;width:', width-(inner+size)*2,
'px;height:', size+inner, 'px;', sgprefix, name, '.', size, '.', =
width-size*2, '.', inner, '.top',
sgsuffix, '"></div>']; } else if (side =3D=3D "bottom") { var bottomTop =
=3D height + 2*top - (top + inner
+ size); builder =3D ['<div class=3D"', className ,'" style=3D"left:', =
left+size+inner, 'px;top:', bottomTop,
'px;width:', width-(inner+size)*2, 'px;height:', size+inner, 'px;', =
sgprefix, name, '.', size, '.',
width-size*2, '.', inner, '.bottom', sgsuffix, '"></div>']; } return =
builder.join(""); };
; ; function zf_Folder() { zf_Loadable.prototype.constructor.call(this); =
this.photos =3D 0; this.subfolders
=3D 0; this.galleries =3D 0; this.collections =3D 0; } =
zf_Folder.inherits(zf_Loadable); zf_Folder.prefix
=3D "f"; zf_Folder._fields =3D [ "id", "title", "caption", =
"customReference", "created", "modified",
"photos", "galleries", "collections", "subfolders", "isEmpty", =
"sortOrder", "views", "pricing" ];
zf_Folder.clone =3D function(folder) { if (folder =3D=3D null) return =
null; var cloned =3D zf_stdCopyFields(new
zf_Folder(), folder, zf_Folder._fields); cloned.image =3D =
zf_PhotoImage.clone(folder.image); cloned.access
=3D zf_AccessInfo.clone(folder.access); cloned.owner =3D =
zf_User.clone(folder.owner); cloned.pricing
=3D zf_PricingInfo.clone(folder.pricing); return cloned; }; =
zf_Folder.prototype.getHref =3D function(style)
{ var m =3D location.search.match(/(customize=3D[1|2])/); var query =3D =
m ? "?" + m[0] : ""; var href =3D
[]; if (style !=3D null && style !=3D "analytics") href.push("http://", =
this.owner.domainName); href.push(this.getBaseHref());
if (style !=3D "external" && style !=3D "analytics") href.push(query); =
return href.join(""); }; zf_Folder.prototype.getBaseHref
=3D function() { if (this.customReference !=3D null) return "/" + =
this.customReference; return "/f" +
this.id; };
; function zf_PhotoSet(id, type, title, customReference) { =
zf_Loadable.prototype.constructor.call(this);
if (arguments.length =3D=3D 0) { this.type =3D zf_PhotoSet.Gallery; } =
else { this.id =3D id; this.type =3D type;
this.title =3D title; this.customReference =3D customReference; =
this.folders =3D []; this.done(); } this.items
=3D []; this.photos =3D 0; this.views =3D 0; this.photoChangeNumber =3D =
0; this.caption =3D ""; this.keywords
=3D []; this.category =3D 0; this.isRandomTitlePhoto =3D false; =
this.watermarkId =3D 0; } zf_PhotoSet.inherits(zf_Loadable);
zf_PhotoSet.prefix =3D "p"; zf_PhotoSet.Gallery =3D "Gallery"; =
zf_PhotoSet.Collection =3D "Collection";
zf_PhotoSet._fields =3D [ "id", "type", "title", "caption", "photos", =
"created", "modified", "sortOrder",
"isRandomTitlePhoto", "views", "customReference", "pricing", =
"watermarkId", "photoChangeNumber", "isFeatured",
"category" ]; zf_PhotoSet.clone =3D function(photoSet) { if (photoSet =
=3D=3D null) return null; var cloned
=3D zf_stdCopyFields(new zf_PhotoSet(), photoSet, zf_PhotoSet._fields); =
cloned.keywords =3D photoSet.keywords
!=3D null ? [].concat(photoSet.keywords) : null; cloned.categories =3D =
photoSet.categories !=3D null ? [].concat(photoSet.categories)
: null; cloned.image =3D zf_PhotoImage.clone(photoSet.image); =
cloned.access =3D zf_AccessInfo.clone(photoSet.access);
cloned.owner =3D zf_User.clone(photoSet.owner); cloned.pricing =3D =
zf_PricingInfo.clone(photoSet.pricing);
return cloned; }; zf_PhotoSet.prototype.postSerialize =3D function() { =
zf_Loadable.prototype.postSerialize.call(this);
for (var i =3D 0; i < this.items.length; i++) this.items[i].gallery =3D =
this; if (this.pricingKey !=3D null)
{ this.pricing =3D new zf_PricingInfo(null, this.pricingKey); =
this.pricing.isDerived =3D !!this.isPricingDerived;
} if (!this.category && this.categories && this.categories.length > 0) =
this.category =3D this.categories[0];
}; zf_PhotoSet.prototype.getHref =3D function(style) { var m =3D =
location.search.match(/(customize=3D[1|2])/);
var query =3D m ? "?" + m[0] : ""; if (style =3D=3D "external") return =
"http://" + this.owner.domainName
+ this.getBaseHref() + query; else if (style =3D=3D "edit") { return [ =
"http://", zf_defaultHost, "/",
this.owner.loginName, "/p", this.id, "/edit" ].join(""); } else return =
this.getBaseHref() + query;
}; zf_PhotoSet.prototype.getBaseHref =3D function() { if =
(this.customReference !=3D null) return "/" +
this.customReference; return "/p" + this.id; };
; function zf_PhotoMeta() { =
zf_Loadable.prototype.constructor.call(this); this.exif =3D {}; =
this.keywords
=3D []; this.categories =3D []; this.caption =3D ""; this.comments =3D =
0; this.recentComments =3D []; } zf_PhotoMeta.inherits(zf_Loadable);
zf_PhotoMeta._fields =3D [ "categories", "category", "keywords", =
"caption", "exif", "comments", "recentComments"];
zf_PhotoMeta.requests =3D new zf_RequestQueue(200); zf_PhotoMeta.urgent =
=3D new zf_RequestQueue(1, 8);
zf_PhotoMeta.prototype.postSerialize =3D function() { =
zf_Loadable.prototype.postSerialize.call(this);
this.keywords.sort(); if (this.categories.length > 0) { =
this.categories.sort(_zf_stdCategoryCompare);
this.category =3D this.categories[0]; } else this.category =3D 0; }; =
zf_PhotoMeta.prototype.load =3D
function(photo, urgent) { ; ; ; ; if (!this.requested) =
this.setRequested(); this.photo =3D photo;
var self =3D this; var oncomplete =3D function(result, error) { if =
(error !=3D null) return; var meta =3D
result; ; zf_stdCopyFields(self, meta, zf_PhotoMeta._fields); =
self._synthesize(); self.done();
}; var params =3D [ this.photo.id, this.photo.flags, this.photo.metacn, =
this.photo.token, zf_userId
]; var queue =3D urgent ? zf_PhotoMeta.urgent : zf_PhotoMeta.requests; =
queue.enqueueEx("GET", "/zf/layout/layout.asmx",
"GetPhotoMeta", params, oncomplete, photo.id); }; =
zf_PhotoMeta.prototype.bump =3D function() { if
(this.requested && !this.loaded && this.photo !=3D null) =
zf_PhotoMeta.requests.bump(this.photo.id);
}; zf_PhotoMeta.prototype._synthesize =3D function() { ; var exif; var =
photo =3D this.photo; this.exif[-1]
=3D { tag: -1, title: "Dimensions", display: photo.width + " x " + =
photo.height }; this.exif[-2] =3D {
tag: -2, title: "Original file size", display: =
zf_stdFormatByteSize(photo.fileSize) }; exif =3D this.exif[-3]
=3D { tag: -3, title: "Image type", display: "Unknown" }; switch =
(photo.fileType) { case ".gif": exif.display
=3D "GIF"; break; case ".jpg": exif.display =3D "JPEG"; break; case =
".png": exif.display =3D "PNG"; break;
case ".tif": exif.display =3D "TIFF"; break; case ".bmp": exif.display =
=3D "BMP"; break; default: break;
} if (this.exif[0x829A] !=3D null) { var ap; if (this.exif[0x829D] !=3D =
null) ap =3D this.exif[0x829D].display;
else ap =3D "f/NA"; this.exif[-4] =3D { tag: -4, title: "Exposure", =
display: zf_stdFormatString("{0} at {1}",
this.exif[0x829A].display, ap) }; } var accessType =3D =
photo.access.type; if (accessType !=3D zf_AccessType.Public)
{ exif =3D this.exif[-5] =3D { tag: -5, title: "Access Control", =
display: "" }; if (accessType =3D=3D zf_AccessType.Protected)
exif.display =3D "Members Only"; else if (accessType =3D=3D =
zf_AccessType.Password) exif.display =3D "Password";
else if (accessType =3D=3D zf_AccessType.Private) exif.display =3D =
"Private"; } var fileName =3D photo.fileName;
if (fileName !=3D null) { this.exif[-6] =3D { tag: -6, title: "File =
name", display: fileName }; } var
uploaded =3D photo.uploaded; if (uploaded !=3D null) { this.exif[-7] =3D =
{ tag: -7, title: "Date uploaded",
display: zf_stdFormatDateTime(uploaded) }; } }; =
zf_PhotoMeta.prototype.addComment =3D function(message)
{ ; ; if (message instanceof Array) { for (var k =3D 0; k < =
message.length; k++) this.addComment(message[k]);
return; } ; ; ; if (this.comments =3D=3D 0 || this.recentComments.length =
=3D=3D 0 || this.recentComments[0].index
< message.index) { this.photo.flags |=3D zf_PhotoFlags.HasComments; =
++this.comments; this.recentComments.unshift(message);
} else { var last =3D this.recentComments[0]; for (var i =3D 0; i < =
this.recentComments.length; i++)
{ if (this.recentComments[i].index =3D=3D message.index) { =
this.recentComments.splice(i, 1, message);
break; } if (i =3D=3D this.recentComments.length - 1) { =
this.recentComments.push(message); break; }
var previous =3D this.recentComments[i + 1]; if (previous.index < =
message.index) { this.recentComments.splice(i
+ 1, 0, message); break; } } } }; zf_PhotoMeta.prototype.removeComment =
=3D function(index) { ; ;
; if (this.recentComments.length > 0 && this.recentComments[0].index =
>=3D index && this.recentComments[this.recentComments.length
- 1].index <=3D index) { for (var i =3D 0; i < =
this.recentComments.length; i++) { if (this.recentComments[i].index
=3D=3D index) this.recentComments.splice(i, 1); } } --this.comments; if =
(this.comments =3D=3D 0) this.photo.flags
&=3D ~zf_PhotoFlags.HasComments; };
; function zf_Photo() { zf_Loadable.prototype.constructor.call(this); =
zf_PhotoImage.prototype.constructor.call(this);
this.priceKey =3D ""; this.isPricingDerived =3D false; this.views =3D 0; =
this.fileType =3D ".jpg"; this.fileSize
=3D 0; this.flags =3D zf_PhotoFlags.None; this.metacn =3D 0; =
this.watermarkId =3D 0; this.isWatermarkDerived
=3D false; } zf_Photo.inherits(zf_PhotoImage, zf_Loadable); =
zf_Photo._fields =3D [ "access", "gallery",
"owner", "priceKey", "photoSet", "views", "uploaded", "taken", "title", =
"fileType", "fileSize", "flags",
"metacn", "fileName", "copyright", "isPricingDerived", "pricing", =
"watermarkId", "isWatermarkDerived"
].concat(zf_PhotoImage._fields); zf_Photo.prefix =3D "p"; zf_Photo.clone =
=3D function(photo) { return zf_stdCopyFields(new
zf_Photo(), photo, zf_Photo._fields); }; zf_Photo.prototype.getHref =3D =
function(style) { var scope,
owner; if (this.photoSet !=3D null && style !=3D "gallery") { scope =3D =
this.photoSet; owner =3D scope.owner;
} else if (this.gallery !=3D null) { scope =3D this.gallery; owner =3D =
this.owner || scope.owner; } var
href =3D []; var m =3D location.search.match(/(customize=3D[1|2])/); var =
query =3D m ? "?" + m[0] : "";
if (style !=3D null && style !=3D "analytics") href.push("http://", =
owner.domainName); if (scope =3D=3D null)
{ href.push("/?photo=3D", this.id); } else if (style =3D=3D "edit") { =
href =3D [ "http://", zf_defaultHost,
"/", this.owner.loginName, "/p", this.gallery.id, "/edit#h", =
this.id.toString(16) ]; } else if (style
=3D=3D "external" || style =3D=3D "analytics") { =
href.push(scope.getBaseHref(), "/e", this.id.toString(16));
} else { href.push(scope.getBaseHref(), "/h", this.id.toString(16), =
query); } return href.join("");
}; zf_Photo.prototype.postSerialize =3D function() { this.image =3D =
this; zf_Loadable.prototype.postSerialize.call(this);
if (this.title =3D=3D null) this.title =3D ""; if (this.taken !=3D null) =
this.taken.setMinutes(this.taken.getMinutes()
+ this.taken.getTimezoneOffset()); }; zf_Photo.prototype.getMeta =3D =
function(urgent) { ; if (this._meta
=3D=3D null) { this._meta =3D new zf_PhotoMeta(); if (!this.loaded) { =
this._meta.setRequested(); var self
=3D this; this.advise(this._meta, function() { self._meta.load(self, =
urgent); }); } else { this._meta.load(this,
urgent); } } return this._meta; }; zf_Photo.prototype.pickMethod =3D =
function(width, height) { var
options =3D [ { method: zf_ProcessingMethod.StandardSmallSize, mask: 0 =
}, { method: zf_ProcessingMethod.StandardMediumSize,
mask: zf_AccessMask.ProtectMedium }, { method: =
zf_ProcessingMethod.StandardLargeSize, mask: zf_AccessMask.ProtectLarge
}, { method: zf_ProcessingMethod.StandardVeryLargeSize, mask: =
zf_AccessMask.ProtectExtraLarge }
]; var method =3D null; var previous =3D null; for (var i =3D 0; i < =
options.length; i++) { var option
=3D options[i]; if ((option.mask & this.access.mask) !=3D 0) continue; =
var size =3D this.getScaledSize(option.method);
if (size.cx > width || size.cy > height) break; if (previous && size.cx =
<=3D previous.cx && size.cy
<=3D previous.cy) break; previous =3D size; method =3D option.method; } =
return method; };
; function zfl_LabelPlugin(params) { this.params =3D params; } =
zfl_LabelPlugin.prototype.getOuterContent
=3D function(id, context) { if (this.params.title || this.params.created =
|| this.params.modified ||
this.params.visitors || this.params.count) { return ['<div =
class=3D"pv-label">', this._content(context),
'</div>'].join(""); } return ""; }; =
zfl_LabelPlugin.prototype.onCreateDom =3D function(view, outer,
inner, context, isNew) { if (isNew) return; var domLabel; var child; for =
(child =3D outer.firstChild;
child !=3D null; child =3D child.nextSibling) { if (child.className =
=3D=3D "pv-label") { domLabel =3D child;
break; } } if (domLabel) domLabel.innerHtml =3D this._cotent(context); =
}; zfl_LabelPlugin.prototype._content
=3D function(context) { var data =3D context.data; var elements =3D []; =
if (this.params.title) { elements.push('<div class=3D"title">',
zf_stdHtmlEncode(data.title), '</div>'); } var pad1 =3D [], pad2 =3D []; =
if (data instanceof zf_Folder)
{ if (this.params.count) pad1.push([ "Galleries {0}", data.galleries ], =
[ "Collections {0}", data.collections
]); if ((data.access.mask & zf_AccessMask.ProtectDateModified) =3D=3D 0) =
pad2.push([ "Modified {0}",
zf_stdFormatDate(data.modified)]); if (this.params.count) pad2.push([ =
"{0} photos", data.photos ]);
} else if (data instanceof zf_PhotoSet) { if ((data.access.mask & =
zf_AccessMask.ProtectVisits) =3D=3D
0) pad1.push([ "Visitors {0}", data.views ]); if (this.params.count) =
pad1.push(["{0} photos", data.photos
]); if ((data.access.mask & zf_AccessMask.ProtectDateCreated) =3D=3D 0) =
pad2.push([ "Created {0}", zf_stdFormatDate(data.created)
]); if ((data.access.mask & zf_AccessMask.ProtectDateModified) =3D=3D 0) =
pad2.push([ "Modified {0}",
zf_stdFormatDate(data.modified) ]); } if (pad1.length =3D=3D 0) { var =
tmp =3D pad2; pad2 =3D pad1; pad1 =3D
tmp; } var i; if (pad1.length > 0) { elements.push(pad2.length =3D=3D 0 =
? '<div class=3D"pad-0">' : '<div class=3D"pad-1">');
for (i =3D 0; i < pad1.length; i++) { elements.push( '<div class=3D"pair =
pair-color1">', zf_stdFormatString(pad1[i][0],
['<b class=3D"pair-0">', pad1[i][1], '</b>'].join("")), '</div>'); } =
elements.push('</div>'); } if
(pad2.length > 0) { elements.push('<div class=3D"pad-2">'); for (i =3D =
0; i < pad2.length; i++) { elements.push(
'<div class=3D"pair pair-color1">', zf_stdFormatString(pad2[i][0], ['<b =
class=3D"pair-0">', pad2[i][1],
'</b>'].join("")), '</div>'); } elements.push('</div>'); } return =
elements.join(""); };
; ; ; ; ; function zfl_InfoIconPlugin(params) { this.params =3D params =
!=3D null ? params : {}; } zfl_InfoIconPlugin.prototype.getOuterContent
=3D function(id, context) { if (context =3D=3D null) return ""; var data =
=3D context.data; var access =3D context.data.access;
if (!this.params.fthumb && data instanceof zf_Folder && this.params.ac) =
return this._access(access.type);
return ""; }; zfl_InfoIconPlugin.prototype.getInnerContent =3D =
function(id, context) { if (context
=3D=3D null) return ""; var data =3D context.data; var access =3D =
context.data.access; var index =3D context.index;
var elements =3D []; if (this.params.ac && (this.params.fthumb || !(data =
instanceof zf_Folder)))
elements.push(this._access(access.type)); if (this.params.type) { if =
(data instanceof zf_PhotoSet
&& data.type =3D=3D zf_PhotoSet.Gallery) elements.push('<div =
class=3D"pv-type gallery-icon"></div>');
else if (data instanceof zf_PhotoSet && data.type =3D=3D =
zf_PhotoSet.Collection) elements.push('<div class=3D"pv-type =
collection-icon"></div>');
else if (data instanceof zf_Folder && this.params.fthumb) =
elements.push('<div class=3D"pv-type folder-icon"></div>');
} if (this.params.sn && data instanceof zf_Photo && context.index !=3D =
null) elements.push('<div class=3D"pv-index">',
context.index + 1, '</div>'); return elements.join(""); }; =
zfl_InfoIconPlugin.prototype.onCreateDom
=3D function(view, outer, inner, context, isNew) { if (isNew || =
!context) return; var domAccess, domTypeIcon,
domPhotoIndex; var child; if (!this.params.fthumb && context.data =
instanceof zf_Folder) { for (child
=3D outer.firstChild; child !=3D null; child =3D child.nextSibling) { if =
(child.className !=3D null && child.className.substr(0,
6) =3D=3D "pv-ac ") { domAccess =3D child; break; } } } else { for =
(child =3D inner.firstChild; child !=3D null;
child =3D child.nextSibling) { if (child.className =3D=3D null) =
continue; if (child.className.substr(0,
6) =3D=3D "pv-ac ") domAccess =3D child; else if =
(child.className.substr(0, 10) =3D=3D "pv-type ") domtypeIcon
=3D child; else if (child.className =3D=3D "pv-index") domPhotoIndex =3D =
child; } } if (domAccess) { switch
(context.data.access) { case zf_AccessType.Public: domAccess.className =
=3D "pv-ac ac-pub"; domAccess.title
=3D ""; break; case zf_AccessType.Private: domAccess.className =3D =
"pv-ac ac-pri"; domAccess.title =3D "Private";
break; case zf_AccessType.Password: domAccess.className =3D "pv-ac =
ac-pwd"; domAccess.title =3D "Password Protected";
break; case zf_AccessType.Protected: domAccess.className =3D "pv-ac =
ac-pro"; domAccess.title =3D "tooltipProtected";
break; default: break; } } if (domTypeIcon) { if (context.data =
instanceof zf_PhotoSet && context.data.type
=3D=3D "Gallery") domTypeIcon.className =3D "pv-type gallery-icon"; else =
if (context.data instanceof zf_PhotoSet
&& context.data.type =3D=3D "Collection") domTypeIcon.className =3D =
"pv-type collection-icon"; else if
(context.data instanceof zf_Folder) domTypeIcon.className =3D "pv-type =
folder-icon"; } if (domPhotoIndex)
{ zf_stdSetText(domPhotoIndex, context.index + 1); } }; =
zfl_InfoIconPlugin.prototype._access =3D function(accessType)
{ switch (accessType) { case zf_AccessType.Public: return ''; case =
zf_AccessType.Private: return '<div class=3D"pv-ac ac-pri" =
title=3D"Private"></div>';
case zf_AccessType.Password: return '<div class=3D"pv-ac ac-pwd" =
title=3D"Password Protected"></div>';
case zf_AccessType.Protected: return '<div class=3D"pv-ac ac-pro" =
title=3D"Members Only"></div>'; default:
return ''; } };
; ; ; ; ; function zfl_DecorationPlugin(info, style, params) { this.info =
=3D info; this.style =3D style;
this.params =3D params !=3D null ? params : {}; } =
zfl_DecorationPlugin.prototype.getOuterContent =3D function(id,
context) { if (context =3D=3D null) return ""; var data =3D =
context.data; var content =3D []; if (this.info.imagePad)
content.push('<div class=3D"pv-pad"></div>'); if (data instanceof =
zf_Folder && !this.params.fthumb)
content.push('<a class=3D"pv-folder" href=3D"', data.getHref(), =
'"></a>'); return content.join("");
}; zfl_DecorationPlugin.prototype.getInnerContent =3D function(id, =
context, smap) { if (context =3D=3D null)
return ""; var data =3D context.data; var image =3D context.image; var =
method =3D context.method; var folder
=3D context.data instanceof zf_Folder; var elements =3D []; if ((!folder =
|| this.params.fthumb) && this.info.shadowSize
> 0) { var extent =3D this.info.shadowSize + this.info.borderSize; var =
size =3D null; if (!data || !image
|| smap["pv-s-1"] || smap["pv-s-2"] || smap["pv-s-3"] || =
smap["pv-s-password"] || smap["pv-s-noaccess"])
{ size =3D this._getPlaceholderSize(method, smap); } if (size =3D=3D =
null && image !=3D null) size =3D image.getScaledSize(context.method);
if (size =3D=3D null) size =3D { cx: method.cx, cy: method.cy }; var =
left =3D -extent; var top =3D -extent;
var width =3D size.cx + extent * 2; var height =3D size.cy + extent * 2; =
var shadow =3D this.info.shadowName;
var hoverShadow =3D this.info.hoverShadowName; var className; var html =
=3D ""; if (shadow !=3D null)
{ className =3D hoverShadow !=3D null ? "pv-shadow-s" : "pv-shadow"; =
this._addShadow(elements, className,
shadow, this.info.shadowSize, left, top, width, height); } if =
(hoverShadow !=3D null) { className
=3D "pv-shadow-h"; this._addShadow(elements, className, hoverShadow, =
this.info.shadowSize, left, top,
width, height); } } if (folder && !this.params.fthumb || =
this.info.borderSize > 0) elements.push('<div =
class=3D"pv-border"></div>');
if (!method.isThumb) elements.push('<div class=3D"pv-iefix"></div>'); =
return elements.join(""); };
zfl_DecorationPlugin.prototype._getPlaceholderSize =3D function(method, =
smap) { if (method =3D=3D zf_ProcessingMethod.StandardThumbnail)
return { cx: 80, cy: 53 }; if (method =3D=3D =
zf_ProcessingMethod.StandardSmallThumbnail) return { cx:
60, cy: 60 }; if (method =3D=3D =
zf_ProcessingMethod.StandardLargeThumbnail) return { cx: 120, cy: 80 };
if (method =3D=3D zf_ProcessingMethod.StandardVeryLargeThumbnail) return =
{ cx: 200, cy: 133 }; if (method
=3D=3D zf_ProcessingMethod.StandardBioPhoto) return { cx: 83, cy: 111 }; =
return null; }; zfl_DecorationPlugin.prototype.onCreateDom
=3D function(view, outer, inner, context, isNew) { if (context =3D=3D =
null) return; if (context.data instanceof
zf_Folder && !this.params.fthumb) { if (isNew) outer.className +=3D " =
folder"; return; } }; zfl_DecorationPlugin.prototype._addShadow
=3D function(sb, className, shadow, size, left, top, width, height) { if =
(width <=3D 300 && height <=3D
300) { sb.push(zfl_DecorationInfo.getShadowHtml( className, shadow, =
size, left, top, width, height));
return; } sb.push(zfl_DecorationInfo.getShadowHtml( className, shadow, =
size, left, top, width, height,
"left")); sb.push(zfl_DecorationInfo.getShadowHtml( className, shadow, =
size, left, top, width, height,
"right")); sb.push(zfl_DecorationInfo.getShadowHtml( className, shadow, =
size, left, top, width, height,
"top")); sb.push(zfl_DecorationInfo.getShadowHtml( className, shadow, =
size, left, top, width, height,
"bottom")); };
; function zfl_WaitAnimationPlugin(inner) { this._inner =3D inner; } =
zfl_WaitAnimationPlugin.prototype.getInnerContent
=3D function(id, context) { if (context =3D=3D null) return ''; if =
(context.burnable) return ''; if (!this._inner)
return ''; return '<img class=3D"pv-wait" src=3D"/zf/img/image-wait.gif" =
/>'; }; zfl_WaitAnimationPlugin.prototype.getOuterContent
=3D function(id, context) { if (context =3D=3D null) return ''; if =
(context.burnable) return ''; if (this._inner)
return ''; return '<img class=3D"pv-wait" src=3D"/zf/img/image-wait.gif" =
/>'; };
; function zfl_CensoredPlugin() { } =
zfl_CensoredPlugin.prototype.getInnerContent =3D function(id, context)
{ if (!context.data.access.isCensored) return ''; if (context.method =
=3D=3D zf_ProcessingMethod.StandardSmallThumbnail)
return ''; return '<div class=3D"pv-censored">CENSORED</div>'; };
; function zfl_PhotoOverlayPlugin() { } =
zfl_PhotoOverlayPlugin.prototype.getInnerContent =3D function(id,
context) { return '<div class=3D"pv-overlay"></div>'; };
; function zf_NoClickPlugin() { } zf_NoClickPlugin.prototype.onCreateDom =
=3D function(view, outer,
inner, context, isNew) { inner.onclick =3D zf_stdFalse; };
; ; function zfl_MailboxLink(id) { =
zfl_Control.prototype.constructor.call(this, id); } =
zfl_MailboxLink.inherits(zfl_Control);
zfl_MailboxLink.prototype.setCount =3D function(count) { var dom =3D =
this.dom("count"); if (dom) zf_stdSetText(dom,
count); }; zfl_MailboxLink.prototype._view_onclick =3D function() { if =
(this.onshow) this.onshow();
}; zfl_MailboxLink.prototype._add_onclick =3D function() { if =
(this.onadd) this.onadd(); }; zfl_MailboxLink.prototype.update
=3D function(photo, context) { ; ; if (this.current =3D=3D photo) =
return; if (this.current !=3D null) this.current.unadvise(this);
if (this.currentMeta !=3D null) this.currentMeta.unadvise(this); =
this.current =3D photo; this.currentMeta
=3D null; if (photo.loaded) { this.set(photo, context); } else { var =
self =3D this; photo.advise(this,
function() { self.set(photo, context); }); } }; =
zfl_MailboxLink.prototype.set =3D function(photo, context)
{ ; var mask =3D zf_AccessMask.NoPublicComments | =
zf_AccessMask.NoPrivateComments; var canAdd =3D (photo.access.mask
& mask) !=3D mask; if (zf_userId =3D=3D 0 && (photo.access.mask & =
zf_AccessMask.NoAnonymousComments) !=3D
0) canAdd =3D false; this.display((photo.access.mask & =
zf_AccessMask.ProtectComments) =3D=3D 0); this._showAddLink(canAdd);
if ((photo.flags & zf_PhotoFlags.HasComments) =3D=3D 0) { =
this.setCount(0); return; } var meta =3D photo.getMeta();
this.currentMeta =3D meta; if (meta.loaded) { =
this.setCount(meta.comments); } else { meta.bump();
var self =3D this; meta.advise(this, function() { =
self.setCount(meta.comments); }); } }; =
zfl_MailboxLink.prototype._showAddLink
=3D function(show) { var link =3D this.dom("add"); if (link) { =
zf_stdReplaceClassName(link, show ? "none"
: null, show ? null : "none"); } }; zfl_MailboxLink.prototype.refresh =
=3D function() { if (this.current
&& this.current.loaded) this.set(this.current); };
; function zf_Analytics(propertyId) { this._queue =3D []; this._tracker =
=3D null; this._retries =3D 0;
if (propertyId !=3D null && propertyId.length > 0) { this._propertyId =
=3D propertyId; zf_stdDeferCall(null,
this._init, this); } } zf_Analytics._MAX_RETRIES =3D 20; =
zf_Analytics.prototype.trackPageView =3D function(path)
{ if (this._propertyId =3D=3D null) return; ; if (this._tracker !=3D =
null) { ; zf_stdDeferCall(null, this._trackPageView,
this, path); } else { ; this._queue.push(path); } }; =
zf_Analytics.prototype.getPropertyId =3D function()
{ return this._propertyId; }; zf_Analytics.prototype._init =3D =
function() { ; ; var gaScript =3D (("https:"
=3D=3D document.location.protocol) ? "https://ssl." : "http://www.") + =
"google-analytics.com/ga.js";
var script =3D document.createElement("SCRIPT"); script.type =3D =
"text/javascript"; script.src =3D gaScript;
document.body.appendChild(script); script =3D null; var self =3D this; =
setTimeout(function() { self._waitForTracker();
}, 500); ; }; zf_Analytics.prototype._waitForTracker =3D function() { ; =
this._retries++; if (typeof(_gat)
=3D=3D "undefined" || _gat =3D=3D null || typeof(_gat._getTracker) !=3D =
"function") { ; if (this._retries
>=3D zf_Analytics._MAX_RETRIES) { this._propertyId =3D null; =
this._tracker =3D null; ; return; } var self
=3D this; setTimeout(function() { self._waitForTracker(); }, 500); =
return; } ; try { this._tracker
=3D _gat._getTracker(this._propertyId); } catch (e) { this._propertyId =
=3D null; this._tracker =3D null;
; return; } if (typeof(this._tracker._trackPageview) !=3D "function") { =
this._propertyId =3D null;
this._tracker =3D null; ; return; } ; ; while (this._queue.length > 0) =
this._trackPageView(this._queue.shift());
}; zf_Analytics.prototype._trackPageView =3D function(path) { try { =
this._tracker._trackPageview(path);
} catch(e) { ; } };
; ; function zfl_Analytics(isPhotoPage, gaWebPropertyId, layoutStat) { =
this._isPhotoPage =3D isPhotoPage;
this._layoutStat =3D layoutStat; =
zf_Analytics.prototype.constructor.call(this, gaWebPropertyId);
zf_stdMakeMethodsDeferred(this, "Analytics", [ "registerLayoutLoad", =
"registerLightsDimmed" ]); }
zfl_Analytics.inherits(zf_Analytics); =
zfl_Analytics.prototype.registerNonPhotoVisit =3D function()
{ if (this._isPhotoPage) return; ; if (this.getPropertyId() !=3D null) =
this.trackPageView(null); };
zfl_Analytics.prototype.registerPhotoVisit =3D function(photo) { ; var =
path =3D photo.getHref("analytics");
; if (this.getPropertyId() !=3D null) this.trackPageView(path); }; =
zfl_Analytics.prototype.update =3D
function(photo) { ; ; if (this.current !=3D null) =
this.current.unadvise(photo); this.current =3D photo;
if (photo.loaded) { this.registerPhotoVisit(photo); } else { var self =
=3D this; photo.advise(this,
function() { self.registerPhotoVisit(photo); }); } }; =
zfl_Analytics.prototype.registerLayoutLoad
=3D function (flipper) { if (this._layoutStat && flipper) { var oldDim =
=3D { cx: zf_stdGetClientWidth(),
cy: zf_stdGetClientHeight() }; var invoker =3D new =
zf_DelayedInvoke(3000); zf_stdAttachEvent(window,
"resize", flipper.eventHandler(zfl_Analytics._resizeHandler, this, =
flipper, oldDim, invoker));
this._sendLayoutStats(flipper, false); } }; =
zfl_Analytics.prototype.registerLightsDimmed =3D function(flipper)
{ if (this._layoutStat) this._sendLayoutStats(flipper, false, =
"dimlights"); }; zfl_Analytics._resizeHandler
=3D function(eventArgs, analytics, flipper, oldDimensions, delay) { if =
(oldDimensions.cx =3D=3D zf_stdGetClientWidth()
&& oldDimensions.cy =3D=3D zf_stdGetClientHeight()) return; =
delay.invoke(function() { analytics._sendLayoutStats(flipper,
true); }); }; zfl_Analytics.prototype._sendLayoutStats =3D =
function(flipper, isResample, layoutName)
{ var size =3D flipper ? flipper.getAvailSize() : { cx: 0, cy: 0 }; var =
stats =3D { screenWidth: screen.width,
screenHeight: screen.height, clientWidth: zf_stdGetClientWidth(), =
clientHeight: zf_stdGetClientHeight(),
photoViewportWidth: size.cx, photoViewportHeight: size.cy, theme: =
this._layoutStat.themeName, layout:
layoutName ? layoutName : this._layoutStat.layoutName, photoSetId: =
this._layoutStat.photoSetId,
ownerId: this._layoutStat.ownerId, isResample: isResample }; =
zf_stdServerRequest("POST", "/zf/layout/layout.asmx",
"ReportClientStatistics", [stats]); };
; ; function zfl_Mat(id) { zfl_Control.prototype.constructor.call(this, =
id); } zfl_Mat.inherits(zfl_Control);
zfl_Mat.current =3D null; zfl_Mat.recalc =3D function() { };
; ; function zfl_Layout(id, global, local) { =
zfl_Control.prototype.constructor.call(this, id);
this.header =3D global.header; this.footer =3D global.footer; =
this.customizer =3D global.customizer;
this.administrator =3D global.administrator; this._decorations =3D =
zfl_stdTransformResponse(global.decorations,
"decorations"); this._columns =3D local.columns; var self =3D this; =
zf_stdAttachEvent(window, "DOMContentLoaded",
this.eventHandler(this._window_onload, "DOMContentLoaded")); =
zf_stdAttachEvent(window, "load",
this.eventHandler(this._window_onload, "window.onload")); =
zf_stdAttachEvent(window, "resize", =
this.eventHandler(this._window_onresize));
this._feeds =3D local.feeds; var ontoggle =3D function(expanded) { =
self._bin_ontoggle(this, expanded);
}; var onfeeds =3D function(origin) { self._bin_onfeeds(this, origin); =
}; this._bins =3D {}; for (var
key in local.bins) { var bin =3D local.bins[key]; if (bin =3D=3D null) =
continue; this._bins[key] =3D bin;
bin.ontoggle =3D ontoggle; bin.onfeeds =3D onfeeds; } this._grids =3D =
local.grids; this._pairs =3D local.pairs;
if (local.analytics) local.analytics.registerNonPhotoVisit(); } =
zfl_Layout.inherits(zfl_Control);
zfl_Layout.prototype.recalc =3D function(deferred) { if (!this.__loaded) =
{ ; return; } if (deferred)
{ zf_stdDeferCall(this.id + ".recalc", this.recalc, this); return; } if =
(this.__recalc_running)
{ ; return; } this.__recalc_running =3D true; var start =3D new Date(); =
this.onrecalc(); zfl_Mat.recalc();
; this.__recalc_running =3D false; }; =
zfl_Layout.prototype._window_onresize =3D function() { ; =
this.recalc(true);
}; zfl_Layout.prototype._window_onload =3D function(e, source) { if =
(this.__loaded) { ; return; }
this.__loaded =3D true; ; var start; start =3D new Date().getTime(); =
this.onload(); ; this.recalc();
}; zfl_Layout.prototype.onload =3D function() { if (this.footer) =
this.footer.visibility(true); };
zfl_Layout.prototype.onrecalc =3D function() { var domSelf =3D =
this.dom(); var domTrailer =3D this.dom("trailer");
var cyWindow =3D zf_stdGetClientHeight(); cyWindow =3D Math.max(300, =
cyWindow); var cyCustomizer =3D this.__cyCustomizer;
if (cyCustomizer =3D=3D null) { cyCustomizer =3D this.__cyCustomizer =3D =
(this.customizer =3D=3D null) ? 0 :
(zf_stdGetHeightOverall(this.customizer.dom()) + 10); } var cyHeader =3D =
this.__cyHeader; if (cyHeader
=3D=3D null) { cyHeader =3D this.__cyHeader =3D (this.header =3D=3D =
null) ? 0 : zf_stdGetHeightOverall(this.header.dom());
} var cyFooter =3D this.__cyFooter; if (cyFooter =3D=3D null) { cyFooter =
=3D this.__cyFooter =3D (this.footer
=3D=3D null) ? 0 : zf_stdGetHeightOverall(this.footer.dom()); } var =
cyPaddingTop =3D this.__cyPaddingTop;
var cyPaddingBottom =3D this.__cyPaddingBottom; if (cyPaddingTop =3D=3D =
null) { cyPaddingTop =3D this.__cyPaddingTop
=3D zf_stdGetHeightAbove(domSelf); cyPaddingBottom =3D =
this.__cyPaddingBottom =3D zf_stdGetHeightBelow(domSelf);
} var cyTaken =3D cyCustomizer + cyHeader + cyPaddingBottom + cyFooter; =
var cyLeft =3D cyWindow - cyTaken;
var cyColumns =3D 0; var columns =3D [], column; for (var key in =
this._columns) { column =3D this._columns[key];
column.updateDependencies(); var cyFixed =3D column.getFixedHeight(); =
var cyMin =3D column.waterlineId
!=3D null ? column.getMinHeight() : cyFixed; var cyOffset =3D =
zf_stdGetOffset(column.dom(), domSelf).cy;
cyFixed +=3D cyOffset; cyMin +=3D cyOffset; if (cyFixed > cyColumns) =
cyColumns =3D cyFixed; if (column.stretcherId)
{ columns.push(column); column.__minHeight =3D cyMin; =
column.__fixedHeight =3D cyFixed; } ; } if (this.cyMinFooter
&& cyFooter !=3D 0) { cyLeft +=3D cyFooter - this.cyMinFooter; cyFooter =
=3D this.cyMinFooter; } var maxColumn
=3D cyLeft; if (!this.keepFooter && cyColumns > cyLeft) { if (cyColumns =
< cyLeft + cyFooter) maxColumn
=3D cyColumns; else maxColumn =3D cyLeft + cyFooter; } ; var overStretch =
=3D 0; for (var i =3D 0; i < columns.length;
i++) { column =3D columns[i]; var actualStretch; var desiredStretch; if =
(column.__minHeight < maxColumn)
desiredStretch =3D maxColumn - column.__minHeight; else desiredStretch =
=3D 0; actualStretch =3D column.stretch(desiredStretch);
; column.__actualStretch =3D actualStretch; if (actualStretch + =
column.__fixedHeight > maxColumn)
{ var maxColumn2 =3D actualStretch + column.__fixedHeight; if =
(maxColumn2 < cyLeft + cyFooter) maxColumn2
=3D actualStretch + column.__fixedHeight; else maxColumn2 =3D cyLeft + =
cyFooter; if (maxColumn2 !=3D maxColumn)
{ maxColumn =3D maxColumn2; for (var j =3D 0; j < i; j++) { if =
(columns[j].__actualStretch + columns[j].__fixedHeight
< maxColumn) { var updatedStretch =3D maxColumn - =
columns[j].__fixedHeight; columns[j].stretch(updatedStretch);
; } } } } } var cyLayout =3D cyCustomizer + cyHeader + cyFooter + =
zf_stdGetHeightOverall(domSelf)
- domTrailer.clientHeight; var cyTrailer =3D 0; if (cyLayout < cyWindow) =
cyTrailer =3D cyWindow - cyLayout;
if (cyTrailer !=3D domTrailer.clientHeight) domTrailer.style.height =3D =
cyTrailer + "px"; ; }; zfl_Layout.prototype.initGrid
=3D function(grid, style, params, objects, size) { if (!grid) return; if =
(!params) params =3D {}; if
(params.method =3D=3D "auto1" || params.method =3D=3D null) { =
params.method =3D (screen.width <=3D 1024) ?
zf_ProcessingMethod.StandardThumbnail : =
zf_ProcessingMethod.StandardLargeThumbnail; } else if (params.method
=3D=3D "auto2") { params.method =3D (screen.width < 1600) ? =
zf_ProcessingMethod.StandardLargeThumbnail
: zf_ProcessingMethod.StandardVeryLargeThumbnail; } else if =
(params.method =3D=3D "auto3") { params.method
=3D (screen.width <=3D 1024) ? zf_ProcessingMethod.StandardThumbnail : =
((screen.width < 1600) ? zf_ProcessingMethod.StandardLargeThumbnail
: zf_ProcessingMethod.StandardVeryLargeThumbnail); } for (var name in =
zf_ProcessingMethod) { if (zf_ProcessingMethod[name].code
=3D=3D params.method) { params.method =3D zf_ProcessingMethod[name]; =
break; } } ; var method =3D params.method;
grid.__zfl_params =3D params; var decor =3D =
this._getDecorationInfo(style, method); var dom =3D =
document.getElementById(grid.id);
var classNames =3D dom.className.split(" "); if (decor !=3D null && =
decor.className !=3D null) classNames
=3D classNames.concat(decor.className.split(" ")); var suffixedNames =3D =
[]; for (var c =3D 0; c < classNames.length;
c++) { if (classNames[c] =3D=3D "pg-empty") continue; =
suffixedNames.push(classNames[c] + "-method-" +
method.code); } classNames =3D classNames.concat(suffixedNames); =
dom.className =3D classNames.join(" ");
dom =3D null; grid.init(this._createPlugins(style, decor, params)); if =
(objects) { var self =3D this;
if (objects instanceof Array) { grid.setSize(objects.length); =
grid.onqueryitem =3D function(index)
{ self.setGridItem(grid, index, objects[index]); }; } else if (objects =
instanceof Function) { ;
grid.setSize(size); grid.onqueryitem =3D function(index) { =
self.setGridItem(grid, index, objects(index));
}; } } }; zfl_Layout.prototype.setGridItem =3D function(grid, index, =
object) { ; ; ; var self =3D this;
if (!object.loaded) { object.advise(grid, function() { =
self.setGridItem(grid, index, object); });
return; } var image =3D object.image; if (!image) image =3D new =
zf_BasicImage((object instanceof zf_Folder)
? -2 : -1); if (object.access.type =3D=3D zf_AccessType.Private) { if =
(object instanceof zf_Folder ||
object instanceof zf_PhotoSet) image =3D new zf_BasicImage(-3); } var id =
=3D object.id; if (object.constructor.prefix)
id =3D object.constructor.prefix + id; var styles =3D []; var method =3D =
grid.__zfl_params.method; if (object
instanceof zf_Folder && !grid.__zfl_params.fthumb) { if (method =3D=3D =
zf_ProcessingMethod.StandardLargeThumbnail)
method =3D zf_ProcessingMethod.StandardThumbnail; else if (method =3D=3D =
zf_ProcessingMethod.StandardVeryLargeThumbnail)
method =3D zf_ProcessingMethod.StandardLargeThumbnail; } var href =3D =
null; if (object.getHref) href
=3D object.getHref(); var burnable =3D false; var access =3D =
image.access; if (access) { var nocheck =3D this.administrator
|| access.ownerId =3D=3D zf_userId; var locked =3D !nocheck && =
access.type =3D=3D zf_AccessType.Password &&
!zfl_PasswordManager.unlocked[image.access.realmId]; var noaccess =3D =
!nocheck && (access.type =3D=3D zf_AccessType.Private
|| access.isCensored); var accessible =3D nocheck || access.type =3D=3D =
zf_AccessType.Public || access.type
=3D=3D zf_AccessType.Password && !locked; var generated =3D image.flags =
!=3D null && (method =3D=3D zf_ProcessingMethod.StandardThumbnail
&& (image.flags & zf_PhotoFlags.HasImage0) !=3D 0 || method =3D=3D =
zf_ProcessingMethod.StandardSmallThumbnail
&& (image.flags & zf_PhotoFlags.HasImage1) !=3D 0 || method =3D=3D =
zf_ProcessingMethod.StandardLargeThumbnail
&& (image.flags & zf_PhotoFlags.HasImage10) !=3D 0 || method =3D=3D =
zf_ProcessingMethod.StandardVeryLargeThumbnail
&& (image.flags & zf_PhotoFlags.HasImage11) !=3D 0); burnable =3D =
generated && (locked || noaccess ||
accessible); if (locked) { zfl_PasswordManager.subscribe( =
image.access.realmId, function() { self.setGridItem(grid,
index, object); }); image =3D new zf_BasicImage(-4); =
styles.push("pv-s-password"); } if (noaccess)
{ image =3D new zf_BasicImage(-5); styles.push("pv-s-noaccess"); } } ; =
var context =3D { data: object,
method: method, index: index, image: image, burnable: burnable }; =
grid.setItem(index, id, href, image,
method, burnable, styles, context); }; =
zfl_Layout.prototype._getDecorationInfo =3D function(style,
method) { if (this._decorations =3D=3D null) return null; var info; if =
(method !=3D null) { info =3D this._decorations[style
+ "." + method.code]; if (info !=3D null) return info; } info =3D =
this._decorations[style]; if (info !=3D
null) return info; info =3D this._decorations["default"]; if (info !=3D =
null) return info; return null;
}; zfl_Layout.prototype._createPlugins =3D function(style, decor, =
params) { var plugins =3D []; if (decor
!=3D null) plugins.push(new zfl_DecorationPlugin(decor, style, params)); =
if (style =3D=3D zfl_PhotoViewStyle.FolderElement
|| style =3D=3D zfl_PhotoViewStyle.GalleryPhoto) { plugins.push(new =
zfl_LabelPlugin(params)); } plugins.push(new
zfl_InfoIconPlugin(params)); plugins.push(new zfl_CensoredPlugin()); =
plugins.push(new zfl_WaitAnimationPlugin(true));
if (style =3D=3D zfl_PhotoViewStyle.PhotoNavList) plugins.push(new =
zf_NoClickPlugin()); if (style =3D=3D zfl_PhotoViewStyle.CurrentPhoto
|| style =3D=3D zfl_PhotoViewStyle.DimLights || style =3D=3D =
zfl_PhotoViewStyle.Slideshow || style =3D=3D =
zfl_PhotoViewStyle.CommentBrowser)
plugins.push(new zfl_PhotoOverlayPlugin()); return plugins; }; =
zfl_Layout.formatDecorationClasses
=3D function(baseClass, decoration, method) { var classes =3D []; if =
(baseClass) classes.push(baseClass,
' ', baseClass, '-method-', method.code); if (decoration && =
decoration.className) { var decorClasses
=3D decoration.className.split(' '); for (var i =3D 0; i < =
decorClasses.length; i++) { if (classes.length
> 0) classes.push(' '); classes.push(decorClasses[i], ' ', =
decorClasses[i], '-method-', method.code);
} } return classes.join(""); }; zfl_Layout.prototype._bin_ontoggle =3D =
function(bin, expanded) {
; this.recalc(); }; zfl_Layout.prototype._bin_onfeeds =3D function(bin, =
origin) { if (this._feeds
!=3D null) this._feeds.show(origin); }; =
zfl_Layout.prototype.setupGuestbook =3D function(global, local)
{ var guestbook =3D local.guestbook; if (!guestbook) return; =
guestbook.onresize =3D this.closure(this.recalc);
var header =3D global.header; if (header) guestbook.onlogin =3D =
header.closure(header.login); var bin
=3D local.bins.guestbook; ; var link =3D local.mailboxLink; if (link) { =
link.onshow =3D function() {
if (!bin.expanded) bin.toggle(); location.href =3D "#guestbook"; }; =
link.onadd =3D function() { if (!bin.expanded)
bin.toggle(); guestbook.add(); location.href =3D "#guestbook"; }; } var =
countFormat =3D zf_stdHtmlEncode("{0} entries");
guestbook.oncountchange =3D function(count) { if (link) =
link.setCount(count); bin.setTitleSuffix(zf_stdFormatString(countFormat,
count)); }; bin.setTitleSuffix(zf_stdFormatString(countFormat, =
guestbook.getCount())); };
; ; ; ; var zf_MailboxType =3D { FolderGuestbook: 2, PhtoSetGuestbook: =
1, PhotoComments: 0 }; function
zf_Mailbox(ownerIdOrMessage, type, id) { if (arguments.length =3D=3D 1) =
{ var message =3D ownerIdOrMessage;
; ; this.ownerId =3D message.owner.id; this.type =3D =
message.mailboxType; this.id =3D message.mailboxId;
} else if (arguments.length =3D=3D 3) { this.ownerId =3D =
ownerIdOrMessage; this.type =3D type; this.id =3D id;
} } zf_Mailbox.prototype.equals =3D function(obj) { if (obj =3D=3D null =
|| !(obj instanceof zf_Mailbox))
return false; return this.ownerId =3D=3D obj.ownerId && this.type =3D=3D =
obj.type && this.id =3D=3D obj.id; };
; function zf_MailboxAuthorization(mailbox) { this._mailbox =3D mailbox; =
this._retrieveToken(); var
self =3D this; this._timer =3D setInterval(function() { =
self._retrieveToken(); }, 3600 * 1000); } =
zf_MailboxAuthorization.prototype.dispose
=3D function() { clearInterval(this._timer); this._timer =3D null; }; =
zf_MailboxAuthorization.prototype.delayPost
=3D function(callback) { var self =3D this; var count =3D 0; var wait =
=3D function() { if (self._token =3D=3D
null) { if (self._timestamp !=3D null || count >=3D 60) callback(null); =
else setTimeout(wait, 500);
++count; } else { ; ; var offset =3D new Date().getTime() - =
self._timestamp.getTime(); if (offset
< 5000) setTimeout(function() { callback(self._token); }, 5000 - =
offset); else callback(self._token);
} }; wait(); }; zf_MailboxAuthorization.prototype._retrieveToken =3D =
function() { var self =3D this;
zf_Message.prePostMessage(this._mailbox, function(token, error) { =
self._timestamp =3D new Date();
if (error !=3D null) return; self._token =3D token; }); };
; var zf_AttachmentType =3D { None: 0, CroppingSuggestion: 1, =
HighlightedArea: 2 }; var zf_MessageFlags
=3D { None: 0x00, CanEdit: 0x01, CanDelete: 0x02, CanCensor: 0x04, =
CanUndelete: 0x08, CanUncensor:
0x10, CanShowInfo: 0x20, CanEmail: 0x40, CanPurge: 0x80, ControlMask: =
0x1F }; function zf_Message()
{ zf_Loadable.prototype.constructor.call(this); this.attachmentType =3D =
zf_AttachmentType.None; this.flags
=3D zf_MessageFlags.None; } zf_Message.inherits(zf_Loadable); =
zf_Message._fields =3D [ "mailbox", "index",
"poster", "posterName", "posterEmail", "posterUrl", "postedOn", "body", =
"attachment", "attachmentType",
"isPrivate", "isDeleted", "isCensored", "flags", "postedFrom", =
"isEdited", "editedOn", "editedFrom",
"editor", "censoredOn", "censoredFrom", "censorer", "deletedOn", =
"deletedFrom", "deletor" ]; zf_Message.prototype.postSerialize
=3D function() { zf_Loadable.prototype.postSerialize.call(this); if =
(this.poster) { this.posterName
=3D this.poster.displayName; if (this.posterUrl =3D=3D null) =
this.posterUrl =3D "http://" + this.poster.domainName;
} }; zf_Message.prePostMessage =3D function(mailbox, oncomplete) { ; ; ; =
; var params =3D [ mailbox ];
zf_stdServerRequestEx("POST", "/zf/layout/message.asmx", =
"PrePostMessage", params, oncomplete);
}; zf_Message.postMessage =3D function(auth, mailbox, updater, =
oncomplete) { ; ; ; ; ; ; auth.delayPost(
function(token) { zf_stdServerRequestEx("POST", =
"/zf/layout/message.asmx", "PostMessage", [ token,
mailbox, updater ], oncomplete); auth.dispose(); }); }; =
zf_Message.updateMessage =3D function(auth,
mailbox, index, updater, oncomplete) { ; ; ; ; ; ; auth.delayPost( =
function(token) { zf_stdServerRequestEx("POST",
"/zf/layout/message.asmx", "UpdateMessage", [ token, mailbox, index, =
updater ], oncomplete); auth.dispose();
}); }; zf_Message.loadMessageRange =3D function(mailbox, mailboxToken, =
first, count, oncomplete) {
; ; ; ; ; var params =3D [ mailbox, mailboxToken, first, count ]; =
zf_stdServerRequestEx("GET", "/zf/layout/message.asmx",
"LoadMessageRange", params, oncomplete); }; zf_Message._bake =3D =
function(method) { return function(mailbox,
index, oncomplete) { ; ; ; ; var params =3D [ mailbox, index ]; =
zf_stdServerRequestEx("POST", "/zf/layout/message.asmx",
method, params, oncomplete); }; }; zf_Message.deleteMessage =3D =
zf_Message._bake("DeleteMessage");
zf_Message.undeleteMessage =3D zf_Message._bake("UndeleteMessage"); =
zf_Message.censorMessage =3D zf_Message._bake("CensorMessage");
zf_Message.uncensorMessage =3D zf_Message._bake("UncensorMessage"); =
zf_Message.purgeMessage =3D zf_Message._bake("PurgeMessage");
; ; function zfl_MessageView(id, message) { =
zfl_Control.prototype.constructor.call(this, id); if
(message !=3D null) { this._message =3D message; this._mailbox =3D =
message.mailbox; this._index =3D message.index;
if (message.posterUrl) { var posterLink =3D this.dom("poster-link"); if =
(posterLink) posterLink.href
=3D message.posterUrl; } } else { var postedOn =3D =
this.dom().getAttribute("zf:posted", 2); if (postedOn)
{ postedOn =3D zf_stdParseDateTimeUTC(postedOn); =
zf_stdSetText(this.dom("posted"), zf_stdFormatDateTimeEx(postedOn));
} } var self =3D this; var subscribe =3D function(name, ask) { var dom =
=3D self.dom(name); if (dom !=3D null)
{ var handler =3D "on" + name; dom.onclick =3D function() { if (ask && =
!confirm("Do you really want to perform this action?"))
return; if (self[handler]) self[handler](self.getMessage()); }; } }; =
subscribe("edit"); subscribe("email");
subscribe("delete"); subscribe("undelete"); subscribe("censor"); =
subscribe("uncensor"); subscribe("purge",
true); this._attachmentVisible =3D false; var link =3D =
this.dom("attachment-link"); if (link) { link.onclick
=3D function() { if (self.onattachment) self.onattachment(self._message, =
!self._attachmentVisible);
}; } } zfl_MessageView.inherits(zfl_Control); =
zfl_MessageView.prototype.getMessage =3D function()
{ if (this._message) return this._message; var message =3D new =
zf_Message(); message.mailbox =3D this.getMailbox();
message.index =3D this.getIndex(); message.posterName =3D =
zf_stdGetText(this.dom("poster-name")); var
posterId =3D this.dom().getAttribute("zf:poster", 2); if (posterId) { =
message.poster =3D new zf_User();
message.poster.id =3D parseInt(posterId); message.poster.displayName =3D =
message.posterName; ; } var
posterEmail =3D this.dom().getAttribute("zf:email"); if (posterEmail && =
posterEmail.length > 0) message.posterEmail
=3D posterEmail; var posterLink =3D this.dom("poster-link"); if =
(posterLink && posterLink.tagName =3D=3D "A")
{ message.posterUrl =3D posterLink.href; } else { message.posterUrl =3D =
""; } var postedOn =3D this.dom().getAttribute("zf:posted",
2); message.postedOn =3D zf_stdParseDateTimeUTC(postedOn); var bodyNode =
=3D this.dom("body"); message.body
=3D ""; if (bodyNode !=3D null) { message.body =3D bodyNode.innerHTML; =
message.body =3D message.body.replace(/(^\s*)|(\s*$)/g,
""); } this._message =3D message; return message; }; =
zfl_MessageView.prototype.getMailbox =3D function()
{ if (this._mailbox) return this._mailbox; var raw =3D =
this.dom().getAttribute("zf:mailbox", 2);
; var parts =3D raw.split(':'); ; var mailbox =3D new zf_Mailbox(); =
mailbox.ownerId =3D parseInt(parts[0]);
; mailbox.type =3D parseInt(parts[1]); ; mailbox.id =3D =
parseInt(parts[2]); ; this._mailbox =3D mailbox;
return mailbox; }; zfl_MessageView.prototype.getIndex =3D function() { =
if (this._index !=3D null) return this._index;
var raw =3D this.dom().getAttribute("zf:index", 2); ; var index =3D =
parseInt(raw); ; this._index =3D index;
return index; }; zfl_MessageView.createHeaderHtml =3D function(id, =
message) { var self =3D message.poster
&& message.poster.id =3D=3D zf_userId; var poster =3D ['<span =
class=3D"mv-poster-name ', self ? "mv-color3"
: "mv-color2", '">', zf_stdHtmlEncode(message.posterName), '</span>']; =
if (message.posterUrl) poster.push(
'<a id=3D"', id, '-poster-link" class=3D"mv-poster-link" =
target=3D"_blank" title=3D"Visit Web site">',
'</a>'); if (message.poster =3D=3D null) poster.push('<span =
class=3D"mv-unregistered mv-color4">(non-registered)</span>');
if (message.isPrivate) poster.push('<span class=3D"mv-private =
mv-color4"><span class=3D"mv-private-icon"></span>',
'private', '</span>'); poster =3D poster.join(""); return [ '<div =
class=3D"mv-header mv-font2">', '<div class=3D"mv-date mv-color4">',
zf_stdFormatDateTimeEx(message.postedOn), '</div>', '<div =
class=3D"mv-title">', '<span class=3D"mv-index">',
message.index + 1, '.</span>', '<span class=3D"mv-poster">', poster, =
'</span>', '</div>', '</div>'
].join(""); }; zfl_MessageView._createInfoHtml =3D function(id, message) =
{ if ((message.flags & zf_MessageFlags.CanShowInfo)
=3D=3D 0) return ""; var formatValue =3D function(v) { return '<span =
class=3D"mv-color3">' + v + '</span>';
}; var formatUser =3D function(u) { return u ? u.loginName : =
"anonymous"; }; var content =3D []; content.push('<div class=3D"mv-info =
mv-font3 mv-color4">');
content.push( '<div>', zf_stdFormatString("Posted by {0} on {1} from =
{2}", formatValue(formatUser(message.poster)),
formatValue(zf_stdFormatDateTime(message.postedOn, true)), =
formatValue(message.postedFrom)), '</div>');
if (message.isEdited) { content.push( '<div>', =
zf_stdFormatString("Edited by {0} on {1} from {2}",
formatValue(formatUser(message.editor)), =
formatValue(zf_stdFormatDateTime(message.editedOn, true)),
formatValue(message.editedFrom)), '</div>'); } if (message.isCensored) { =
content.push( '<div>',
zf_stdFormatString("Censored by {0} on {1} from {2}", =
formatValue(formatUser(message.censorer)),
formatValue(zf_stdFormatDateTime(message.censoredOn, true)), =
formatValue(message.censoredFrom)),
'</div>'); } if (message.isDeleted) { content.push( '<div>', =
zf_stdFormatString("Deleted by {0} on {1} from {2}",
formatValue(formatUser(message.deletor)), =
formatValue(zf_stdFormatDateTime(message.deletedOn, true)),
formatValue(message.deletedFrom)), '</div>'); } content.push('</div>'); =
return content.join("");
}; zfl_MessageView.createHtml =3D function(id, message) { var censored =
=3D ""; if (message.isCensored
&& !message.isDeleted) censored =3D '<div class=3D"mv-censored">Censored =
by Administrator</div>'; var
content =3D []; if (message.body) content.push('<div class=3D"mv-content =
mv-body mv-font1 mv-color1">',
message.body, '</div>'); if (message.isDeleted) content.push('<div =
class=3D"mv-content mv-deleted mv-font3 mv-color4">',
'Deleted.', '</div>'); content =3D content.join(""); var controls =3D =
""; if (message.flags & zf_MessageFlags.ControlMask)
{ controls =3D ['<div class=3D"mv-controls mv-font3">']; var first =3D =
true; var addLink =3D function(flag,
linkId, label) { if ((message.flags & flag) =3D=3D 0) return; if =
(!first) controls.push('<span class=3D"mv-control-separator">|</span>');
controls.push( '<a class=3D"mv-control" href=3D"javascript:;" id=3D"', =
id, linkId, '">', label, '</a>');
first =3D false; }; addLink(zf_MessageFlags.CanEdit, "-edit", "Edit"); =
addLink(zf_MessageFlags.CanEmail,
"-email", "Reply via E-mail"); addLink(zf_MessageFlags.CanDelete, =
"-delete", "Delete"); addLink(zf_MessageFlags.CanUndelete,
"-undelete", "Undelete"); addLink(zf_MessageFlags.CanCensor, "-censor", =
"Censor"); addLink(zf_MessageFlags.CanUncensor,
"-uncensor", "Uncensor"); addLink(zf_MessageFlags.CanPurge, "-purge", =
"Purge"); controls.push('</div>');
controls =3D controls.join(""); } var attachment =3D ""; if =
(message.attachmentType =3D=3D zf_AttachmentType.CroppingSuggestion)
{ attachment =3D ['<div class=3D"mv-attachment mv-attachment-crop =
mv-font3">', '<div class=3D"icon"></div>',
'<a id=3D"', id, '-attachment-link" href=3D"javascript:;">', 'View =
Suggested Cropping', '</a>', '</div>'].join("");
} else if (message.attachmentType =3D=3D =
zf_AttachmentType.HighlightedArea) { attachment =3D ['<div =
class=3D"mv-attachment mv-attachment-area mv-font3">',
'<div class=3D"icon"></div>', '<a id=3D"', id, '-attachment-link" =
href=3D"javascript:;">', 'View Highlighted Area',
'</a>', '</div>'].join(""); } var footer =3D ""; if (controls.length > 0 =
|| attachment.length > 0)
{ footer =3D ['<div class=3D"mv-footer">', controls, attachment, =
'</div>']; footer =3D footer.join("");
} return [ '<div class=3D"mv', message.isDeleted ? ' mv-s-deleted' : '', =
' mv-bgcolor1" id=3D"', id, '">',
zfl_MessageView.createHeaderHtml(id, message), censored, =
zfl_MessageView._createInfoHtml(id, message),
content, footer, '</div>' ].join(""); }; =
zfl_MessageView.prototype.setAttachmentVisible =3D function(visible)
{ if (this._attachmentVisible =3D=3D visible) return; =
this._attachmentVisible =3D visible; if (this._message.attachmentType
=3D=3D zf_AttachmentType.CroppingSuggestion) { =
zf_stdSetText(this.dom("attachment-link"), visible ?
"Hide Suggested Cropping" : "View Suggested Cropping"); } else if =
(this._message.attachmentType
=3D=3D zf_AttachmentType.HighlightedArea) { =
zf_stdSetText(this.dom("attachment-link"), visible ? "Hide Highlighted =
Area"
: "View Highlighted Area"); } };
; function zf_ScrollBar(id, cyLine) { =
zf_Control.prototype.constructor.call(this, id); this._cyLine
=3D cyLine; this.update =3D zf_stdMakeDeferred(id + ".ScrollBar.update", =
this._update); this.update();
} zf_ScrollBar.inherits(zf_Control); zf_ScrollBar.prototype.close =3D =
function() { this._isClosed
=3D true; }; zf_ScrollBar.prototype._update =3D function() { if =
(this._isClosed) return; var scrollNode
=3D this.dom().parentNode; this._outerHeight =3D =
scrollNode.offsetHeight; this._innerHeight =3D scrollNode.scrollHeight;
if (this._outerHeight + scrollNode.scrollTop > this._innerHeight) =
scrollNode.scrollTop =3D Math.max(0,
this._innerHeight - this._outerHeight); var show =3D this._innerHeight > =
this._outerHeight; this._show(show);
this._outerHeight =3D scrollNode.offsetHeight; this._innerHeight =3D =
scrollNode.scrollHeight; if (show
&& this._nodesCreated) this._scrollTo(); }; =
zf_ScrollBar.prototype.getLineHeight =3D function() {
return this._cyLine; }; zf_ScrollBar.prototype.getScrollPos =3D =
function() { return this.dom().parentNode.scrollTop;
}; zf_ScrollBar.prototype.scrollTo =3D function(pos) { if =
(this._isClosed) return; this.dom().parentNode.scrollTop
=3D pos; this.update(); }; zf_ScrollBar.prototype.lineUp =3D function() =
{ if (this._isClosed) return;
if (this._nodesCreated) this._lineUp(); }; =
zf_ScrollBar.prototype.lineDown =3D function() { if (this._isClosed)
return; if (this._nodesCreated) this._lineDown(); }; =
zf_ScrollBar.prototype._show =3D function(show)
{ var barStyle =3D this._nodesCreated ? this.dom("_bar").style : null; =
if (show && (barStyle =3D=3D null
|| barStyle.visibility !=3D "inherit")) { if (barStyle =3D=3D null) { =
var node =3D this._createNodes();
if (node =3D=3D null) return; barStyle =3D node.style; } =
zf_stdReplaceClassName(this.dom().parentNode.parentNode,
"sv-noscroll", "sv-scroll"); barStyle.visibility =3D "inherit"; } if =
(!show && barStyle !=3D null && barStyle.visibility
!=3D "hidden") { =
zf_stdReplaceClassName(this.dom().parentNode.parentNode, "sv-scroll", =
"sv-noscroll");
barStyle.visibility =3D "hidden"; } }; zf_ScrollBar.prototype._scrollTo =
=3D function(pos) { if (pos =3D=3D
null) pos =3D this.dom().parentNode.scrollTop; var barNode =3D =
this.dom("_bar"); var topNode =3D this.dom("_top");
var thumbNode =3D this.dom("_thumb"); var upperNode =3D =
this.dom("_upper"); var lowerNode =3D this.dom("_lower");
var cyActive; var cyThumb; var cyPos; cyActive =3D barNode.offsetHeight =
- this._cyTop - this._cyBottom;
cyActive =3D Math.max(cyActive, 0); if (cyActive =3D=3D 0) return; =
cyThumb =3D Math.floor(this._outerHeight
* cyActive / this._innerHeight); cyThumb =3D Math.max(cyThumb, 33); =
cyPos =3D Math.floor(pos * (cyActive
- cyThumb) / (this._innerHeight - this._outerHeight)); =
thumbNode.style.top =3D (this._cyTop + cyPos)
+ "px"; thumbNode.style.height =3D (cyThumb - this._cyThumbExtra) + =
"px"; upperNode.style.height =3D cyPos
+ "px"; lowerNode.style.height =3D (cyActive - cyPos) + "px"; if =
((barNode.clientHeight % 2) =3D=3D 0)
lowerNode.style.bottom =3D this._cyBottom + "px"; else =
lowerNode.style.bottom =3D (this._cyBottom - 1)
+ "px"; }; zf_ScrollBar.prototype._createNodes =3D function() { var id =
=3D this.id; var barNode =3D document.createElement("DIV");
barNode.className =3D "sb sb-color1 sb-bgcolor4"; barNode.id =3D id + =
"-_bar"; var html =3D [ '<div class=3D"sb-upper sb-color1 sb-bgcolor1" =
id=3D"',
id, '-_upper">', '<div class=3D"sb-normal sb-color1 =
sb-bgcolor1"></div>', '</div>', '<div class=3D"sb-lower sb-color1 =
sb-bgcolor1" id=3D"',
id, '-_lower">', '<div class=3D"sb-normal sb-color1 =
sb-bgcolor1"></div>', '</div>', '<div class=3D"sb-top sb-color1 =
sb-bgcolor4" id=3D"',
id, '-_top">', '<div class=3D"sb-normal sb-color1 sb-bgcolor4 =
sb-bgimage1"></div>', '</div>', '<div class=3D"sb-bottom sb-color1 =
sb-bgcolor4" id=3D"',
id, '-_bottom">', '<div class=3D"sb-normal sb-color1 sb-bgcolor4 =
sb-bgimage2"></div>', '</div>',
'<div class=3D"sb-thumb sb-color4 sb-bgcolor4" id=3D"', id, '-_thumb">', =
'<div class=3D"sb-normal sb-color4 sb-bgcolor4 sb-bgimage3"></div>',
'</div>' ].join(""); barNode.innerHTML =3D html; =
this.dom().parentNode.parentNode.appendChild(barNode);
var topNode =3D this.dom("_top"); var bottomNode =3D =
this.dom("_bottom"); var upperNode =3D this.dom("_upper");
var lowerNode =3D this.dom("_lower"); var thumbNode =3D =
this.dom("_thumb"); this._cyTop =3D topNode.offsetHeight;
this._cyBottom =3D bottomNode.offsetHeight; var cyThumbOuter =3D =
thumbNode.offsetHeight; var cyThumbInner
=3D zf_stdExtractPixels( zf_stdGetCurrentStyle(thumbNode, "height", =
"height")); this._cyThumbExtra
=3D cyThumbOuter - cyThumbInner; upperNode.style.top =3D this._cyTop + =
"px"; if ((barNode.clientHeight
% 2) =3D=3D 0) lowerNode.style.bottom =3D this._cyBottom + "px"; else =
lowerNode.style.bottom =3D (this._cyBottom
- 1) + "px"; var self =3D this; upperNode.onmouseover =3D =
lowerNode.onmouseover =3D function() { this.firstChild.className
=3D "sb-hover sb-color1 sb-bgcolor2"; }; upperNode.onmouseout =3D =
lowerNode.onmouseout =3D function()
{ this.firstChild.className =3D "sb-normal sb-color1 sb-bgcolor1"; =
self._elem_onmouseup(this); };
upperNode.onmousedown =3D lowerNode.onmousedown =3D function(e) { =
this.firstChild.className =3D "sb-active sb-color1 sb-bgcolor3";
self._elem_onclick(e, this); }; upperNode.onmouseup =3D =
lowerNode.onmouseup =3D function() { this.firstChild.className
=3D "sb-hover sb-color1 sb-bgcolor1"; self._elem_onmouseup(this); }; =
topNode.onmouseover =3D function()
{ this.firstChild.className =3D "sb-hover sb-color2 sb-bgcolor5 =
sb-bgimage1"; }; topNode.onmouseout
=3D function() { this.firstChild.className =3D "sb-normal sb-color1 =
sb-bgcolor4 sb-bgimage1"; self._elem_onmouseup(this);
}; topNode.onmousedown =3D function(e) { this.firstChild.className =3D =
"sb-active sb-color3 sb-bgcolor6 sb-bgimage1";
self._elem_onclick(e, this); }; topNode.onmouseup =3D function() { =
this.firstChild.className =3D "sb-hover sb-color2 sb-bgcolor5 =
sb-bgimage1";
self._elem_onmouseup(this); }; bottomNode.onmouseover =3D function() { =
this.firstChild.className =3D "sb-hover sb-color2 sb-bgcolor5 =
sb-bgimage2";
}; bottomNode.onmouseout =3D function() { this.firstChild.className =3D =
"sb-normal sb-color1 sb-bgcolor4 sb-bgimage2";
self._elem_onmouseup(this); }; bottomNode.onmousedown =3D function(e) { =
this.firstChild.className =3D
"sb-active sb-color3 sb-bgcolor6 sb-bgimage2"; self._elem_onclick(e, =
this); }; bottomNode.onmouseup
=3D function() { this.firstChild.className =3D "sb-hover sb-color2 =
sb-bgcolor5 sb-bgimage2"; self._elem_onmouseup(this);
}; upperNode.dblclick =3D lowerNode.ondblclick =3D topNode.ondblclick =
=3D bottomNode.ondblclick =3D function(e)
{ this.onmousedown(e); this.onmouseup(e); }; upperNode.onselectstart =3D =
lowerNode.onselectstart =3D topNode.onselectstart
=3D bottomNode.onselectstart =3D zf_stdFalse; thumbNode.onmouseover =3D =
function(e) { self._thumb_onmouseover(e,
this); }; thumbNode.onmouseout =3D function(e) { =
self._thumb_onmouseout(e, this); }; thumbNode.onmousedown
=3D function(e) { self._thumb_onmousedown(e, this); }; =
thumbNode.onmouseup =3D function(e) { self._thumb_onmouseup(e,
this); }; thumbNode.onmousemove =3D function(e) { =
self._thumb_onmousemove(e, this); }; thumbNode.onselectstart
=3D zf_stdFalse; upperNode =3D null; lowerNode =3D null; topNode =3D =
null; bottomNode =3D null; thumbNode
=3D null; this.dom().onmousewheel =3D =
this.eventHandler(this._parent_onmousewheel); this._nodesCreated
=3D true; return barNode; }; zf_ScrollBar.prototype._lineUp =3D =
function() { var scrollNode =3D this.dom().parentNode;
if (scrollNode.scrollTop > 0) { scrollNode.scrollTop -=3D this._cyLine; =
this._scrollTo(); } }; zf_ScrollBar.prototype._lineDown
=3D function() { var scrollNode =3D this.dom().parentNode; if =
(scrollNode.scrollTop < scrollNode.scrollHeight)
{ scrollNode.scrollTop +=3D this._cyLine; this._scrollTo(); } }; =
zf_ScrollBar.prototype._pageUp =3D function()
{ var scrollNode =3D this.dom().parentNode; if (scrollNode.scrollTop > =
0) { var cyPage =3D Math.max(this._outerHeight
- this._cyLine, this._cyLine); scrollNode.scrollTop -=3D cyPage; =
this._scrollTo(); } }; zf_ScrollBar.prototype._pageDown
=3D function() { var scrollNode =3D this.dom().parentNode; if =
(scrollNode.scrollTop < scrollNode.scrollHeight)
{ var cyPage =3D Math.max(this._outerHeight - this._cyLine, =
this._cyLine); scrollNode.scrollTop +=3D cyPage;
this._scrollTo(); } }; zf_ScrollBar.prototype._elem_onclick =3D =
function(e, node) { zf_stdStopPropagation(e);
this._action =3D null; var className =3D node.className.split(' ')[0]; =
switch (className) { case "sb-top":
this._action =3D this._lineUp; break; case "sb-bottom": this._action =3D =
this._lineDown; break; case
"sb-upper": this._action =3D this._pageUp; break; case "sb-lower": =
this._action =3D this._pageDown; break;
default: ; break; } if (this._action =3D=3D null) return; =
this._action(); if (this.onscroll !=3D null)
this.onscroll(); var self =3D this; this._timeout =3D setTimeout( =
function() { if (self._action !=3D null)
{ self._action(); if (self.onscroll !=3D null) self.onscroll(); =
self._interval =3D setInterval( function()
{ if (self._action !=3D null) { self._action(); if (self.onscroll !=3D =
null) self.onscroll(); } }, 80);
} }, 400); }; zf_ScrollBar.prototype._elem_onmouseup =3D function() { if =
(this._interval !=3D null)
{ clearInterval(this._interval); delete this._interval; } if =
(this._timeout !=3D null) { clearTimeout(this._timeout);
delete this._timeout; } }; zf_ScrollBar.prototype._thumb_onmousedown =3D =
function(e, thumbNode) {
e =3D zf_stdGetEvent(e); thumbNode.firstChild.className =3D "sb-active =
sb-color6 sb-bgcolor6 sb-bgimage3";
if (document.addEventListener) { document.addEventListener("mouseover", =
zf_ScrollBar._noop, true);
document.addEventListener("mouseout", zf_ScrollBar._noop, true); =
document.addEventListener("selectstart",
zf_ScrollBar._noop, true); document.addEventListener("mousemove", =
thumbNode.onmousemove, true);
document.addEventListener("mouseup", thumbNode.onmouseup, true); } else =
if (thumbNode.setCapture)
thumbNode.setCapture(); this._anchorX =3D e.clientX; this._anchorY =3D =
e.clientY; this._anchorTop =3D zf_stdExtractPixels(
zf_stdGetCurrentStyle(thumbNode, "top", "top")); this._thumbTrack =3D =
true; if (this.onscrollstart
!=3D null) this.onscrollstart(); zf_stdStopPropagation(e); =
zf_stdPreventDefault(e); }; zf_ScrollBar.prototype._thumb_onmousemove
=3D function(e) { if (!this._thumbTrack) return; e =3D =
zf_stdGetEvent(e); zf_stdStopPropagation(e);
zf_stdPreventDefault(e); var top =3D this._anchorTop + e.clientY - =
this._anchorY; var cyActive; var
cyThumb; cyActive =3D this.dom("_bar").offsetHeight - this._cyTop - =
this._cyBottom; cyActive =3D Math.max(cyActive,
0); cyThumb =3D Math.floor(this._outerHeight * cyActive / =
this._innerHeight); cyThumb =3D Math.max(cyThumb,
33); var scrollTop =3D Math.floor((top - this._cyTop) * =
(this._innerHeight - this._outerHeight) /
(cyActive - cyThumb)); this.dom().parentNode.scrollTop =3D scrollTop; =
this._scrollTo(); if (this.onscrolling
!=3D null) this.onscrolling(); }; =
zf_ScrollBar.prototype._thumb_onmouseup =3D function(e) { =
this._thumbTrack
=3D false; e =3D zf_stdGetEvent(e); zf_stdStopPropagation(e); =
zf_stdPreventDefault(e); var thumbNode =3D
this.dom("_thumb"); if (e.srcElement =3D=3D thumbNode || e.target =3D=3D =
thumbNode || e.srcElement =3D=3D thumbNode.firstChild
|| e.target =3D=3D thumbNode.firstChild) thumbNode.firstChild.className =
=3D "sb-hover sb-color5 sb-bgcolor5 sb-bgimage3";
else thumbNode.firstChild.className =3D "sb-normal sb-color4 sb-bgcolor4 =
sb-bgimage3"; if (document.removeEventListener)
{ document.removeEventListener("mouseover", zf_ScrollBar._noop, true); =
document.removeEventListener("mouseout",
zf_ScrollBar._noop, true); document.removeEventListener("selectstart", =
zf_ScrollBar._noop, true);
document.removeEventListener("mousemove", thumbNode.onmousemove, true); =
document.removeEventListener("mouseup",
thumbNode.onmouseup, true); } else if (thumbNode.releaseCapture) =
thumbNode.releaseCapture(); if
(this.onscroll !=3D null) this.onscroll(); }; =
zf_ScrollBar.prototype._thumb_onmouseover =3D function(e,
thumbNode) { if (!this._thumbTrack) thumbNode.firstChild.className =3D =
"sb-hover sb-color5 sb-bgcolor5 sb-bgimage3";
}; zf_ScrollBar.prototype._thumb_onmouseout =3D function(e, thumbNode) { =
if (!this._thumbTrack) thumbNode.firstChild.className
=3D "sb-normal sb-color4 sb-bgcolor4 sb-bgimage3"; }; =
zf_ScrollBar.prototype._parent_onmousewheel
=3D function(e) { var delta; delta =3D e.wheelDelta; if (delta > 0) { =
while (delta > 0) { this._lineUp();
delta -=3D 120; } } else { while (delta < 0) { this._lineDown(); delta =
+=3D 120; } } if (this.onscroll)
this.onscroll(); zf_stdPreventDefault(e); zf_stdStopPropagation(e); }; =
zf_ScrollBar._noop =3D function(e)
{ zf_stdPreventDefault(e); zf_stdStopPropagation(e); return false; };
; ; function zfl_MessageList(id, totalCount, selectable) { =
zfl_Control.prototype.constructor.call(this,
id); var self =3D this; var handlers =3D { _bake: function(name) { =
this[name] =3D function() { if (self[name]
!=3D null) self[name].apply(self, arguments); }; } }; =
handlers._bake("onedit"); handlers._bake("onemail");
handlers._bake("ondelete"); handlers._bake("onundelete"); =
handlers._bake("oncensor"); handlers._bake("onuncensor");
handlers._bake("onpurge"); handlers._bake("onattachment"); this.onemail =
=3D function(message) { if
(message.posterEmail && message.posterEmail.length > 0) { =
window.location =3D "mailto:" + message.posterEmail;
} }; this._handlers =3D handlers; this._views =3D []; this._first =3D =
0x7FFFFFFF; this._last =3D -1; this._count
=3D 0; this._totalCount =3D totalCount; var last =3D null; var items =3D =
this.dom("items").getElementsByTagName("DIV");
for (var i =3D 0; i < items.length; i++) { for (var ve =3D =
items[i].firstChild; ve !=3D null; ve =3D ve.nextSibling)
{ if (!zf_stdHasClassName(ve, "mv")) continue; var view =3D new =
zfl_MessageView(ve.id); var index
=3D view.getIndex(); this._addView(view); this._first =3D =
Math.min(index, this._first); this._last =3D Math.max(index,
this._last); this._count =3D this._count + 1; ; last =3D view; break; } =
} this._updateCount(); this._height
=3D -1; this._sb =3D new zf_ScrollBar(this.id + "-items", 20); =
this._selectable =3D selectable; this._selectedItem
=3D -1; zf_stdMakeMethodsDeferred(this, this.id, ["setEditing", =
"setLoading", "setAccess"]); } zfl_MessageList.inherits(zfl_Control);
zfl_MessageList.prototype.reinit =3D function(totalCount, messages) { =
var dom =3D this.dom("items");
var item =3D dom.firstChild; while (item !=3D null) { var next =3D =
item.nextSibling; if (zf_stdHasClassName(item,
"ml-item")) dom.removeChild(item); item =3D next; } this._views =3D []; =
this._first =3D 0x7FFFFFFF; this._last
=3D -1; this._count =3D 0; this._totalCount =3D totalCount; =
this._selectedItem =3D -1; if (messages && messages.length
> 0) { this._last =3D messages[0].index; this.add(messages); } =
this.setHeight(); this._updateCount();
this._sb.scrollTo(0); }; zfl_MessageList.prototype.add =3D =
function(message) { if (message instanceof
Array) { for (var i =3D 0; i < message.length; i++) =
this._update(message[i]); } else { this._update(message);
} this._totalCount =3D Math.min(this._count + this._first, =
this._totalCount); this._updateCount();
this.setHeight(); if (this._pendingSelection !=3D null) { =
this._pendingSelection(); this._pendingSelection
=3D null; } }; zfl_MessageList.prototype._update =3D function(message) { =
; var index =3D message.index;
var view =3D this._views[index]; var id =3D this.id + "-" + index; if =
(view !=3D null) { ; ; this._remove(index);
} else { if (index > this._last) ++this._totalCount; this._first =3D =
Math.min(index, this._first);
this._last =3D Math.max(index, this._last); this._count =3D this._count =
+ 1; } var item =3D document.createElement("DIV");
item.className =3D (index =3D=3D this._last) ? "ml-item" : "ml-item =
ml-border2"; if (index =3D=3D this._selectedItem)
item.className +=3D " ml-s-selected"; item.innerHTML =3D =
zfl_MessageView.createHtml(id, message); var
previous =3D null; if (this._count > 0) { ; ; for (var i =3D =
this._first; i <=3D this._last; i++) { if
(i =3D=3D index) break; if (this._views[i] !=3D null) previous =3D =
this._views[i]; } } if (previous !=3D null)
{ previous =3D previous.dom().parentNode; =
zf_stdReplaceClassName(previous, null, "ml-border2"); }
else previous =3D this.dom("more"); this.dom("items").insertBefore(item, =
previous); view =3D new zfl_MessageView(id,
message); this._addView(view); }; zfl_MessageList.prototype._remove =3D =
function(index) { ; var view
=3D this._views[index]; var dom =3D this.dom(index).parentNode; =
dom.parentNode.removeChild(dom); this._views[index]
=3D null; }; zfl_MessageList.prototype.getFirstView =3D function() { =
return this._first < this._views.length
? this._views[this._first] : null; }; =
zfl_MessageList.prototype.getSelectedView =3D function() {
return this._selectedItem !=3D -1 ? this._views[this._selectedItem] : =
null; }; zfl_MessageList.prototype.getView
=3D function(index) { return this._views[index]; }; =
zfl_MessageList.prototype.getCount =3D function()
{ return this._totalCount; }; zfl_MessageList.prototype._updateCount =3D =
function() { ; var count =3D
this._totalCount - this._count; count =3D Math.min(count, 20); =
zf_stdReplaceClassName(this.dom(),
count > 0 ? null : "ml-s-has-more", count > 0 ? "ml-s-has-more" : null); =
if (count > 0) zf_stdSetText(this.dom("morecount"),
count); zf_stdReplaceClassName(this.dom(), this._totalCount > 0 ? =
"ml-s-empty" : null, this._totalCount
> 0 ? null : "ml-s-empty"); this._moreCount =3D count; }; =
zfl_MessageList.prototype._more_onclick
=3D function() { ; if (this._moreCount <=3D 0) return; if =
(this.onrequest) this.onrequest(this._first
- 1, this._moreCount); }; zfl_MessageList.prototype._addView =3D =
function(view) { var index =3D view.getIndex();
; this._views[index] =3D view; for (var key in this._handlers) { if (key =
=3D=3D "_bake") continue; view[key]
=3D this._handlers[key]; } view.dom().onclick =3D =
this.eventHandler(this._item_onclick, index); };
zfl_MessageList.prototype.prepareContainer =3D function(index) { if =
(index < 0) { zf_stdReplaceClassName(this.dom(),
null, "ml-s-adding"); if (this._last >=3D 0) { var view =3D =
this._views[this._last]; zf_stdReplaceClassName(view.dom().parentNode,
null, "ml-border2"); } return this.dom("editnew"); } ; var dom =3D =
this._views[index].dom(); zf_stdReplaceClassName(dom,
null, "none"); return dom.parentNode; }; =
zfl_MessageList.prototype.restoreContainer =3D function(index)
{ if (index < 0) { zf_stdReplaceClassName(this.dom(), "ml-s-adding", =
null); if (this._last >=3D 0)
{ var view =3D this._views[this._last]; =
zf_stdReplaceClassName(view.dom().parentNode, "ml-border2",
null); } return; } ; var dom =3D this._views[index].dom(); =
zf_stdReplaceClassName(dom, "none", null);
}; zfl_MessageList.prototype.remove =3D function(index) { ; if (index =
=3D=3D this._selectedItem) { this._selectedItem
=3D -1; if (this.ondeselect) this.ondeselect(index); } =
this._remove(index); --this._totalCount; --this._count;
this._updateCount(); this.setHeight(); }; =
zfl_MessageList.prototype.setEditing =3D function(editing)
{ zf_stdReplaceClassName(this.dom(), editing ? null : "mv-s-editing", =
editing ? "mv-s-editing" : null);
this.setHeight(); }; zfl_MessageList.prototype.setLoading =3D =
function(loading) { zf_stdReplaceClassName(this.dom(),
loading ? null : "ml-s-loading", loading ? "ml-s-loading" : null); =
this.setHeight(); }; zfl_MessageList.prototype.setAccess
=3D function(mask, mailboxType) { var check =3D mailboxType !=3D =
zf_MailboxType.PhotoComments ? { add:
zf_AccessMask.NoPublicGuestbookPosts | =
zf_AccessMask.NoPrivateGuestbookPosts, registeredOnly: =
zf_AccessMask.NoAnonymousGuestbookPosts
} : { add: zf_AccessMask.NoPublicComments | =
zf_AccessMask.NoPrivateComments, registeredOnly: =
zf_AccessMask.NoAnonymousComments
}; var allowAdd =3D (mask & check.add) !=3D check.add; var =
registeredOnly =3D (mask & check.registeredOnly)
!=3D 0; var dom =3D this.dom(); zf_stdReplaceClassName(dom, =
"ml-s-not-allowed", null); zf_stdReplaceClassName(dom,
"ml-s-login-required", null); if (!allowAdd) zf_stdReplaceClassName(dom, =
null, "ml-s-not-allowed");
else if (zf_userId =3D=3D 0 && registeredOnly) =
zf_stdReplaceClassName(dom, null, "ml-s-login-required");
this.setHeight(); }; zfl_MessageList.prototype._add_onclick =3D =
function() { if (this.onadd) this.onadd();
}; zfl_MessageList.prototype._login_onclick =3D function() { if =
(this.onlogin) this.onlogin(); };
zfl_MessageList.prototype.setHeight =3D function(height) { if (height =
=3D=3D null) height =3D this._height;
else this._height =3D height; if (height > 0) { height -=3D =
zf_stdGetHeightOverall(this.dom("header"));
height =3D Math.max(height, 0); this.dom("outer").style.height =3D =
height + "px"; this.dom("outer").style.overflow
=3D "hidden"; this.dom("inner").style.height =3D "100%"; =
this.dom("inner").style.overflow =3D "hidden";
} else { this.dom("outer").style.cssText =3D ""; =
this.dom("inner").style.cssText =3D ""; } this._sb.update();
}; zfl_MessageList.prototype._item_onclick =3D function(event, index) { =
; if (!this._selectable)
return; this.select(index); }; zfl_MessageList.prototype.select =3D =
function(index) { ; if (this._selectedItem
=3D=3D index) return; if (this._selectedItem !=3D -1) =
this.deselect(this._selectedItem); var view =3D this._views[index];
if (view !=3D null) { zf_stdReplaceClassName(view.dom().parentNode, =
null, "ml-s-selected"); this._selectedItem
=3D index; var item =3D view.dom().parentNode; var itemOffset =3D =
zf_stdGetOffset(item, this.dom("items")).cy;
var itemHeight =3D zf_stdGetHeightOverall(item); var scrollHeight =3D =
this.dom("inner").offsetHeight;
var totalHeight =3D this.dom("items").offsetHeight; var scrollOffset =3D =
this._sb.getScrollPos(); ;
if (itemOffset < scrollOffset) { this._sb.scrollTo(itemOffset); } else =
if (itemOffset + itemHeight
> scrollOffset + scrollHeight) { if (itemHeight > scrollHeight) =
this._sb.scrollTo(itemOffset);
else if (index =3D=3D this._first) this._sb.scrollTo(totalHeight - =
scrollHeight); else this._sb.scrollTo(itemOffset
+ itemHeight - scrollHeight); } if (this.onselect) this.onselect(index); =
} this._pendingSelection
=3D null; }; zfl_MessageList.prototype.deselect =3D function(index) { ; =
if (this._selectedItem =3D=3D index)
{ var view =3D this._views[this._selectedItem]; if (view !=3D null) { =
zf_stdReplaceClassName(view.dom().parentNode,
"ml-s-selected", null); this._selectedItem =3D -1; ; if =
(this.ondeselect) this.ondeselect(index);
} } }; zfl_MessageList.prototype.selectNext =3D function() { if =
(this._selectedItem =3D=3D -1) return;
for (var i =3D this._selectedItem + 1; i <=3D this._last; i++) { var =
next =3D this._views[i]; if (next)
{ this.select(i); return; } } }; =
zfl_MessageList.prototype.selectPrevious =3D function() { if =
(this._selectedItem
=3D=3D -1) return; for (var i =3D this._selectedItem - 1; i >=3D =
this._first; i--) { var previous =3D this._views[i];
if (previous) { this.select(i); if (i < this._first + 5 && =
this._moreCount > 0) this._more_onclick();
return; } } this._pendingSelection =3D null; if (this._moreCount > 0) { =
var self =3D this; var first =3D
this._first; this._pendingSelection =3D function() { for (var j =3D =
first - 1; j >=3D 0; j--) { if (self._views[j])
{ self.select(j); return; } } }; this._more_onclick(); } }; =
zfl_MessageList.prototype._top_onclick
=3D function() { if (document.location.hash =3D=3D "#guestbook") =
document.location.hash =3D "#"; window.scrollTo(0,
0); };
; ; function zf_MessageUpdater() { }
; ; ; function zfl_MessageEdit(id, comments) { =
zfl_Control.prototype.constructor.call(this, id);
this._comments =3D comments; this._private =3D false; var self =3D this; =
var onchange =3D function() {
var radio =3D self.dom("form").elements["me-access"]; self._private =3D =
radio[1].checked; zf_stdReplaceClassName(
self.dom("access-info"), !self._private ? "me-private-info" : =
"me-public-info", !self._private ? "me-public-info"
: "me-private-info"); }; var radio2 =3D =
this.dom("form").elements["me-access"]; radio2[0].onclick
=3D radio2[1].onclick =3D onchange; var radio3 =3D =
this.dom("form").elements["me-attachment"]; if (radio3)
{ radio3[0].onclick =3D radio3[1].onclick =3D radio3[2].onclick =3D =
this.closure(this._attachment_onchange);
} this.dom("body").onkeydown =3D function() { =
zf_stdReplaceClassName(self.dom("body-field"), "me-missing",
null); self.showMessage(); }; this.dom("name").onkeydown =3D function() =
{ zf_stdReplaceClassName(self.dom("name-field"),
"me-missing", null); self.showMessage(); }; this.dom("url").onkeydown =
=3D function() { self.showMessage();
}; this.dom("email").onkeydown =3D function() { =
zf_stdReplaceClassName(self.dom("email-field"), "me-missing",
null); self.showMessage(); }; zf_stdMakeMethodsDeferred(this, this.id, =
["setFocus", "showMessage"]);
} zfl_MessageEdit.inherits(zfl_Control); =
zfl_MessageEdit.prototype._getUpdater =3D function() { var
updater =3D new zf_MessageUpdater(); if (this._original =3D=3D null) { =
updater.posterName =3D zf_userId =3D=3D
0 ? this.dom("name").value : null; updater.isPrivate =3D this._private; =
} updater.posterUrl =3D zf_stdTrim(this.dom("url").value);
updater.posterEmail =3D zf_stdTrim(this.dom("email").value); =
updater.body =3D this.dom("body").value;
return updater; }; zfl_MessageEdit.prototype._save_onclick =3D =
function() { if (!this._validate())
return; this.setSaving(true); =
zfl_Button._abutton_onmouseout(this.dom("save")); =
zfl_Button._abutton_onmouseout(this.dom("add"));
if (this.onsave) this.onsave(this._getUpdater()); }; =
zfl_MessageEdit.prototype._cancel_onclick =3D
function() { zfl_Button._abutton_onmouseout(this.dom("cancel")); if =
(this.oncancel) this.oncancel();
}; zfl_MessageEdit.prototype.setOriginal =3D function(message) { =
this._original =3D message; zf_stdReplaceClassName(this.dom(),
"me-s-saving", null); zf_stdReplaceClassName(this.dom(), =
"me-s-continue", null); if (!message)
{ zf_stdReplaceClassName(this.dom(), "me-s-editing", null); =
this.dom("body").value =3D ""; this._attachmentType
=3D zf_AttachmentType.None; this._attachment =3D null; } else { =
zf_stdReplaceClassName(this.dom(), null,
"me-s-editing"); this.dom("header").innerHTML =3D =
zfl_MessageView.createHeaderHtml(this.id + "-view",
message); var body =3D message.body; body =3D =
body.replace(/(\<a[^\>]+\>)|(\<\/a\>)/g, ""); this.dom("body").value
=3D zf_stdHtmlDecode(body); this.dom("url").value =3D message.posterUrl; =
if (message.posterEmail) this.dom("email").value
=3D message.posterEmail; zf_stdReplaceClassName(this.dom("access-info"), =
null, "none"); this._attachmentType
=3D message.attachmentType; this._attachment =3D message.attachment; } =
zf_stdReplaceClassName(this.dom("name-field"),
"me-missing", null); zf_stdReplaceClassName(this.dom("body-field"), =
"me-missing", null); var attachmentRadio
=3D this.dom("form").elements["me-attachment"]; if (attachmentRadio) =
attachmentRadio[this._attachmentType].checked
=3D true; if (this.onattachment) this.onattachment(this._attachmentType, =
this._attachment); this.setSaving(false);
this.showMessage(); }; zfl_MessageEdit.prototype.getOriginal =3D =
function() { return this._original;
}; zfl_MessageEdit.prototype._validate =3D function() { var missingName =
=3D false, missingText =3D false;
var self =3D this; var check =3D function(name) { var value =3D =
self.dom(name).value; if (zf_stdTrim(value).length
=3D=3D 0) { zf_stdReplaceClassName(self.dom(name + "-field"), null, =
"me-missing"); return true; } return false;
}; if (zf_userId =3D=3D 0 && this._original =3D=3D null) missingName =3D =
check("name"); missingText =3D check("body");
if (missingText && missingName) this.showMessage(this._comments ? =
"Please enter your name and the comment"
: "Please enter your name and the guestbook entry", true); else if =
(missingName) this.showMessage("Please enter your name",
true); else if (missingText) this.showMessage(this._comments ? "Please =
type the comment" : "Please type the guestbook entry",
true); this.setFocus(); if (missingText || missingName) return false; =
var email =3D zf_stdTrim(this.dom("email").value);
if (email && email.length > 0 && !zf_stdIsValidEmail(email)) { =
$(this.dom("email-field")).addClass("me-missing");
this.showMessage("This is not a valid e-mail address.", true); return =
false; } return true; };
zfl_MessageEdit.prototype.showMessage =3D function(message, error) { if =
(error) this.setSaving(false);
if (this.onerror) { this.onerror(message, error); return; } var html =3D =
""; if (message) html =3D [
'<span class=3D"', error ? "me-error me-font3 me-color3" : "me-info", =
'">', message, '</span>' ].join("");
this.dom("message").innerHTML =3D html; }; =
zfl_MessageEdit.prototype.setAccess =3D function(mask, mailboxType)
{ ; ; var check =3D mailboxType !=3D zf_MailboxType.PhotoComments ? { =
nopublic: zf_AccessMask.NoPublicGuestbookPosts,
noprivate: zf_AccessMask.NoPrivateGuestbookPosts, noanonymous: =
zf_AccessMask.NoAnonymousGuestbookPosts
} : { nopublic: zf_AccessMask.NoPublicComments, noprivate: =
zf_AccessMask.NoPrivateComments, noanonymous:
zf_AccessMask.NoAnonymousComments }; var radio =3D =
this.dom("form").elements["me-access"]; var domInfo
=3D this.dom("access-info"); zf_stdReplaceClassName(domInfo, =
"me-private-info", null); zf_stdReplaceClassName(domInfo,
"me-public-info", null); if (mask & (check.nopublic | check.noprivate)) =
{ zf_stdReplaceClassName(this.dom("access-info"),
"none", null); zf_stdReplaceClassName(this.dom("access-field"), null, =
"none"); zf_stdReplaceClassName(
domInfo, null, (mask & check.nopublic) ? "me-private-info" : =
"me-public-info"); radio[(mask & check.nopublic)
? 1 : 0].checked =3D true; this._private =3D (mask & check.noprivate) =
=3D=3D 0; } else { zf_stdReplaceClassName(this.dom("access-field"),
"none", null); zf_stdReplaceClassName(this.dom("access-info"), zf_userId =
=3D=3D 0 ? "none" : null,
zf_userId =3D=3D 0 ? null : "none"); zf_stdReplaceClassName(domInfo, =
null, "me-public-info"); radio[0].checked
=3D true; this._private =3D false; } }; =
zfl_MessageEdit.prototype._login_onclick =3D function() { if =
(this.onlogin)
this.onlogin(); }; zfl_MessageEdit.prototype._attachment_onchange =3D =
function() { var radio =3D this.dom("form").elements["me-attachment"];
if (radio[0].checked) { this._attachmentType =3D zf_AttachmentType.None; =
this._attachment =3D null;
} else if (radio[1].checked) { this._attachmentType =3D =
zf_AttachmentType.CroppingSuggestion; this._attachment
=3D null; } else if (radio[2].checked) { this._attachmentType =3D =
zf_AttachmentType.HighlightedArea;
this._attachment =3D null; } if (this.onattachment) =
this.onattachment(this._attachmentType, this._attachment);
}; zfl_MessageEdit.prototype.setFocus =3D function() { try { if =
(this.dom("name").tagName !=3D "INPUT"
|| this.dom("name").value) this.dom("body").focus(); else =
this.dom("name").focus(); } catch(e) {}
}; zfl_MessageEdit.prototype.setSaving =3D function(saving) { =
zf_stdReplaceClassName(this.dom(), saving
? null : "me-s-saving", saving ? "me-s-saving" : null); }; =
zfl_MessageEdit.prototype.setContinue
=3D function(error, message, oncontinue) { if (error =3D=3D null) { =
zf_stdReplaceClassName(this.dom(),
"me-s-continue", null); return; } zf_stdReplaceClassName( =
this.dom("continue-message"), error ? null
: "me-color3", error ? "me-color3" : null); =
zf_stdSetText(this.dom("continue-message"), message);
zf_stdReplaceClassName(this.dom(), "me-s-saving", "me-s-continue"); =
this.dom("continue").onclick
=3D oncontinue; };
; ; function zfl_Guestbook(id, mailbox, list, edit, mask, home, =
mailboxToken) { zfl_Control.prototype.constructor.call(this,
id); var self =3D this; this._list =3D list; this._edit =3D edit; =
this._mailbox =3D mailbox; this._mailboxToken
=3D mailboxToken; this._editable =3D true; this._mask =3D mask; =
edit.onsave =3D this.closure(this._edit_onsave);
edit.oncancel =3D this.closure(this._edit_oncancel); edit.onlogin =3D =
function() { if (self.onlogin)
self.onlogin(); }; list.onrequest =3D =
this.closure(this._list_onrequest); list.onedit =3D =
this.closure(this._list_onedit);
list.onadd =3D this.closure(this.add); list.onlogin =3D edit.onlogin; =
list.ondelete =3D this.closure(this._list_onaction,
"deleteMessage"); list.onundelete =3D this.closure(this._list_onaction, =
"undeleteMessage"); list.oncensor
=3D this.closure(this._list_onaction, "censorMessage"); list.onuncensor =
=3D this.closure(this._list_onaction,
"uncensorMessage"); list.onpurge =3D this.closure(this._list_onaction, =
"purgeMessage"); } zfl_Guestbook.inherits(zfl_Control);
zfl_Guestbook.prototype.add =3D function() { if (!this._editable) =
return; this._edit.setOriginal(null);
this._edit.setAccess(this._mask, this._mailbox.type); =
this._enableEditing(false); var container
=3D this._list.prepareContainer(-1); var edit =3D this._edit.dom(); =
container.appendChild(edit.parentNode.removeChild(edit));
this._edit.setFocus(); this.notifyResize(); this._auth =3D new =
zf_MailboxAuthorization(this._mailbox);
}; zfl_Guestbook.prototype._edit_onsave =3D function(updater) { var self =
=3D this; var original =3D this._edit.getOriginal();
var onpost =3D function(message, error) { if (!error) { if (message !=3D =
null) { self._enableEditing(true);
self._list.add(message); } else if (original !=3D null) { =
self._enableEditing(true); self._list.remove(original.index);
} else { if (zf_userId =3D=3D 0 && updater.isPrivate) { =
self._edit.setContinue( false, "Your entry has been sent directly to the =
owner of the guestbook. It will not appear in the list.",
function() { self._enableEditing(true); self._updateCount(); =
self.notifyResize(); }); self.notifyResize();
return; } } self._enableEditing(true); self._updateCount(); =
self.notifyResize(); return; } self._edit.setContinue(true,
error.message, function() { self._edit.setContinue(); }); }; if =
(original =3D=3D null) zf_Message.postMessage(this._auth,
this._mailbox, updater, onpost); else =
zf_Message.updateMessage(this._auth, this._mailbox, original.index,
updater, onpost); }; zfl_Guestbook.prototype._edit_oncancel =3D =
function() { this._enableEditing(true);
this.notifyResize(); }; zfl_Guestbook.prototype._enableEditing =3D =
function(enable) { this._editable
=3D enable; this._list.setEditing(!enable); if (enable) { var editbox =
=3D this.dom("edit"); var edit =3D
this._edit.dom(); if (edit.parentNode !=3D editbox) =
editbox.appendChild(edit.parentNode.removeChild(edit));
var original =3D this._edit.getOriginal(); =
this._list.restoreContainer(original ? original.index : -1);
} }; zfl_Guestbook.prototype._list_onrequest =3D function(first, count) =
{ var self =3D this; var onload
=3D function(messages, error) { if (!error) { self._list.add(messages); =
self.notifyResize(); return;
} }; zf_Message.loadMessageRange(this._mailbox, this._mailboxToken, =
first, count, onload); }; zfl_Guestbook.prototype._list_onedit
=3D function(message) { this._edit.setOriginal(message); =
this._enableEditing(false); var container =3D
this._list.prepareContainer(message.index); var edit =3D =
this._edit.dom(); =
container.appendChild(edit.parentNode.removeChild(edit));
this._edit.setFocus(); this._auth =3D new =
zf_MailboxAuthorization(this._mailbox); this.notifyResize();
}; zfl_Guestbook.prototype._list_onaction =3D function(message, action) =
{ var self =3D this; var oncomplete
=3D function(updated, error) { if (!error) { if (updated) =
self._list.add(updated); else self._list.remove(message.index);
} self._updateCount(); self._enableEditing(true); self.notifyResize(); =
}; this._enableEditing(false);
this.notifyResize(); zf_Message[action](message.mailbox, message.index, =
oncomplete); }; zfl_Guestbook.prototype._updateCount
=3D function() { var count =3D this._list.getCount(); =
zf_stdReplaceClassName( this.dom("empty"), count
=3D=3D 0 ? "none" : null, count =3D=3D 0 ? null : "none"); if =
(this.oncountchange) this.oncountchange(count);
}; zfl_Guestbook.prototype._login_onclick =3D function() { if =
(this.onlogin) this.onlogin(); }; zfl_Guestbook.prototype.getCount
=3D function() { return this._list.getCount(); };
; function zfl_HomeShow(id, defaultWidth, defaultHeight) { ; ; =
this._defaultWidth =3D defaultWidth;
this._defaultHeight =3D defaultHeight; =
zfl_Control.prototype.constructor.call(this, id); } =
zfl_HomeShow.inherits(zfl_Control);
zfl_HomeShow.prototype.setHeight =3D function(height) { var extent =3D =
16 * 2; var sheight =3D height -
extent; sheight =3D Math.max(sheight, 300); var swidth =3D =
Math.floor(sheight * this._defaultWidth / this._defaultHeight);
var maxWidth =3D this.dom().parentNode.offsetWidth; if (swidth > =
maxWidth - extent) { swidth =3D maxWidth
- extent; sheight =3D Math.floor(swidth * this._defaultHeight / =
this._defaultWidth); } var inner =3D
this.dom("pv-inner"); inner.style.width =3D swidth + "px"; =
inner.style.height =3D sheight + "px"; return sheight
+ extent; };
; function zfl_UserLayout(id, global, local) { if =
(zf_stdNoArgs(arguments)) return; =
zfl_Layout.prototype.constructor.call(this,
id, global, local); this._data =3D zfl_stdTransformResponse(local.data, =
"data"); this.setupGuestbook(global,
local); this._homeshow =3D local.homeshow; } =
zfl_UserLayout.inherits(zfl_Layout); zfl_UserLayout.prototype.onrecalc
=3D function() { if (this._bins.featured && =
this._bins.featured.expanded) this._grids.featured.recalcLayout();
if (this._bins.recent && this._bins.recent.expanded) =
this._grids.recent.recalcLayout(); if (this._bins.root
&& this._bins.root.expanded) this._grids.root.recalcLayout(); =
zfl_Layout.prototype.onrecalc.call(this);
}; zfl_UserLayout.prototype.onload =3D function() { if =
(this._grids.recent) { this.initGrid( this._grids.recent,
zfl_PhotoViewStyle.FolderElement, this._grids.recentParams, =
this._data.recent); this._grids.recent.minRows
=3D 1; this._grids.recent.setHeight(0); } this.initGrid( =
this._grids.featured, zfl_PhotoViewStyle.FolderElement,
this._grids.featuredParams, this._data.featured); this.initGrid( =
this._grids.root, zfl_PhotoViewStyle.FolderElement,
this._grids.rootParams, this._data.root); =
zfl_Layout.prototype.onload.call(this); }; =
zfl_UserLayout.prototype.resolveEmail
=3D function(id, userId, token) { var oncomplete =3D function(status, =
retVal) { if (status !=3D 200)
{ return; } var email =3D retVal.result; var dom =3D =
document.getElementById(id); dom.onmousedown =3D function(e)
{ zfl_event(e, null, function() { document.location.href =3D "mailto:" + =
email; }); }; zf_stdSetText(dom,
email); dom =3D null; }; zf_stdServerRequest( "GET", =
"/zf/layout/layout.asmx", "ResolveEmail", [ userId,
token, zfl_SessionCookie.current.sessionKey ], oncomplete); }; =
zfl_UserLayout.prototype._main_onstretch
=3D function(height, stretcher) { if (this._homeshow) { height =3D =
this._homeshow.setHeight(height);
stretcher.style.height =3D height + "px"; return true; } return false; =
};
; ; ; function zfl_FolderLayout(id, global, local) { if =
(zf_stdNoArgs(arguments)) return; =
zfl_Layout.prototype.constructor.call(this,
id, global, local); this._data =3D { folder : =
zfl_stdTransformResponse(local.data.folder, "folder")
}; this.setupGuestbook(global, local); } =
zfl_FolderLayout.inherits(zfl_Layout); zfl_FolderLayout.prototype.onload
=3D function() { this.initGrid( this._grids.folder, =
zfl_PhotoViewStyle.FolderElement, this._grids.folderParams,
this._data.folder); zfl_Layout.prototype.onload.call(this); }; =
zfl_FolderLayout.prototype.onrecalc
=3D function() { if (this._grids.folder !=3D null) =
this._grids.folder.recalcLayout(); =
zfl_Layout.prototype.onrecalc.call(this);
};
; ; ; ; function zf_Sociable() { =
zf_Object.prototype.constructor.call(this); } =
zf_Sociable.inherits(zf_Object);
zf_Sociable.prototype.shareOnFacebook =3D function(shareable) { ; var =
title =3D shareable.title ? shareable.title
: ''; var fbUrl =3D [ 'http://www.facebook.com/sharer.php?u=3D', =
encodeURIComponent(shareable.url) ];
if (shareable.title) fbUrl.push('&t=3D', =
encodeURIComponent(shareable.title)); var name =3D =
Math.floor(Math.random()
* 1000); window.open(fbUrl.join(''), name.toString(), =
'toolbar=3D0,status=3D0,width=3D626,height=3D436');
return false; }; zf_Sociable.prototype.shareOnTwitter =3D =
function(shareable) { ; var title =3D shareable.title
&& shareable.title.length < 100 ? shareable.title : ''; var url =3D [ =
'/zf/partners/twitter/tweet.aspx?u=3D',
encodeURIComponent(shareable.url) ]; url.push('&t=3D', =
encodeURIComponent(title)); window.open(url.join(''));
return false; }; zf_Sociable.prototype.bind =3D function(node, =
sharefunction, shareable) { var args
=3D []; for (var i =3D 2; i < arguments.length; i++) =
args.push(arguments[i]); var self =3D this; =
$(node).unbind('click.sociable').bind('click.sociable',
function(e) { sharefunction.apply(self, args); }); }; =
zf_Sociable.prototype.sharePhoto =3D function(photo)
{ var hostname =3D typeof(zf_userDomain) =3D=3D 'undefined' ? =
document.location.hostname : zf_userDomain;
var icon =3D ['http://', hostname, =
photo.getExternalUrl(zf_ProcessingMethod.StandardThumbnail)].join('');
var url =3D photo.getHref('external'); var share =3D { url: url, title: =
photo.title, summary: '', icon:
icon }; return share; }; zf_Sociable.prototype.sharePhotoSet =3D =
function(photoSet) { var share =3D
{ url: photoSet.getHref('external'), title: photoSet.title ? =
photoSet.title : '', summary: '',
icon: '' }; return share; }; zf_Sociable.prototype.shareSlideshow =3D =
function(photoSet) { var share
=3D { url: [photoSet.getHref('external'), '/slideshow'].join(''), title: =
photoSet.title ? photoSet.title
: '', summary: '', icon: '' }; return share; }; =
zf_Sociable.prototype.sharePhotoSlideshow =3D function(photo,
text) { var url =3D [ photo.gallery.getHref('external'), '/e', =
photo.id.toString(16), '/slideshow'
].join(''); var share =3D { url: url, title: photo.title ? photo.title : =
'', summary: '', icon: ''
}; return share; }; zf_Sociable.prototype.shareFolder =3D =
function(folder) { var share =3D { url: folder.getHref('external'),
title: folder.title ? folder.title : '', summary: '', icon: '' }; return =
share; };
; function zfl_Links(id, photoPage, isAuth, refCode, refAmount, =
promotion, collection, slideshow)
{ zfl_Popup.prototype.constructor.call(this, id, false); this._photoPage =
=3D photoPage; this._isAuth
=3D isAuth; this._refCode =3D refCode; this._refAmount =3D refAmount; =
this._promotion =3D promotion; this._collection
=3D collection; this._slideshow =3D slideshow; =
this.$('.links-share-icon').hover( function() { =
$(this).addClass('links-share-icon-hover button-border2');
}, function() { $(this).removeClass('links-share-icon-hover =
button-border2'); } ); } zfl_Links.inherits(zfl_Popup);
zfl_Links.prototype._addTableRow =3D function(domTable, label, url) { =
var boxClass =3D "links-box links-color1 links-bgcolor1 links-border1 =
links-font1";
var labelClass =3D "links-directLabel links-font1"; var self =3D this; =
if (label =3D=3D null) { boxClass
+=3D " invisible"; labelClass +=3D " invisible"; label =3D url =3D ""; } =
var domRow =3D domTable.insertRow(-1);
var domLabel =3D domRow.insertCell(-1); domLabel.className =3D =
labelClass; zf_stdSetText(domLabel, label);
var domLink; domLink =3D document.createElement("INPUT"); domLink.type =
=3D "text"; domLink.readOnly
=3D true; domLink.value =3D url; domLink.onclick =3D function(e) { =
zf_stdGetEventSource(e).select(); } ;
domLink.className =3D boxClass; =
domRow.insertCell(-1).appendChild(domLink); domLabel =3D null; domLinnk
=3D null; domRow =3D null; }; zfl_Links.prototype.show =3D =
function(domOrigin, photoSet, photo) { if (!this._sociable)
this._sociable =3D new zf_Sociable(); var sociable =3D this._sociable; =
var self =3D this; var bindLinks
=3D function(id, shareable) { var fbNode =3D =
$(self.dom(id)).closest('.links-line').find('.links-fb-icon');
var twNode =3D =
$(self.dom(id)).closest('.links-line').find('.links-twitter-icon'); =
sociable.bind(fbNode,
sociable.shareOnFacebook, shareable); sociable.bind(twNode, =
sociable.shareOnTwitter, shareable);
}; bindLinks('Gallery', sociable.sharePhotoSet(photoSet)); =
bindLinks('Slideshow', sociable.shareSlideshow(photoSet));
if (photo) bindLinks('Photo', sociable.sharePhoto(photo)); if (photo =
=3D=3D null) { zfl_Popup.prototype.show.call(this,
domOrigin); return; } var domPhotoLink =3D this.dom("Photo"); var =
domDirectLinks =3D this.dom("direct");
var domNoDirectLinks =3D this.dom("nodirect"); var link; var =
domLoginLink =3D this.dom("loginLink");
if (domLoginLink) { ; var a =3D domLoginLink.getElementsByTagName("A"); =
for (var i =3D 0; i < a.length;
i++) { if (a[i].className =3D=3D "login") a[i].onclick =3D =
this.eventHandler(this._login_onclick, photo);
} } domPhotoLink.value =3D photo.getHref("external"); if (domDirectLinks =
=3D=3D null || domNoDirectLinks
=3D=3D null) { zfl_Popup.prototype.show.call(this, domOrigin); return; } =
if (photo.owner.id !=3D zf_userId)
{ domDirectLinks.style.display =3D "none"; =
domNoDirectLinks.style.display =3D "block"; =
zfl_Popup.prototype.show.call(this,
domOrigin); return; } domNoDirectLinks.style.display =3D "none"; =
domDirectLinks.style.display =3D "block";
var width =3D photo.image.width; var height =3D photo.image.height; var =
list =3D [ { method: zf_ProcessingMethod.StandardSmallThumbnail,
mask: 0 }, { method: zf_ProcessingMethod.StandardThumbnail, mask: 0 }, { =
method: zf_ProcessingMethod.StandardLargeThumbnail,
mask: 0 }, { method: zf_ProcessingMethod.StandardVeryLargeThumbnail, =
mask: 0 }, { method: zf_ProcessingMethod.StandardSmallSize,
mask: 0 }, { method: zf_ProcessingMethod.StandardMediumSize, mask: =
zf_AccessMask.ProtectMedium },
{ method: zf_ProcessingMethod.StandardLargeSize, mask: =
zf_AccessMask.ProtectLarge }, { method: =
zf_ProcessingMethod.StandardVeryLargeSize,
mask: zf_AccessMask.ProtectExtraLarge } ]; var strUrl; var strLabel; var =
domTable =3D domDirectLinks.getElementsByTagName("TABLE")[0];
while (domTable.rows.length > 0) domTable.deleteRow(0); var =
warningTopRow, warningBottomRow; var
rows =3D 0; for (i =3D 0; i <=3D list.length; i++) { if (i < =
list.length) { var method =3D list[i].method;
if (method.cx >=3D width && method.cy >=3D height) continue; var size =
=3D photo.image.getScaledSize(method);
var format =3D method.format; if (method.isThumb) format =3D "Thumbnail =
({0} x {1})"; strLabel =3D zf_stdFormatString(format,
size.cx, size.cy); strUrl =3D photo.getExternalUrl(method); } else { =
strUrl =3D photo.getOriginalUrl(photo.fileType);
strLabel =3D zf_stdFormatString("Original Photo ({0} x {1})", width, =
height); } strUrl =3D document.location.protocol
+ "//" + document.location.hostname + strUrl; var publicPhoto =3D =
photo.access.type =3D=3D zf_AccessType.Public;
var protectOriginals =3D (photo.access.mask & =
zf_AccessMask.ProtectOriginals) !=3D 0; var protect =3D
!publicPhoto || i < list.length && (list[i].mask & photo.access.mask) =
!=3D 0 || i =3D=3D list.length &&
protectOriginals; if (protect && warningTopRow =3D=3D null) { =
warningTopRow =3D rows++; this._addTableRow(domTable);
} if (!protect && warningBottomRow =3D=3D null && warningTopRow !=3D =
null) { warningBottomRow =3D rows++;
this._addTableRow(domTable); } this._addTableRow(domTable, strLabel, =
strUrl); ++rows; } if (warningBottomRow
=3D=3D null && warningTopRow !=3D null) { warningBottomRow =3D rows++; =
this._addTableRow(domTable); } var
domWarning =3D this.dom("warning"); if (warningTopRow !=3D null) { var =
rowHeight =3D 22; var top =3D rowHeight
* warningTopRow + rowHeight / 2; height =3D (warningBottomRow - =
warningTopRow) * rowHeight; domWarning.style.top
=3D top + "px"; domWarning.style.height =3D height + "px"; =
domWarning.style.display =3D "block"; } else
{ domWarning.style.display =3D "none"; } =
zfl_Popup.prototype.show.call(this, domOrigin); }; =
zfl_Links.prototype._linkbox_onclick
=3D function(e) { zf_stdGetEventSource(e).select(); }; =
zfl_Links.prototype.send =3D function() { var
subject =3D this._promotion ? "Invitation to view photographs on =
Zenfolio" : "Invitation to view photographs";
var body; var urlGallery; var urlPhoto; var urlSlideshow; urlGallery =3D =
this.dom("Gallery").value;
if (this._photoPage) { urlPhoto =3D this.dom("Photo").value; } if =
(this._slideshow) { urlSlideshow
=3D this.dom("Slideshow").value; if (!this._photoPage) { body =3D =
zf_stdFormatString( this._collection
? "Collection:\r\n{0} \r\n\r\nSlideshow:\r\n{1}" : "Gallery:\r\n{0} =
\r\n\r\nSlideshow:\r\n{1}",
urlGallery, urlSlideshow); } else { body =3D zf_stdFormatString( =
this._collection ? "Collection:\r\n{0} \r\n\r\nSlideshow:\r\n{1} =
\r\n\r\nPhoto:\r\n{2}"
: "Gallery:\r\n{0} \r\n\r\nSlideshow:\r\n{1} \r\n\r\nPhoto:\r\n{2}", =
urlGallery, urlSlideshow, urlPhoto);
} } else { if (!this._photoPage) { body =3D zf_stdFormatString( =
this._collection ? "Collection:\r\n{0}"
: "Gallery:\r\n{0}", urlGallery); } else { body =3D zf_stdFormatString( =
this._collection ? "Collection:\r\n{0} \r\n\r\nPhoto:\r\n{1}"
: "Gallery:\r\n{0} \r\n\r\nPhoto:\r\n{1}", urlGallery, urlPhoto); } } =
var footer =3D ""; if (this._promotion)
{ var footerFormat; if (!this._isAuth) { footerFormat =3D =
"\r\n\r\n-----------------------------------------------\r\nGet a Free =
Trial account on Zenfolio in less than 60 seconds\r\n{0}";
var urlZenfolio =3D "http://" + zf_defaultHost; footer =3D =
zf_stdFormatString(footerFormat, urlZenfolio);
} else { footerFormat =3D =
"\r\n\r\n-----------------------------------------------\r\Open a =
Zenfolio account with my referral code {0} and save {1}";
footer =3D zf_stdFormatString(footerFormat, this._refCode, =
this._refAmount); } } var mailto =3D "mailto:?subject=3D"
+ escape(subject) + "&body=3D" + escape(body + footer); =
document.location.href =3D mailto; this.hide();
}; zfl_Links.prototype._login_onclick =3D function(e, photo) { =
zfl_Header.login(photo.getHref("full"));
};
; function zf_AddToCart(id) { =
zf_Control.prototype.constructor.call(this, id); var self =3D this;
this._document_onkeydown =3D function(e) { if (e.keyCode =3D=3D 27) =
self.hide(); }; } zf_AddToCart.inherits(zf_Control);
zf_AddToCart.prototype.isAddToCart =3D function() { return =
this._photos.length > 0; }; zf_AddToCart.prototype.isCustomize
=3D function() { return this._photos.length =3D=3D 0 && this._productMap =
=3D=3D null; }; zf_AddToCart.prototype.isPriceList
=3D function() { return this._productMap !=3D null; }; =
zf_AddToCart.prototype.setDecorationInfo =3D function(decorationInfo)
{ this._decorationInfo =3D decorationInfo; }; =
zf_AddToCart.prototype.show =3D function(cart, categoryId,
currency) { if (arguments.length =3D=3D 3) { this._cart =3D null; =
this._productMap =3D cart; this._photos
=3D []; this._initCategoryId =3D categoryId; } else { this._cart =3D =
(cart && cart.size > 0) ? cart :
this._cart ? new zf_CartSummary(0, this._cart.currency) : null; =
this._productMap =3D null; this._photos
=3D null; } $().bind('keydown', this._document_onkeydown); =
zf_stdSetText(this.dom("subtitle"), "Loading...");
this.dom("header").innerHTML =3D ""; $('.addToCart-view', =
this.dom()).css('visibility', 'hidden');
this._shadow =3D zf_AddToCart._showPopup(this.dom()); this._returnUrl =
=3D null; if (this._init =3D=3D null)
{ var self =3D this; zf_stdLoadScript("cart.js", function() { if =
(self._photos !=3D null) self._init(currency);
}); } else if (this._photos !=3D null) this._init(currency); }; =
zf_AddToCart.prototype.setPhoto =3D function(photo,
defaultList) { ; this._photos =3D [ photo ]; this._singlePhoto =3D true; =
this._defaultList =3D defaultList;
if (this._init) this._init(); }; zf_AddToCart.prototype.setPhotos =3D =
function(photos, defaultList)
{ ; ; this._photos =3D photos; this._singlePhoto =3D false; =
this._defaultList =3D defaultList; if (this._init)
this._init(); }; zf_AddToCart.prototype.setReturnUrl =3D =
function(returnUrl) { this._returnUrl =3D returnUrl;
}; zf_AddToCart.prototype.hide =3D function() { =
this.dom().style.visibility =3D "hidden"; $().unbind('keydown',
this._document_onkeydown); if (typeof(zfl_Curtain) !=3D "undefined") =
zfl_Curtain.hide(); else { zf_dialogHideShadow(this._shadow);
this._shadow =3D null; } }; zf_AddToCart.navigateToCart =3D function() { =
var url =3D "http://" + zf_defaultHost
+ "/zf/cart/cart.aspx"; url =3D zf_stdGetTransferUrl(url); var navigate =
=3D function() { location.href
=3D url; }; if (typeof(_zfl_init) =3D=3D "undefined" || =
zf_stdGetCookie("zf_cartredir") !=3D null) { navigate();
return; } zf_AddToCart._showWait(null, "Opening your Shopping Cart =
managed by a fulfillment company...");
setTimeout(navigate, 2600); zf_stdSetCookie("zf_cartredir", "1"); }; =
zf_AddToCart._showWait =3D function(id,
message) { var popupNode =3D document.createElement("DIV"); =
popupNode.className =3D "addToCart popup popup-bgcolor2"
+ " popup-border1 popup-color1 popup-font1"; popupNode.innerHTML =3D [ =
'<div class=3D"addToCart-redir">',
'<img src=3D"/zf/img/image-wait.gif" />', zf_stdHtmlEncode(message), =
'</div>' ].join(""); if (id !=3D
null) popupNode.id =3D id; return zf_AddToCart._showPopup(popupNode); }; =
zf_AddToCart._showPopup =3D
function(popupNode) { document.body.appendChild(popupNode); var =
displayStyle =3D zf_stdGetCurrentStyle(popupNode,
"display"); if (!displayStyle || displayStyle =3D=3D "none") { =
popupNode.style.top =3D "0px"; popupNode.style.left
=3D "0px"; popupNode.style.visibility =3D "hidden"; =
popupNode.style.display =3D "block"; } var width =3D =
popupNode.offsetWidth;
var height =3D popupNode.offsetHeight; var handle =3D null; var left =3D =
((zf_stdGetClientWidth() - width)
/ 2); var top =3D (2 * (zf_stdGetClientHeight() - height) / 5); top +=3D =
document.documentElement.scrollTop;
popupNode.style.left =3D left + "px"; popupNode.style.top =3D top + =
"px"; if (typeof(zfl_Curtain) !=3D "undefined")
zfl_Curtain.show(); else handle =3D zf_dialogShowShadow(popupNode); =
popupNode.style.visibility =3D "inherit";
popupNode =3D null; return handle; }; =
zf_AddToCart.prototype._button_onclick =3D function(node, method)
{ if (!zf_stdHasClassName(node, "disabled")) this[method].call(this, =
node); }; zf_AddToCart.prototype._button_onmouseover
=3D function(node) { var btn =3D $(node); if (!btn.hasClass("disabled")) =
{ btn.removeClass("standard button-color1 button-bgcolor1 =
button-border1");
btn.addClass("hover button-color2 button-bgcolor2 button-border2"); } }; =
zf_AddToCart.prototype._button_onmouseout
=3D function(node) { var btn =3D $(node); if (!btn.hasClass("disabled")) =
{ btn.removeClass("hover button-color2 button-bgcolor2 button-border2");
btn.addClass("standard button-color1 button-bgcolor1 button-border1"); } =
};
; function zf_CartSummary(size, currency) { this.size =3D size ? size : =
0; this.currency =3D currency;
} zf_CartSummary.prototype.applyUpdate =3D function(update) { if =
(typeof(update) =3D=3D "number") { this.size
=3D update; if (this.size =3D=3D 0) this.currency =3D null; return this; =
} this.size =3D update.cartSize;
if (this.size =3D=3D 0) this.currency =3D null; else if =
(update.added.length > 0) this.currency =3D update.added[0].currency;
else if (update.updated.length > 0) this.currency =3D =
update.updated[0].currency; return this; };
; function zf_CurrencyInfo() { this.name =3D null; this.code =3D null; =
this.numericCode =3D 0; } zf_CurrencyInfo.prototype.toString
=3D function() { return this.code; }; zf_CurrencyInfo.all =3D =
_zf_stdTransformResponse( [{"$type": "CurrencyInfo","name":
"US Dollar","pluralName": "US Dollars","shortName": "USD","code": =
"USD","symbol": "$"},{"$type": "CurrencyInfo","name":
"Canadian Dollar","pluralName": "Canadian Dollars","shortName": =
"CAD","code": "CAD","symbol": "C$"},{"$type":
"CurrencyInfo","name": "Euro","pluralName": "Euros","shortName": =
"EUR","code": "EUR","symbol": "\u20AC"},{"$type":
"CurrencyInfo","name": "Pound Sterling","pluralName": "Pounds =
Sterling","shortName": "GBP","code":
"GBP","symbol": "\u00A3"},{"$type": "CurrencyInfo","name": "Australian =
Dollar","pluralName": "Australian Dollars","shortName":
"AUD","code": "AUD","symbol": "AU$"},{"$type": "CurrencyInfo","name": =
"Czech Koruna","pluralName":
"Czech Koruny","shortName": "CZK","code": "CZK","symbol": =
"K\u010D"},{"$type": "CurrencyInfo","name":
"Danish Krone","pluralName": "Danish Kroner","shortName": "DKK","code": =
"DKK","symbol": "kr"},{"$type":
"CurrencyInfo","name": "Hong Kong Dollar","pluralName": "Hong Kong =
Dollars","shortName": "HKD","code":
"HKD","symbol": "HK$"},{"$type": "CurrencyInfo","name": "Hungarian =
Forint","pluralName": "Hungarian Forint","shortName":
"HUF","code": "HUF","symbol": "Ft"},{"$type": "CurrencyInfo","name": =
"Israeli New Shekel","pluralName":
"Israeli New Shekels","shortName": "ILS","code": "ILS","symbol": =
"\u20AA"},{"$type": "CurrencyInfo","name":
"Japanese Yen","pluralName": "Japanese Yen","shortName": "JPY","code": =
"JPY","symbol": "\u00A5"},{"$type":
"CurrencyInfo","name": "Mexican Peso","pluralName": "Mexican =
Pesos","shortName": "MEX","code": "MXN","symbol":
"Mex$"},{"$type": "CurrencyInfo","name": "New Zealand =
Dollar","pluralName": "New Zealand Dollars","shortName":
"NZD","code": "NZD","symbol": "NZ$"},{"$type": "CurrencyInfo","name": =
"Norwegian Krone","pluralName":
"Norwegian Kroner","shortName": "NOK","code": "NOK","symbol": =
"kr"},{"$type": "CurrencyInfo","name":
"Polish Zloty","pluralName": "Polish Zloty","shortName": "PLN","code": =
"PLN","symbol": "z\u0142"},{"$type":
"CurrencyInfo","name": "Singapore Dollar","pluralName": "Singapore =
Dollars","shortName": "SGD","code":
"SGD","symbol": "S$"},{"$type": "CurrencyInfo","name": "Swedish =
Krona","pluralName": "Swedish Kronor","shortName":
"SEK","code": "SEK","symbol": "kr"},{"$type": "CurrencyInfo","name": =
"Swiss Franc","pluralName": "Swiss Francs","shortName":
"CHF","code": "CHF","symbol": "Fr."}] ); (function() { var cnt =3D =
zf_CurrencyInfo.all ? zf_CurrencyInfo.all.length
: 0; for (var i =3D 0; i < cnt; i++) { =
zf_CurrencyInfo.all[zf_CurrencyInfo.all[i].code] =3D =
zf_CurrencyInfo.all[i];
} })();
; function zfl_ControlBox(id, photoPage, init) { this._photoPage =3D =
photoPage; this._buttons =3D init.buttons;
this._popups =3D init.popups; this._photoDisplayed =3D false; =
zfl_Control.prototype.constructor.call(this,
id); zf_stdMakeMethodsDeferred(this, this.id, ["_showButtons"]); } =
zfl_ControlBox.inherits(zfl_Control);
zfl_ControlBox.prototype.init =3D function(photoList, decorAddToCart, =
cart, photoSet) { ; this._photoList
=3D photoList; this._decorAddToCart =3D decorAddToCart; this._cart =3D =
cart; this._photoSet =3D photoSet;
if (this._buttons.addToCart) { var domButton =3D =
this._buttons.addToCart.dom(); if (!this._buttons.share)
{ domButton.style.styleFloat =3D "right"; domButton.style.cssFloat =3D =
"right"; } else if (this._buttons.slideshow)
{ var domLeft =3D this._buttons.slideshow.dom(); var domRight =3D =
this._buttons.share.dom(); var left
=3D domLeft.offsetWidth; var right =3D domRight.offsetWidth; var center =
=3D domButton.offsetWidth; var
whole =3D domButton.parentNode.offsetWidth; var shift =3D =
Math.ceil((whole - (left + right + center))
/ 2); domButton.style.left =3D shift + "px"; domLeft =3D null; domRight =
=3D null; } domButton =3D null;
} if (!this._photoPage) this._showButtons(true); if =
(this._popups.addToCart !=3D null) { =
this._popups.addToCart.setDecorationInfo(decorAddToCart);
var self =3D this; this._popups.addToCart.onadd =3D function(update) { =
self._cart.applyUpdate(update);
if (self.oncartupdate) self.oncartupdate(self._cart); }; } }; =
zfl_ControlBox.prototype._showButtons
=3D function(show) { if (this._buttons.addToCart) =
this._buttons.addToCart.visibility(!this._photoPage
|| this.canAddToCart()); if (this._buttons.slideshow) =
this._buttons.slideshow.visibility(show);
if (this._buttons.share) this._buttons.share.visibility(show); }; =
zfl_ControlBox.prototype.share
=3D function() { this._popups.links.show(this._buttons.share.dom(), =
this._photoSet, this.current);
}; zfl_ControlBox.prototype.addToCart =3D function() { var popup =3D =
this._popups.addToCart; popup.show(this._cart);
popup.setReturnUrl(location.href); if (!this._photoPage) { var photoList =
=3D this._photoList; var onload
=3D function() { var photos =3D []; for (var i =3D 0; i < =
photoList.length; i++) { photo =3D photoList.get(i);
; if (photo.priceKey !=3D "") photos.push(photo); } =
popup.setPhotos(photos); }; photoList.loadAll(onload);
} else { ; popup.setPhoto(this.current); } }; =
zfl_ControlBox.prototype.update =3D function(photo,
context) { ; ; ; if (this.current =3D=3D photo) return; if =
(this._popups.links) this._popups.links.hide();
if (this._popups.addToCart) this._popups.addToCart.hide(); if =
(this.current !=3D null) this.current.unadvise(this);
this.current =3D photo; this._photoDisplayed =3D context.displayed; =
this._showButtons(photo.loaded);
if (!photo.loaded) { var self =3D this; photo.advise(this, function() { =
self._showButtons(true); });
} }; zfl_ControlBox.prototype.canAddToCart =3D function() { return =
this._buttons.addToCart !=3D null &&
this.current !=3D null && this.current.loaded && this.current.priceKey =
!=3D "" && this._photoDisplayed
=3D=3D true; }; zfl_ControlBox.prototype.canShare =3D function() { =
return this._popups.links; }; zfl_ControlBox.prototype.canSlideshow
=3D function() { return this._buttons.slideshow; }; =
zfl_ControlBox.prototype.photoDisplayed =3D function()
{ this._photoDisplayed =3D true; this._showButtons(true); }; =
zfl_ControlBox.prototype.slideshow =3D
function() { var uri =3D location.pathname + "/slideshow" + =
location.hash; var formatFeatures =3D =
"left=3D0,top=3D0,width=3D{0},height=3D{1},resizable=3Dyes,fullscreen=3Dy=
es,"
+ "scrollbars=3Dno,menubar=3Dno,toolbar=3Dno,location=3Dno," + =
"status=3Dno"; var width =3D screen.availWidth
? screen.availWidth : screen.width; var height =3D screen.availHeight ? =
screen.availHeight : screen.height;
var features =3D zf_stdFormatString(formatFeatures, width, height); var =
w =3D window.open(uri, "zf_Slideshow",
features); if (w !=3D null) { setTimeout( function() { try { =
w.resizeTo(width, height); } catch(e) {
} try { w.focus(); } catch(e) { } }, 100); } else alert("It appears you =
have a pop-up blocker active for this Web page, which prevents you from =
seeing new windows open. Please disable the pop-up blocker=C2=A0for this =
page or,=C2=A0for better overall experience, disable the pop-up blocker =
for the entire site.");
};
; ; function zfl_SessionCookie(cookie) { ; var parts =3D =
cookie.split("."); ; this.sessionKey =3D parts[0];
this.recentPhotoSetId =3D parts[1].length > 0 ? parseInt(parts[1]) : 0; =
this.recentPhotoIndex =3D parts[2].length
> 0 ? parseInt(parts[2]) : -1; this.showAll =3D false; if (parts.length =
> 3) this.showAll =3D parts[3]
=3D=3D "1"; ; ; } zfl_SessionCookie.prototype.setRecent =3D =
function(photoSetId, photoIndex) { ; ; this.recentPhotoSetId
=3D photoSetId; this.recentPhotoIndex =3D photoIndex; this._save(); }; =
zfl_SessionCookie.prototype.setShowAll
=3D function(showAll) { this.showAll =3D showAll; this._save(); }; =
zfl_SessionCookie.prototype._save
=3D function() { if (!this.sessionKey) return; zf_stdSetCookie( =
"zf_lsc", [ this.sessionKey, this.recentPhotoSetId,
this.recentPhotoIndex, this.showAll ? 1 : 0 ].join(".")); };
; ; function zf_User() { zf_Loadable.prototype.constructor.call(this); =
this.photos =3D 0; this.galleries
=3D 0; this.collections =3D 0; this.views =3D 0; } =
zf_User.inherits(zf_Loadable); zf_User._fields =3D [ "id",
"loginName", "displayName", "domainName", "views", "bio", "copyright", =
"email" ]; zf_User.clone
=3D function(user) { if (user =3D=3D null) return null; var cloned =3D =
zf_stdCopyFields(new zf_User(), user,
zf_User._fields); cloned.image =3D zf_FileImage.clone(user.image); =
return cloned; }; zf_User.prototype.postSerialize
=3D function() { zf_Loadable.prototype.postSerialize.call(this); if =
(this.domainName =3D=3D null) this.domainName
=3D this.loginName + zf_defaultDomain; this.copyright =3D "Copyright =
\xA9 " + this.displayName; };
; ; function zf_PhotoList(offset, page, length, ids) { ; this._offset =
=3D offset; this._page =3D page;
this._photos =3D []; this._map =3D {}; if (typeof(ids) =3D=3D "number") =
{ this._photoSetId =3D ids; } else
{ ; ; this._photoIds =3D ids; for (var i =3D 0; i < ids.length; i++) =
this._map[ids[i]] =3D i; } this.length
=3D length; this._fresh =3D true; } zf_PhotoList.prototype.get =3D =
function(index, touch) { ; if (index
>=3D this.length) return null; if (touch =3D=3D null) touch =3D false; =
var i; if (this._photos[index] instanceof
zf_Photo) return this._photos[index]; if (this._photos[index] =3D=3D =
null) { var from, to; if (index <
this._offset) { from =3D 0; to =3D this._offset; } else { var n =3D =
Math.floor((index - this._offset) /
this._page); from =3D this._page * n + this._offset; to =3D from + =
this._page; } if (to > this.length)
to =3D this.length; for (i =3D from; i < to; i++) { if (this._photos[i] =
=3D=3D null) this._photos[i] =3D false;
} var first =3D this._fresh; this._fresh =3D false; var self =3D this; =
var oncomplete =3D function(photos)
{ self._adopt(photos, from); if (from + photos.length < to) { =
self.length =3D from + photos.length;
if (self.onshrink !=3D null) { if (!self.onshrink()) return; } } if =
(self.onload !=3D null) self.onload(first);
}; if (this._photoSetId !=3D null) { this.getPhotoRange(from, to, false, =
oncomplete); } else { var
ids =3D new Array(to - from); for (i =3D from; i < to; i++) ids[i - =
from] =3D this._photoIds[i]; this.getPhotoBatch(ids,
oncomplete); } } if (touch) return null; if (index =3D=3D from && index =
> 0) this.get(index - 1, true);
else if (index =3D=3D to - 1 && index < this.length - 1) this.get(index =
+ 1, true); ; var photo =3D new
zf_Photo(); photo.setRequested(); this._photos[index] =3D photo; return =
photo; }; zf_PhotoList.prototype.find
=3D function(id) { var index =3D this._map[id]; return index !=3D null ? =
index : -1; }; zf_PhotoList.prototype.setDefaults
=3D function(photoSet, owner) { this._defaultPhotoSet =3D photoSet; =
this._defaultOwner =3D owner; };
zf_PhotoList.prototype.loadAll =3D function(callback) { ; ; var from =3D =
null; var to =3D null; for (var
i =3D 0; i < this.length; i++) { var photo =3D this._photos[i]; if =
(photo && photo.loaded) continue;
if (from =3D=3D=3D null) from =3D i; if (from !=3D=3D null) to =3D i + =
1; } if (from =3D=3D=3D null) { callback();
return; } if (to =3D=3D=3D null) to =3D this.length; var self =3D this; =
this.getPhotoRange(from, to, true,
function(photos) { self._adopt(photos, from); if (from + photos.length < =
to) { self.length =3D from
+ photos.length; if (self.onshrink !=3D null) self.onshrink(); } if =
(self.onload !=3D null) self.onload(false);
callback(); }); }; zf_PhotoList.prototype._adopt =3D function(photos, =
offset) { ; ; for (i =3D 0; i <
photos.length; i++) { var src =3D photos[i]; var dest =3D this._photos[i =
+ offset]; ; this._map[src.id]
=3D i + offset; if (this._defaultPhotoSet) src.photoSet =3D =
this._defaultPhotoSet; if (this._defaultOwner
&& src.owner && src.owner.id =3D=3D this._defaultOwner.id) src.owner =3D =
this._defaultOwner; if (!(dest
instanceof zf_Photo)) { this._photos[i + offset] =3D src; } else { ; if =
(!dest.loaded) { ; zf_stdCopyFields(dest,
src, zf_Photo._fields); dest.image =3D dest; dest.done(); } } } };
; function zfl_PhotoList(offset, page, length, ids, token, photoSetPcn, =
tokenId) { zf_PhotoList.prototype.constructor.call(this,
offset, page, length, ids); this._token =3D token; this._photoSetPcn =3D =
photoSetPcn; this._tokenId
=3D tokenId; } zfl_PhotoList.inherits(zf_PhotoList); =
zfl_PhotoList.requests =3D new zf_RequestQueue(200);
zfl_PhotoList.prototype.getPhotoRange =3D function(from, to, urgent, =
oncomplete) { var params =3D [ this._defaultOwner.id,
this._photoSetId, from, to, this._token, =
zfl_SessionCookie.current.sessionKey, this._photoSetPcn ];
var callback =3D function(status, retVal) { if (status !=3D 200 || =
retVal.error !=3D null) return; oncomplete(retVal.result);
}; if (urgent) { zf_stdServerRequest("GET", "/zf/layout/layout.asmx", =
"GetPhotoRange", params, callback);
} else { zfl_PhotoList.requests.enqueue("GET", "/zf/layout/layout.asmx", =
"GetPhotoRange", params,
callback); } }; zfl_PhotoList.prototype.getPhotoBatch =3D function(ids, =
oncomplete) { var params =3D [
this._defaultOwner.id, this._tokenId, ids, this._token, =
zfl_SessionCookie.current.sessionKey, this._photoSetPcn
]; zfl_PhotoList.requests.enqueue("GET", "/zf/layout/layout.asmx", =
"GetPhotoBatch", params, function(status,
retVal) { if (status !=3D 200 || retVal.error !=3D null) return; =
oncomplete(retVal.result); }); };
; ; ; function zfl_PhotoSetLayout(id, global, local) { if =
(zf_stdNoArgs(arguments)) return; =
zfl_Layout.prototype.constructor.call(this,
id, global, local); var self =3D this; this._photoSet =3D =
zfl_stdTransformResponse(local.photoSet, "photoSet");
this._photoList =3D local.photoList; =
this._photoList.setDefaults(this._photoSet, this._photoSet.owner);
this._photoList.onload =3D function(first) { self.recalc(); }; =
this._controlBox =3D local.controlBox;
var pager =3D local.pager; var grid =3D this._grids.photos; this.showAll =
=3D local.pager =3D=3D null; if (grid
&& pager) { this._pager =3D pager; this.showAll =3D false; var cookie =
=3D zfl_SessionCookie.current;
if (cookie && cookie.recentPhotoSetId =3D=3D this._photoSet.id) =
this.showAll =3D cookie.showAll; this._setPagerMode(this.showAll
? zf_Pager.All : zf_Pager.Paged); grid.onlayoutchange =3D function(info) =
{ pager.update(info.totalPages,
info.currentPage); }; pager.onall =3D function() { =
self._setPagerMode(zf_Pager.All); self.recalc();
}; pager.onpaged =3D function() { self._setPagerMode(zf_Pager.Paged); =
self.recalc(); }; pager.onchange
=3D function(page) { grid.setPage(page); grid.recalcLayout(); }; } if =
(grid) { this._photoList.onshrink
=3D function() { grid.setSize(self._photoList.length); return true; }; } =
if (local.controlBox && this.header)
{ this._cart =3D this.header.cartSummary; local.controlBox.oncartupdate =
=3D this.header.closure(this.header.setCartSummary);
} this.setupGuestbook(global, local); this.cyMinFooter =3D 15; } =
zfl_PhotoSetLayout.inherits(zfl_Layout);
zfl_PhotoSetLayout.prototype.onrecalc =3D function() { =
zfl_Layout.prototype.onrecalc.call(this);
if (this._pager && this._grids.photos) { var info =3D =
this._grids.photos.getLayoutInfo(); this._pager.update(info.totalPages,
info.currentPage); } }; zfl_PhotoSetLayout.prototype.onload =3D =
function() { var photoList =3D this._photoList;
this.initGrid( this._grids.photos, zfl_PhotoViewStyle.GalleryPhoto, =
this._grids.photosParams, function(index)
{ return photoList.get(index); }, photoList.length); if =
(this._controlBox) { var decorAddToCart
=3D this._getDecorationInfo( zfl_PhotoViewStyle.ProductCategory, =
zf_ProcessingMethod.StandardLargeThumbnail);
this._controlBox.init(this._photoList, decorAddToCart, this._cart, =
this._photoSet); } zfl_Layout.prototype.onload.call(this);
}; zfl_PhotoSetLayout.prototype._grid_onstretch =3D function(height, =
stretcher) { var grid =3D this._grids.photos;
if (this.showAll) { grid.minRows =3D null; grid.setHeight(-1); } else { =
grid.minRows =3D 2; grid.setHeight(height);
} stretcher.style.height =3D "auto"; stretcher.style.minHeight =3D =
height + "px"; var info; var scrollY
=3D -1; if (!this.__inited) { var cookie =3D zfl_SessionCookie.current; =
if (cookie && cookie.recentPhotoSetId
=3D=3D this._photoSet.id && cookie.recentPhotoIndex >=3D 0 && =
cookie.recentPhotoIndex < this._photoList.length)
{ info =3D grid.getLayoutInfo(); if (this.showAll) { var rowHeight =3D =
info.height / info.rowsPerPage;
var currentRow =3D cookie.recentPhotoIndex / info.itemsPerRow; var =
offset =3D rowHeight * currentRow;
if (offset > zf_stdGetClientHeight() - 100) scrollY =3D offset; } else { =
info.currentPage =3D Math.floor(cookie.recentPhotoIndex
/ info.itemsPerPage); grid.setPage(info.currentPage); } info =3D null; } =
else { if (cookie) cookie.setRecent(this._photoSet.id,
0); } this.__inited =3D true; } else { info =3D =
grid.getLayoutInfo(zf_PhotoGrid.KeepVisible); } grid.recalcLayout(info);
if (scrollY > 0) window.scrollTo(0, scrollY); return true; }; =
zfl_PhotoSetLayout.prototype._setPagerMode
=3D function(mode) { if (!this._pager) return; this.showAll =3D mode =
=3D=3D zf_Pager.All; zfl_SessionCookie.current.setShowAll(this.showAll);
this._pager.setMode(mode); };
; ; ; ; ; function zfl_Copyright(id, field, format) { =
zfl_Control.prototype.constructor.call(this,
id); zf_stdMakeMethodsDeferred(this, this.id, [ "set" ]); } =
zfl_Copyright.inherits(zfl_Control);
zfl_Copyright.prototype.set =3D function(text, loading) { if (!loading) =
this.visibility(text !=3D "");
var label =3D this.dom("label"); zf_stdReplaceClassName(label, loading ? =
null : "copyright-loading",
loading ? "copyright-loading" : null); zf_stdSetText(label, text); }; =
zfl_Copyright.prototype.showLoading
=3D function() { this.set("Loading...", true); }; =
zfl_Copyright.prototype.update =3D function(photo)
{ ; ; if (this.current =3D=3D photo) return; if (this.current !=3D null) =
this.current.unadvise(this);
if (photo.loaded) { this.set(photo.copyright =3D=3D null ? =
photo.owner.copyright : photo.copyright);
} else { var self =3D this; photo.advise(this, function() { =
self.set(photo.copyright =3D=3D null ? photo.owner.copyright
: photo.copyright); self.notifyResize(true); }, function() { =
self.showLoading(); self.notifyResize(true);
} ); } this.current =3D photo; };
; ; function zfl_Caption(id) { =
zfl_Control.prototype.constructor.call(this, id); this._showGallery
=3D this.dom("gallery") !=3D null; zf_stdMakeMethodsDeferred(this, =
this.id, [ "setTitle", "setCaption",
"setGallery", "setDisplay", "_updateClasses" ]); } =
zfl_Caption.inherits(zfl_Control); zfl_Caption.prototype.setTitle
=3D function(text, loading) { var label =3D this.dom("title"); if =
(!loading) label.style.display =3D text.length
> 0 ? "block" : "none"; zf_stdReplaceClassName(label, loading ? null : =
"title-loading", loading ?
"title-loading" : null); zf_stdSetText(label, text); }; =
zfl_Caption.prototype.setCaption =3D function(html,
loading) { var label =3D this.dom("caption"); if (loading) html =3D =
"Loading..."; label.style.display
=3D html.length > 0 ? "block" : "none"; if (html.length > 0) { =
zf_stdReplaceClassName(label, loading
? null : "caption-loading", loading ? "caption-loading" : null); } =
label.innerHTML =3D html; }; zfl_Caption.prototype.setGallery
=3D function(gallery, loading) { var label =3D this.dom("gallery"); if =
(label =3D=3D null) return; label.style.visibility
=3D !loading ? "inherit" : "hidden"; if (gallery =3D=3D null || loading) =
return; label =3D label.getElementsByTagName("A")[0];
label.href =3D zf_stdGetTransferUrl(this.current.getHref("gallery")); =
zf_stdSetText(label, this.current.gallery.title);
}; zfl_Caption.prototype.showLoading =3D function() { =
this.setTitle("Loading...", true); this.setCaption(null,
true); this.setGallery(null, true); }; zfl_Caption.prototype.update =3D =
function(photo) { ; ; if (this.current
=3D=3D photo) return; if (this.current !=3D null) =
this.current.unadvise(this); if (this.currentMeta !=3D null)
this.currentMeta.unadvise(this); this.current =3D photo; =
this.currentMeta =3D null; if (photo.loaded)
{ this.set(photo); } else { var self =3D this; photo.advise(this, =
function() { self.set(photo); self.notifyResize(true);
}, function() { self.showLoading(); self.notifyResize(true); } ); } }; =
zfl_Caption.prototype.set
=3D function(photo) { ; var hasTitle =3D photo.title.length > 0; var =
hasCaption =3D (photo.flags & zf_PhotoFlags.HasCaption)
!=3D 0; if (!hasTitle && !hasCaption && !this._showGallery) { =
this.setDisplay(false); this.setTitle("");
this.setCaption(""); return; } this.setTitle(photo.title); if =
(this._showGallery) this.setGallery(photo.gallery);
if (hasCaption) { var meta =3D photo.getMeta(); this.currentMeta =3D =
meta; if (meta.loaded) { this.setCaption(meta.caption);
} else { this.setCaption(null, true); var self =3D this; meta.bump(); =
meta.advise(this, function()
{ self.setCaption(meta.caption); self.notifyResize(true); }, function() =
{ self.setCaption(null,
true); self.notifyResize(true); }); } } else { this.setCaption(""); } =
this._updateClasses(hasTitle,
hasCaption); this.setDisplay(true); }; zfl_Caption.prototype.setDisplay =
=3D function(show) { this.display(show);
}; zfl_Caption.prototype._updateClasses =3D function(hasTitle, =
hasCaption) { var prefixes =3D ["captionbox-wide",
"captionbox-regular"]; var suffix; if (hasTitle && hasCaption) suffix =
=3D { add: "-tc", remove: ["-t",
"-c", "-g"] }; else if (hasTitle) suffix =3D { add: "-t", remove: =
["-tc", "-c", "-g"] }; else if (hasCaption)
suffix =3D { add: "-c", remove: ["-tc", "-t", "-g"] }; else suffix =3D { =
add: "-g", remove: ["-tc", "-c",
"-t"] }; var dom =3D this.dom(); for (var i =3D 0; i < prefixes.length; =
i++) { if (!zf_stdHasClassName(dom,
prefixes[i])) continue; zf_stdReplaceClassName(dom, prefixes[i] + =
suffix.remove[0], prefixes[i] +
suffix.add); for (var j =3D 1; j < suffix.remove.length; j++) =
zf_stdReplaceClassName(dom, prefixes[i]
+ suffix.remove[j], null); break; } };
; ; function zfl_ShortExif(id, compact) { =
zfl_Control.prototype.constructor.call(this, id); this._compact
=3D compact; zf_stdMakeMethodsDeferred(this, this.id, [ "set", =
"showLoading"]); } zfl_ShortExif.inherits(zfl_Control);
zfl_ShortExif.prototype.set =3D function(meta) { =
this.dom("loading").style.display =3D "none"; var html
=3D this._generateHTML(meta); if (html.length =3D=3D 0) { =
this.dom("content").style.display =3D "none";
this.dom("notavailable").style.display =3D "inline"; return; } =
this.dom("text").innerHTML =3D html;
this.dom("content").style.display =3D "inline"; =
this.dom("notavailable").style.display =3D "none"; };
zfl_ShortExif.prototype.showLoading =3D function() { =
this.dom("loading").style.display =3D "inline";
this.dom("content").style.display =3D "none"; =
this.dom("notavailable").style.display =3D "none"; };
zfl_ShortExif.prototype.update =3D function(photo) { ; ; var meta =3D =
photo.getMeta(); if (this.current
=3D=3D meta) return; if (this.current !=3D null) =
this.current.unadvise(this); this.current =3D meta; if (meta.loaded)
{ this.set(meta); } else { var self =3D this; meta.bump(); =
meta.advise(this, function() { self.set(meta);
self.notifyResize(true); }, function() { self.showLoading(); =
self.notifyResize(true); } ); } };
zfl_ShortExif.prototype._compose =3D function(exif) { var sb =3D []; var =
val; var make =3D exif[0x010F];
var model =3D exif[0x0110]; if (make !=3D null && model !=3D null) { if =
(model.data.indexOf(make.data)
!=3D 0) sb.push(make.display, " ", model.display); else =
sb.push(model.display); } else if (model !=3D
null) sb.push(model.display); else if (make !=3D null) =
sb.push(make.display); var fNumberAdded =3D false;
val =3D exif[0x829D]; if (val !=3D null) { if (sb.length > 0) sb.push(", =
"); sb.push('<span class=3D"nowrap">',
val.display, '</span>'); fNumberAdded =3D true; } else if (exif[0x829A] =
!=3D null) { if (sb.length > 0)
sb.push(", "); sb.push('<span class=3D"nowrap">f/NA</span>'); =
fNumberAdded =3D true; } val =3D exif[0x920A];
if (val !=3D null) { if (fNumberAdded) sb.push(" @ "); else if =
(sb.length > 0) sb.push(", "); sb.push('<span class=3D"nowrap">'
+ val.display + '</span>'); } val =3D exif[0x829A]; if (val !=3D null) { =
if (sb.length > 0) sb.push(", ");
sb.push('<span class=3D"nowrap">', val.display, '</span>'); } val =3D =
exif[0x8827]; if (val !=3D null)
{ if (sb.length > 0) sb.push(", "); sb.push('<span class=3D"nowrap">', =
val.display, '</span>'); }
val =3D exif[0x9209]; if (val !=3D null) { if (sb.length > 0) sb.push(", =
"); val =3D (parseInt(val.data)
& 1) !=3D 0 ? "Flash" : "No Flash"; sb.push('<span class=3D"nowrap">', =
val, '</span>'); } return sb.join("");
}; zfl_ShortExif.prototype._generateHTML =3D function(meta) { var =
content =3D ""; if ((meta.photo.access.mask
& zf_AccessMask.ProtectExif) =3D=3D 0) content =3D =
this._compose(meta.exif); if (content.length =3D=3D 0)
return ""; var format =3D this._compact ? "{0}" : "Photo taken=C2=A0with =
{0} "; return zf_stdFormatString(format,
content); }; zfl_ShortExif.prototype._ellipses_onmouseover =3D =
function(event) { this._ellipses_onmouseout();
var domSrc =3D zf_stdGetEventSource(event); var offset =3D =
zf_stdGetOffset(domSrc); var domTip =3D document.createElement("DIV");
domTip.id =3D "exifTip"; domTip.className =3D "shortexif-tip =
popup-bgcolor1 popup-border1 shortexif-color1";
domTip.innerHTML =3D " For=C2=A0more=C2=A0EXIF and photo information, =
move=C2=A0your mouse over the image. "; =
document.body.appendChild(domTip);
domTip.style.left =3D offset.cx - domTip.clientWidth + "px"; =
domTip.style.top =3D offset.cy - domTip.clientHeight
- 5 + "px"; }; zfl_ShortExif.prototype._ellipses_onmouseout =3D =
function(event) { var domTip =3D document.getElementById("exifTip");
if (domTip !=3D null) domTip.parentNode.removeChild(domTip); };
; ; function zf_CategoryInfo(map) { this._map =3D map; } =
zf_CategoryInfo.load =3D function(oncomplete)
{ ; if (zf_CategoryInfo._info !=3D null) { =
oncomplete(zf_CategoryInfo._info); return; } =
zf_stdServerRequestEx("GET",
"/zf/core/core.asmx", "GetCategoryInfo", [ ], function(result, error) { =
if (error !=3D null) { oncomplete(new
zf_CategoryInfo({})); return; } zf_CategoryInfo._info =3D new =
zf_CategoryInfo(result); oncomplete(zf_CategoryInfo._info);
}); }; zf_CategoryInfo.prototype.getSubject =3D function(cat) { ; cat =
-=3D cat % 1000000; return (cat
=3D this._map[cat]) !=3D null ? cat : ""; }; =
zf_CategoryInfo.prototype.getSubjectMatter =3D function(cat)
{ ; cat -=3D cat % 1000; return ((cat % 1000000) !=3D 0 && (cat =3D =
this._map[cat]) !=3D null) ? cat : "";
}; zf_CategoryInfo.prototype.getSubjectDetail =3D function(cat) { ; =
return ((cat % 1000) !=3D 0 && (cat
=3D this._map[cat]) !=3D null) ? cat : ""; }; =
zf_CategoryInfo.prototype.getSubjects =3D function() {
var res =3D {}; for (var code in this._map) { if ((parseInt(code, 10) % =
1000000) =3D=3D 0) res[code] =3D this._map[code];
} return res; }; zf_CategoryInfo.prototype.getSubjectMatters =3D =
function(subject) { ; ; ; var res =3D
{}; for (var code in this._map) { code =3D parseInt(code); if (code !=3D =
subject && (code - (code % 1000000))
=3D=3D subject && (code % 1000) =3D=3D 0) res[code] =3D this._map[code]; =
} return res; }; zf_CategoryInfo.prototype.getSubjectDetails
=3D function(matter) { ; ; ; ; var res =3D {}; for (var code in =
this._map) { code =3D parseInt(code);
if (code !=3D matter && (code - (code % 1000)) =3D=3D matter) res[code] =
=3D this._map[code]; } return res;
};
; function zfl_Categories(id) { =
zfl_Control.prototype.constructor.call(this, id); =
zf_stdMakeMethodsDeferred(this,
this.id, [ "setCategory", "setKeywords"]); } =
zfl_Categories.inherits(zfl_Control); =
zfl_Categories.prototype.setCategory
=3D function(category, loading) { var ct1 =3D "", ct2 =3D "", ct3 =3D =
""; var c1 =3D this.dom("category").getElementsByTagName("B")[0];
var c2 =3D this.dom("subcategory").getElementsByTagName("B")[0]; var c3 =
=3D this.dom("subcategoryDetail").getElementsByTagName("B")[0];
zf_stdReplaceClassName(c1, loading ? null : "pair-loading", loading ? =
"pair-loading" : null); if
(loading) { ct1 =3D "loading..."; } else if (category !=3D 0) { ; ct1 =
=3D this.categoryList.getSubject(category);
ct2 =3D this.categoryList.getSubjectMatter(category); ct3 =3D =
this.categoryList.getSubjectDetail(category);
} zf_stdSetText(c1, ct1); zf_stdSetText(c2, ct2); zf_stdSetText(c3, =
ct3); }; zfl_Categories.prototype.setKeywords
=3D function(keywords, loading) { var label =3D =
this.dom("keywords").getElementsByTagName("B")[0];
if (loading) { zf_stdReplaceClassName(label, null, "pair-loading"); =
zf_stdSetText(label, "loading...");
return; } zf_stdReplaceClassName(label, "pair-loading", null); var text =
=3D []; for (var i =3D 0; i <
keywords.length; i++) { var keyword =3D keywords[i]; var quoted =3D =
keyword; if (quoted.indexOf(' ')
!=3D -1) quoted =3D '"' + quoted + '"'; quoted =3D encodeURI(quoted); =
text.push(['<a href=3D"/?search=3D',
quoted, '">', zf_stdHtmlEncode(keyword), '</a>'].join("")); } =
label.innerHTML =3D text.join(", ");
}; zfl_Categories.prototype.showLoading =3D function() { =
this.setCategory(0, true); this.setKeywords([],
true); }; zfl_Categories.prototype.update =3D function(photo) { ; ; if =
(this.current =3D=3D photo) return;
if (this.current !=3D null) this.current.unadvise(this); if =
(this.currentMeta !=3D null) this.currentMeta.unadvise(this);
this.current =3D photo; this.currentMeta =3D null; if (photo.loaded) { =
this.set(photo); } else { var
self =3D this; photo.advise(this, function() { self.set(photo); =
self.notifyResize(true); }, function()
{ self.showLoading(); self.notifyResize(true); } ); } }; =
zfl_Categories.prototype.set =3D function(photo)
{ if (photo =3D=3D null) photo =3D this.current; ; var hasCategories =3D =
(photo.flags & zf_PhotoFlags.HasCategories)
!=3D 0; var hasKeywords =3D (photo.flags & zf_PhotoFlags.HasKeywords) =
!=3D 0; if (!hasCategories) this.setCategory(0,
false); if (!hasKeywords) this.setKeywords([], false); if =
(!hasCategories && !hasKeywords) { this.notifyResize(true);
return; } var self; if (hasCategories && !this.categoryList) { self =3D =
this; zf_CategoryInfo.load(
function(catInfo) { self.categoryList =3D catInfo; self.set(); =
self.notifyResize(true); }); self.notifyResize(true);
return; } var meta =3D photo.getMeta(); this.currentMeta =3D meta; if =
(meta.loaded) { if (hasCategories)
this.setCategory(meta.category, false); if (hasKeywords) =
this.setKeywords(meta.keywords, false);
} else { self =3D this; meta.bump(); meta.advise(this, function() { =
self.setCategory(meta.category);
self.setKeywords(meta.keywords); self.notifyResize(true); }, function() =
{ if (hasCategories) self.setCategory(0,
true); if (hasKeywords) self.setKeywords([], true); =
self.notifyResize(true); }); } };
; ; ; ; var zfl_ExifViewStyle =3D { Overlay : 0, Inline : 1 }; function =
zfl_ExifView(id, style) {
this.style =3D style; zfl_Control.prototype.constructor.call(this, id); =
zf_stdMakeMethodsDeferred(this,
this.id, [ "set", "showLoading"]); } zfl_ExifView.inherits(zfl_Control); =
zfl_ExifView.prototype.set
=3D function(meta) { var html =3D this._generateHTML(meta); =
this.dom().innerHTML =3D html; this._populated
=3D true; }; zfl_ExifView.prototype.showLoading =3D function() { var =
html =3D [ '<div class=3D"listheader listheader-font1 =
listheader-color2">',
'Photo Info', '</div>', '<div class=3D"separator =
separator-border2"><hr/></div>', '<div class=3D"listitem">',
'<span class=3D"exif-loading">Loading...</span>', '</div>']; html =3D =
html.join(""); this.dom().innerHTML
=3D html; }; zfl_ExifView.prototype.update =3D function(photo) { ; ; var =
meta =3D photo.getMeta(); if (this.current
=3D=3D meta) return; if (this.current !=3D null) =
this.current.unadvise(this); this.current =3D meta; this._populated
=3D false; if (meta.loaded) { this.set(meta); } else { var self =3D =
this; meta.bump(); meta.advise(this,
function() { self.set(meta); self.notifyResize(true); }, function() { =
self.showLoading(); self.notifyResize(true);
} ); } }; zfl_ExifView.prototype._generateHTML =3D function(meta) { var =
content =3D []; var items1,
items2; if ((meta.photo.access.mask & zf_AccessMask.ProtectExif) !=3D 0) =
{ items1 =3D [-5, -1, -2, -3];
items2 =3D []; } else { items1 =3D [-5, -1, -2, -3, 0xA001, 0x9003, =
0x0132]; items2 =3D [0x010F, 0x0110,
0x920A, 0xA405, 0x9205, -4, 0x9209, 0x9204, 0xA402, 0x8822, 0x8827, =
0x9207, 0xA404]; } this._addExifSection(content,
"Photo Info", meta, items1); this._addExifSection(content, "Shooting =
Conditions", meta, items2);
return content.join(""); }; zfl_ExifView.prototype._addExifSection =3D =
function(builder, title, meta,
items) { var exif =3D meta.exif; var empty =3D exif !=3D null; for (var =
i =3D 0; i < items.length && empty;
i++) empty =3D (exif[items[i]] =3D=3D null); if (empty) return; var tag; =
builder.push('<div class=3D"listheader listheader-font1 ',
this.style =3D=3D zfl_ExifViewStyle.Overlay ? 'listheader-color1' : =
'listheader-color1', '">', title,
'</div>', '<div class=3D"separator separator-border2"><hr/></div>', =
'<div class=3D"listitem">'); if
(this.style =3D=3D zfl_ExifViewStyle.Inline) { for (i =3D 0; i < =
items.length; i++) { tag =3D exif[items[i]];
if (!tag) continue; builder.push('<div class=3D"pair-box">', '<span =
class=3D"pair pair-color1 pair-font1">',
'<span>', tag.title, ':</span>', '<b class=3D"pair-0 pair-color2 =
pair-font2">', tag.display, '</b>',
'</span>', '</div>'); } } else if (this.style =3D=3D =
zfl_ExifViewStyle.Overlay) { for (i =3D 0; i < items.length;
i++) { tag =3D exif[items[i]]; if (!tag) continue; builder.push('<div =
class=3D"exif-name pair-color1 pair-font1">',
tag.title, '</div>', '<div class=3D"exif-value pair-color2 =
pair-font1">', tag.display, '</div><div class=3D"clear"></div>');
} } builder.push('</div>'); };
; function zfl_ExifPopup(id, style) { =
zfl_Popup.prototype.constructor.call(this, id, true); this._displayed
=3D false; this._view =3D new zfl_ExifView(id + "-content", style); =
this._view.onresize =3D zf_stdMakeDeferred(
this.id + ".updateBackground", this.closure(this._updateBackground), =
this); } zfl_ExifPopup.inherits(zfl_Popup);
zfl_ExifPopup.createHtml =3D function(id, styles) { var markup =3D []; =
markup.push( '<div class=3D"popup exif-popup popup-border1 popup-color1 =
popup-font1 none" id=3D"',
id, '">', '<div class=3D"exif-popup-content" id=3D"', id, =
'-content"></div>', '<div class=3D"exif-popup-background popup-bgcolor1" =
id=3D"',
id, '-background"></div>', '</div>'); return markup.join(''); }; =
zfl_ExifPopup.prototype.update
=3D function(photo) { ; ; if (this.current =3D=3D photo) return; =
this.current =3D photo; if (this._displayed)
{ this._view.update(photo); this._view.onresize(); } }; =
zfl_ExifPopup.prototype.show =3D function(domOrigin,
constraint) { this._displayed =3D true; if (this.current) { =
this._view.update(this.current); this._view.onresize();
} zfl_Popup.prototype.show.call(this, domOrigin, constraint); =
this._updateBackground(); }; zfl_ExifPopup.prototype.hide
=3D function() { zfl_Popup.prototype.hide.call(this); this._displayed =
=3D false; }; zfl_ExifPopup.prototype._updateBackground
=3D function() { };
; ; function zfl_PhotoMenu(items, classes) { ; this.id =3D =
"__photo_menu_" + zfl_PhotoMenu.counter++;
this.dom =3D zfl_Control.prototype.dom; this.display =3D =
zfl_Control.prototype.display; this.visibility
=3D zfl_Control.prototype.visibility; this._delayedSubMenu =3D new =
zf_DelayedInvoke(500); this._delayedActive
=3D new zf_DelayedInvoke(300); if (classes && classes.length > 0) =
this._classes =3D classes; else this._classes
=3D "overlayMenu photoMenu"; this._map =3D {}; for (var i =3D 0; i < =
items.length; i++) { var item =3D items[i];
; if (!item.onselect) item.onselect =3D zf_stdFalse; if (!item.onclick) =
item.onclick =3D zf_stdFalse;
; this._map[item.id] =3D item; } this.items =3D items; } =
zfl_PhotoMenu.counter =3D 0; zfl_PhotoMenu.prototype.create
=3D function(parent) { ; ; var root =3D document.createElement("DIV"); =
root.className =3D this._classes
+ " none"; root.id =3D this.id; root.innerHTML =3D this._build(); =
parent.appendChild(root); this._subscribe();
parent =3D null; root =3D null; }; zfl_PhotoMenu.prototype._build =3D =
function() { var content =3D [];
var items =3D this.items; var self =3D this; var buildContent =3D =
function(face) { content.push('<table>');
for (i =3D 0; i < items.length; i++) { if (items[i].separator) { =
content.push('<tr><td><div =
class=3D"overlayMenu-separator"></div></td></tr>');
continue; } content.push('<tr><td><div class=3D"item item-', =
items[i].id, '"'); if (face) content.push(' id=3D"',
self.id, '-', items[i].id, '"'); content.push('><div =
class=3D"icon"></div>'); if (items[i].text)
content.push('<div class=3D"text">', items[i].text, '</div>'); =
content.push('</div></td></tr>');
} content.push('</table>'); }; content.push('<div =
class=3D"overlay-background">'); buildContent(false);
content.push('</div>'); buildContent(true); return content.join(""); }; =
zfl_PhotoMenu.prototype._subscribe
=3D function(item) { var self =3D this; if (!item) { for (i =3D 0; i < =
this.items.length; i++) this._subscribe(this.items[i]);
if (this.onactive) { var dom =3D this.dom(); dom.onmouseover =3D =
function() { self._delayedActive.invoke(function()
{ self.onactive(); }); }; dom.onmouseout =3D function() { =
self._delayedActive.clear(); }; dom =3D null;
} return; } if (item.separator) return; var domItem =3D =
this.dom(item.id); ; domItem.onclick =3D function()
{ self.click(item.id); }; domItem.onmouseover =3D function() { =
self.select(item.id, true); }; domItem.onmouseout
=3D function() { if (self.selected =3D=3D item) { if (item !=3D =
self._activeSubMenu) { self.select(item.id,
false); self._pendingSubMenu =3D null; self._delayedSubMenu.clear(); } } =
}; domItem =3D null; }; zfl_PhotoMenu.prototype.select
=3D function(id, selected) { var item =3D this._map[id]; ; if (selected =
&& item =3D=3D this.selected) return;
if (!selected && item !=3D this.selected) return; var self =3D this; var =
switchSubMenu =3D function()
{ var oldMenu =3D self._activeSubMenu; var newMenu =3D =
self._pendingSubMenu; self._activeSubMenu =3D newMenu;
self._pendingSubMenu =3D null; if (oldMenu) oldMenu.onsubmenu(false); if =
(newMenu) { var dom =3D self.dom(item.id);
var pos =3D zf_stdGetOffset(dom); pos.cx +=3D dom.clientWidth; dom =3D =
null; newMenu.onsubmenu(true, pos.cx
+ 6, pos.cy - 4, self); } }; if (selected) { if (this.selected) =
this.select(this.selected.id, false);
zf_stdReplaceClassName( this.dom(item.id), "item-standard", =
"item-hover"); this.selected =3D item;
if (item !=3D this._activeSubMenu) { var pending =3D item.onsubmenu ? =
item : null; if (pending !=3D this._pendingSubMenu
|| !this._delayedSubMenu.pending) { this._pendingSubMenu =3D pending; =
this._delayedSubMenu.invoke(switchSubMenu);
} } else { this._pendingSubMenu =3D null; this._delayedSubMenu.clear(); =
} } else if (!selected) {
zf_stdReplaceClassName( this.dom(item.id), "item-hover", =
"item-standard"); if (item =3D=3D this._pendingSubMenu)
{ this._pendingSubMenu =3D null; =
this._delayedSubMenu.invoke(switchSubMenu); } this.selected =3D null;
item.onselect(false); } item.onselect(selected); }; =
zfl_PhotoMenu.prototype.click =3D function(id,
selected) { var item =3D this._map[id]; ; if (this.selected !=3D item) =
this.select(item.id, true);
if (this._delayedSubMenu.pending) { this._delayedSubMenu.callback(); =
this._delayedSubMenu.clear();
} item.onclick(); }; zfl_PhotoMenu.prototype.show =3D function(toshow, =
x, y, parent) { this.parent
=3D parent; if (!toshow) { if (this._activeSubMenu) =
this._activeSubMenu.onsubmenu(false); this._activeSubMenu
=3D this._pendingSubMenu =3D null; this._delayedSubMenu.clear(); if =
(this.selected) this.select(this.selected.id,
false); } else if (x && y) { var dom =3D this.dom(); dom.style.left =3D =
x + "px"; dom.style.top =3D y +
"px"; } this.display(toshow); }; zfl_PhotoMenu.prototype.destroy =3D =
function() { this.show(false);
var dom =3D this.dom(); if (dom !=3D null) =
dom.parentNode.removeChild(dom); }; zfl_PhotoMenu.prototype.get
=3D function(id) { return this._map[id]; };
; ; ; function zfl_CollectionList() { this.list =3D []; } =
zfl_CollectionList.current =3D new zfl_CollectionList();
zfl_CollectionList.prototype.load =3D function(callback) { var self =3D =
this; if (!this.loaded) { zf_stdServerRequest(
"POST", "/zf/layout/layout.asmx", "GetCollections", [], function(status, =
retVal) { self.list =3D status
=3D=3D 200 ? retVal.result : []; self.loaded =3D true; callback(); }); } =
else { callback(); } }; zfl_CollectionList.prototype.addPhoto
=3D function(collectionId, photoId) { var self =3D this; var =
formatSuccess =3D "Photo added to {0} collection.";
var formatError =3D "An error occured while adding photo to the =
\x27{0}\x27 collection."; var formatDuplicated
=3D "Duplicate action. This photo was already added to collection =
\x27{0}\x27."; var formatNotFound
=3D "Collection \x27{0}\x27 does not exist."; for (index =3D 0; index < =
this.list.length; index++)
{ if (this.list[index].id =3D=3D collectionId) break; } ; if (index =
=3D=3D this.list.length) return; var
collection =3D this.list[index]; zf_stdServerRequest("POST", =
"/zf/app/manage.asmx", "AddSingleToCollection",
[ photoId, collectionId ], function(status, retVal) { if (status =3D=3D =
200 && index > 0) { self.list.splice(index,
1); self.list.unshift(collection); } var url =3D zf_stdGetTransferUrl( [ =
"http://", zf_userDomain, collection.getBaseHref(),
"/h", photoId.toString(16) ].join("")); var markup =3D [' <a href=3D"', =
url, '" onclick=3D"location.href=3D\x27',
url, '\x27', '">View &raquo;</a>'].join(""); var format; switch (status) =
{ case 200: format =3D (retVal.result
? formatSuccess : formatDuplicated) + markup; break; case 404: format =
=3D formatNotFound; break;
default: format =3D formatError; break; } var message =3D =
zf_stdFormatString( format, ['<a href=3D"',
url, '" onclick=3D"location.href=3D\x27', url, '\x27">', =
zf_stdHtmlEncode(collection.title), '</a>'].join(""));
if (self.onmessage) self.onmessage(photoId, message, status !=3D 200); =
}); }; zfl_CollectionList.prototype.addPhotoToNew
=3D function(title, photoId) { var self =3D this; =
zf_stdServerRequest("POST", "/zf/app/manage.asmx", "CreateContainer",
[ "fld0", "col", title ], function(status, retVal) { if (status =3D=3D =
200 && retVal.error =3D=3D null)
{ var id =3D retVal.result.substr(3); self.list.unshift(new =
zf_PhotoSet(id, "Collection", title));
self.addPhoto(id, photoId); } else { var message =3D zf_stdFormatString( =
"An error occured while adding photo to the \x27{0}\x27 collection.",
title); if (self.onmessage) self.onmessage(photoId, message, true); } =
}); };
; function zfl_CollectionMenu() { =
zfl_PhotoMenu.prototype.constructor.call(this, [], "overlayMenu =
photoMenu collectionMenu");
this.authenticated =3D zf_userId !=3D 0; this.list =3D null; =
this.oncommand =3D zf_stdFalse; var self =3D this;
this._rebuild =3D function() { if (self.dom() !=3D null) { =
self.dom().innerHTML =3D self._build(); self._subscribe();
} }; } zfl_CollectionMenu.inherits(zfl_PhotoMenu); =
zfl_CollectionMenu.prototype.create =3D function(parent)
{ ; ; var self =3D this; var root =3D document.createElement("DIV"); =
root.className =3D this._classes
+ " none"; root.id =3D this.id; var content =3D []; if =
(!this.authenticated) { root.innerHTML =3D [ '<div =
class=3D"collectionMenu-box">',
'<div class=3D"collectionMenu-header">', '<div =
class=3D"collectionMenu-icon"></div>', '<span>About Collections</span>',
'</div>', '<div class=3D"collectionMenu-para">', ' Collections hold =
links to photos uploaded by you or other people. You can put together =
collections of favorite photographs or collect photos from several =
people. ',
'<div class=3D"collectionMenu-para" id=3D"', this.id, '-para2">', ' You =
need to <a>login</a> in order to save to collection. If you are not a =
user yet, you can open a Visitor account that\x27s always free and only =
takes a minute. ',
'</div>', '<div class=3D"collectionMenu-footer">', '<div =
class=3D"collectionMenu-button" id=3D"', this.id,
'-login">', 'Continue =C2=BB', '</div>', '<div =
class=3D"collectionMenu-button" id=3D"', this.id, '-hide">',
'Cancel', '</div>', '</div>', '<div class=3D"overlay-background">', =
'<div class=3D"collectionMenu-header">',
'<div class=3D"collectionMenu-icon"></div>', '<span>About =
Collections</span>', '</div>', '<div class=3D"collectionMenu-para">',
' Collections hold links to photos uploaded by you or other people. You =
can put together collections of favorite photographs or collect photos =
from several people. ',
'<div class=3D"collectionMenu-para">', ' You need to <a>login</a> in =
order to save to collection. If you are not a user yet, you can open a =
Visitor account that\x27s always free and only takes a minute. ',
'</div>', '<div class=3D"collectionMenu-footer">', '<div =
class=3D"collectionMenu-button">', 'Continue =C2=BB',
'</div>', '<div class=3D"collectionMenu-button">', 'Cancel', '</div>', =
'</div>', '</div>', '</div>'
].join(""); } else { if (!this.list) { root.innerHTML =3D ['<div =
class=3D"collectionMenu-loading">',
'<div class=3D"overlay-background"></div>', 'Loading...', =
'</div>'].join(""); if (this.list =3D=3D null)
{ this.list =3D false; var collectionList =3D =
zfl_CollectionList.current; if (!collectionList.loaded)
{ collectionList.load(function() { self.list =3D true; self._rebuild(); =
}); } else { this.list =3D true;
root.innerHTML =3D this._build(); } } } else { root.innerHTML =3D =
this._build(); } } parent.appendChild(root);
if (!this.authenticated) { var onlogin =3D function() { =
self.oncommand("collectLogin"); }; this.dom("login").onclick
=3D onlogin; var a =3D this.dom("para2").getElementsByTagName("A")[0]; =
a.onclick =3D onlogin; a =3D null;
this.dom("hide").onclick =3D function() { self.show(false); }; } else { =
this._subscribe(); } parent
=3D null; root =3D null; }; zfl_CollectionMenu.prototype._build =3D =
function() { this.items =3D []; this._map
=3D {}; var i; var self =3D this; if (this.list) { var createHandler =3D =
function(id) { return function()
{ self.oncommand("collectPhoto", id); }; }; var collections =3D =
zfl_CollectionList.current.list;
for (i =3D 0; i < collections.length; i++) { var content =3D []; var ps =
=3D collections[i]; for (var j =3D
ps.folders.length - 1; j > 0 ; j--) { content.push( '<span =
class=3D"folder">', zf_stdHtmlEncode(ps.folders[j].title),
'</span> &raquo; '); } content.push(zf_stdHtmlEncode(ps.title)); =
this.items.push( { id: "collect"
+ ps.id, text: content.join(""), onclick: createHandler(ps.id) }); } if =
(this.items.length > 0)
this.items.push({ id: "sep1", separator: true }); this.items.push( { id: =
"collectNew", text: "Add to a new collection",
onclick: function() { self.oncommand("collectNew"); } }); =
this.items.push({ id: "sep2", separator:
true }); this.items.push( { id: "collectEdit", text: "Open my =
collections in Edit View", onclick:
function() { self.oncommand("collectEdit"); } }); for (i =3D 0; i < =
this.items.length; i++) { var
item =3D this.items[i]; this._map[item.id] =3D item; item.onselect =3D =
zf_stdFalse; } } return zfl_PhotoMenu.prototype._build.call(this);
};
; ; ; function zfl_DownloadMenu(photo) { ; =
zfl_PhotoMenu.prototype.constructor.call(this, [], "overlayMenu =
photoMenu downloadMenu");
this.current =3D photo; this.oncommand =3D zf_stdFalse; } =
zfl_DownloadMenu.inherits(zfl_PhotoMenu);
zfl_DownloadMenu.prototype.create =3D function(parent) { ; ; var self =
=3D this; var root =3D document.createElement("DIV");
root.className =3D this._classes + " none"; root.id =3D this.id; if =
(this.current.loaded) { root.innerHTML
=3D this._build(); } else { root.innerHTML =3D ['<div =
class=3D"downloadMenu-loading">', '<div =
class=3D"overlay-background"></div>',
'Loading...', '</div>'].join(""); this.current.advise(this, function() { =
self.dom().innerHTML =3D self._build();
self._subscribe(); } ); } parent.appendChild(root); if =
(this.current.loaded) this._subscribe();
parent =3D null; root =3D null; }; zfl_DownloadMenu.prototype._build =3D =
function() { ; this.items =3D [];
this._map =3D {}; var i; var self =3D this; var list =3D [ { method: =
zf_ProcessingMethod.StandardVeryLargeSize,
mask: zf_AccessMask.ProtectExtraLarge }, { method: =
zf_ProcessingMethod.StandardLargeSize, mask: zf_AccessMask.ProtectLarge
}, { method: zf_ProcessingMethod.StandardMediumSize, mask: =
zf_AccessMask.ProtectMedium }, { method:
zf_ProcessingMethod.StandardSmallSize, mask: -1 } ]; var photo =3D =
this.current; var width =3D photo.width;
var height =3D photo.height; var createHandler =3D function(uri) { =
return function() { self.oncommand("download-"
+ uri); document.location.href =3D uri; }; }; for (i =3D 0; i < =
list.length; i++) { var method =3D list[i].method;
var mask =3D list[i].mask; if (mask > 0 && (photo.access.mask & mask) =
=3D=3D mask) continue; if (!method.original
&& method.cx >=3D width && method.cy >=3D height) continue; var text; =
var uri; if (!method.original)
{ var size =3D photo.getScaledSize(method); text =3D =
zf_stdFormatString(method.format, size.cx, size.cy);
uri =3D photo.getGeneratedUrl(method, true) + "&dl=3D1"; } else { text =
=3D zf_stdFormatString("Original Photo ({0} x {1})",
width, height); uri =3D photo.getOriginalUrl(photo.fileType) + =
"?dl=3D1"; } this.items.push( { id: "download_"
+ i, text: text, onclick: createHandler(uri) }); } for (i =3D 0; i < =
this.items.length; i++) { var
item =3D this.items[i]; this._map[item.id] =3D item; item.onselect =3D =
zf_stdFalse; } return zfl_PhotoMenu.prototype._build.call(this);
};
; function zfl_PhotoOverlay() { var self =3D this; this.id =3D =
"_overlay_" + zfl_PhotoOverlay.counter++;
this.attached =3D false; this.dom =3D zf_Control.prototype.dom; =
this.closure =3D zf_Control.prototype.closure;
this.eventHandler =3D zf_Control.prototype.eventHandler; =
this._parentExit =3D new zf_DelayedInvoke(400);
this._overlayExit =3D new zf_DelayedInvoke(400); this._parentEnter =3D =
new zf_DelayedInvoke(400); this._invokeParentExit
=3D function() { return this._parentExit.invoke( function() { =
self._overlayExit.clear(); self._trackIdle(false);
self._onleave(); }); }; this._invokeOverlayExit =3D function() { return =
this._overlayExit.invoke(
function() { self._trackIdle(true); }); }; this.menus =3D {}; =
this.animation =3D {}; this.idle =3D {};
} zfl_PhotoOverlay.counter =3D 0; zfl_PhotoOverlay.prototype.init =3D =
function(flags, oncommand, oncommandtest)
{ this.flags =3D flags; this.oncommand =3D oncommand; this.oncommandtest =
=3D oncommandtest; var self =3D
this; if (this.flags.exifIcon) { this.animation.exif =3D new =
zf_Animation( { "hidden": 0, "visible":
100 }, function(v) { zf_stdSetOpacity(self.dom("exif-icon"), v / 100); =
}); } if (this.flags.menuBar)
{ this.animation.menubar =3D new zf_Animation( { "hidden": -32, =
"visible": 0 }, function(v) { self._menuActive
=3D (v > -32); self._createMenus(); self.dom("menu-bar").style.left =3D =
v + "px"; }); } if (this.flags.message)
{ zfl_CollectionList.current.onmessage =3D function(photoId, message, =
error) { if (self.menus.collect)
{ self.menus.collect.destroy(); self.menus.collect =3D null; } if =
(self.attached && self.current.id
=3D=3D photoId) self.showMessage(message, error); }; =
this.animation.message =3D new zf_Animation( { "hidden":
0, "status": 200, "error": 300 }, function(v) { var dom =3D =
self.dom("message"); v =3D Math.min(v, 80);
if (v < 10) dom.style.visibility =3D "hidden"; else { =
zf_stdSetOpacity(dom, v / 100); dom.style.visibility
=3D "visible"; } }); } }; zfl_PhotoOverlay.prototype.attach =3D =
function(parent) { var start =3D new Date().getTime();
; ; var self =3D this; var iroot =3D document.createElement("DIV"); =
iroot.className =3D "overlay-iroot";
iroot.id =3D this.id + "-iroot"; var icontent =3D []; if =
(this.flags.menuBar) { icontent.push( '<div =
class=3D"overlay-menu-hotspot overlay-hotspot" id=3D"',
this.id, '-menu-hotspot">', '<div class=3D"overlay-menu-bar =
overlay-window" id=3D"', this.id, '-menu-bar">',
'<div class=3D"overlay-background"></div>', '</div>', '</div>'); } if =
(this.flags.exifIcon) { icontent.push(
'<div class=3D"overlay-hotspot overlay-exif-icon" id=3D"', this.id, =
'-exif-icon">', '</div>'); } if (this.flags.message)
{ icontent.push( '<div class=3D"overlay-window overlay-background =
overlay-message" id=3D"', this.id,
'-message">', '<span></span>', '</div>'); } iroot.innerHTML =3D =
icontent.join(""); parent.appendChild(iroot);
if (this.flags.menuBar) { var menuSpot =3D this.dom("menu-hotspot"); ; =
menuSpot.style.height =3D parent.clientHeight
+ "px"; this.animation.menubar.jump("hidden"); menuSpot.onmouseover =3D =
function(e) { self._menuspot_onmouseover(e);
}; } if (this.flags.exifIcon) { this.animation.exif.jump("hidden"); var =
icon =3D this.dom("exif-icon");
icon.onmouseover =3D function(e) { self._exificon_onmouseover(e); }; =
icon.onmouseout =3D function(e) {
self._exificon_onmouseout(e); }; } var oroot =3D =
document.createElement("DIV"); oroot.className =3D "overlay-oroot";
oroot.id =3D this.id + "-oroot"; var ocontent =3D []; if =
(this.flags.exifIcon) ocontent.push(zfl_ExifPopup.createHtml(this.id
+ "-exif")); oroot.innerHTML =3D ocontent.join(""); =
document.body.appendChild(oroot); parent.onmouseover
=3D this.eventHandler(this._parent_onmouseover); parent.onmouseout =3D =
this.eventHandler(this._parent_onmouseout);
parent.onmousemove =3D this.eventHandler(this._parent_onmousemove); =
parent.oncontextmenu =3D this.eventHandler(this._parent_oncontextmenu);
var omouseover =3D this.eventHandler(this._overlay_onmouseover); var =
omouseout =3D this.eventHandler(this._overlay_onmouseout);
iroot.onmouseover =3D omouseover; iroot.onmouseout =3D omouseout; =
oroot.onmouseover =3D omouseover; oroot.onmouseout
=3D omouseout; var block =3D function(e) { zf_stdStopPropagation(e); =
zf_stdPreventDefault(e); }; block
=3D this.eventHandler(block); oroot.oncontextmenu =3D block; =
iroot.oncontextmenu =3D block; iroot.onclick
=3D block; var defaultCommand =3D this.flags.defaultCommand; if =
(defaultCommand && this.oncommandtest(defaultCommand,
this.flags)) { parent.style.cursor =3D "pointer"; parent.onclick =3D =
this.eventHandler(this._parent_onclick);
} this.exifPopup =3D null; this.attached =3D true; parent =3D null; =
iroot =3D null; oroot =3D null; menuSpot
=3D null; exifIcon =3D null; }; zfl_PhotoOverlay.prototype.detach =3D =
function(parent) { if (!this.attached)
return; if (this.exifPopup) this.exifPopup.hide(); for (var key in =
this.animation) this.animation[key].jump("hidden");
this._trackIdle(false); this._destroyMenus(); this._menuActive =3D =
false; var iroot =3D this.dom("iroot");
iroot.parentNode.removeChild(iroot); var oroot =3D this.dom("oroot"); =
oroot.parentNode.removeChild(oroot);
parent.onmouseover =3D null; parent.onmouseout =3D null; =
parent.onmousemove =3D null; parent.oncontextmenu
=3D null; parent.onclick =3D null; parent.style.cursor =3D "auto"; =
this.attached =3D false; }; =
zfl_PhotoOverlay.prototype._parent_onmouseover
=3D function(e) { var self =3D this; this._parentEnter.invoke( =
function() { if (self._parentExit.pending)
self._parentExit.clear(); else self._trackIdle(true); }); }; =
zfl_PhotoOverlay.prototype._parent_onmouseout
=3D function(e) { if (this._parentEnter.pending) =
this._parentEnter.clear(); else this._invokeParentExit();
}; zfl_PhotoOverlay.prototype._parent_onmousemove =3D function(e) { if =
(!this.idle.timer) return;
e =3D zf_stdGetEvent(e); var x =3D e.clientX; var y =3D e.clientY; if =
(this.idle.x && Math.abs(this.idle.x
- x) > 5 || this.idle.y && Math.abs(this.idle.y - y) > 5) { if =
(this.idle.counter > 16) { this._idle_onstop();
this.idle.counter =3D 0; } if (this.idle.interrupt < 2) =
this.idle.interrupt =3D 0; } this.idle.x =3D x;
this.idle.y =3D y; }; zfl_PhotoOverlay.prototype._parent_oncontextmenu =
=3D function(e) { zf_stdStopPropagation(e);
zf_stdPreventDefault(e); if (!this.current || !this.current.loaded) =
return; this._createMenus(true);
if (!this.menus.contextMenu) return; var x, y; e =3D zf_stdGetEvent(e); =
x =3D e.clientX + document.body.scrollLeft;
y =3D e.clientY + document.body.scrollTop; =
this.menus.contextMenu.show(true, x - 5, y - 5); }; =
zfl_PhotoOverlay.prototype._parent_onclick
=3D function(e) { zf_stdStopPropagation(e); zf_stdPreventDefault(e); if =
(!this.current || !this.current.loaded)
return; var defaultCommand =3D this.flags.defaultCommand; if =
(!defaultCommand || !this.oncommandtest(defaultCommand,
this.flags)) return; this.hide("now"); this.oncommand(defaultCommand); =
}; zfl_PhotoOverlay.prototype._overlay_onmouseover
=3D function(e) { zf_stdStopPropagation(e); if =
(!this._overlayExit.pending) this._trackIdle(false);
this._overlayExit.clear(); this._parentExit.clear(); }; =
zfl_PhotoOverlay.prototype._overlay_onmouseout
=3D function(e) { zf_stdStopPropagation(e); var self =3D this; =
this._invokeOverlayExit(); this._invokeParentExit();
}; zfl_PhotoOverlay.prototype._exificon_onmouseover =3D function(e) { =
this.animation.exif.jump("visible");
if (!this.exifPopup) { var id =3D this.id + "-exif"; this.exifPopup =3D =
new zfl_ExifPopup(id, zfl_ExifViewStyle.Overlay);
if (this.current) this.exifPopup.update(this.current); } =
this.hide("slow", "not exif"); =
this.exifPopup.show(this.dom("exif-icon"),
"shift-right"); }; zfl_PhotoOverlay.prototype._exificon_onmouseout =3D =
function(e) { if (this.exifPopup)
this.exifPopup.hide(); }; =
zfl_PhotoOverlay.prototype._menuspot_onmouseover =3D function(e) { =
this.animation.menubar.jump("visible");
}; zfl_PhotoOverlay.prototype._trackIdle =3D function(enable) { if =
(!enable) { if (!this.idle.timer)
return; clearInterval(this.idle.timer); this.idle.timer =3D null; =
return; } if (this.idle.timer)
return; this.idle =3D { counter : 0, interrupt: 0 }; var self =3D this; =
this.idle.timer =3D setInterval(function()
{ ++self.idle.counter; if (self.idle.counter =3D=3D 16) =
self._idle_onstart(); ++self.idle.interrupt;
if (self.idle.interrupt =3D=3D 2) { self._idle_onstop(); =
self.idle.counter =3D 0; } }, 200); }; =
zfl_PhotoOverlay.prototype._onleave
=3D function() { this.hide("fast"); }; =
zfl_PhotoOverlay.prototype._idle_onstart =3D function() { =
this.hide("slow");
}; zfl_PhotoOverlay.prototype._idle_onstop =3D function(enable) { if =
(this.animation.exif) this.animation.exif.animate("visible",
{ s: 400, t: 1000 }); if (this.animation.menubar) =
this.animation.menubar.animate("visible", { s: 200,
t: 1000 }); }; zfl_PhotoOverlay.prototype.update =3D function(photo) { ; =
; if (this.current =3D=3D photo)
return; if (this.current !=3D null) this.current.unadvise(this); =
this.current =3D photo; this._destroyMenus();
if (photo.loaded) { this._createMenus(); } else { var self =3D this; =
photo.advise(this, function() {
self._createMenus(); }); } if (this.exifPopup) =
this.exifPopup.update(photo); }; zfl_PhotoOverlay.prototype._createMenus
=3D function(always) { var photo =3D this.current; if (!photo || =
!photo.loaded) return; if (!this.attached)
return; if (!always && !this._menuActive) return; if (this._menuCreated) =
return; this._menuCreated
=3D true; var i, item; var self =3D this; var items =3D [ { id: =
"addToCart", text: "Add to Cart", command:
true, context: true, main: true }, { id: "share", text: "Share", =
command: true, context: true, main:
true, contextText: "Share This Photo" }, { id: "downloadPhoto2", text: =
"Download This Photo", main:
false, context: true, command: true }, { id: "dimLights", text: "Dim The =
Lights", command: true,
context: true, main: true, contextText: "Dim The Lights (single-click)" =
}, { id: "download", text:
"Save Image", main: true, context: true, submenu: "download" }, { id: =
"downloadOriginal", text:
"Download Original", main: true, context: false, submenu: =
"downloadOriginal" }, { id: "downloadPhoto",
text: "This Photo", parent: "downloadOriginal", command: true }, { id: =
"downloadGallery", text:
"All Available", parent: "downloadOriginal", command: true }, { id: =
"downloadCollection", text:
"All Available", parent: "downloadOriginal", command: true }, { id: =
"collect", text: "Add to Collection",
main: true, submenu: "collect" }, { id: "admin", text: "Administrator", =
main: true, submenu: "admin"
}, { id: "censorPhoto", text: "Censor", parent: "admin", command: true =
}, { id: "uncensorPhoto",
text: "Uncensor", parent: "admin", command: true }, { id: =
"censorGallery", text: "Censor Gallery",
parent: "admin", command: true }, { id: "purgePhoto", text: "Purge", =
parent: "admin", command: true
}, { id: "purgeGallery", text: "Purge Gallery", parent: "admin", =
command: true }, { id: "undimLights",
text: "Close", command: true, context: true, main: true, contextText: =
"Close (single-click)" }
]; var map =3D {}; var bakeOnClickHandler =3D function(name) { =
map[name].onclick =3D function() { self.hide("now");
self.oncommand(name); }; }; for (i =3D 0; i < items.length; i++) { item =
=3D items[i]; if (!this.oncommandtest(item.id,
this.flags)) continue; map[item.id] =3D item; if (item.command) { =
bakeOnClickHandler(item.id); }
else if (item.submenu) { item.text +=3D ' &raquo;'; } } var selector =3D =
function(filter) { var selected
=3D []; for (i =3D 0; i < items.length; i++) { item =3D items[i]; if =
(!map[item.id]) continue; var fmet
=3D true; for (var fkey in filter) { fmet =3D (filter[fkey] =3D=3D =
item[fkey]); if (!fmet) break; } if (fmet)
selected.push(item); } return selected; }; var bakeOnSubmenuHander =3D =
function(name, factory) {
if (map[name]) map[name].onsubmenu =3D function(show, x, y, parent) { =
var menu =3D self.menus[map[name].submenu];
if (!menu && show) { menu =3D factory(); menu.onactive =3D function() { =
this.parent.select(name, true);
}; menu.create(self.dom("oroot")); self.menus[map[name].submenu] =3D =
menu; } if (menu) menu.show(show,
x, y, parent); }; }; bakeOnSubmenuHander("admin", function() { return =
new zfl_PhotoMenu(selector(
{parent: "admin"} )); }); bakeOnSubmenuHander("collect", function() { =
var cm =3D new zfl_CollectionMenu();
cm.oncommand =3D function() { self.hide("now"); =
self.oncommand.apply(self, arguments); }; return cm;
}); bakeOnSubmenuHander("download", function() { var cm =3D new =
zfl_DownloadMenu(self.current); cm.oncommand
=3D function() { self.hide("now"); self.oncommand.apply(self, =
arguments); }; return cm; }); bakeOnSubmenuHander("downloadOriginal",
function() { return new zfl_PhotoMenu(selector( {parent: =
"downloadOriginal"} )); }); if (this.flags.menuBar)
{ var mainMenu =3D new zfl_PhotoMenu(selector({ main: true }), =
"overlayMenu photoMenu photoMenu-main");
mainMenu.create(this.dom("oroot")); this.menus.mainMenu =3D mainMenu; =
var createIcon =3D function(item)
{ return { id : item.id, onclick : function() { mainMenu.click(item.id); =
}, onselect : function(selected)
{ if (selected) { var pos =3D zf_stdGetOffset(self.dom("iroot")); =
mainMenu.show(true, pos.cx + 32, pos.cy);
self.hide("slow", "not menubar"); } mainMenu.select(item.id, selected); =
} }; }; var iconItems =3D [];
for (i =3D 0; i < mainMenu.items.length; i++) =
iconItems.push(createIcon(mainMenu.items[i])); var iconMenu
=3D new zfl_PhotoMenu(iconItems, "overlayMenu iconMenu"); =
iconMenu.create(this.dom("menu-bar"));
iconMenu.show(true); this.menus.iconMenu =3D iconMenu; var adjustItem =
=3D function(item) { var old =3D item.onselect;
item.onselect =3D function(selected) { if (old) old(selected); =
iconMenu.select(item.id, selected);
}; }; for (i =3D 0; i < mainMenu.items.length; i++) =
adjustItem(mainMenu.items[i]); } if (this.flags.contextMenu)
{ var ci =3D []; var si =3D selector({ context: true }); for (i =3D 0; i =
< si.length; i++) { ci.push({
id: si[i].id, text: si[i].contextText ? si[i].contextText : si[i].text, =
onclick: si[i].onclick,
onsubmenu: si[i].onsubmenu }); } if (ci.length > 0) { var contextMenu =
=3D new zfl_PhotoMenu(ci, "overlayMenu photoMenu photoMenu-context");
contextMenu.onactive =3D function() { self.hide("fast", "not context"); =
}; contextMenu.create(this.dom("oroot"));
this.menus.contextMenu =3D contextMenu; } } }; =
zfl_PhotoOverlay.prototype._destroyMenus =3D function()
{ for (var key in this.menus) { var obj =3D this.menus[key]; if (obj && =
obj.destroy instanceof Function)
obj.destroy(); } this.menus =3D {}; this._menuCreated =3D false; }; =
zfl_PhotoOverlay.prototype.hide
=3D function(mode, except) { if (except !=3D "not menubar") { if =
(this.menus.iconMenu && this.menus.iconMenu.selected)
this.menus.iconMenu.select(this.menus.iconMenu.selected.id, false); if =
(this.menus.mainMenu) this.menus.mainMenu.show(false);
} if (except !=3D "not context") { if (this.menus.contextMenu) =
this.menus.contextMenu.show(false);
} if (mode =3D=3D "now") { if (this.animation.message && except !=3D =
"not message") this.animation.message.jump("hidden");
if (this.animation.exif && except !=3D "not exif") =
this.animation.exif.jump("hidden"); if (this.animation.menubar
&& except !=3D "not menubar") this.animation.menubar.jump("hidden"); } =
else { if (this.animation.exif
&& except !=3D "not exif") { speed =3D mode =3D=3D "fast" ? { s: 300, t: =
1000 } : { s: 160, t: 1000 };
this.animation.exif.animate("hidden", speed); } if =
(this.animation.menubar && except !=3D "not menubar")
{ speed =3D mode =3D=3D "fast" ? { s: 150, t: 1000 } : { s: 80, t: 1000 =
}; this.animation.menubar.animate("hidden",
speed); } } }; zfl_PhotoOverlay.prototype.showMessage =3D =
function(message, error) { if (!this.flags.message)
return; var span; var dom =3D this.dom("message"); dom.innerHTML =3D ""; =
span =3D document.createElement("SPAN");
span.innerHTML =3D message; dom.appendChild(span); =
zf_stdReplaceClassName(dom, error ? null : "overlay-message-error",
error ? "overlay-message-error" : null); var self =3D this; =
dom.onmouseover =3D function(e) { self.animation.message.jump("status");
self.hide("fast", "not message"); }; dom.onmouseout =3D function(e) { =
self.animation.message.animate("hidden",
{ s: 80, t: 2000 }); }; dom =3D null; span =3D null; =
this.animation.message.jump(error ? "error" : "status");
this.animation.message.animate("hidden", { s: 40, t: 2000 }); };
; ; ; function zfl_Photographer(id) { =
zfl_Control.prototype.constructor.call(this, id); =
zf_stdMakeMethodsDeferred(this,
this.id, [ "setLink" ]); } zfl_Photographer.inherits(zfl_Control); =
zfl_Photographer.prototype.init
=3D function(owner) { this._owner =3D owner; }; =
zfl_Photographer.prototype.setLink =3D function(user,
loading) { ; var label =3D this.dom("label"); if (loading) { =
zf_stdReplaceClassName(label, null, "photographer-loading");
zf_stdSetText(label, "Loading..."); } else { if (user.id =3D=3D =
this._owner.id) { this.display(false);
} else { this.display(true); zf_stdReplaceClassName(label, =
"photographer-loading"); label.innerHTML
=3D zf_stdFormatString("Photo by: {0}", ['<a href=3D"', =
zf_stdGetTransferUrl("http://" + user.domainName
+ "/"), '">', zf_stdHtmlEncode(user.displayName), '</a>'].join("")); } } =
}; zfl_Photographer.prototype.showLoading
=3D function() { this.setLink(null, true); }; =
zfl_Photographer.prototype.update =3D function(photo)
{ ; ; if (this.current =3D=3D photo) return; if (this.current !=3D null) =
this.current.unadvise(this);
this.current =3D photo; if (photo.loaded) { this.setLink(photo.owner); } =
else { var self =3D this;
photo.advise(this, function() { self.setLink(photo.owner); =
self.notifyResize(true); }, function()
{ self.showLoading(); self.notifyResize(true); } ); } };
; ; ; ; ; function zfl_PhotoFlipper(id, style) { =
zfl_Control.prototype.constructor.call(this, id);
this.style =3D style; this._views =3D []; this._pool =3D {}; this.set =
=3D zf_stdMakeDeferred(this.id + ".set",
this._set); this._prefetch =3D zf_stdMakeDeferred(this.id + =
"._prefetch", this._prefetch); } zfl_PhotoFlipper.inherits(zfl_Control);
zfl_PhotoFlipper.Front =3D 0; zfl_PhotoFlipper.Back =3D 1; =
zfl_PhotoFlipper._counter =3D 0; zfl_PhotoFlipper.prototype.init
=3D function(decoration, plugins, overlayFlags, oncommand, =
oncommandtest, fullHeight, transition)
{ this._decoration =3D decoration; this._plugins =3D plugins; var extent =
=3D 0; if (decoration) extent
=3D this._decoration.shadowSize + this._decoration.borderSize; =
this._extent =3D extent; if (overlayFlags)
{ ; this._overlay =3D new zfl_PhotoOverlay(); =
this._overlay.init(overlayFlags, oncommand, oncommandtest);
} this._transition =3D transition; this.transitionEnabled =3D true; var =
self =3D this; var filter; if (transition
=3D=3D "quick-fade") filter =3D =
"progid:DXImageTransform.Microsoft.Fade(duration=3D0.3, overlap=3D1.0)";
else if (transition =3D=3D "slow-fade") filter =3D =
"progid:DXImageTransform.Microsoft.Fade(duration=3D1.6, =
overlap=3D1.0);";
else if (transition =3D=3D "quick-wipe") filter =3D =
"progid:DXImageTransform.Microsoft.GradientWipe(duration=3D0.4, =
gradientSize=3D0.4, motion=3Dreverse);";
else if (transition =3D=3D "quick-push") filter =3D =
"progid:DXImageTransform.Microsoft.Stretch(duration=3D0.5, =
stretchStyle=3D'hide')";
if (filter) { this.dom().style.filter =3D filter; var filters; try { =
filters =3D this.dom().filters; }
catch (e) { } if (!filters || filters.length =3D=3D 0) this._transition =
=3D null; } this._fullHeight =3D fullHeight;
}; zfl_PhotoFlipper.prototype.clear =3D function() { if =
(this._views[zfl_PhotoFlipper.Back]) =
this._views[zfl_PhotoFlipper.Back].clear();
if (this._views[zfl_PhotoFlipper.Front]) =
this._views[zfl_PhotoFlipper.Front].clear(); this._attachOverlay(false);
if (this.current) this.current.unadvise(this); this.current =3D null; =
this.dom().innerHTML =3D "";
this._views =3D []; }; zfl_PhotoFlipper.prototype.update =3D =
function(photo, context) { ; ; if (this.current
=3D=3D photo) return; if (this.current) this.current.unadvise(this); ; =
var forward =3D context.previousIndex
<=3D context.currentIndex; if (photo.loaded) { if (this._availWidth !=3D =
null) { ; this.set(photo);
} this._prefetch(context.photoList, context.currentIndex, forward); } =
else { var self =3D this; photo.advise(this,
function() { ; self._set(photo); self._prefetch(context.photoList, =
context.currentIndex, forward);
}); } this.current =3D photo; ; this._forward =3D (context.previousIndex =
< context.currentIndex); if
(this._overlay) this._overlay.update(photo, context); }; =
zfl_PhotoFlipper.prototype._set =3D function(photo)
{ ; ; if (this._availWidth =3D=3D null) { ; return; } ; =
this._load(zfl_PhotoFlipper.Back, photo); var
front =3D this._views[zfl_PhotoFlipper.Front]; ; if (front && =
front.getPhoto().id !=3D this.current.id)
this._attachOverlay(false); }; zfl_PhotoFlipper.prototype.getAvailSize =
=3D function() { return {
cx: this._availWidth, cy: this._availHeight }; }; =
zfl_PhotoFlipper.prototype.getPhotoSize =3D function()
{ var view =3D this._views[zfl_PhotoFlipper.Front]; if (view && =
view.getPhoto()) { var extent2 =3D this._extent
* 2; return { cx: view.__zfl_width - extent2, cy: view.__zfl_height - =
extent2 }; } return { cx: 0,
cy: 0 }; }; zfl_PhotoFlipper.prototype.resize =3D function(width, =
height) { ; ; var first =3D this._availWidth
=3D=3D null; if (!first && this._availWidth =3D=3D width && =
this._availHeight =3D=3D height) { ; this._recalc(true);
return true; } this._availWidth =3D width; this._availHeight =3D height; =
; if (first && this.current &&
this.current.loaded) { ; ; this._set(this.current); if =
(this._postponedPrefetch) { this._postponedPrefetch();
this._postponedPrefetch =3D null; } return true; } var view; var =
canresize =3D false; view =3D this._views[zfl_PhotoFlipper.Front];
if (view && view.getPhoto()) { this._load(zfl_PhotoFlipper.Front, =
view.getPhoto(), true); canresize
=3D true; } view =3D this._views[zfl_PhotoFlipper.Back]; if (view && =
view.getPhoto()) this._load(zfl_PhotoFlipper.Back,
view.getPhoto(), true); if (this._fullHeight) { this._recalc(true); } =
return canresize; }; zfl_PhotoFlipper.prototype.flip
=3D function() { ; this._stopTransition(); var back =3D =
this._views[zfl_PhotoFlipper.Back]; var front
=3D this._views[zfl_PhotoFlipper.Front]; if (!back) return; back.onwait =
=3D null; this._attachOverlay(false);
this._views[zfl_PhotoFlipper.Front] =3D back; =
this._views[zfl_PhotoFlipper.Back] =3D front; back =3D =
this._views[zfl_PhotoFlipper.Back];
front =3D this._views[zfl_PhotoFlipper.Front]; =
zf_stdReplaceClassName(front.dom().parentNode, "none",
null); var now =3D new Date(); var since =3D this._lastFlip ? =
(now.getTime() - this._lastFlip.getTime())
: 0; this._lastFlip =3D now; var transition =3D this._transition && =
this.transitionEnabled; if (!back
|| !transition ) { this._flipDone(true, "skipping animaiton", false); =
return; } if (!transition)
return; this._recalc(true); ; try { filters =3D this.dom().filters; } =
catch (e) { } if (filters && filters.length
> 0) { if (this._transition =3D=3D "quick-wipe") { filters[0].motion =3D =
this._forward ? "reverse" : "forward";
} filters[0].apply(); zf_stdReplaceClassName(front.dom().parentNode, =
"invisible", null); zf_stdReplaceClassName(back.dom().parentNode,
null, "invisible"); filters[0].play(); this.dom().onfilterchange =3D =
this.closure(this._flipDone,
false, "onfilterchange", false); } filters =3D null; }; =
zfl_PhotoFlipper._getPoolKey =3D function(photo,
method) { return [ '-', photo.id, '-', method.code ].join(""); }; =
zfl_PhotoFlipper.prototype._load
=3D function(code, photo, resize, reload) { ; ; var extent2 =3D =
this._extent * 2; this._stopTransition();
var width =3D this._availWidth - extent2; var height =3D =
this._availHeight - extent2; var method =3D photo.pickMethod(width,
height); if (!method) method =3D zf_ProcessingMethod.StandardSmallSize; =
; var size =3D photo.getScaledSize(method);
var x =3D Math.floor((this._availWidth - (size.cx + extent2)) / 2); var =
y =3D this._fullHeight ? Math.floor((this._availHeight
- (size.cy + extent2)) / 2) : 0; var inner; var view =3D =
this._views[code]; if (!reload && view && view.getPhoto()
&& view.getPhoto().id =3D=3D photo.id && view.getMethod() =3D=3D method) =
{ ; inner =3D view.getInner(); inner.style.left
=3D x + "px"; inner.style.top =3D y + "px"; inner =3D null; if (resize) =
return; if (!view.__zfl_state
|| view.__zfl_state =3D=3D zf_PhotoLoader.Loading) return; if (code =
=3D=3D zfl_PhotoFlipper.Back && this.onload)
{ ; this.onload(view.__zfl_state, true); } return; } this._queue =3D =
null; var context =3D { method: method,
data: photo, image: photo }; var styles =3D "pf-plane " + =
zfl_Layout.formatDecorationClasses("pf",
this._decoration, method); if (code =3D=3D zfl_PhotoFlipper.Back) styles =
+=3D " none invisible"; if (view
=3D=3D null) { var plane =3D document.createElement("DIV"); plane.id =3D =
this.id + "-plane" + zfl_PhotoFlipper._counter++;
plane.className =3D styles; var viewId =3D this.id + "-view" + =
zfl_PhotoFlipper._counter++; plane.innerHTML
=3D zf_PhotoView.createHtml( viewId, null, null, this._plugins, context, =
photo, method ); this.dom().appendChild(plane);
view =3D this._views[code] =3D new zf_PhotoView( viewId, this._plugins, =
context, plane.firstChild);
view.waitTimeout =3D 800; plane =3D null; } else { if (code =3D=3D =
zfl_PhotoFlipper.Front) this._attachOverlay(false);
view.reinit( null, null, null, context, photo, method ); =
view.dom().parentNode.cssText =3D styles;
} view.dom().style.padding =3D this._extent + "px"; view.__zfl_height =
=3D size.cy + extent2; view.__zfl_width
=3D size.cx + extent2; inner =3D view.getInner(); inner.style.left =3D x =
+ "px"; inner.style.top =3D y +
"px"; inner =3D null; var key =3D zfl_PhotoFlipper._getPoolKey(photo, =
method); var loader =3D this._pool[key];
if (loader =3D=3D null || loader.onload !=3D null) loader =3D =
this._pool[key] =3D new zf_PhotoLoader(photo,
method); var immediate =3D (loader.state !=3D zf_PhotoLoader.Loading && =
loader.state !=3D zf_PhotoLoader.Initialized);
view.onload =3D this.closure(this._view_onload, view, immediate, =
resize); if (code =3D=3D zfl_PhotoFlipper.Back
&& !resize) view.onwait =3D this.closure(this._view_onwait); =
view.load(loader, null, true); if (code
=3D=3D zfl_PhotoFlipper.Front) this._recalc(true); if (code =3D=3D =
zfl_PhotoFlipper.Back && this._views[zfl_PhotoFlipper.Front]
=3D=3D null && loader.state =3D=3D zf_PhotoLoader.Loading) { ; =
this._view_onload(loader.state, view, true,
false); } }; zfl_PhotoFlipper.prototype._view_onload =3D function(state, =
view, immediate, resize)
{ ; view.__zfl_state =3D state; var back =3D =
this._views[zfl_PhotoFlipper.Back] =3D=3D view; var password
=3D state =3D=3D zf_PhotoLoader.PasswordRequired; =
this._showPassword(view, password, false); if (!back
&& state =3D=3D zf_PhotoLoader.Complete) { if (view.getPhoto().id =3D=3D =
this.current.id) this._attachOverlay(true);
if (this.ondisplay) { ; this.ondisplay(view.getPhoto(), false); } } else =
if (!back && password &&
this.onpassword) { ; this.onpassword(); } if (back && this.onload && =
!resize) { ; this.onload(state,
immediate); } if (!back && state !=3D zf_PhotoLoader.Loading) { =
zf_stdReplaceClassName(this.dom(),
null, "pf-loaded"); } return state !=3D zf_PhotoLoader.Complete; }; =
zfl_PhotoFlipper.prototype._view_onwait
=3D function() { var view =3D this._views[zfl_PhotoFlipper.Front]; if =
(view) view.setSpecial("wait",
true); }; zfl_PhotoFlipper.prototype._attachOverlay =3D function(attach) =
{ var view =3D this._views[zfl_PhotoFlipper.Front];
if (!view || !this._overlay) return; var inner =3D view.getInner(); var =
o =3D null; for (o =3D inner.firstChild;
o !=3D null; o =3D o.nextSibling) { if (o.className =3D=3D "pv-overlay") =
break; } if (!o) return; if (attach)
{ ; this._overlay.attach(o); } else { ; this._overlay.detach(o); } }; =
zfl_PhotoFlipper.prototype._showPassword
=3D function(view, show, retry) { ; ; ; var id =3D view.id + =
"-password"; ; var dom =3D view.dom("password");
if (!show) { if (dom) dom.parentNode.removeChild(dom); dom =3D null; =
zf_stdReplaceClassName(view.dom(),
"pv-s-password", null); this.passwordEditing =3D false; return; } dom =
=3D document.createElement("DIV");
dom.id =3D id; dom.className =3D "pv-password"; view.setSpecial(null); =
zf_stdReplaceClassName(view.dom(),
null, "pv-s-password"); var content =3D []; content.push( '<div =
class=3D"password-box popup-border1 popup-color1 popup-bgcolor1">',
'<div class=3D"text">Content protected with password.</div>', '<div =
class=3D"text">If you do not have the password please contact the =
owner.</div>',
'<div class=3D"separator separator-border1"></div>', '<div class=3D"item =
none" id=3D"', id, '-hint">',
'<div class=3D"prompt">Hint:</div>', '<div class=3D"password-hint-text" =
id=3D"', id, '-hint-text"></div>',
'</div>', '<div class=3D"form" id=3D"', id, '-form">', '<div =
class=3D"item">', '<div class=3D"prompt">Password:</div>',
'<input id=3D"', id, '-input" name=3D"password" =
type=3D"password"></input>', '<a id=3D"', id, '-go">Go</a>',
'</div>', '</div>'); if (retry) { content.push( '<div =
class=3D"incorrect" id=3D"', id, '-incorrect">',
'Incorrect password', '</div>'); } content.push( '</div>'); =
dom.innerHTML =3D content.join(""); var
inner =3D view.getInner(); inner.appendChild(dom); =
zf_stdReplaceClassName(inner, null, "none"); =
zf_stdReplaceClassName(inner,
"none", null); inner =3D null; dom =3D null; var self =3D this; var =
photo =3D view.getPhoto(); var realmId
=3D photo.access.realmId; ; zfl_PasswordManager.retrieveHint(realmId, =
function(hint) { if (hint !=3D null
&& hint.length !=3D 0) { if (self.current !=3D null && =
self.current.access !=3D null && self.current.access.realmId
=3D=3D realmId) { var divPHint =3D view.dom("password-hint"); var =
divPHText =3D view.dom("password-hint-text");
if (divPHint !=3D null && divPHText !=3D null) { =
zf_stdReplaceClassName(divPHint, "none", null); zf_stdSetText(divPHText,
hint); ; } else { ; } } else { ; } } }); var key =3D =
zfl_PhotoFlipper._getPoolKey(photo, view.getMethod());
var loader =3D this._pool[key]; ; if (!loader.__zfl_onunlock) { =
loader.__zfl_onunlock =3D this.closure(this._password_onunlock,
loader); zfl_PasswordManager.subscribe(realmId, loader.__zfl_onunlock); =
; } var handler =3D function()
{ var password =3D view.dom("password-input").value; ; =
self._showPassword(view, false); zfl_PasswordManager.validate(realmId,
password, self.closure(self._password_onpassword, photo)); }; if =
(!retry) this.passwordEditing =3D false;
view.dom("password-go").onclick =3D handler; =
view.dom("password-input").onkeydown =3D function(e) {
self.passwordEditing =3D true; if (zf_stdGetEvent(e).keyCode =3D=3D 13) =
handler(); }; view.dom("password-input").onfocus
=3D function(e) { self.passwordEditing =3D true; }; if (retry) { try { =
view.dom("password-input").focus();
} catch (e) { } } }; zfl_PhotoFlipper.prototype._flipDone =3D =
function(immediate, source, forced)
{ var back =3D this._views[zfl_PhotoFlipper.Back]; var front =3D =
this._views[zfl_PhotoFlipper.Front];
; zf_stdSetOpacity(front.getInner(), 1.0); =
zf_stdReplaceClassName(front.dom().parentNode, "invisible",
null); if (back) { var domBack =3D back.dom().parentNode; =
zf_stdReplaceClassName(domBack, null, "none");
zf_stdReplaceClassName(domBack, null, "invisible"); back.clear(); =
back.__zfl_height =3D null; back.__zfl_state
=3D null; ; } this._recalc(immediate); if (front.__zfl_state !=3D =
zf_PhotoLoader.Loading) { zf_stdReplaceClassName(this.dom(),
null, "pf-loaded"); } if (front.__zfl_state =3D=3D =
zf_PhotoLoader.Complete) { if (front.getPhoto().id
=3D=3D this.current.id) this._attachOverlay(true); ; if (this.ondisplay) =
this.ondisplay(front.getPhoto(),
forced); } else if (front.__zfl_state =3D=3D =
zf_PhotoLoader.PasswordRequired) { ; if (this.onpassword)
this.onpassword(); } }; zfl_PhotoFlipper.prototype._recalc =3D =
function(immediate) { ; var height;
if (this._fullHeight) { height =3D this._availHeight; } else { var back =
=3D this._views[zfl_PhotoFlipper.Back];
var front =3D this._views[zfl_PhotoFlipper.Front]; var inited =3D false; =
height =3D 0; if (back && !zf_stdHasClassName(back.dom().parentNode,
"none") && back.__zfl_height) { height =3D Math.max(back.__zfl_height, =
height); inited =3D true; }
if (front && !zf_stdHasClassName(front.dom().parentNode, "none") && =
front.__zfl_height) { height
=3D Math.max(front.__zfl_height, height); inited =3D true; } if =
(!inited) height =3D this._availHeight;
} this.dom().style.height =3D height + "px"; ; if (!immediate) =
this.notifyResize(false); }; zfl_PhotoFlipper.prototype._stopTransition
=3D function() { var filters =3D null; try { filters =3D =
this.dom().filters; } catch (e) { } if (filters
&& filters.length > 0 && filters[0].status =3D=3D 2) { =
filters[0].stop(); this.dom().onfilterchange
=3D null; this._flipDone(true, "transition interrupted", true); } =
filters =3D null; }; zfl_PhotoFlipper.prototype._prefetch
=3D function(photoList, index, forward) { if (this._availWidth =3D=3D =
null) { ; var self =3D this; this._postponedPrefetch
=3D function() { self._prefetch(photoList, index, forward); }; return; } =
this._postponedPrefetch =3D null;
var prefetch =3D 8; var increment =3D forward ? 1 : -1; this._queue =3D =
[]; var extent2 =3D this._extent *
2; var width =3D this._availWidth - extent2; var height =3D =
this._availHeight - extent2; var loader;
for (var i =3D 0; i < prefetch; i++) { if (index < 0 || index >=3D =
photoList.length) break; var photo
=3D photoList.get(index); index +=3D increment; if (!photo.loaded) =
continue; var method =3D photo.pickMethod(width,
height); if (!method) method =3D zf_ProcessingMethod.StandardSmallSize; =
var key =3D zfl_PhotoFlipper._getPoolKey(photo,
method); if (this._pool[key]) continue; loader =3D new =
zf_PhotoLoader(photo, method); loader.__pool_key
=3D key; this._queue.push(loader); } if (this._queue.length =3D=3D 0) =
return; loader =3D this._queue[0];
loader.onload =3D this.closure(this._prefetch_onload, loader); =
zf_stdDeferCall(this.id + loader.__pool_key,
loader.start, loader); }; zfl_PhotoFlipper.prototype._prefetch_onload =
=3D function(state, src, loader)
{ ; if (!loader.onload) return; loader.onload =3D null; var key =3D =
loader.__pool_key; this._pool[key]
=3D loader; if (!this._queue || loader !=3D this._queue[0]) return; if =
(this._queue.length <=3D 1) {
this._queue =3D null; return; } this._queue.shift(); loader =3D =
this._queue[0]; loader.onload =3D this.closure(this._prefetch_onload,
loader); zf_stdDeferCall(this.id + loader.__pool_key, loader.start, =
loader); var self =3D this; setTimeout(function()
{ self._prefetch_onload(zf_PhotoLoader.Loading, null, loader); }, 1000); =
}; zfl_PhotoFlipper.prototype._password_onunlock
=3D function(loader) { ; var front =3D =
this._views[zfl_PhotoFlipper.Front]; var back =3D =
this._views[zfl_PhotoFlipper.Back];
if (front && (loader.photo =3D=3D front.getPhoto())) =
this._showPassword(view, false); var key =3D =
zfl_PhotoFlipper._getPoolKey(loader.getPhoto(),
loader.getMethod()); this._pool[key] =3D null; loader.__zfl_onunlock =3D =
null; if (front && front.getPhoto()
=3D=3D loader.getPhoto() && front.getMethod() =3D=3D loader.getMethod()) =
this._load(zfl_PhotoFlipper.Front,
front.getPhoto(), false, true); if (back && back.getPhoto() =3D=3D =
back.getPhoto() && back.getMethod()
=3D=3D loader.getMethod()) this._load(zfl_PhotoFlipper.Back, =
back.getPhoto(), false, true); }; =
zfl_PhotoFlipper.prototype._password_onpassword
=3D function(unlocked, photo) { ; if (unlocked) return; var view =3D =
this._views[zfl_PhotoFlipper.Front];
if (view && view.getPhoto() =3D=3D photo) this._showPassword(view, true, =
true); };
; ; ; function zfl_DimLights(id, flipper) { =
zfl_Control.prototype.constructor.call(this, id); this._flipper
=3D flipper; this.visible =3D false; var self =3D this; var =
createAnimation =3D function(pad) { return new
zf_Animation( { "hidden": 20, "semi": 60, "pressed": 80, "visible": 100 =
}, function(v) { zf_stdSetOpacity(self.dom(pad),
v / 100); }); }; this._leftAnim =3D createAnimation("left"); =
this._rightAnim =3D createAnimation("right");
this._closeAnim =3D createAnimation("closebox"); this._speed1 =3D { s: =
100, t: 500 }; this._speed2 =3D
{ s: 100, t: 250 }; this._speed3 =3D { s: 100, t: 400 }; =
this.dom().onmousemove =3D =
this.eventHandler(this._dimlights_onmousemove);
this.dom().oncontextmenu =3D zf_stdFalse; this._flipper.ondisplay =3D =
function() { if (self.ondisplay)
self.ondisplay.apply(this, arguments); }; } =
zfl_DimLights.inherits(zfl_Control); zfl_DimLights.prototype.init
=3D function(decoration, plugins, overlayFlags, oncommand, =
oncommandtest, analytics) { this._oncommandtest
=3D oncommandtest; this._oncommand =3D oncommand; this._analytics =3D =
analytics; var self =3D this; oncommand
=3D function(id) { self._oncommand("undimLights"); self._oncommand(id); =
}; this.dom("close").onclick
=3D function() { self._oncommand("undimLights"); }; =
this.dom("left").ondblclick =3D this.dom("left").onmousedown
=3D this.eventHandler(this._back); this.dom("right").ondblclick =3D =
this.dom("right").onmousedown =3D this.eventHandler(this._next);
this._flipper.init( decoration, plugins, overlayFlags, oncommand, =
oncommandtest, true, null );
}; zfl_DimLights.prototype.show =3D function() { if (this.visible) =
return; this.visible =3D true; if
(zfl_Popup.current) zfl_Popup.current.hide(); =
zfl_Curtain.show("darkest"); if (this._analytics)
this._analytics.registerLightsDimmed(this._flipper); this._show(); }; =
zfl_DimLights.prototype._show
=3D function() { var dom =3D this.dom(); if (dom.parentNode !=3D =
document.body) =
document.body.appendChild(dom.parentNode.removeChild(dom));
dom =3D null; this._resizeHandler =3D =
this.eventHandler(this._window_onresize); zf_stdAttachEvent(window,
"resize", this._resizeHandler); var cx =3D zf_stdGetClientWidth() - (16 =
+ 120); var cy =3D zf_stdGetClientHeight();
this._flipper.onload =3D this.closure(this._flipper_onload); =
this.dom("center").style.top =3D Math.floor(cy
/ 2) + "px"; if (this.current) { this._flipper.resize(cx, cy); =
this._flipper.update(this.current,
this.currentContext); this._updateNavigation(); } this.display(true); =
var speed4 =3D { s: 100, t: 3000
}; this._leftAnim.jump("visible"); this._leftAnim.animate("hidden", =
speed4); this._rightAnim.jump("visible");
this._rightAnim.animate("hidden", speed4); =
this._closeAnim.jump("visible"); this._closeAnim.animate("hidden",
speed4); }; zfl_DimLights.prototype.hide =3D function() { if =
(!this.visible) return; this.visible
=3D false; if (this._resizeHandler) { zf_stdDetachEvent(window, =
"resize", this._resizeHandler); this._resizeHandler
=3D null; } this._flipper.clear(); this.display(false); =
zfl_Curtain.hide(); }; zfl_DimLights.prototype.update
=3D function(photo, context) { ; ; if (this.current =3D=3D photo) =
return; this.current =3D photo; this.currentContext
=3D context; if (this.visible) { this._flipper.update(photo, context); =
this._updateNavigation();
} }; zfl_DimLights.prototype._window_onresize =3D function() { ; =
zf_stdDeferCall( this.id + ".onresize",
function() { var cx =3D zf_stdGetClientWidth() - (4 + 100); var cy =3D =
zf_stdGetClientHeight(); this.dom("center").style.top
=3D Math.floor(cy / 2) + "px"; this._flipper.resize(cx, cy); }, this); =
}; zfl_DimLights.prototype._flipper_onload
=3D function(state, immediate) { this._flipper.flip(); }; =
zfl_DimLights.prototype._updateNavigation
=3D function() { this.dom("left").style.display =3D =
this._oncommandtest("back") ? "block" : "none";
this.dom("right").style.display =3D this._oncommandtest("next") ? =
"block" : "none"; }; zfl_DimLights.prototype._dimlights_onmousemove
=3D function(e) { var cxClient =3D zf_stdGetClientWidth(); var cyClient =
=3D zf_stdGetClientHeight();
var hot =3D Math.abs(e.clientY - cyClient / 2) < 150; var hotLeft =3D =
hot && e.clientX < 220; var hotRight
=3D hot && e.clientX > cxClient - 220; var warmClose =3D e.clientX > =
cxClient - 250 && e.clientY < 250;
var hotClose =3D e.clientX > cxClient - 50 && e.clientY < 50; hot =3D =
hot && (!hotLeft && !hotRight);
if (!this._hotLeft && hotLeft) this._leftAnim.animate("visible", =
this._speed2); else if (this._hotLeft
&& !hotLeft) this._leftAnim.animate("hidden", this._speed1); if =
(!this._hotRight && hotRight) this._rightAnim.animate("visible",
this._speed2); else if (this._hotRight && !hotRight) =
this._rightAnim.animate("hidden", this._speed1);
if (!this._hot && hot) { this._leftAnim.animate("semi", this._speed1); =
this._rightAnim.animate("semi",
this._speed1); } else if (this._hot && !hot) { if (!hotLeft) =
this._leftAnim.animate("hidden", this._speed1);
if (!hotRight) this._rightAnim.animate("hidden", this._speed1); } if =
(!this._hotClose && hotClose)
this._closeAnim.animate("visible", this._speed2); else if =
(!this._warmClose && warmClose) this._closeAnim.animate("semi",
this._speed1); else if (this._warmClose && !warmClose) =
this._closeAnim.animate("hidden", this._speed1);
else if (this._hotClose && !hotClose) this._closeAnim.animate("semi", =
this._speed1); this._hot =3D hot;
this._hotLeft =3D hotLeft; this._hotRight =3D hotRight; this._hotClose =
=3D hotClose; this._warmClose =3D
warmClose; }; zfl_DimLights.prototype._next =3D function(e) { =
this._oncommand("next"); this._rightAnim.jump("pressed");
this._rightAnim.animate("visible", this._speed3); }; =
zfl_DimLights.prototype._back =3D function(e)
{ this._leftAnim.jump("pressed"); this._leftAnim.animate("visible", =
this._speed3); this._oncommand("back");
};
; ; ; function zfl_AddressBar(updateable) { this._updateable =3D =
updateable; if (!updateable) { this.update
=3D zf_stdFalse; return; } this.set =3D zf_stdMakeDeferred("AddressBar", =
this.set); this.closure =3D zf_Control.prototype.closure;
this._replaceInvoke =3D new zf_DelayedInvoke(600); this._hash =3D =
location.hash; var self =3D this; this._track
=3D function() { if (!self.current.loaded || =
self._replaceInvoke.pending) return; if (self._hash =3D=3D
location.hash) return; var id =3D =
zfl_AddressBar.parseHash(self.current.id, false); if (id !=3D =
self.current.id)
{ ; self._layout.navigate(id, true); } }; } =
zfl_AddressBar.prototype.init =3D function(layout) {
; this._layout =3D layout; }; zfl_AddressBar.prototype.update =3D =
function(photo, context) { ; ; if (this.current
=3D=3D photo) return; if (this.current !=3D null) =
this.current.unadvise(this); if (this.current =3D=3D null)
setInterval(this._track, 500); this.current =3D photo; if (photo.loaded) =
{ this.set(photo, context);
} else { var self =3D this; photo.advise(this, function() { =
self.set(photo, context); }); } }; zfl_AddressBar.prototype.set
=3D function(photo, context) { ; ; var hash =3D '#h' + =
photo.id.toString(16); if (hash !=3D location.hash)
{ var uri =3D [ location.protocol, "//", location.host, =
location.pathname, location.search, hash ].join("");
this._replaceInvoke.invoke(this.closure(this._locationReplace, uri, =
hash)); } }; zfl_AddressBar.prototype._locationReplace
=3D function(uri, hash) { ; this._hash =3D hash; location.replace(uri); =
; }; zfl_AddressBar.parseHash
=3D function(defaultValue, legacy) { var hash =3D location.hash; var id =
=3D null; if (!hash || hash.length
< 2) return defaultValue; if (hash.indexOf("#h") =3D=3D 0) { id =3D =
parseInt(hash.substr(2), 16); } else
if (legacy) { id =3D parseInt(hash.substr(1), 10); } if (!id || =
isNaN(id)) return defaultValue; return id;
};
; function zf_Rect(left, top, width, height) { if (arguments.length =
=3D=3D 0) { this.left =3D 0; this.top
=3D 0; this.width =3D 0; this.height =3D 0; } else { this.left =3D left; =
this.top =3D top; this.width =3D width;
this.height =3D height; } } zf_Rect.prototype.toString =3D =
function(precision) { return "{" + [ this.left.toPrecision(precision),
this.top.toPrecision(precision), this.width.toPrecision(precision), =
this.height.toPrecision(precision)
].join(",") + "}"; }; zf_Rect.parse =3D function(rect) { if (rect =3D=3D =
null) return null; var re =3D =
/\{\s*(\d+(?:\.\d*)?(?:E[+-]\d+)?)\s*,\s*(\d+(?:\.\d*)?(?:E[+-]\d+)?)\s*,=
\s*(\d+(?:\.\d*)?(?:E[+-]\d+)?)\s*,\s*(\d+(?:\.\d*)?(?:E[+-]\d+)?)\s*}/;
var res =3D re.exec(rect); if (res =3D=3D null) return null; return new =
zf_Rect(parseFloat(res[1]), parseFloat(res[2]),
parseFloat(res[3]), parseFloat(res[4])); };
; ; function zfl_CommentAreaPlugin() { this._active =3D false; =
this._readOnly =3D false; this._onclose
=3D null; this._areaRect =3D null; } =
zfl_CommentAreaPlugin.prototype.activate =3D function(attachment,
readOnly, onclose) { ; this._areaRect =3D (attachment !=3D null) ? =
zf_Rect.parse(attachment) : null;
var dom =3D this._dom(); this._cxArena =3D dom.parentNode.offsetWidth; =
this._cyArena =3D dom.parentNode.offsetHeight;
zf_stdReplaceClassName(dom, readOnly ? "cap-active" : "cap-active-ro", =
readOnly ? "cap-active-ro"
: "cap-active"); this._active =3D true; this._readOnly =3D readOnly; =
this._onclose =3D onclose; if (this._areaRect
!=3D null) { this._workRect =3D this._toWorkRect(this._areaRect); =
this._moveRect(this._workRect); }
else this._dom("oframe").style.visibility =3D "hidden"; var self =3D =
this; if (!readOnly) { dom.onmousedown
=3D function(e) { self._area_onmousedown(this, e); return false; }; =
dom.onmouseup =3D function(e) { self._area_onmouseup(this,
e); }; dom.onmousemove =3D function(e) { self._area_onmousemove(this, =
e); }; dom.onselectstart =3D zf_stdFalse;
} else { this._dom("close").onclick =3D function() { if (onclose !=3D =
null) onclose(); self.deactivate();
}; } dom =3D null; }; zfl_CommentAreaPlugin.prototype.deactivate =3D =
function() { ; zf_stdReplaceClassName(this._dom(),
"cap-active", null); zf_stdReplaceClassName(this._dom(), =
"cap-active-ro", null); this._active =3D false;
this._readOnly =3D false; this._onclose =3D null; }; =
zfl_CommentAreaPlugin.prototype.getAttachment =3D
function() { return this._areaRect !=3D null ? =
this._areaRect.toString(3) : null; }; =
zfl_CommentAreaPlugin.prototype.getInnerContent
=3D function(id, context) { return ['<div class=3D"cap-arena" =
oncontextmenu=3D"return false;" id=3D"', id,
'-cap">', '<div class=3D"cap-oframe" id=3D"', id, '-cap-oframe">', '<div =
class=3D"cap-iframe" id=3D"', id,
'-cap-iframe"></div>', '<div class=3D"cap-close" id=3D"', id, =
'-cap-close"></div>', '</div>', '</div>'
].join(""); }; zfl_CommentAreaPlugin.prototype.onCreateDom =3D =
function(view, outer, inner, context,
isNew) { ; this._id =3D view.id + "-cap"; if (this._active) =
this.activate(this.getAttachment(), this._readOnly,
this._onclose); }; zfl_CommentAreaPlugin.prototype._dom =3D function(id) =
{ return document.getElementById(id
!=3D null ? this._id + "-" + id : this._id); }; =
zfl_CommentAreaPlugin.prototype._toWorkRect =3D function(rect)
{ return new zf_Rect(rect.left * this._cxArena, rect.top * =
this._cyArena, rect.width * this._cxArena,
rect.height * this._cyArena); }; =
zfl_CommentAreaPlugin.prototype._fromWorkRect =3D function(rect)
{ return new zf_Rect(rect.left / this._cxArena, rect.top / =
this._cyArena, rect.width / this._cxArena,
rect.height / this._cyArena); }; =
zfl_CommentAreaPlugin.prototype._moveRect =3D function(rect) { var
workLeft =3D rect.left; var workTop =3D rect.top; var workWidth =3D =
rect.width; var workHeight =3D rect.height;
var workRight =3D this._cxArena - workLeft - workWidth; var workBottom =
=3D this._cyArena - workTop - workHeight;
var style; style =3D this._dom("oframe").style; style.visibility =3D =
"inherit"; style.left =3D (workLeft
- 1) + "px"; style.top =3D (workTop - 1) + "px"; style.width =3D =
workWidth + "px"; style.height =3D workHeight
+ "px"; style =3D this._dom("iframe").style; style.width =3D workWidth + =
"px"; style.height =3D workHeight
+ "px"; }; zfl_CommentAreaPlugin.prototype._area_onmousedown =3D =
function(dom, e) { if (this._readOnly)
return; e =3D zf_stdGetEvent(e); if (document.addEventListener) { =
document.addEventListener("mousemove",
dom.onmousemove, true); document.addEventListener("mouseup", =
dom.onmouseup, true); document.addEventListener("selectstart",
dom.onselectstart, true); } else if (dom.setCapture) dom.setCapture(); =
this._dom("oframe").style.visibility
=3D "hidden"; var pos =3D this._getEventPos(e); this._anchorX =3D pos.x; =
this._anchorY =3D pos.y; this._tracking
=3D true; zf_stdStopPropagation(e); }; =
zfl_CommentAreaPlugin.prototype._area_onmouseup =3D function(dom,
e) { if (!this._tracking) return; e =3D zf_stdGetEvent(e); if =
(document.removeEventListener) { =
document.removeEventListener("mousemove",
dom.onmousemove, true); document.removeEventListener("mouseup", =
dom.onmouseup, true); document.removeEventListener("selectstart",
dom.onselectstart, true); } else if (dom.releaseCapture) =
dom.releaseCapture(); this._workRect =3D this._getTrackingRect(e);
if (this._workRect.width < 5 || this._workRect.height < 5) { =
this._areaReact =3D null; this._dom("oframe").style.visibility
=3D "hidden"; } else this._areaRect =3D =
this._fromWorkRect(this._workRect); this._tracking =3D false;
zf_stdStopPropagation(e); }; =
zfl_CommentAreaPlugin.prototype._area_onmousemove =3D function(dom, e)
{ if (this._tracking) =
this._moveRect(this._getTrackingRect(zf_stdGetEvent(e))); =
zf_stdStopPropagation(e);
}; zfl_CommentAreaPlugin.prototype._getTrackingRect =3D function(e) { ; =
var pos =3D this._getEventPos(e);
var x =3D Math.min(Math.max(pos.x, 0), this._cxArena); var y =3D =
Math.min(Math.max(pos.y, 0), this._cyArena);
if (x < this._anchorX) ++x; if (y < this._anchorY) ++y; return new =
zf_Rect(Math.min(x, this._anchorX),
Math.min(y, this._anchorY), Math.abs(x - this._anchorX), Math.abs(y - =
this._anchorY)); }; zfl_CommentAreaPlugin.prototype._getEventPos
=3D function(e) { var x =3D e.clientX - 2; var y =3D e.clientY - 2; y =
+=3D document.documentElement.scrollTop;
var node =3D this._dom().offsetParent; while (node !=3D null) { x -=3D =
node.offsetLeft; y -=3D node.offsetTop;
node =3D node.offsetParent; } x +=3D 8; y -=3D 2; return { x: x, y: y }; =
};
; ; ; function zfl_CommentCropPlugin() { this._active =3D false; =
this._readOnly =3D false; this._onclose
=3D null; this._cropRect =3D null; } =
zfl_CommentCropPlugin.prototype.activate =3D function(attachment,
readOnly, onclose) { ; this._cropRect =3D attachment !=3D null ? =
zf_Rect.parse(attachment) : null;
if (this._cropRect =3D=3D null) this._cropRect =3D new zf_Rect(0.1, 0.1, =
0.8, 0.8); var dom =3D this._dom();
this._cxArena =3D dom.parentNode.offsetWidth; this._cyArena =3D =
dom.parentNode.offsetHeight; this._workRect
=3D this._toWorkRect(this._cropRect); this._moveRect(this._workRect); =
zf_stdReplaceClassName(dom,
readOnly ? "ccp-active" : "ccp-active-ro", readOnly ? "ccp-active-ro" : =
"ccp-active"); this._active
=3D true; this._readOnly =3D readOnly; this._onclose =3D onclose; var =
self =3D this; if (!readOnly) { var
onmousedown =3D function(e) { self._handle_onmousedown(this, e); return =
false; }; var onmouseup =3D
function(e) { self._handle_onmouseup(this, e); }; var onmousemove =3D =
function(e) { self._handle_onmousemove(this,
e); }; var ids =3D [ "ne", "nw", "se", "sw", "frame" ]; for (var i =3D =
0; i < ids.length; i++) { handle
=3D this._dom(ids[i]); handle.onmousedown =3D onmousedown; =
handle.onmouseup =3D onmouseup; handle.onmousemove
=3D onmousemove; handle.onselectstart =3D zf_stdFalse; } handle =3D =
null; dom =3D null; } else { this._dom("close").onclick
=3D function() { if (onclose !=3D null) onclose(); self.deactivate(); }; =
} }; zfl_CommentCropPlugin.prototype.deactivate
=3D function() { ; zf_stdReplaceClassName(this._dom(), "ccp-active", =
null); zf_stdReplaceClassName(this._dom(),
"ccp-active-ro", null); this._active =3D false; this._readOnly =3D =
false; this._onclose =3D null; };
zfl_CommentCropPlugin.prototype.getAttachment =3D function() { return =
this._cropRect.toString(3);
}; zfl_CommentCropPlugin.prototype.getInnerContent =3D function(id, =
context) { return [ '<div class=3D"ccp-arena" oncontextmenu=3D"return =
false;" id=3D"',
id, '-ccp">', '<div class=3D"ccp-shadow ccp-shadow-n" id=3D"', id, =
'-ccp-shadow-n"></div>', '<div class=3D"ccp-shadow ccp-shadow-w" =
id=3D"',
id, '-ccp-shadow-w"></div>', '<div class=3D"ccp-shadow ccp-shadow-e" =
id=3D"', id, '-ccp-shadow-e"></div>',
'<div class=3D"ccp-shadow ccp-shadow-s" id=3D"', id, =
'-ccp-shadow-s"></div>', '<div class=3D"ccp-frame" id=3D"',
id, '-ccp-frame">', '<div class=3D"ccp-handle ccp-handle-nw" id=3D"', =
id, '-ccp-nw"></div>', '<div class=3D"ccp-handle ccp-handle-ne" id=3D"',
id, '-ccp-ne"></div>', '<div class=3D"ccp-handle ccp-handle-sw" id=3D"', =
id, '-ccp-sw"></div>', '<div class=3D"ccp-handle ccp-handle-se" id=3D"',
id, '-ccp-se"></div>', '<div class=3D"ccp-close" id=3D"', id, =
'-ccp-close"></div>', '</div>', '</div>'
].join(""); }; zfl_CommentCropPlugin.prototype.onCreateDom =3D =
function(view, outer, inner, context,
isNew) { ; this._id =3D view.id + "-ccp"; if (this._active) =
this.activate(this.getAttachment(), this._readOnly,
this._onclose); }; zfl_CommentCropPlugin.prototype._dom =3D function(id) =
{ return document.getElementById(id
!=3D null ? this._id + "-" + id : this._id); }; =
zfl_CommentCropPlugin.prototype._toWorkRect =3D function(rect)
{ return new zf_Rect(Math.round(rect.left * this._cxArena), =
Math.round(rect.top * this._cyArena),
Math.round(rect.width * this._cxArena), Math.round(rect.height * =
this._cyArena)); }; zfl_CommentCropPlugin.prototype._fromWorkRect
=3D function(rect) { return new zf_Rect(rect.left / this._cxArena, =
rect.top / this._cyArena, rect.width
/ this._cxArena, rect.height / this._cyArena); }; =
zfl_CommentCropPlugin.prototype._moveRect =3D function(rect)
{ var workLeft =3D rect.left; var workTop =3D rect.top; var workWidth =
=3D rect.width; var workHeight =3D rect.height;
var workRight =3D this._cxArena - workLeft - workWidth; var workBottom =
=3D this._cyArena - workTop - workHeight;
var style; style =3D this._dom("frame").style; style.left =3D (workLeft =
- 2) + "px"; style.top =3D (workTop
- 2) + "px"; style.width =3D workWidth + "px"; style.height =3D =
workHeight + "px"; this._dom("shadow-n").style.height
=3D workTop + "px"; this._dom("shadow-s").style.height =3D workBottom + =
"px"; style =3D this._dom("shadow-w").style;
style.top =3D workTop + "px"; style.height =3D workHeight + "px"; =
style.width =3D workLeft + "px"; style
=3D this._dom("shadow-e").style; style.top =3D workTop + "px"; =
style.height =3D workHeight + "px"; style.width
=3D workRight + "px"; }; =
zfl_CommentCropPlugin.prototype._handle_onmousedown =3D function(handle, =
e)
{ if (this._readOnly) return; e =3D zf_stdGetEvent(e); if =
(document.addEventListener) { document.addEventListener("mousemove",
handle.onmousemove, true); document.addEventListener("mouseup", =
handle.onmouseup, true); document.addEventListener("selectstart",
handle.onselectstart, true); } else if (handle.setCapture) =
handle.setCapture(); this._anchorX =3D e.clientX;
this._anchorY =3D e.clientY; this._track =3D handle.className.split(' =
')[1]; if (this._track =3D=3D null)
this._track =3D "frame"; zf_stdStopPropagation(e); }; =
zfl_CommentCropPlugin.prototype._handle_onmouseup
=3D function(handle, e) { if (this._track =3D=3D null) return; e =3D =
zf_stdGetEvent(e); if (document.removeEventListener)
{ document.removeEventListener("mousemove", handle.onmousemove, true); =
document.removeEventListener("mouseup",
handle.onmouseup, true); document.removeEventListener("selectstart", =
handle.onselectstart, true);
} else if (handle.releaseCapture) handle.releaseCapture(); =
this._workRect =3D this._getTrackingRect(e);
this._cropRect =3D this._fromWorkRect(this._workRect); this._track =3D =
null; zf_stdStopPropagation(e);
}; zfl_CommentCropPlugin.prototype._handle_onmousemove =3D =
function(handle, e) { if (this._track !=3D
null) this._moveRect(this._getTrackingRect(zf_stdGetEvent(e))); =
zf_stdStopPropagation(e); }; =
zfl_CommentCropPlugin.prototype._getTrackingRect
=3D function(e) { ; var left =3D this._workRect.left; var top =3D =
this._workRect.top; var right =3D left +
this._workRect.width; var bottom =3D top + this._workRect.height; ; ; ; =
; var dx =3D e.clientX - this._anchorX;
var dy =3D e.clientY - this._anchorY; var snapDelta =3D (e.ctrlKey || =
e.metaKey) ? 0 : 6; switch (this._track)
{ case "ccp-handle-nw": left =3D Math.min(Math.max(0, left + dx), right =
- 20); top =3D Math.min(Math.max(0,
top + dy), bottom - 20); if (left < snapDelta) left =3D 0; if (top < =
snapDelta) top =3D 0; break; case
"ccp-handle-ne": right =3D Math.max(Math.min(this._cxArena, right + dx), =
left + 20); top =3D Math.min(Math.max(0,
top + dy), bottom - 20); if (right > this._cxArena - snapDelta) right =
=3D this._cxArena; if (top < snapDelta)
top =3D 0; break; case "ccp-handle-sw": left =3D Math.min(Math.max(0, =
left + dx), right - 20); bottom
=3D Math.max(Math.min(this._cyArena, bottom + dy), top + 20); if (left < =
snapDelta) left =3D 0; if (bottom
> this._cyArena - snapDelta) bottom =3D this._cyArena; break; case =
"ccp-handle-se": right =3D Math.max(Math.min(this._cxArena,
right + dx), left + 20); bottom =3D Math.max(Math.min(this._cyArena, =
bottom + dy), top + 20); if (right
> this._cxArena - snapDelta) right =3D this._cxArena; if (bottom > =
this._cyArena - snapDelta) bottom
=3D this._cyArena; break; default: left =3D Math.max(0, left + dx); top =
=3D Math.max(0, top + dy); if (left
< snapDelta) left =3D 0; if (top < snapDelta) top =3D 0; right =3D =
Math.min(this._cxArena, left + this._workRect.width);
bottom =3D Math.min(this._cyArena, top + this._workRect.height); if =
(right > this._cxArena - snapDelta)
right =3D this._cxArena; if (bottom > this._cyArena - snapDelta) bottom =
=3D this._cyArena; left =3D right
- this._workRect.width; top =3D bottom - this._workRect.height; break; } =
; ; ; ; return new zf_Rect(left,
top, right - left, bottom - top); };
; function zfl_CommentFinder(photoList, origin, forward, ondone) { ; ; ; =
this._cancelled =3D false;
this._photoList =3D photoList; this._step =3D forward ? 1 : -1; =
this._ondone =3D ondone; this.found =3D null;
this.index =3D null; this._checkPhoto(origin + this._step); } =
zfl_CommentFinder.inherits(zf_Object);
zfl_CommentFinder.prototype._checkPhoto =3D function(index) { if =
(this._cancelled) return; if (index
< 0 || index >=3D this._photoList.length) { this._done(false); return; } =
var photo =3D this._photoList.get(index);
if (!photo.loaded) { photo.advise(this, this.closure(this._checkPhoto, =
index)); return; } if ((photo.flags
& zf_PhotoFlags.HasComments) =3D=3D 0) { this._checkNext(index); return; =
} var meta =3D photo.getMeta();
if (!meta.loaded) { meta.advise(this, this.closure(this._checkPhoto, =
index)); return; } if (meta.comments
=3D=3D 0) { this._checkNext(index); return; } this._done(true, index); =
}; zfl_CommentFinder.prototype._done
=3D function(found, index) { this.found =3D found; this.index =3D index; =
if (this._ondone && !this._cancelled)
this._ondone(found, index); }; zfl_CommentFinder.prototype._checkNext =
=3D function(index) { index
+=3D this._step; var self =3D this; if ((index % 20) =3D=3D 0) =
setTimeout(function() { self._checkPhoto(index);
}, 5); else this._checkPhoto(index); }; =
zfl_CommentFinder.prototype.cancel =3D function(index) {
this._cancelled =3D true; };
; function zfl_CommentBrowser(id, controls) { =
zfl_Control.prototype.constructor.call(this, id);
this._visible =3D false; this._editable =3D true; this._aggregatedMask =
=3D 0; this._controls =3D controls;
var edit =3D controls.edit; this._edit =3D edit; this._flipper =3D =
controls.flipper; this._flipper.onload
=3D this.closure(this._flipper_onload); this._flipper.ondisplay =3D =
this.closure(this._flipper_ondisplay);
var self =3D this; edit.onsave =3D this.closure(this._edit_onsave); =
edit.oncancel =3D this.closure(this._edit_oncancel);
edit.onlogin =3D function() { if (self.onlogin) self.onlogin(); }; =
edit.onattachment =3D this.closure(this._displayAttachment,
false); edit.onerror =3D this.closure(this._edit_onerror); var list =3D =
controls.list; this._list =3D
list; list.onadd =3D this.closure(this.add); list.onlogin =3D =
edit.onlogin; list.onrequest =3D this.closure(this._list_onrequest);
list.onedit =3D this.closure(this._list_onedit); list.onselect =3D =
this.closure(this._list_onselect);
list.ondeselect =3D this.closure(this._list_ondeselect); =
list.onattachment =3D this.closure(this._list_onattachment);
list.ondelete =3D this.closure(this._list_onaction, "deleteMessage"); =
list.onundelete =3D this.closure(this._list_onaction,
"undeleteMessage"); list.oncensor =3D this.closure(this._list_onaction, =
"censorMessage"); list.onuncensor
=3D this.closure(this._list_onaction, "uncensorMessage"); list.onpurge =
=3D this.closure(this._list_onaction,
"purgeMessage"); var photoIndex =3D this._controls.photoIndex; if =
(photoIndex) { photoIndex.update
=3D function(photo, context) { this.set(context.currentIndex + 1); }; } =
this._setupAttachment =3D zf_stdFalse;
this._compact =3D screen.width <=3D 1200; if (this._compact) =
zf_stdReplaceClassName(this.dom(), null,
"cb-s-compact"); zf_stdMakeMethodsDeferred(this, this.id, =
["_setupCommentFinders"]); } zfl_CommentBrowser.inherits(zfl_Control);
zfl_CommentBrowser.prototype.init =3D function(decoration, plugins, =
overlayFlags, oncommand, oncommandtest)
{ this._oncommandtest =3D oncommandtest; this._oncommand =3D oncommand; =
this.dom("close").onclick =3D function()
{ self._oncommand("closeComments"); }; var self =3D this; oncommand =3D =
function(id) { self._oncommand("closeComments");
self._oncommand(id); }; this._cropPlugin =3D new =
zfl_CommentCropPlugin(); this._areaPlugin =3D new =
zfl_CommentAreaPlugin();
plugins =3D [].concat(plugins, this._cropPlugin, this._areaPlugin); =
this._flipper.init( decoration,
plugins, overlayFlags, oncommand, oncommandtest, true, null ); =
this._extent =3D decoration !=3D null ?
(decoration.shadowSize + decoration.borderSize) : 0; }; =
zfl_CommentBrowser.prototype.show =3D function(add)
{ if (this._visible) return; this._visible =3D true; this._editOnOpen =
=3D add; if (zfl_Popup.current)
zfl_Popup.current.hide(); zfl_Curtain.show("dark"); var dom =3D =
this.dom(); if (dom.parentNode !=3D document.body)
document.body.appendChild(dom.parentNode.removeChild(dom)); =
this._resizeHandler =3D this.eventHandler(this._window_onresize);
zf_stdAttachEvent(window, "resize", this._resizeHandler); =
this._keydownHandler =3D this.eventHandler(this._document_onkeydown);
zf_stdAttachEvent(document, "keydown", this._keydownHandler); =
this.setMode("viewing"); this.display(true);
this._recalcLayout(); if (this.current) this._update(); }; =
zfl_CommentBrowser.prototype.hide =3D function()
{ if (!this._visible) return; this._visible =3D false; if =
(this._resizeHandler) { zf_stdDetachEvent(window,
"resize", this._resizeHandler); this._resizeHandler =3D null; } if =
(this._keydownHandler) { zf_stdDetachEvent(document,
"keydown", this._keydownHandler); this._keydownHandler =3D null; } =
this.setMode("viewing"); this._flipper.clear();
this.display(false); zfl_Curtain.hide(); }; =
zfl_CommentBrowser.prototype.update =3D function(photo,
context) { ; ; if (this.current =3D=3D photo) return; if (this.current =
!=3D null) { this.current.unadvise(this);
this.current.getMeta().unadvise(this); } this.current =3D photo; =
this.currentContext =3D context; this._mailbox
=3D null; this._editOnOpen =3D false; if (this._visible) this._update(); =
}; zfl_CommentBrowser.prototype._update
=3D function() { ; ; ; var photo =3D this.current; var context =3D =
this.currentContext; this.dom("back").style.visibility
=3D this._oncommandtest("back") ? "inherit" : "hidden"; =
this.dom("next").style.visibility =3D this._oncommandtest("next")
? "inherit" : "hidden"; this._displayed =3D false; this._prepared =3D =
false; for (var key in this._controls)
{ var control =3D this._controls[key]; if (control =3D=3D null || typeof =
(control.update) !=3D "function")
continue; control.update(photo, context); } this._list.setEditing(true); =
if (photo.loaded) { this._setPhoto(photo);
} else { var self =3D this; photo.advise(this, function() { =
self._setPhoto(photo); }); } this._setupCommentFinders();
}; zfl_CommentBrowser.prototype._window_onresize =3D function() { ; =
zf_stdDeferCall( this.id + ".onresize",
this._recalcLayout, this); }; =
zfl_CommentBrowser.prototype._flipper_onload =3D function(state, =
immediate)
{ this._flipper.flip(); }; =
zfl_CommentBrowser.prototype._flipper_ondisplay =3D function(photo) {
; this._displayed =3D true; this._onload(); }; =
zfl_CommentBrowser.prototype.next =3D function(e) {
this._oncommand("next"); }; zfl_CommentBrowser.prototype.back =3D =
function(e) { this._oncommand("back");
}; zfl_CommentBrowser.prototype._recalcLayout =3D function() { var dom =
=3D this.dom(); var getPixels =3D
function(node, a, b) { return =
zf_stdExtractPixels(zf_stdGetCurrentStyle(node, a, b)); }; var x =3D 34;
var y =3D 34; var cx =3D zf_stdGetClientWidth() - x * 2; var cy =3D =
zf_stdGetClientHeight() - y * 2;
var cxPadding =3D getPixels(dom, "border-left-width", "borderLeftWidth") =
+ getPixels(dom, "padding-left",
"paddingLeft") + getPixels(dom, "padding-right", "paddingRight") + =
getPixels(dom, "border-right-width",
"borderRightWidth"); var cyPadding =3D getPixels(dom, =
"border-top-width", "borderTopWidth") + getPixels(dom,
"padding-top", "paddingTop") + getPixels(dom, "padding-bottom", =
"paddingBottom") + getPixels(dom,
"border-bottom-width", "borderBottomWidth"); cx -=3D cxPadding; cy -=3D =
cyPadding; cx =3D Math.max(cx,
900); cy =3D Math.max(cy, (this._compact ? 550 : 620)); var cxImage =3D =
cx - (this._compact ? 400 : 450)
- 2 * this._extent; var cyImage =3D cy - (this._compact ? 30 : 150) - 2 =
* this._extent; var options
=3D [ { method: zf_ProcessingMethod.StandardSmallSize, mask: 0 }, { =
method: zf_ProcessingMethod.StandardMediumSize,
mask: zf_AccessMask.ProtectMedium }, { method: =
zf_ProcessingMethod.StandardLargeSize, mask: zf_AccessMask.ProtectLarge
}, { method: zf_ProcessingMethod.StandardVeryLargeSize, mask: =
zf_AccessMask.ProtectExtraLarge }
]; var method =3D zf_ProcessingMethod.StandardSmallSize; for (var i =3D =
1; i < options.length; i++)
{ var option =3D options[i]; if ((option.mask & this._aggregatedMask) =
!=3D 0) continue; if (option.method.cx
> cxImage || option.method.cy > cyImage) break; method =3D =
option.method; } cxImage =3D method.cx + 2
* this._extent + 2; cyImage =3D method.cy + 2 * this._extent; y +=3D =
document.documentElement.scrollTop;
dom.style.left =3D x + "px"; dom.style.top =3D y + "px"; dom.style.width =
=3D cx + "px"; dom.style.height
=3D cy + "px"; cy -=3D 32; var left =3D this.dom("left"); var right =3D =
this.dom("right"); right.style.width
=3D cx - cxImage - 10 - 2 + "px"; right.style.height =3D cy - 2 + "px"; =
left.style.width =3D cxImage + "px";
left.style.height =3D cy + "px"; right.style.marginLeft =3D cxImage + 10 =
+ "px"; this._list.setHeight(cy
- 2); this._flipper.resize(cxImage, cyImage); }; =
zfl_CommentBrowser.prototype._setPhoto =3D function(photo)
{ ; zf_stdSetText(this.dom("title"), photo.title); this._mailbox =3D new =
zf_Mailbox(photo.owner.id,
zf_MailboxType.PhotoComments, photo.id); =
this._list.setAccess(photo.access.mask, zf_MailboxType.PhotoComments);
this._edit.setAccess(photo.access.mask, zf_MailboxType.PhotoComments); =
this.setMode("viewing");
this._displayAttachment(zf_AttachmentType.None, null, true); if =
((photo.flags & zf_PhotoFlags.HasComments)
=3D=3D 0) this._list.reinit(0); var meta =3D photo.getMeta(); if =
(meta.loaded) { this._setMeta(meta);
} else { var self =3D this; meta.bump(); meta.advise(this, function() { =
self._setMeta(meta); }, function()
{ self._list.setLoading(true); }); } }; =
zfl_CommentBrowser.prototype._setMeta =3D function(meta) {
; var list =3D this._list; list.reinit(meta.comments, =
meta.recentComments); if (meta.recentComments.length
> 0) list.select(meta.recentComments[0].index); this._prepared =3D true; =
this._onload(); }; zfl_CommentBrowser.prototype.add
=3D function() { if (!this._editable) return; =
this._edit.setOriginal(null); this.setMode("editing");
}; zfl_CommentBrowser.prototype._edit_onsave =3D function(updater) { ; =
var self =3D this; var original
=3D this._edit.getOriginal(); this._setupAttachment(updater); =
this._editOnOpen =3D false; var photo =3D
this.current; ; var meta =3D photo.getMeta(); ; var list =3D this._list; =
var onpost =3D function(message,
error) { if (!error) { if (message !=3D null) { if (self.current =
=3D=3D=3D photo) { if (original !=3D null)
list.deselect(original.index); list.add(message); =
list.select(message.index); } meta.addComment(message);
} else if (original !=3D null) { if (self.current =3D=3D=3D photo) =
list.remove(original.index); meta.removeComment(original.index);
} else { if (zf_userId =3D=3D 0 && updater.isPrivate) { =
self._edit.setContinue( false, "Your comment has been sent directly to =
the photographer. It will not appear in the list.",
function() { self.setMode("viewing"); }); return; } } =
self.setMode("viewing"); return; } if (self.current
=3D=3D=3D photo) self._edit.setContinue(true, error.message, function() =
{ self._edit.setContinue(); });
}; if (original =3D=3D null) zf_Message.postMessage(this._auth, =
this._mailbox, updater, onpost); else
zf_Message.updateMessage(this._auth, this._mailbox, original.index, =
updater, onpost); }; zfl_CommentBrowser.prototype._edit_oncancel
=3D function() { this.setMode("viewing"); this._editOnOpen =3D false; =
var list =3D this._list; var selected
=3D list.getSelectedView(); if (selected !=3D null) { =
list.deselect(selected.getIndex()); list.select(selected.getIndex());
} else { this._displayAttachment(zf_AttachmentType.None, null, true); } =
}; zfl_CommentBrowser.prototype.setMode
=3D function(mode) { ; this._mode =3D mode; if (mode =3D=3D "editing") { =
this._auth =3D new zf_MailboxAuthorization(this._mailbox);
zf_stdReplaceClassName(this.dom(), "cb-s-viewing", "cb-s-editing"); =
this._oncommand("enableKeyNavigation",
false); this._edit.setFocus(); } else { =
zf_stdReplaceClassName(this.dom(), "cb-s-editing", "cb-s-viewing");
this._oncommand("enableKeyNavigation", true); this._list.setHeight(); } =
}; zfl_CommentBrowser.prototype._list_onrequest
=3D function(first, count) { var self =3D this; var photo =3D =
this.current; ; var meta =3D photo.getMeta();
; var onload =3D function(messages, error) { if (!error) { =
meta.addComment(messages); if (self.current
=3D=3D=3D photo) { self._list.add(messages); self._list.setHeight(); } =
return; } }; zf_Message.loadMessageRange(this._mailbox,
photo.access.token, first, count, onload); }; =
zfl_CommentBrowser.prototype._list_onedit =3D function(message)
{ this._edit.setOriginal(message); this.setMode("editing"); }; =
zfl_CommentBrowser.prototype._list_onaction
=3D function(message, action) { var self =3D this; var photo =3D =
this.current; ; var meta =3D photo.getMeta();
; var list =3D this._list; var oncomplete =3D function(updated, error) { =
if (!error) { if (updated)
{ meta.addComment(updated); if (self.current =3D=3D=3D photo) { =
list.deselect(message.index); list.add(updated);
list.select(updated.index); } } else { =
meta.removeComment(message.index); if (self.current =3D=3D=3D photo)
list.remove(message.index); } } self._list.setEditing(false); =
self._list.setHeight(); }; self._list.setEditing(true);
zf_Message[action](message.mailbox, message.index, oncomplete); }; =
zfl_CommentBrowser.prototype._displayAttachment
=3D function(attachmentType, attachment, readOnly) { if =
(!this._displayed) return; this._setupAttachment
=3D zf_stdFalse; var help =3D ""; var icon =3D ""; if (attachmentType =
=3D=3D zf_AttachmentType.None) { this._areaPlugin.deactivate();
this._cropPlugin.deactivate(); if (!readOnly) help =3D ""; } else if =
(attachmentType =3D=3D zf_AttachmentType.CroppingSuggestion)
{ this._areaPlugin.deactivate(); this._cropPlugin.activate(attachment, =
readOnly, this.closure(this._plugin_onclose));
if (!readOnly) { this._setupAttachment =3D function(updater) { =
updater.attachmentType =3D zf_AttachmentType.CroppingSuggestion;
updater.attachment =3D this._cropPlugin.getAttachment(); }; help =3D =
"Move or resize the cropping rectangle on the photo to suggest a =
different cropping";
icon =3D '<div class=3D"cb-help-icon cb-help-icon-crop"></div>'; } } =
else if (attachmentType =3D=3D zf_AttachmentType.HighlightedArea)
{ this._cropPlugin.deactivate(); this._areaPlugin.activate(attachment, =
readOnly, this.closure(this._plugin_onclose));
if (!readOnly) { this._setupAttachment =3D function(updater) { =
updater.attachmentType =3D zf_AttachmentType.HighlightedArea;
updater.attachment =3D this._areaPlugin.getAttachment(); }; help =3D =
"Draw a rectangle on the photo to highlight an area";
icon =3D '<div class=3D"cb-help-icon cb-help-icon-area"></div>'; } } =
this.dom("help").innerHTML =3D [
'<div class=3D"cb-help-text">', '<span>', icon, zf_stdHtmlEncode(help), =
'</span>', '</div>' ].join("");
}; zfl_CommentBrowser.prototype._list_onselect =3D function(index) { var =
view =3D this._list.getView(index);
var message =3D view.getMessage(); =
this._displayAttachment(message.attachmentType, message.attachment,
true); view.setAttachmentVisible(true); }; =
zfl_CommentBrowser.prototype._list_ondeselect =3D function(index)
{ var view =3D this._list.getView(index); var message =3D =
view.getMessage(); this._displayAttachment(zf_AttachmentType.None,
null, true); view.setAttachmentVisible(false); }; =
zfl_CommentBrowser.prototype._list_onattachment
=3D function(message, show) { var selected =3D =
this._list.getSelectedView(); if (!selected || selected.getIndex()
!=3D message.index) { this._list.select(message.index); } else { =
selected.setAttachmentVisible(show);
this._displayAttachment( show ? message.attachmentType : =
zf_AttachmentType.None, message.attachment,
true); } }; zfl_CommentBrowser.prototype._onload =3D function() { if =
(!this._prepared || !this._displayed)
return; var photo =3D this.current; var meta =3D photo.getMeta(); var =
list =3D this._list; ; ; list.setEditing(false);
list.setLoading(false); if (this._editOnOpen) { this._editOnOpen =3D =
true; this.add(); } else { var
selected =3D list.getSelectedView(); if (selected !=3D null) { var =
message =3D selected.getMessage();
this._displayAttachment(message.attachmentType, message.attachment, =
true); } else { this._displayAttachment(zf_AttachmentType.None,
null, true); } } }; zfl_CommentBrowser.prototype._list_onattachment =3D =
function(message, show) {
var selected =3D this._list.getSelectedView(); if (!selected || =
selected.getIndex() !=3D message.index)
{ this._list.select(message.index); } else { =
selected.setAttachmentVisible(show); this._displayAttachment(
show ? message.attachmentType : zf_AttachmentType.None, =
message.attachment, true); } }; =
zfl_CommentBrowser.prototype._plugin_onclose
=3D function() { var view =3D this._list.getSelectedView(); if (view) =
view.setAttachmentVisible(false);
}; zfl_CommentBrowser.prototype._document_onkeydown =3D function(e) { if =
(e.altKey || e.ctrlKey || e.metaKey)
return true; var sourceTag =3D zf_stdGetEventSource(e).tagName; if =
(sourceTag =3D=3D "INPUT" || sourceTag
=3D=3D "TEXTAREA") return true; if (this._mode =3D=3D "editing") { =
return false; } else { if (this._list.getSelectedView()
=3D=3D null) return true; switch (e.keyCode) { case 38: =
this._list.selectNext(); break; case 40: this._list.selectPrevious();
break; default: return false; } } zf_stdStopPropagation(e); =
zf_stdPreventDefault(e); return true;
}; zfl_CommentBrowser.prototype._edit_onerror =3D function(message, =
error) { if (!message) { message
=3D [ '<div class=3D"cb-edit-new ml-new-prompt ml-font3">', 'Leave your =
comment below and click the Add Comment button',
'</div>' ].join(""); } else if (error) { message =3D [ '<div =
class=3D"ml-new-prompt ml-font3 me-color3">',
message, '</div>' ].join(""); } else { message =3D [ '<div =
class=3D"ml-new-prompt ml-font3">', message,
'</div>' ].join(""); } this.dom("error").innerHTML =3D message; }; =
zfl_CommentBrowser.prototype._finder_ondone
=3D function(found, index, forward) { var button =3D this.dom(forward ? =
"seekNext" : "seekBack"); zfl_Button.enableButton(button,
found); if (found) { button.title =3D forward ? "Next photo with =
comments" : "Previous photo with comments";
} else { button.title =3D "No more photos with comments"; } }; =
zfl_CommentBrowser.prototype._setupCommentFinders
=3D function() { ; if (this._finderBack) this._finderBack.cancel(); if =
(this._finderNext) this._finderNext.cancel();
var button; button =3D this.dom("seekBack"); =
zfl_Button.enableButton(button, false); button.title
=3D "Searching for photos with comments"; this._finderBack =3D new =
zfl_CommentFinder( this.currentContext.photoList,
this.currentContext.currentIndex, false, =
this.closure(this._finder_ondone, false)); button =3D =
this.dom("seekNext");
zfl_Button.enableButton(button, false); button.title =3D "Searching for =
photos with comments"; this._finderNext
=3D new zfl_CommentFinder( this.currentContext.photoList, =
this.currentContext.currentIndex, true,
this.closure(this._finder_ondone, true)); }; =
zfl_CommentBrowser.prototype.seekBack =3D function()
{ if (this._finderBack && this._finderBack.found) =
this._oncommand("select", this._finderBack.index);
}; zfl_CommentBrowser.prototype.seekNext =3D function() { if =
(this._finderNext && this._finderNext.found)
this._oncommand("select", this._finderNext.index); };
; ; ; ; function zfl_RecentComments(id) { =
zfl_Control.prototype.constructor.call(this, id); =
zf_stdMakeMethodsDeferred(this,
this.id, ["_setPhoto" ]); } zfl_RecentComments.inherits(zfl_Control); =
zfl_RecentComments.prototype.update
=3D function(photo, context) { ; ; if (this.current =3D=3D photo) =
return; if (this.current !=3D null) this.current.unadvise(this);
if (this.currentMeta !=3D null) this.currentMeta.unadvise(this); =
this.current =3D photo; this.currentMeta
=3D null; if (photo.loaded) { this._setPhoto(photo); } else { var self =
=3D this; photo.advise(this,
function() { self._setPhoto(photo); self.notifyResize(true); }, =
function() { self._showLoading();
self.notifyResize(false); }); } }; =
zfl_RecentComments.prototype._setPhoto =3D function(photo) { ;
if ((photo.flags & zf_PhotoFlags.HasComments) =3D=3D 0) { =
this._showComments(photo, null); return;
} var meta =3D photo.getMeta(); if (meta.loaded) { this._setMeta(meta); =
} else { this.currentMeta
=3D meta; var self =3D this; meta.bump(); meta.advise(this, function() { =
self._setMeta(meta); self.notifyResize(false);
}, function() { self._showLoading(); self.notifyResize(false); }); } }; =
zfl_RecentComments.prototype._setMeta
=3D function(meta) { ; this._showComments(meta.photo, =
meta.recentComments); }; zfl_RecentComments.prototype._showLoading
=3D function() { zf_stdReplaceClassName(this.dom(), =
"recentcomments-s-empty", "recentcomments-s-loading");
}; zfl_RecentComments.prototype._showComments =3D function(photo, =
comments) { zf_stdReplaceClassName(this.dom(),
"recentcomments-s-loading", null); var mask =3D =
zf_AccessMask.NoPublicComments | zf_AccessMask.NoPrivateComments;
var canAdd =3D (photo.access.mask & mask) !=3D mask; if (canAdd && =
zf_userId =3D=3D 0) canAdd =3D (photo.access.mask
& zf_AccessMask.NoAnonymousComments) =3D=3D 0; =
this.display((photo.access.mask & zf_AccessMask.ProtectComments)
=3D=3D 0); zf_stdReplaceClassName(this.dom(), canAdd ? =
"recentcomments-s-no-add" : null, canAdd ? null
: "recentcomments-s-no-add"); var comment =3D null; if (comments) { for =
(var i =3D 0; i < comments.length;
i++) { if (!comments[i].isDeleted) { comment =3D comments[i]; break; } } =
} if (!comment) { zf_stdReplaceClassName(this.dom(),
null, "recentcomments-s-empty"); } else { var posterName; if =
(comment.posterUrl) { posterName =3D [
'<a href=3D"" id=3D"', this.id, '-poster-link" =
class=3D"recentcomments-poster">', zf_stdHtmlEncode(comment.posterName),
'</a>']; } else { posterName =3D [ '<span =
class=3D"recentcomments-poster">', zf_stdHtmlEncode(comment.posterName),
'</span>']; } var content =3D [ '<div class=3D"recentcomments-header">', =
zf_stdFormatString( 'Last comment by {0} on {1}:',
posterName.join(""), ['<span class=3D"recentcomments-date =
recentcomments-font1 recentcomments-color1">',
zf_stdFormatDateTime(comment.postedOn), '</span>'].join("") ), '</div>', =
'<div class=3D"recentcomments-text">',
comment.body, '</div>' ]; this.dom("content").innerHTML =3D =
content.join(""); var posterLink =3D this.dom("poster-link");
if (posterLink && comment.posterUrl) posterLink.href =3D =
comment.posterUrl; var domCount =3D this.dom("count");
if (domCount) zf_stdSetText(domCount, photo.getMeta().comments); =
zf_stdReplaceClassName(this.dom(),
"recentcomments-s-empty", null); } }; =
zfl_RecentComments.prototype._view_onclick =3D function() {
if (this.onshow) this.onshow(); }; =
zfl_RecentComments.prototype._add_onclick =3D function() { if =
(this.onadd)
this.onadd(); }; zfl_RecentComments.prototype.refresh =3D function() { =
if (this.current && this.current.loaded
&& this.current.getMeta().loaded) this._setPhoto(this.current); };
; ; ; ; function zfl_PhotoLayout(id, global, local) { =
zfl_Layout.prototype.constructor.call(this,
id, global, local); var key; var self =3D this; this._photoSet =3D =
zfl_stdTransformResponse(local.photoSet,
"photoSet"); this._photoList =3D local.photoList; =
this._photoList.setDefaults(this._photoSet, this._photoSet.owner);
this._photoList.onload =3D this.closure(this._photoList_onload); =
this._photoList.onshrink =3D this.closure(this._photoList_onshrink);
this._initial =3D local.initial; this.current =3D { index: -1, photo: =
null, previousIndex: -2 }; this.slideshow
=3D local.slideshow; this._handlers =3D this._createHandlers(); var =
controls =3D this._controls =3D { list:
[], all: [], add: function(control) { if (control) { =
this.all.push(control); if (arguments.length
> 1) { var args =3D []; for (var a =3D 1; a < arguments.length; a++) =
args.push(arguments[a]); control.init.apply(control,
args); } } }, addUpdate : function(updateMethod) { var c =3D { update : =
updateMethod }; this.all.push(c);
return c; }, addDeferredUpdate : function(tag, updateMethod) { var c =3D =
this.addUpdate(updateMethod);
c.update =3D zf_stdMakeDeferred(self.id + "." + tag, updateMethod); =
return c; } }; controls.list =3D controls.all;
controls.add(local.copyright); controls.add(local.caption); =
controls.add(local.shortExif); controls.add(local.categories);
controls.add(local.photographer, this._photoSet.owner); =
controls.add(local.addressBar, this); controls.add(this.header);
controls.add(this.footer); controls.add(local.analytics); =
controls.add(local.mailboxLink); controls.add(local.recentComments);
controls.analytics =3D local.analytics; var decorAddToCart =3D =
this._getDecorationInfo( zfl_PhotoViewStyle.ProductCategory,
zf_ProcessingMethod.StandardLargeThumbnail); var cart =3D null; if =
(local.controlBox && this.header)
{ cart =3D this.header.cartSummary; local.controlBox.oncartupdate =3D =
this.header.closure(this.header.setCartSummary);
} controls.add(local.controlBox, null, decorAddToCart, cart, =
this._photoSet); controls.controlBox
=3D local.controlBox; var overlay =3D null; var decoration, plugins, =
overlayFlags; if (local.flipper)
{ decoration =3D this._getDecorationInfo(local.flipper.style); plugins =
=3D this._createPlugins(local.flipper.style,
decoration); overlayFlags =3D { exifIcon: local.overlayExif, menuBar: =
local.overlayMenu || this.administrator,
message: local.overlayMenu || this.administrator, download: =
local.overlayDownload, contextMenu:
true, dimLights: !this.slideshow, defaultCommand: !this.slideshow ? =
"dimLights" : null }; controls.add(local.flipper,
decoration, plugins, overlayFlags, this._handlers.oncommand, =
this._handlers.oncommandtest, this.slideshow,
this.slideshow ? "slow-fade" : null ); controls.flipper =3D =
local.flipper; controls.flipper.onload
=3D this.closure(this._flipper_onload); controls.flipper.ondisplay =3D =
this.closure(this._flipper_ondisplay);
} var cookieControl =3D controls.addDeferredUpdate( "setRecentCookie", =
function(photo, context) {
zfl_SessionCookie.current.setRecent( self._photoSet.id, =
context.currentIndex); }); if (local.dimlights)
{ decoration =3D this._getDecorationInfo(zfl_PhotoViewStyle.DimLights); =
plugins =3D this._createPlugins(zfl_PhotoViewStyle.DimLights,
decoration); overlayFlags =3D { download: local.overlayDownload, =
contextMenu: true, undimLights:
true, defaultCommand: "undimLights" }; controls.add( local.dimlights, =
decoration, plugins, overlayFlags,
this._handlers.oncommand, this._handlers.oncommandtest, local.analytics =
); controls.dimlights =3D local.dimlights;
controls.dimlights.ondisplay =3D this.closure(this._registerVisit); =
controls.listDimLights =3D [ local.dimlights,
cookieControl, local.addressBar, local.analytics]; } if (local.comments) =
{ decoration =3D =
this._getDecorationInfo(zfl_PhotoViewStyle.CommentBrowser);
plugins =3D this._createPlugins(zfl_PhotoViewStyle.CommentBrowser, =
decoration); overlayFlags =3D {
download: local.overlayDownload, contextMenu: false }; controls.add( =
local.comments, decoration,
plugins, overlayFlags, this._handlers.oncommand, =
this._handlers.oncommandtest ); controls.comments
=3D local.comments; controls.comments.ondisplay =3D =
this.closure(this._registerVisit); controls.listComments
=3D [local.comments, cookieControl, local.addressBar, local.analytics]; =
if (local.mailboxLink) {
local.mailboxLink.onshow =3D this.closure(this._showComments, false); =
local.mailboxLink.onadd =3D this.closure(this._showComments,
true); controls.mailboxLink =3D local.mailboxLink; } if =
(local.recentComments) { local.recentComments.onshow
=3D this.closure(this._showComments, false); local.recentComments.onadd =
=3D this.closure(this._showComments,
true); controls.recentComments =3D local.recentComments; } if =
(this.header) controls.comments.onlogin
=3D this.header.closure(this.header.login); } var onresize =3D =
this.closure(this.recalc); for (var i =3D
0; i < controls.list.length; i++) controls.all[i].onresize =3D onresize; =
for (key in this._pairs)
{ var pair =3D this._pairs[key]; if (!pair) continue; if (pair.field =
=3D=3D "PhotoPage.PhotoIndexOf")
{ pair.update =3D function(photo, context) { =
this.set(context.currentIndex + 1); }; if (this._initial.shrunk)
pair.set(this._photoList.length, 1); } if (pair.field =3D=3D =
"PhotoPage.Viewed") controls.pairViewed
=3D pair; controls.add(pair); } this._navigation =3D local.navigation; =
var navNext =3D this._navigation.next;
var navBack =3D this._navigation.back; if (navNext) { ; =
controls.addDeferredUpdate( "updateNavigation",
function(photo, context) { navBack.visibility(context.currentIndex > 0); =
navNext.visibility(context.currentIndex
< context.photoList.length - 1); }); } this._pager =3D local.pager; var =
pager =3D this._pager; var grid
=3D this._grids.photos; if (grid) { controls.addDeferredUpdate( =
"selectGridItem", function(photo,
context) { grid.deselectAll(); grid.selectItem(context.currentIndex); =
}); } if (grid && pager)
{ grid.onlayoutchange =3D function(info) { pager.update(info.totalPages, =
info.currentPage); }; pager.onchange
=3D function(page) { grid.setPage(page); grid.recalcLayout(); }; } =
zf_stdMakeMethodsDeferred(this,
this.id, [ "_ensureThumbnailVisible", "_registerVisit" ]); =
this._delayedViewsUpdate =3D new zf_DelayedInvoke(500);
this.cyMinFooter =3D 15; this._keyNavigation =3D true; } =
zfl_PhotoLayout.inherits(zfl_Layout); zfl_PhotoLayout.prototype.onrecalc
=3D function() { zfl_Layout.prototype.onrecalc.call(this); }; =
zfl_PhotoLayout.prototype.onload =3D function()
{ zfl_Layout.prototype.onload.call(this); if (this._grids.photos) { var =
photoList =3D this._photoList;
this.initGrid( this._grids.photos, zfl_PhotoViewStyle.PhotoNavList, =
this._grids.photosParams, function(index)
{ return photoList.get(index); }, photoList.length); var self =3D this; =
this._grids.photos.onselchange
=3D function(item) { self.select(item.index); }; } =
zf_stdAttachEvent(document, "keydown", =
this.eventHandler(this._document_onkeydown));
; ; var legacy =3D location.search.indexOf("photo=3D") !=3D -1; var id =
=3D zfl_AddressBar.parseHash(this._initial.id,
legacy); if (legacy) { ; this.navigate(id); return; } if =
(this._initial.index < 0) { ; this.navigate(id);
return; } if (id !=3D this._initial.id) { ; =
this._photoList.get(this._initial.index); this._initial.index
=3D -1; this._initial.id =3D id; } else if (this._photoList.length =
=3D=3D 0) { ; } else { ; this.select(this._initial.index);
} if (this._controls.analytics) =
this._controls.analytics.registerLayoutLoad(this._controls.flipper);
}; zfl_PhotoLayout.prototype._photoList_onload =3D function(first) { ; =
if (first) { if (this._initial.shrunk)
{ var photo =3D this._photoList.get(0); ; if (photo.access.type =3D=3D =
zf_AccessType.Password && photo.access.realmId
=3D=3D this._photoSet.access.realmId) { var self =3D this; =
zfl_PasswordManager.subscribe( photo.access.realmId,
function() { self.navigate(photo.id, true); }); } } if =
(this._initial.index < 0) { ; ; this.navigate(this._initial.id);
} } this.recalc(); }; zfl_PhotoLayout.prototype._photoList_onshrink =3D =
function() { ; if (this.current.photo
!=3D null && this.current.photo.loaded) =
this.navigate(this.current.photo.id, true); else if (this._initial.id)
this.navigate(this._initial.id, true); return false; }; =
zfl_PhotoLayout.prototype._redirect =3D function(photoId)
{ ; var dest =3D []; dest.push("/p", this._photoSet.id); if (photoId =
!=3D null) dest.push("/e", photoId.toString(16));
if (this.slideshow) dest.push("/slideshow"); var query =3D =
location.search.replace("photo=3Dh", "legacy=3Dx");
dest.push(query); dest =3D dest.join(""); location.replace(dest); }; =
zfl_PhotoLayout.prototype.navigate
=3D function(photoId, reload) { if (!photoId) { ; =
this._redirect(photoId); return; } if (reload)
{ ; this._redirect(photoId); return; } var index =3D =
this._photoList.find(photoId); if (index < 0)
{ ; this._redirect(photoId); return; } ; this.select(index); }; =
zfl_PhotoLayout.prototype.select
=3D function(index) { ; ; var start =3D new Date().getTime(); var photo =
=3D this._photoList.get(index);
if (index !=3D this.current.index) this.current.previousIndex =3D =
this.current.index; if (this.current.photo)
this.current.photo.unadvise(this); this.current.index =3D index; =
this.current.photo =3D photo; var context
=3D { currentIndex: index, previousIndex: this.current.previousIndex, =
photoList: this._photoList,
displayed: false }; var list =3D this._controls.list; for (var i =3D 0; =
i < list.length; i++) { if (list[i])
list[i].update(photo, context); } this._prefetchMeta(this.current.index =
>=3D this.current.previousIndex);
this.recalc(true); if (!this._dimmed) this._ensureThumbnailVisible(); =
zfl_Popup.hideAny(); ; };
zfl_PhotoLayout.prototype.next =3D function() { if (this.current.index =
>=3D 0 && this.current.index
< this._photoList.length - 1) { this.select(this.current.index + 1); } =
}; zfl_PhotoLayout.prototype.back
=3D function() { if (this.current.index > 0) { =
this.select(this.current.index - 1); } }; =
zfl_PhotoLayout.prototype.nextPage
=3D function() { ; var layoutInfo =3D =
this._grids.photos.getLayoutInfo(); this.select(layoutInfo.lastVisible);
}; zfl_PhotoLayout.prototype.backPage =3D function() { ; var layoutInfo =
=3D this._grids.photos.getLayoutInfo();
if (layoutInfo.firstVisible > 0) this.select(layoutInfo.firstVisible - =
1); }; zfl_PhotoLayout.prototype._createHandlers
=3D function() { var self =3D this; var test =3D { addToCart: function() =
{ return this._controls.controlBox
&& this._controls.controlBox.canAddToCart(); }, share: function() { =
return this._controls.controlBox
&& this._controls.controlBox.canShare(); }, dimLights: function(id, =
photo, params) { return this._controls.dimlights
&& params.dimLights; }, undimLights: function(id, photo, params) { =
return this._controls.dimlights
&& params.undimLights; }, admin: function() { return this.administrator; =
}, censorPhoto: function(id,
photo) { return this.administrator && !photo.access.isCensored; }, =
uncensorPhoto: function(id, photo)
{ return this.administrator && photo.access.isCensored; }, =
censorGallery: function(id, photo) {
return this.administrator && photo.photoSet.type =3D=3D =
zf_PhotoSet.Gallery; }, purgeGallery: function(id,
photo) { return this.administrator && photo.photoSet.type =3D=3D =
zf_PhotoSet.Gallery; }, purgePhoto:
"admin", download: function(id, photo, params) { return params.download; =
}, downloadOriginal: function(id,
photo, params) { return this.administrator || (photo.access.mask & =
zf_AccessMask.ProtectOriginals)
=3D=3D 0; }, downloadPhoto: "downloadOriginal", downloadPhoto2: =
"downloadOriginal", downloadGallery:
function(id, photo, params) { return this._photoSet.type =3D=3D =
zf_PhotoSet.Gallery; }, downloadCollection:
function(id, photo, params) { return this._photoSet.type =3D=3D =
zf_PhotoSet.Collection; }, collect:
function(id, photo) { return (photo.access.mask & =
zf_AccessMask.NoCollections) =3D=3D 0; }, collectNew:
"collect", collectEdit: "collect", collectPhoto: "collect", =
collectLogin: "collect", back: function()
{ return this.current.index > 0; }, next: function() { return =
this.current.index < this._photoList.length
- 1; }, enableKeyNavigation: function() { return this._keyNavigation; } =
}; var exec =3D { addToCart:
function() { this._controls.controlBox.addToCart(); }, share: function() =
{ this._controls.controlBox.share();
}, dimLights: function() { this._dimmed =3D true; this._controls.list =
=3D this._controls.listDimLights;
this._controls.dimlights.show(); }, undimLights: function() { =
this._dimmed =3D false; this._controls.list
=3D this._controls.all; this.select(this.current.index); =
this._controls.dimlights.hide(); }, openComments:
function() { this._showComments(false); }, closeComments: function() { =
this._dimmed =3D false; this._controls.list
=3D this._controls.all; this.select(this.current.index); if =
(this._controls.mailboxLink) this._controls.mailboxLink.refresh();
if (this._controls.recentComments) =
this._controls.recentComments.refresh(); this._controls.comments.hide();
}, censorPhoto: function() { if (!confirm("Are you sure that you want to =
censor this photograph?"))
return; zf_stdServerRequest( "POST", "/zf/layout/layout.asmx", =
"CensorPhoto", [this.current.photo.id,
true], function() { self._redirect(self.current.photo.id); }); }, =
uncensorPhoto: function() { zf_stdServerRequest(
"POST", "/zf/layout/layout.asmx", "CensorPhoto", [this.current.photo.id, =
false], function() { self._redirect(self.current.photo.id);
}); }, censorGallery: function() { if (!confirm("Are you sure that you =
want to censor this entire gallery?"))
return; zf_stdServerRequest( "POST", "/zf/layout/layout.asmx", =
"CensorGallery", [this._photoSet.id],
function() { self._redirect(); }); }, purgePhoto: function() { if =
(!confirm("Are you sure that you want to immediately and permanently =
detele this photograph?"))
return; var uri =3D "/p" + this.current.photo.photoSet.id; =
zf_stdServerRequest( "POST", "/zf/layout/layout.asmx",
"PurgePhoto", [this.current.photo.id], function() { self._redirect(); =
}); }, purgeGallery: function()
{ if (!confirm("Are you sure that you want to immediately and =
permanently detele all photographs from this gallery?"))
return; var uri =3D "/p" + this.current.photo.photoSet.id; =
zf_stdServerRequest( "POST", "/zf/layout/layout.asmx",
"PurgeGallery", [this._photoSet.id], function() { location.href =3D uri; =
}); }, collectNew: function()
{ zfl_CollectionList.current.addPhotoToNew( "Quick Collection", =
this.current.photo.id); }, collectEdit:
function() { var url =3D ["http://", zf_defaultHost, "/", zf_userName, =
"/edit"]; location.href =3D zf_stdGetTransferUrl(url.join(""));
}, collectPhoto: function(id, collectionId) { =
zfl_CollectionList.current.addPhoto(collectionId,
this.current.photo.id); }, collectLogin: function() { =
zfl_Header.login(this.current.photo.getHref("full"),
"collect." + this.current.photo.id); }, downloadPhoto: function() { =
this._downloadOriginal(this.current.photo);
}, downloadPhoto2: function() { =
this._downloadOriginal(this.current.photo); }, downloadGallery:
function() { this._downloadOriginals(); }, downloadCollection: =
function() { this._downloadOriginals();
}, back: function() { this.back(); }, next: function() { this.next(); }, =
select: function(id, index)
{ this.select(index); }, enableKeyNavigation: function(id, enable) { =
this._keyNavigation =3D enable;
} }; return { oncommandtest: function(id, params) { var photo =3D =
self.current.photo; if (!photo ||
(!photo.loaded && id !=3D "next" && id !=3D "back")) return false; if =
(typeof (test[id]) =3D=3D "function")
return test[id].call(self, id, photo, params); if (typeof (test[id]) =
=3D=3D "string") return test[test[id]].call(self,
id, photo, params); return false; }, oncommand: function() { ; var id =
=3D arguments[0]; ; ; if (typeof
(exec[id]) =3D=3D "function") return exec[id].apply(self, arguments); } =
}; }; zfl_PhotoLayout.prototype._photo_onstretch
=3D function(height, stretcher) { var flipper =3D =
this._controls.flipper; if (flipper) { var width =3D
stretcher.offsetWidth; if (!flipper.resize(width, height)) { =
stretcher.style.height =3D height + "px";
} else { stretcher.style.height =3D flipper.dom().style.height; =
zf_stdReplaceClassName(stretcher,
null, "none"); zf_stdReplaceClassName(stretcher, "none", null); } =
this._updateFlipperDependencies();
return true; } return false; }; =
zfl_PhotoLayout.prototype._flipper_onload =3D function(state, immediate)
{ var flipper =3D this._controls.flipper; ; flipper.flip(); =
this._updateFlipperDependencies(); if (!immediate)
this.recalc(false); }; zfl_PhotoLayout.prototype._flipper_ondisplay =3D =
function(photo) { ; var controlBox
=3D this._controls.controlBox; if (controlBox && controlBox.current =
=3D=3D photo) controlBox.photoDisplayed(true);
this._registerVisit(photo); }; =
zfl_PhotoLayout.prototype._ensureThumbnailVisible =3D function() {
; var grid =3D this._grids.photos; if (!grid) return; var pageIndex =3D =
grid.getItemPage(this.current.index);
if (pageIndex !=3D grid.getPage()) { grid.setPage(pageIndex); =
grid.recalcLayout(); } }; zfl_PhotoLayout.prototype._prefetchMeta
=3D function(forward) { var increment =3D forward ? 1 : -1; var prefetch =
=3D 5; var index =3D this.current.index
+ (prefetch - 1) * increment; for (var i =3D 0; i < prefetch; i++) { if =
(index < 0 || index >=3D this._photoList.length)
continue; var photo =3D this._photoList.get(index); var meta =3D =
photo.getMeta(); meta.bump(); index
-=3D increment; } }; zfl_PhotoLayout.prototype._document_onkeydown =3D =
function(e) { if (e.altKey || e.ctrlKey
|| e.metaKey) return true; var sourceTag =3D =
zf_stdGetEventSource(e).tagName; if (sourceTag =3D=3D "INPUT"
|| sourceTag =3D=3D "TEXTAREA") return true; switch (e.keyCode) { case =
39: if (this._keyNavigation)
this.next(); break; case 37: if (this._keyNavigation) this.back(); =
break; case 27: if (this._dimmed)
{ this._handlers.oncommand("undimLights"); =
this._handlers.oncommand("closeComments"); } break;
default: return false; } zf_stdStopPropagation(e); =
zf_stdPreventDefault(e); return true; }; =
zfl_PhotoLayout.prototype._registerVisit
=3D function(photo) { ; if (this.administrator) return; if =
(photo.__visit_registered) return; photo.__visit_registered
=3D true; if (photo.owner.id =3D=3D zf_userId) return; var self =3D =
this; var pair =3D this._controls.pairViewed;
var oncomplete =3D function(status, retVal) { ; if (status =3D=3D 200 && =
retVal.result =3D=3D true) { if (!photo.views)
photo.views =3D 1; else ++photo.views; if (pair) { =
self._delayedViewsUpdate.invoke(function() { if
(pair.current =3D=3D photo) pair.set(photo.views); }); } } }; var =
sessionKey =3D zfl_SessionCookie.current.sessionKey;
zf_stdServerRequest("GET", "/zf/layout/layout.asmx", "RegisterVisit", [ =
photo.owner.id, photo.gallery.id,
photo.id, this._photoSet.owner.id, this._photoSet.id, sessionKey ], =
oncomplete); }; zfl_PhotoLayout.prototype._showComments
=3D function(add) { this._dimmed =3D true; this._controls.list =3D =
this._controls.listComments; this._controls.comments.show(add);
}; zfl_PhotoLayout.prototype.adjustWidthOnFlipperResize =3D function() { =
var flipper =3D this._controls.flipper;
if (!flipper) return; if (flipper.__zfl_widthdeps =3D=3D null) =
flipper.__zfl_widthdeps =3D []; for (var
i =3D 1; i < arguments.length; i++) { var control =3D arguments[i]; if =
(control =3D=3D null) continue;
flipper.__zfl_widthdeps.push(control); } }; =
zfl_PhotoLayout.prototype._updateFlipperDependencies
=3D function() { var flipper =3D this._controls.flipper; if (!flipper) =
return; if (flipper.__zfl_widthdeps)
{ var width =3D flipper.getPhotoSize().cx; width =3D =
Math.max(Math.min(width, 600), 300); for (var i =3D
0; i < flipper.__zfl_widthdeps.length; i++) { var control =3D =
flipper.__zfl_widthdeps[i]; control.dom().style.width
=3D width + "px"; } } }; zfl_PhotoLayout.prototype._startBatchDownload =
=3D function(ids, title, key)
{ var counter; if (!zfl_PhotoLayout.__downloadCount) counter =3D =
zfl_PhotoLayout.__downloadCount =3D 1;
else counter =3D ++zfl_PhotoLayout.__downloadCount; var frameName =3D =
"_zf_PhotoLayout_download" + counter;
var frameNode; frameNode =3D document.createElement("IFRAME"); =
frameNode.name =3D frameName; frameNode.style.cssText
=3D "position:absolute;visibility:hidden;left:0px;top:0px;"; =
document.body.appendChild(frameNode);
var formNode =3D document.createElement("FORM"); formNode.action =3D =
"/zf/batchDownload"; formNode.method
=3D "POST"; formNode.target =3D frameName; formNode.innerHTML =3D =
'<input type=3D"hidden" name=3D"ids" />'
+ '<input type=3D"hidden" name=3D"title" />' + '<input type=3D"hidden" =
name=3D"key" />'; document.body.appendChild(formNode);
formNode["ids"].value =3D ids.join(","); formNode["title"].value =3D =
title; if (key) formNode["key"].value
=3D key; formNode.submit(); }; =
zfl_PhotoLayout.prototype._getDownloadInput =3D function(ids, info, =
callback)
{ ; if (info.lockedCount =3D=3D 0) { callback(null); return; } var id =
=3D this.id + '-dlinput'; var removePopup
=3D function() { $('#' + id).remove(); zfl_Curtain.hide(); }; var =
renderPopup =3D function(retry, onpassword)
{ var content =3D []; var buttons =3D []; if (info.lockedCount =3D=3D =
info.photoCount && info.passwordCount
=3D=3D 1) { if (info.photoCount =3D=3D 1) content.push('<div =
class=3D"text">The original file is protected by owner. Please type the =
password to download it.</div>');
else content.push('<div class=3D"text">Original files are protected by =
owner. Please type the password to download them.</div>');
buttons.push(zfl_Button.createHtml(null, "Download", ["download"])); } =
else if (info.lockedCount
< info.photoCount && info.passwordCount =3D=3D 1) { content.push('<div =
class=3D"text">Some of the original files are protected by owner. Please =
type the password to download all files, or click the Skip button to =
download unprotected files only.</div>');
buttons.push(zfl_Button.createHtml(null, "Download All", ["download"])); =
buttons.push(zfl_Button.createHtml(null,
"Skip protected files", ["skip"])); } else if (info.lockedCount =3D=3D =
info.photoCount && info.passwordCount
> 1) { content.push('<div class=3D"text">Original files are protected by =
owner. If you know the passwords for downloading originals, you can =
download them one at a time.</div>');
} else if (info.lockedCount < info.photoCount && info.passwordCount > 1) =
{ content.push('<div class=3D"text">Some of the original files are =
protected by the owner. Only unprotected files will be downloaded. You =
can download the protected files individually.</div>');
buttons.push(zfl_Button.createHtml(null, "Download", ["skip"])); } if =
(info.passwordCount =3D=3D 1)
{ content.push('<div class=3D"separator separator-border1"></div>'); if =
(info.passwordHint) content.push(
'<div class=3D"item">', '<div class=3D"prompt">Hint:</div>', '<div =
class=3D"password-hint-text">', zf_stdHtmlEncode(info.passwordHint),
'</div>', '</div>'); content.push( '<div class=3D"form">', '<div =
class=3D"item">', '<div class=3D"prompt">Password:</div>',
'<input name=3D"password" type=3D"password"></input>', '</div>', =
'</div>'); if (retry) content.push('<div class=3D"incorrect">Incorrect =
password</div>');
} buttons.push(zfl_Button.createHtml(null, "Cancel", ["cancel"])); =
content.push('<div class=3D"item buttons">',
buttons.join(""), '</div>'); var top =3D =
Math.floor((zf_stdGetClientHeight() - 300) / 2); var left =3D
Math.floor((zf_stdGetClientWidth() - 450) / 2); content =3D [].concat( =
'<div class=3D"download-input password-box popup-border1 popup-color1 =
popup-bgcolor1" ',
'id=3D"', id, '" ', 'style=3D"left:', left, 'px;top:', top, 'px">', =
content, '</div>'); removePopup();
zfl_Curtain.show("dark"); var jPopup =3D =
$(content.join("")).appendTo("body"); var goHandler =3D function()
{ onpassword($('#' + id).find("input").attr("value")); }; var =
cancelHandler =3D function() { removePopup();
}; var skipHandler =3D function() { removePopup(); callback(null); }; =
jPopup.find(".download").click(goHandler);
jPopup.find(".cancel").click(cancelHandler); =
jPopup.find(".skip").click(skipHandler); var input =3D
jPopup.find("input")[0]; if (input) { $(input).keydown(function(e) { if =
(e.keyCode =3D=3D 13) goHandler();
else if (e.keyCode =3D=3D 27) cancelHandler(); }); try { input.focus(); =
} catch (e) { } } }; var run
=3D function(retry) { renderPopup(retry, function(password) { =
zf_stdServerRequestEx("POST", "/zf/core/core.asmx",
"VerifySrcPassword", [ids, password], function(key, error) { if (error =
!=3D null) { removePopup();
return; } if (key =3D=3D null) { run(true); return; } removePopup(); =
callback(key); }); }); }; run(false);
}; zfl_PhotoLayout.prototype._downloadOriginals =3D function() { var =
self =3D this; var title =3D this._photoSet.title;
var photoList =3D this._photoList; photoList.loadAll(function() { var =
ids =3D new Array(photoList.length);
for (var i =3D 0; i < photoList.length; i++) { var photo =3D =
photoList.get(i); ; ids[i] =3D photo.id;
} zf_stdServerRequestEx("POST", "/zf/core/core.asmx", =
"GetSrcPasswordInfo", [ids], function(info,
error) { if (error !=3D null) { return; } ; var start =3D function(key) =
{ self._startBatchDownload(ids,
title, key); }; self._getDownloadInput(ids, info, start); }); }); }; =
zfl_PhotoLayout.prototype._downloadOriginal
=3D function(photo) { var self =3D this; var ids =3D [photo.id]; =
zf_stdServerRequestEx("POST", "/zf/core/core.asmx",
"GetSrcPasswordInfo", [ids], function(info, error) { if (error !=3D =
null) { return; } var start =3D function(key)
{ var uri =3D [photo.getOriginalUrl(photo.fileType), "?dl=3D1"]; if =
(key) uri.push("&key=3D", key); location.href
=3D uri.join(""); }; self._getDownloadInput(ids, info, start); }); };
; ; ; function zfl_TabGroup(id, tabs) { if (zf_stdNoArgs(arguments)) =
return; zfl_Control.prototype.constructor.call(this,
id); this._tabs =3D {}; for (var i =3D 0; i < tabs.length; i++) { =
this._tabs[tabs[i].key] =3D tabs[i];
var dom =3D document.getElementById(tabs[i].id); dom.onmouseover =3D =
zfl_TabGroup._switch_onmouseover;
dom.onmouseout =3D zfl_TabGroup._switch_onmouseout; } } =
zfl_TabGroup.inherits(zfl_Control); zfl_TabGroup._switch_onmouseover
=3D function(event) { var dom =3D zf_stdGetEventSource(event); if =
(zf_stdHasClassName(dom, "tab-label"))
dom =3D dom.parentNode; if (zf_stdHasClassName(dom, "tab-standard")) { =
zf_stdReplaceClassName(dom,
"tab-standard", "tab-hover"); zf_stdReplaceClassName(dom, =
"tab-bgcolor2", "tab-bgcolor3"); zf_stdReplaceClassName(dom,
"tab-bgimage2", "tab-bgimage3"); zf_stdReplaceClassName(dom, =
"tab-color2", "tab-color3"); } };
zfl_TabGroup._switch_onmouseout =3D function(event) { var dom =3D =
zf_stdGetEventSource(event); if (zf_stdHasClassName(dom,
"tab-label")) dom =3D dom.parentNode; if (zf_stdHasClassName(dom, =
"tab-hover")) { zf_stdReplaceClassName(dom,
"tab-hover", "tab-standard"); zf_stdReplaceClassName(dom, =
"tab-bgcolor3", "tab-bgcolor2"); zf_stdReplaceClassName(dom,
"tab-bgimage3", "tab-bgimage2"); zf_stdReplaceClassName(dom, =
"tab-color3", "tab-color2"); } };
zfl_TabGroup._restyle =3D function(id, selected) { var dom =3D =
document.getElementById(id); if (selected)
{ zf_stdReplaceClassName(dom, "tab-standard", null); =
zf_stdReplaceClassName(dom, "tab-hover", "tab-selected");
zf_stdReplaceClassName(dom, "tab-bgcolor3", null); =
zf_stdReplaceClassName(dom, "tab-bgcolor2", "tab-bgcolor1");
zf_stdReplaceClassName(dom, "tab-bgimage3", null); =
zf_stdReplaceClassName(dom, "tab-bgimage2", "tab-bgimage1");
zf_stdReplaceClassName(dom, "tab-color3", null); =
zf_stdReplaceClassName(dom, "tab-color2", "tab-color1");
} else { zf_stdReplaceClassName(dom, "tab-selected", "tab-standard"); =
zf_stdReplaceClassName(dom,
"tab-bgcolor1", "tab-bgcolor2"); zf_stdReplaceClassName(dom, =
"tab-bgimage1", "tab-bgimage2"); zf_stdReplaceClassName(dom,
"tab-color1", "tab-color2"); } }; zfl_TabGroup.prototype.init =3D =
function(key0) { if (key0) { var
tab0 =3D this._tabs[key0]; if (!tab0.selected) { for (var key1 in =
this._tabs) { var tab1 =3D this._tabs[key1];
if (tab1.selected) { zfl_TabGroup._restyle(tab1.id, false); =
tab1.selected =3D false; } else if (tab1.key
=3D=3D key0) { zfl_TabGroup._restyle(tab1.id, true); tab1.selected =3D =
true; } } } } for (var key in this._tabs)
{ var tab =3D this._tabs[key]; if (tab.selected) { this._select(tab, =
true, true); break; } } }; zfl_TabGroup.prototype.get
=3D function(key) { return this._tabs[key]; }; =
zfl_TabGroup.prototype.select =3D function(key) { var
dom; var tab =3D this._tabs[key]; if (!tab || tab.selected) return; for =
(var key1 in this._tabs)
{ var tab1 =3D this._tabs[key1]; if (tab1.selected) { =
zfl_TabGroup._restyle(tab1.id, false); this._select(tab1,
false, false); break; } } zfl_TabGroup._restyle(tab.id, true); =
this._select(tab, true, false); };
zfl_TabGroup.prototype._select =3D function(tab, select, init) { =
tab.selected =3D select; if (select)
this.selected =3D tab; if (tab.view) { var display =3D select ? "block" =
: "none"; for (var i =3D 0; i <
tab.view.length; i++) { var obj =3D tab.view[i]; if (!obj) continue; if =
(obj.dom instanceof Function)
{ obj.dom().style.display =3D display; } else if (typeof(obj) =3D=3D =
"string" && obj.length > 0) { document.getElementById(obj).style.display
=3D display; } } } if (this.onselect) this.onselect(tab, select, init); =
};
; function zfl_SearchLayout(id, global, local) { =
zfl_Layout.prototype.constructor.call(this, id, global,
local); this._data =3D { galleries : =
zfl_stdTransformResponse(local.data.galleries, "galleries"),
collections : zfl_stdTransformResponse(local.data.collections, =
"collections"), photos : zfl_stdTransformResponse(local.data.photos,
"photos") }; var self =3D this; this._tabs =3D local.tabs; =
this._tabs.onselect =3D function(tab, selected,
init) { self._tabs_onselect(tab, selected, init); }; =
this._columns.Center.onstretch =3D function(height,
stretcher) { return self._tabs_onstretch(height, stretcher); }; var =
setupPage =3D function(name, minRows)
{ var grid =3D local.grids[name]; var pager =3D local.pagers[name]; if =
(!grid || !pager) return; grid.minRows
=3D minRows; grid.onlayoutchange =3D function(info) { =
pager.update(info.totalPages, info.currentPage);
}; pager.onchange =3D function(page) { grid.setPage(page); =
self.recalc(true); }; }; setupPage("galleries",
2); setupPage("collections", 2); setupPage("photos", 3); } =
zfl_SearchLayout.inherits(zfl_Layout);
zfl_SearchLayout.prototype.onrecalc =3D function() { =
zfl_Layout.prototype.onrecalc.call(this); };
zfl_SearchLayout.prototype.onload =3D function() { this.initGrid( =
this._grids.galleries, zfl_PhotoViewStyle.FolderElement,
this._grids.galleriesParams, this._data.galleries); this.initGrid( =
this._grids.collections, zfl_PhotoViewStyle.FolderElement,
this._grids.collectionsParams, this._data.collections); this.initGrid( =
this._grids.photos, zfl_PhotoViewStyle.GalleryPhoto,
this._grids.photosParams, this._data.photos); =
this._tabs.init(zf_stdGetCookie("zfl_search")); =
zfl_Layout.prototype.onload.call(this);
}; zfl_SearchLayout.prototype._tabs_onselect =3D function(tab, selected, =
init) { if (!selected) return;
zf_stdSetCookie("zfl_search", tab.key, null, true, true); if (!init) =
this.recalc(); }; zfl_SearchLayout.prototype._tabs_onstretch
=3D function(height, stretcher) { var tab =3D this._tabs.selected; var =
grid; if (tab) grid =3D this._grids[tab.key];
if (!grid) return false; grid.setHeight(height); stretcher.style.height =
=3D "auto"; stretcher.style.minHeight
=3D height + "px"; grid.recalcLayout(); return true; };
; ; ; ; function zfl_PhotoCtrThLayout(id, global, local) { =
zfl_PhotoLayout.prototype.constructor.call(this,
id, global, local); var grid =3D this._grids.photos; if (grid) { =
grid.minRows =3D grid.maxRows =3D 1;
grid.setHeight(0); var self =3D this; grid.onlayoutchange =3D =
function(info) { var nextPage =3D self._navigation.nextPage;
var backPage =3D self._navigation.backPage; if (nextPage) =
nextPage.visibility(info.lastVisible < self._photoList.length);
if (backPage) backPage.visibility(info.firstVisible > 0); }; } } =
zfl_PhotoCtrThLayout.inherits(zfl_PhotoLayout);
zfl_PhotoCtrThLayout.prototype.onrecalc =3D function() { =
zfl_PhotoLayout.prototype.onrecalc.call(this);
var grid =3D this._grids.photos; if (grid) { var info =3D null; if =
(grid.getSelectedItem() =3D=3D null &&
this.current.index >=3D 0) { info2 =3D info =3D grid.getLayoutInfo(); =
grid.setPage(Math.floor(this.current.index
/ info.itemsPerPage)); info =3D null; } else { info =3D =
grid.getLayoutInfo(zf_PhotoGrid.KeepVisible);
} grid.recalcLayout(info); } }; zfl_PhotoCtrThLayout.prototype.onload =
=3D function() { zfl_PhotoLayout.prototype.onload.call(this);
};
; ; function zfl_PhotoLtRtLayout(id, global, local) { =
zfl_PhotoLayout.prototype.constructor.call(this,
id, global, local); var self =3D this; var style =3D =
zfl_PhotoViewStyle.PhotoNavThumbnail; var method
=3D zf_ProcessingMethod.StandardSmallThumbnail; var plugins =3D =
this._createPlugins(style, this._getDecorationInfo(style,
method)); this._pool =3D {}; var view; view =3D new =
zf_PhotoView(this._navigation.backThumbId, plugins);
view.waitTimeout =3D 800; this._navigation.backThumb =3D view; view =3D =
new zf_PhotoView(this._navigation.nextThumbId,
plugins); view.waitTimeout =3D 800; this._navigation.nextThumb =3D view; =
this._controls.addDeferredUpdate(
"updateNavigation2", this.closure(this._updateNavigation)); var domBack =
=3D this._navigation.back.dom();
domBack.onmouseup =3D function() { self.back(); }; var domNext =3D =
this._navigation.next.dom(); domNext.onmouseup
=3D function() { self.next(); }; } =
zfl_PhotoLtRtLayout.inherits(zfl_PhotoLayout); =
zfl_PhotoLtRtLayout.prototype.onrecalc
=3D function() { zfl_PhotoLayout.prototype.onrecalc.call(this); }; =
zfl_PhotoLtRtLayout.prototype.onload
=3D function() { zfl_PhotoLayout.prototype.onload.call(this); }; =
zfl_PhotoLtRtLayout.prototype._updateNavigation
=3D function() { var index =3D this.current.index; var method =3D =
zf_ProcessingMethod.StandardSmallThumbnail;
var photoList =3D this._photoList; var backThumb =3D =
this._navigation.backThumb; var nextThumb =3D =
this._navigation.nextThumb;
if (this._backPhoto) { this._backPhoto.unadvise(backThumb); =
this._backPhoto =3D null; } if (this._nextPhoto)
{ this._nextPhoto.unadvise(nextThumb); this._nextPhoto =3D null; } var =
self =3D this; if (index > 0)
{ var backPhoto =3D photoList.get(index - 1); if (backPhoto.loaded) { =
this._loadThumb(backThumb, backPhoto);
} else { this._backPhoto =3D backPhoto; backPhoto.advise(backThumb, =
function() { self._loadThumb(backThumb,
backPhoto); }); } } if (index < photoList.length - 1) { var nextPhoto =
=3D photoList.get(index + 1);
if (nextPhoto.loaded) { this._loadThumb(nextThumb, nextPhoto); } else { =
this._nextPhoto =3D nextPhoto;
nextPhoto.advise(nextThumb, function() { self._loadThumb(nextThumb, =
nextPhoto); }); } } var loader;
if (index < photoList.length - 2) { var photoAhead =3D =
photoList.get(index + 2); if (photoAhead.loaded
&& this._pool[photoAhead.id] =3D=3D null) { loader =3D new =
zf_PhotoLoader(photoAhead, method); this._pool[photoAhead.id]
=3D loader; loader.start(); } } if (index > 1) { var photoBack =3D =
photoList.get(index - 2); if (photoBack.loaded
&& this._pool[photoBack.id] =3D=3D null) { loader =3D new =
zf_PhotoLoader(photoBack, method); this._pool[photoBack.id]
=3D loader; loader.start(); } } }; =
zfl_PhotoLtRtLayout.prototype._loadThumb =3D function(view, photo)
{ ; var method =3D zf_ProcessingMethod.StandardSmallThumbnail; var =
loader =3D this._pool[photo.id];
if (loader =3D=3D null) { loader =3D new zf_PhotoLoader(photo, method); =
this._pool[photo.id] =3D loader;
} var context =3D { method: method, data: photo, image: photo }; =
view.reinit(null, "javascript:;",
null, context, photo, method); var self =3D this; var onload =3D =
function(state) { if (state =3D=3D zf_PhotoLoader.PasswordRequired)
{ if (!loader.__zfl_onpassword) { ; ; loader.__zfl_onpassword =3D =
function() { self._pool[photo.id]
=3D null; if (view.getPhoto() =3D=3D photo) self._loadThumb(view, =
photo); }; zfl_PasswordManager.subscribe(photo.access.realmId,
loader.__zfl_onpassword); } } return false; }; view.onload =3D onload; =
view.load(loader); };
; ; ; ; function zfl_PhotoLtRtThLayout(id, global, local) { =
zfl_PhotoLayout.prototype.constructor.call(this,
id, global, local); var self =3D this; this._tabs =3D local.tabs; =
this._tabs.onselect =3D function(tab,
selected, init) { self._tabs_onselect(tab, selected, init); }; var =
exifView =3D local.exifView; if
(exifView) { this._controls.list.push(exifView); exifView.onresize =3D =
this.closure(this.recalc);
} } zfl_PhotoLtRtThLayout.inherits(zfl_PhotoLayout); =
zfl_PhotoLtRtThLayout.prototype.onrecalc =3D
function() { zfl_PhotoLayout.prototype.onrecalc.call(this); }; =
zfl_PhotoLtRtThLayout.prototype.onload
=3D function() { this._tabs.init(); =
zfl_PhotoLayout.prototype.onload.call(this); }; =
zfl_PhotoLtRtThLayout.prototype._tabs_onselect
=3D function(tab, selected, init) { if (selected && !init) =
this.recalc(); }; zfl_PhotoLtRtThLayout.prototype._tabs_onstretch
=3D function(height, stretcher) { if =
(this._tabs.get("thumbnails").selected) { var grid =3D =
this._grids.photos;
var cy =3D grid.getCellSize().cy; height =3D zf_stdGetClientHeight() - =
320; height =3D height * 3 / 4;
height =3D Math.max(height, cy * 5); height =3D Math.ceil(height / cy) * =
cy; grid.setHeight(height);
stretcher.style.height =3D height + "px"; var info =3D null; if =
(grid.getSelectedItem() =3D=3D null && this.current.index
>=3D 0) { info =3D grid.getLayoutInfo(); =
grid.setPage(Math.floor(this.current.index / info.itemsPerPage));
info =3D null; } else { info =3D =
grid.getLayoutInfo(zf_PhotoGrid.KeepVisible); } grid.recalcLayout(info);
return true; } else if (this._tabs.get("info").selected) { =
stretcher.style.height =3D "0px"; return true;
} return false; };
; ; function zfl_FolderCtrLayout(id, global, local) { if =
(zf_stdNoArgs(arguments)) return; =
zfl_FolderLayout.prototype.constructor.call(this,
id, global, local); } zfl_FolderCtrLayout.inherits(zfl_FolderLayout); =
zfl_FolderCtrLayout.prototype.onload
=3D function() { zfl_FolderLayout.prototype.onload.call(this); }; =
zfl_FolderCtrLayout.prototype.onrecalc
=3D function() { if (this._grids.folder) { var grid =3D =
this._grids.folder; var cxCell =3D grid.getCellSize().cx;
var cxWindow =3D zf_stdGetClientWidth() - 80; var row =3D =
Math.floor(cxWindow / cxCell); var width;
if (this._data.folder.length < row) width =3D this._data.folder.length * =
cxCell; else width =3D row *
cxCell; width =3D Math.max(width, 660); this.dom("gridbox").style.width =
=3D width + "px"; } zfl_FolderLayout.prototype.onrecalc.call(this);
};
; ; function zfl_PhotoSetCtrLayout(id, global, local) { if =
(zf_stdNoArgs(arguments)) return; =
zfl_PhotoSetLayout.prototype.constructor.call(this,
id, global, local); } =
zfl_PhotoSetCtrLayout.inherits(zfl_PhotoSetLayout); =
zfl_PhotoSetCtrLayout.prototype.onrecalc
=3D function() { zfl_PhotoSetLayout.prototype.onrecalc.call(this); }; =
zfl_PhotoSetCtrLayout.prototype.onload
=3D function() { zfl_PhotoSetLayout.prototype.onload.call(this); };
; var __zfl_end_parsing =3D new Date().getTime(); ;

------=_NextPart_000_0000_01CA8EAD.1803D070--

