From: Subject: ISSA - Innovations & Trends Date: Fri, 17 Apr 2009 14:14:31 -0400 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01C9BF66.D39F4650" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.issa.com/?m=articles&event=view&id=2955&page=1&lg=&category=24 =EF=BB=BF ISSA - Innovations & Trends =0A= _uacct =3D "UA-93571-2";=0A= urchinTracker();=0A=
=
 
 
ISSA/INTERCLEAN
 
 

3D""=20

    =

=
Read
Home=20 > Articles=20 > B= y=20 Category > In= novations=20 & Trends > Read=20 article


Floor Care:=20 The Higher Mat
by=20 Christopher R. Tricozzi=20

Selecting entryway and other matting systems for=20 facilities can be confusing, especially when a = facility has=20 a green cleaning system in place. To help clear up = this=20 confusion, jansan distributors should work with = facility=20 managers, concentrating on several issues,=20 including:

  =E2=80=A2 What makes a mat=20 =E2=80=9Cgreen=E2=80=9D

  =E2=80=A2 The = role matting plays in green=20 cleaning

  =E2=80=A2 What a = high-performance matting=20 system is

  =E2=80=A2 The different = types of mats as=20 well as the roles they play in protecting the health = and=20 appearance of a facility.

Green = Mats
Distributors=20 might start with a discussion of what a green mat is = not.=20 For instance, the mere fact that a mat is recyclable = or made=20 from recycled materials does not make it a green = mat.=20 Although some manufacturers may make this claim, = neither the=20 current guidelines of the U.S. Green Building = Council=E2=80=99s=20 (USGBC) Leadership in Energy and Environmental = Design (LEED)=20 certification program nor the Green SealTM GS-42=20 Environmental Standards for Cleaning Services = indicates this=20 as a requirement. Instead, both organizations simply = point=20 to the importance of matting in a green cleaning = program as=20 well as the lengths and types of matting required = for LEED=20 certification credits.

Additionally, distributors should point out to = their=20 clients that rarely does a =E2=80=9Crental=E2=80=9D = mat supplied by a=20 rent-a-mat service qualify as a green mat. Why? = Although=20 these services offer a number of conveniences, and = the=20 vendor will deliver and install a clean, attractive = mat at=20 major building entries on a frequent basis, these = mats are=20 typically of relatively poor quality; furthermore, = they last=20 a comparatively short period of time and have = limited=20 effectiveness. They may help prevent a slip and fall = during=20 wet weather and remove some dirt and soil from shoe = bottoms,=20 but they usually do not meet the criteria currently = mandated=20 by the USGBC and Green Seal for a green matting = system.

Knowing what a green mat is not helps make it = easier to=20 define its properties. Usually, green mats are = referred to=20 as high-performance matting systems. Distributors = can=20 explain to their clients that this means the=20 mats:

  =E2=80=A2 Are of much higher = quality than rental=20 or more conventional mats

  =E2=80=A2 = Are designed to=20 last for many years, something that will often be = reflected=20 in the mat=E2=80=99s extended warranty
  = =E2=80=A2 Are of a=20 recommended length so that they can perform=20 effectively

  =E2=80=A2 Usually work = together with other=20 high-performance mats as a = =E2=80=9Csystem=E2=80=9D

  =E2=80=A2 Perform=20 specific functions so that more than 80 percent of = the=20 contaminants, soil, and moisture that enter a = facility are=20 trapped by the matting system.

Effectively keeping soil outside is what makes a=20 high-performance matting system green. According to = Stephen=20 Ashkin, a longtime advocate of green cleaning and = president=20 of The Ashkin Group, LLC, and executive director of = the=20 Green Cleaning Network, keeping soils and = contaminants=20 outdoors helps minimize the amount of chemicals and = cleaning=20 necessary to maintain a facility.

Because the goal of green cleaning is to reduce=20 cleaning=E2=80=99s impact on health and the = environment, any=20 products, procedures, or systems that result in less = chemical use and reduced cleaning needs are = considered part=20 of a green cleaning system. =E2=80=9CHigh-quality = and appropriately=20 sized entry matting systems [are] an integral part = of every=20 green building,=E2=80=9D says Ashkin. =E2=80=9CThey = are one of the best=20 pollution-prevention strategies that can be employed = to=20 reduce soils before they enter a = building.=E2=80=9D

The USGBC concurs with Ashkin. Facility managers=20 incorporating green cleaning and seeking LEED = certification=20 must utilize entryway systems=E2=80=94more = specifically, they must=20 place high-performance mats at all building entries = =E2=80=9Cto=20 reduce the amount of dirt, dust, pollen, and other = particles=20 entering the building.=E2=80=9D

High-Performance = Mats
The=20 key to a high-performance matting system is not only = its=20 ability to capture soils, moisture, and contaminants = before=20 they enter a facility, but also to store them as = well.=20 Whereas a conventional rental-type mat can quickly = become=20 saturated with soil and moisture and become = ineffective, a=20 high-performance matting system contains the soil = and=20 moisture until they are removed safely by proper = cleaning,=20 with minimal environmental impact.

Some high-performance mats have the capacity to=20 accomplish this function due to their bi-level = construction.=20 As foot traffic passes over the mat, soil and water = fall=20 below the upper surface of the matting and are = stored. This=20 keeps them from being transferred into the building. = By=20 contrast, once a conventional mat becomes saturated, = the=20 soil and moisture actually reattach to the shoe, = defeating=20 the purpose of the mat.

In addition to the bi-level construction, the = length of=20 the matting system is important. According to Green = Seal, a=20 high-performance matting system includes mats placed = both=20 outside and inside a facility, the overall length of = the=20 matting running from 12 to 20 feet. Also, the mats = should be=20 specific types:

Scraper mats. These mats, often referred = to as=20 =E2=80=9Cthe first line of defense,=E2=80=9D are = placed outside of a=20 facility; they aggressively scrape dirt, debris, and = snow=20 from shoes, trapping those substances beneath the = mat=E2=80=99s=20 surface. Typically, five feet of scraper matting = should be=20 installed at all major entry points to effectively = trap as=20 much as 50 percent of the soil and moisture on = shoes.

Wiper/scraper mats. Designed as the second = step in=20 the process of removing soil and moisture from shoe = bottoms,=20 these mats are also about five feet in length. They = are=20 typically found directly inside a facility and help = remove=20 soils and moisture that are not captured by the = outdoor=20 scrapers. Often, buildings with a double-door entry = system=20 will place wiper/scraper mats in the vestibule area = between=20 the two sets of doors.

Wiper mats. These mats are the final part = of a=20 high-performance matting system and should also be = about=20 five feet long. Considered the final line of defense = preventing outdoor contaminants from entering a = facility,=20 they typically ensure that the first step taken off = the=20 high-performance system and onto the = facility=E2=80=99s hard-surface=20 floor or carpeting is clean, dry, and soil free.

Care & = Maintenance
Of=20 course, high-performance matting systems must also = be=20 properly maintained to perform effectively. = Distributors=20 should advise their clients that matting placed at a = typical=20 building entry would likely need to be vacuumed at = least=20 once if not two or three times during the course of = the day.=20 The frequency of cleanings may increase depending on = the=20 amount of foot traffic, weather conditions, and = other=20 factors.

In addition, because the mats store soil and = moisture=20 below the surface, the mats will eventually need to = be more=20 thoroughly cleaned. Whereas a rental mat must be = washed in=20 large washing machines with large amounts of water = and=20 strong chemicals, high-performance matting systems = can be=20 properly cleaned by using a prespray=E2=80=94which = minimizes=20 chemical use=E2=80=94and low-moisture carpet = extractors on a=20 schedule determined according to building traffic = and soil=20 buildup.


 

Christopher R. Tricozzi is vice president of = sales and=20 marketing for Crown=20 Mats and Matting. He may be reached at ctricozzi@crown-mats.com;=20 phone, 800-628-5463.

=
 
 
3D""=20 3D""=20

ABOUT ISSA | MY = ACCOUNT | CONTACT | SITE MAP | = ADVERTISE
All contents = =C2=A92009 ISSA. All=20 rights reserved. Disclaimer= | Privacy = Notice

------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/ban_r.gif R0lGODlhCgBGAOYAAP////r6+re3t+Li4mlpaXJycoSEhJycnM/Pz/Dw8P7+/vz8/Pv7++vr6+Pj 4/Pz8/b29vLy8tXV1efn5/f39/Hx8fn5+f39/b29veXl5e7u7qenp9DQ0OHh4XZ2dsXFxfT09KSk pPX19d3d3dzc3IiIiMTExNfX162traysrO/v77i4uNjY2J6ensPDw5mZmerq6szMzNPT035+fo+P j4qKisvLy5qamrm5uaamptTU1G1tbX9/f5KSkqWlpXV1ddLS0oKCgr6+vpCQkHFxcQAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5 BAAAAAAALAAAAAAKAEYAAAf/gBAMCwsXCocAABoPIhAWg4gDEw0qDxQBCwoAQCwjDg0RFAyaGCYx Eh0NDxYXADkoKx8SDhoQCwA9NxsCNiQwIAwAQTUvKS4nExEBAD8zNCEYMhkVyzseJS04HA7UAAQF BgcCCAMJy9/h4+Xn4OLk5t7t6vDo7uvx6e/s+ff18/v26MnThy8gwH8FEfojuLDfQIf8BEY8yPCh RIMJK07MCBFjw4sKLVLsGHLjx5EgNXoUyTElSZUlV5pkebIlyps2c9YkcC3btm5EnEGT1o0HMWPI lAEYoouXL2AAfMCSRcsWACGmUKliBUBHp0+hRgHIMKnSpUwAIjByBElTgEGFBQ5pAhAIADs= ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/ban_bl.gif R0lGODlhCAAKANUAAPz8/P7+/vv7++Pj4/Ly8uvr6/Pz8/n5+fr6+tXV1eXl5ff39/b29vHx8efn 562trZmZmfT09MTExLm5ue/v76SkpH9/f6enp9DQ0IiIiH5+fsPDw/X19djY2MvLy8zMzOHh4e7u 7pCQkHZ2doqKiqysrMXFxbi4uNTU1L6+vre3t3FxcdPT06WlpWlpadzc3L29vf39/Y+Pj+rq6pqa mt3d3Z6entfX1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAIAAoAAAZIwMYA M7FlRq6GggWryDQrguO2KUFIlsjs5VFdaCJGaJAwnR6tg6EASnwkKcGCUBjUOigAYmGgFBwKAQAC BwwcBgQBijEAgwhBADs= ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/p1.gif R0lGODlhCAATALMAAJLISdvtwsThnPr89qbSa5zNWY7GQuPx0Pf78sfioZDGRKLQZP///43FQAAA AAAAACH5BAAAAAAALAAAAAAIABMAAAQckMmRiGnylMZx6B0CgJxAcsvZKGrrvnAszzQYAQA7 ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/p3.gif R0lGODlhCAATALMAAJTIS5LISff78sfiocThnKLQZOPx0I7GQvr89qbSa9vtwpzNWf///43FQAAA AAAAACH5BAAAAAAALAAAAAAIABMAAAQcsJ00ELstt2WwzgrzZYEwZsTZFCqgvnAsz3Q9RwA7 ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/tl.gif R0lGODlhFgAXANUAAPv8/WWm0AR2vuz0+UOUx3uz1hJ7vgJ1vg15vqHJ4vX5/KXL5PL4+8be7t/t 9sHBwcfHxySEwdTU1Ozs7GGkz/Dw8CKDwOLu9g56vnWv1UyZyvT09HGt1OHh4dvb283Nzby8vPf3 90yYyX611xd+v+fn5wl3voG32fz8/Pr6+iqHwv7+/v///wB0vgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAWABcAAAZwQJZw SGStjo6TRnVoOYvE4yATcVqtUOOKUTBdvy3ocWEAg4srQMBsjioI7LYwDY+ftWv7fZXQt1cDCH5n KxSDYCsXAodfKxyMXwAkkFcNlFcjl1Yimk4WnS0YoIugpaAgDxAfEh4dJRMVGyEpKCtZQQA7 ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/share.gif R0lGODlhbQAUAKIAAP///8zMzG1tbeXl5Xt7e93d3dbW1vLy8iH5BAAAAAAALAAAAABtABQAAAPq GLrc/jDKSau9OOvNJfhgKI5kaZ5oqq7M6r5wLI/tbN94XH9C7/9AmCAHGBJfuyKhYBoQjC6ozCgt Hk9JQWFJchqqKfCLenVlAVtmyGsN94o+0NtKrb5/PLgUz4Py5zQLIUZpIGxtKH5yg3B5iG2KQ2CK i5GOImcAB4VeB5eJl3WScnGLiKOPp32odKWYgotOmwQBBAYHBAOpJ6yovSRkeZShkKpiIFmHWwYf accicZTRg4DClXrUgKV/1ciwPLZrIVvPZTbljChZQOyu5kfo7iZJ7/X2JfT3+vf5+/5lHQIKHEiw oMGDAxMAADs= ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/spacer.gif R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/leave.gif R0lGODlhbQAUAJEAAP///8zMzG1tbQAAACH5BAAAAAAALAAAAABtABQAAALFjI+py+0Po5y02osd 2Lz7D4biSJbmiZzqyrbul4bCN7/2jQMxDdTb7PMEc0TiruOrJUHDotPUPHKWvSnziT1FD9ef9yv8 JZXWXlNwRouVarUZOF6zPdIq0Gyvhsnlu76pBxboR8ZHOBjIIUX1V2aF5gbpxeY2VZm4ZNhoJ5kJ w+XIE/aI9HUoGpRK2qipOvlpUCojahpZmXr5JmSrmbfZ2UcHKgdZbJyblcxSp9zszOwcjQUtXZ1D bZ3tksHd7f0NHi7uXQAAOw== ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/data/images/authors/314/index.jpg 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 ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/bl.gif R0lGODlhLAAsANUAAL6+vnR0dOLi4uDg4Lm5uZ6ens7OztDQ0MjIyHp6etbW1oqKiqGhodjY2IKC gu3t7aWlpYWFhbKyssTExNzc3JSUlMLCwpmZmX5+fre3t9ra2tLS0m5ubq6uro2Njefn58rKyqio qJCQkMzMzMbGxsDAwJeXl6ysrHFxce7u7vb29vz8/PLy8vj4+Ojo6Onp6fX19eTk5N7e3vT09Kur q/Pz8/f39/Hx8erq6uvr6+Xl5fn5+fv7+/39/f7+/v///yH5BAAAAAAALAAAAAAsACwAAAb/QMAE cVDIYq8US7Xj9Xy/qHRKrVp/QqIRqWQ6odew+FcaFo/JZfM5blcn5m3ay3bbf4g4ursG39sbelxq X39uMoJzfYZtOIl8hYxiMyBae4R1klcwFJaDdH6aVSoPIGefi6JWKjcUp4qRqlQqLDgbcpCZslI2 NQ8xuJihuz8tNSkuApegxFMtMDc4Ajqosc07rDk6Mi6wusTYLA8fAwo4ucO7PC0zKdIUGwI1zM1R PDvQ2jIKIwguqfVW7OiFTICGAwgAAHDBI52sHuvy6ShnYAIBCSEyyOPRDCK2Yy8EUFAAwgKBDiEK mBCxIAKGBAkCBEBBk4PNmzhzcvAB8dmN/3EDGiAskQFlgQsiPERw8BKmzKdQo0Llea/XDW3lEAIo GoLBhQosIyxl2hSm2bNofVAN506kAgMISlykAeEoWA8LWop1wLev379qewh8Ji7ZSIQmJaBkcNQE 2KQe8OadTJnyj8BVoT0wrOAAiAkALqKEwPjoBROOK6hezXr1ZZ4ebcz4mSzoWwQWQkuQcCJECNIM gpcuQLy48SiBV1Sd/QDHxJEb4IIOnWF3h+snTtDYzr37duTJM7NIkeODgAEaFESvNCG3QgLw42eY T7++FLU8lQ+EUePnCx3njdSZASNUggAJcCSo4IITTIGfYPe0oEJ/5Llg3gAUaNCAAuptcKfAAQaE KOKII1LxoEf7UdjcBwAGSEGGGjYg44w0zljFifpJyN8NKTyQAw4WUiPAkEQOOcCRSCJpBX6w8RCh DTDM0B+PD/j4Iw4vvODCllx2uWUYTPYA4Q47tGCDClHWwMINbLKZwptwxgnnGGFCeE+ZZqqgJwx8 8jnDn4AGOoMbTMJm551kJkpmC4w26ugfhRoqpmArVGrppZiKEummnKpVz6eghspIEAA7 ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/br.gif R0lGODlhLAAsANUAAPDw8Pb29snJyaGhoe7u7rGxsejo6M7Ozuvr656enpmZmYWFheDg4OPj44GB gX19faWlpXFxcfPz842NjcHBwWlpadjY2MTExIqKipSUlOzs7Li4uJCQkHp6enR0dNHR0dra2tXV 1W5ubt3d3bW1tb6+vuXl5a6urmxsbGdnZ6urq6ioqNLS0sfHx6qqqpeXl97e3ubm5ry8vMzMzHd3 d7q6uvz8/Pn5+fv7+/X19fj4+PT09Pr6+v39/f7+/v///yH5BAAAAAAALAAAAAAsACwAAAb/wJ9w SCwafyJPx4HJJFSby8HCMBB2OpvvyO0ilUwnVEq1YrXe9BCXXDaf0Wn1mt2q07t2GE6uAs52d10x em9jcgZ/N2iCXQeFYnFlADmLgY1GBZADh5OVjJhGGJudDYmfl6FCBChtCxMvAyc1Fx8gDQiUlqpF G60eD6+xsy22uLqgvDg0KBE0wRMKsjItLLe5ATc9qaElFc3PCxwKEAUlAiwjxwE827xCOxEVIs5M 4yvmAiEjJhoS7O7eKUgxD8ybFSQozAgx5x+OgKpKEGwGTBgnSQ11POR250MKgvRoOBBHrgA1Y7ly aITY6EOFiREMOkF4bp8JbJY4eqHwsUJB/5EkZWG08q+dTi4ABhKc5yzYwXzWjmHZKEiHpqWtnLkZ B+HEBoUhYNzURTWNARIefH6j54HGVmkuSJwzRpSdFp0NDhR48A1FK3oxn9l7kQAfLTljVW68JKKx 48cRIrd1OxIDB8IrvFLQp67ujbJDPIgeTZqG6Q4PRr4aV1izgA9lNFBa6SNVh9u4cT/Y7UC15QzS Mm8oUYzK2H+ft6XqzZz5gucLMGCYwAF4AggqCnwVMEUdAgLIF4uSTl76hPMcqr9QkGBAZhIyNsPu DF4lDxvKjWTYz3//i/XstQdBZtqVcMEM85lCACXZLMZNAhBGOMCEEw64QnYkDLfZASFQof/gHw32 kJ8RKpRoYoknpFhAARnKYCB3LFgwAgM3LbhDg/jVxsUGPPbIYw01uFgCBRe0AGMIIDBgyncS5ICj cjpdIOWUU7ZgpAAzHPBBh0k2YIIVADT5ZG1HHWDmmWZ+8AELLITA5YxeGvBdmAHo8FmOOnZhwZ58 7gnCnyPMqOSXCGiwoJg38PAQlGkw4OijSjYgaZxyzhmmk3bigB+jZhng6aeVIlAoAQuGuQOmny1K 5lFEkFoqALDGGqYEpwZQZ6KairhqIzv02msOwAJrq6062KlorlCyekSxxd7g7LOJHotssspyYcO1 2GYr4rbUVuvFquCGm+c75JZr7rnolhsBBAA7 ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/printlogo.gif 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 tWAbtmI7tmRbtmZLtnR6hjC4tmy7tgEBADs= ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/ban_br.gif R0lGODlhCAAKAMQAAPHx8fr6+uPj47m5udDQ0J2dnYaGhlxcXGVlZXNzc4mJieTk5GBgYNLS0ru7 u5+fn3d3d2lpaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAA AAAALAAAAAAIAAoAAAUo4CGOB4OcKBIlbJtARiwbSmHfxTPs/OAQwCChISgaBQuAcqkMOJ/OEAA7 ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/t.gif R0lGODlhFgAXALMAAOTk5P7+/u7u7vv7+97e3vLy8vn5+enp6fb29snJyf39/cPDw9DQ0NfX1/// /wAAACH5BAAAAAAALAAAAAAWABcAAARicMlJq10p6817YmAojiTTnGiqrg3hvnAsE0Bt33gOHHzv /8CDYEgsGo+CgnLJbDoLiKh0Sq0iDNisdss1DL7gsHg8UJjP6LRaEWi73/B4wEGv2+/4vH7P7/v/ gIGCg4SFehEAOw== ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/l.gif R0lGODlhFgAWALMAAOTk5P7+/u7u7vv7+97e3r6+vvLy8vn5+enp6fb29snJyf39/cPDw9DQ0NfX 1////yH5BAAAAAAALAAAAAAWABYAAARlsDDVHAFImHTGCk8oPhJlYRrngWNYVle2dV/rTjA6rzaJ nzJVzfYCpmisVjF25BF/zN1QCdUJk6OlFdnTBrlPU/TarX6dVPEWnTU3p231GS7yvrF1txR/k9/L fnuAOXN8PoFkNhEAOw== ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/r.gif R0lGODlhFgAWAMQAAPz8/PT09ODg4IKCgre3t/7+/sTExIqKiu7u7np6es7OzpSUlPj4+Ojo6HR0 dNjY2J6enqurq25ubv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAA AAAALAAAAAAWABYAAAV5oOQkw7FAEWEoj9AgAQMUUy2SJqqyLizTtlHplFq1XrFZbXIb6oy9JJAp zBV5yN+yad0dfcogjuiNasXO61e6rZKh2TB1/MSCp9y3nY3uwu9tdGpmcnl1a2dzaWVxeG6HhI6C jIB9eoiFj4ONgYt/fIp+e4mGm5UTIQA7 ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.issa.com/images/b.gif R0lGODlhFgAWAMQAAPz8/PT09ODg4IKCgre3t/7+/sTExIqKiu7u7np6es7OzpSUlPj4+Ojo6HR0 dNjY2J6enqurq25ubv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAA AAAALAAAAAAWABYAAAWCoCSOZGlKTqqubOskcCzPdDLceK7vw+H/wKDwsCgaj8jkAsJsOp9QSGRK rVqvEYJ2y+16CYaweEwuGxTotHrNVjze8Lh8/hDY7/i8XtDo+/+AgQ0IhIWGh4gIAYuMjY6PAQyS k5SVlgwAmZqbnJ0ABaChoqOkBROnqKmqq6ytrq+wIQA7 ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.issa.com/css/style.css A { COLOR: #0074be } A:hover { COLOR: #8dc540 } P { MARGIN-TOP: 0px } .prnlogo { DISPLAY: none } .main { PADDING-RIGHT: 60px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: = 13px; PADDING-BOTTOM: 0px; COLOR: #000000; LINE-HEIGHT: normal; = PADDING-TOP: 0px; FONT-FAMILY: Verdana, Arial, sans-serif } .subhead { FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #000000; FONT-FAMILY: = Verdana, Arial, sans-serif } .main_no_pad { FONT-WEIGHT: normal; FONT-SIZE: 13px; COLOR: #000000; LINE-HEIGHT: = normal; FONT-FAMILY: Verdana, Arial, sans-serif } TD { FONT-WEIGHT: normal; FONT-SIZE: 13px; COLOR: #000000; LINE-HEIGHT: = normal; FONT-FAMILY: Verdana, Arial, sans-serif } BODY { FONT-WEIGHT: normal; FONT-SIZE: 13px; COLOR: #000000; LINE-HEIGHT: = normal; FONT-FAMILY: Verdana, Arial, sans-serif } TH { FONT-WEIGHT: bold; FONT-SIZE: 13px; COLOR: #000000; LINE-HEIGHT: = normal; FONT-FAMILY: Verdana, Arial, sans-serif } .info_text { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: = 11px; PADDING-BOTTOM: 0px; COLOR: #cccccc; PADDING-TOP: 0px; = FONT-FAMILY: Verdana, Arial, sans-serif } .lnk { FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #035fb2; FONT-FAMILY: = Verdana, Arial, sans-serif; TEXT-DECORATION: none } A.lnk:hover { FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #999999; FONT-FAMILY: = Verdana, Arial, sans-serif; TEXT-DECORATION: none } .lnk-menu { FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: #ffffff; FONT-FAMILY: = Verdana, Arial, sans-serif; TEXT-DECORATION: none } A.lnk-menu:hover { FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: #dddddd; FONT-FAMILY: = Verdana, Arial, sans-serif; TEXT-DECORATION: none } .lnk-smaller { FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: #999999; FONT-FAMILY: = Verdana, Arial, sans-serif; TEXT-DECORATION: none } A.lnk-smaller:hover { FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: #cccccc; FONT-FAMILY: = Verdana, Arial, sans-serif; TEXT-DECORATION: none } .header-blue { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: = 18px; PADDING-BOTTOM: 0px; COLOR: #035fb2; PADDING-TOP: 0px; = FONT-FAMILY: Verdana, Arial, sans-serif } .header-big { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: = 46px; PADDING-BOTTOM: 0px; WIDTH: 450px; COLOR: #cccccc; PADDING-TOP: = 0px; FONT-FAMILY: Verdana, Arial, sans-serif } .header-med { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: = 40px; PADDING-BOTTOM: 0px; COLOR: #cccccc; PADDING-TOP: 0px; = FONT-FAMILY: Verdana, Arial, sans-serif } .input { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: = 11px; PADDING-BOTTOM: 0px; COLOR: #000000; PADDING-TOP: 0px; = FONT-FAMILY: Verdana, Arial, sans-serif } .lnk-likemain { FONT-WEIGHT: normal; FONT-SIZE: 10px; COLOR: #000000; FONT-FAMILY: = Verdana, Arial, sans-serif; TEXT-DECORATION: none } A.lnk-likemain:hover { FONT-WEIGHT: normal; FONT-SIZE: 10px; COLOR: #999999; FONT-FAMILY: = Verdana, Arial, sans-serif; TEXT-DECORATION: none } IMG { BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: = 0px } .subnavhead { FONT-WEIGHT: bold; FONT-SIZE: 16px; COLOR: #ffffff; FONT-FAMILY: Arial, = sans-serif } .subnavlink { FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #035fb2; LINE-HEIGHT: 17px; = FONT-FAMILY: Verdana, Arial, sans-serif; TEXT-DECORATION: none } .osha-body { FONT-WEIGHT: normal; FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: = Verdana, Arial, Helvetica, sans-serif; POSITION: static; = TEXT-DECORATION: none } .osha-header { FONT-WEIGHT: normal; FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial = Black, Arial, Helvetica, sans-serif; POSITION: static; TEXT-DECORATION: = none } .osha-white { FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: #ffffff; FONT-FAMILY: = Verdana, Arial, Helvetica, sans-serif; POSITION: static; = TEXT-DECORATION: none } .osha-white-text { FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: #ffffff; FONT-FAMILY: = Verdana, Arial, Helvetica, sans-serif; POSITION: static; = TEXT-DECORATION: none } .osha-white-header { FONT-WEIGHT: bolder; FONT-SIZE: 11pt; COLOR: #ffffff; FONT-FAMILY: = Arial, Helvetica, sans-serif; POSITION: static; TEXT-DECORATION: none } .osha-white:link { COLOR: #ffffff; TEXT-DECORATION: underline } .osha-white:visited { COLOR: #ffffff; TEXT-DECORATION: underline } .osha-white:hover { COLOR: #ffa200; TEXT-DECORATION: underline } .osha-body:link { COLOR: black; TEXT-DECORATION: underline } .osha-body:visited { COLOR: black; TEXT-DECORATION: underline } .osha-body:hover { COLOR: #ffa200; TEXT-DECORATION: underline } FORM#frm { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } FORM#frm INPUT.text { FONT-SIZE: 100%; WIDTH: 200px } FORM#frm SELECT { FONT-SIZE: 100%; WIDTH: 200px } FORM#frm TABLE { BORDER-RIGHT: 0px; PADDING-RIGHT: 3px; BORDER-TOP: 0px; PADDING-LEFT: = 3px; PADDING-BOTTOM: 3px; MARGIN: 0px; BORDER-LEFT: 0px; PADDING-TOP: = 3px; BORDER-BOTTOM: 0px } FORM#frm TD#label { FONT-WEIGHT: bold; FONT-SIZE: 70%; VERTICAL-ALIGN: top; FONT-FAMILY: = Arial; TEXT-ALIGN: right } FORM#frm TD { FONT-SIZE: 70%; FONT-FAMILY: Arial } FORM#frm TD#err { FONT-SIZE: 55%; COLOR: #ff0000; FONT-FAMILY: Arial } SPAN#message { FONT-WEIGHT: bold; FONT-SIZE: 100%; COLOR: #009900; FONT-FAMILY: Arial } SPAN#message A { COLOR: #0000ff; FONT-FAMILY: Arial; TEXT-DECORATION: none } SPAN#message A:hover { COLOR: #0000ff; FONT-FAMILY: Arial; TEXT-DECORATION: underline } DL#newslist { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; WIDTH: 100%; LINE-HEIGHT: normal; PADDING-TOP: 0px } DL#newslist DT#date { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: = 13px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #035fb2; PADDING-TOP: 0px } DL#newslist DT#title A { FONT-WEIGHT: bold; FONT-SIZE: 16px; COLOR: #035fb2; TEXT-DECORATION: = underline } DL#newslist DT#title { FONT-WEIGHT: bold; FONT-SIZE: 16px; COLOR: #035fb2; PADDING-TOP: 20px } DL#newslist DT#byline { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 13px; PADDING-BOTTOM: = 0px; MARGIN: 5px 0px 15px; PADDING-TOP: 0px; FONT-STYLE: italic } DL#newslist DD { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 13px; PADDING-BOTTOM: = 0px; MARGIN: 5px 0px 0px; PADDING-TOP: 0px } DL#newslist DD#break { MARGIN-BOTTOM: 0px } DIV#pagelist { PADDING-RIGHT: 10px; DISPLAY: block; FONT-WEIGHT: bold; FONT-SIZE: = 100%; COLOR: #ffffff; FONT-FAMILY: Verdana, Arial, sans-serif; = BACKGROUND-COLOR: #0074be; TEXT-ALIGN: right } DIV#pagelist A { FONT-WEIGHT: bold; FONT-SIZE: 100%; COLOR: #ffffff; FONT-FAMILY: = Verdana, Arial, sans-serif } DIV#pagelist A#jump { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-WEIGHT: bold; FONT-SIZE: = 80%; COLOR: #ffffff; FONT-FAMILY: Verdana, Arial, sans-serif } DIV#survey { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px } DIV#survey #question { FONT-WEIGHT: bold; FONT-SIZE: 150% } DIV#survey #sponsored { FONT-SIZE: 120%; FONT-STYLE: italic } DIV#survey #chart { MARGIN-TOP: 10px; DISPLAY: block } DIV#survey #bar { CLEAR: left; FLOAT: left; MARGIN-BOTTOM: 10px; COLOR: #ffffff; = BACKGROUND-COLOR: #8dc43f; TEXT-ALIGN: center } #comments_content { MARGIN-TOP: 10px; DISPLAY: block } #comments_content TEXTAREA { FONT-SIZE: 120%; WIDTH: 400px; HEIGHT: 70px } #comments_content INPUT { FONT-SIZE: 120% } #comments_content A { FONT-SIZE: 100%; TEXT-DECORATION: none } #comments_content DIV#comment_box { MARGIN-TOP: 10px; DISPLAY: block } #comments_content DIV#content { MARGIN-TOP: 10px; DISPLAY: block } .leftblock { FLOAT: left; WIDTH: 293px } .rightblock { FLOAT: right; WIDTH: 294px } .clearer { CLEAR: both; FONT-SIZE: 0px; LINE-HEIGHT: 0px; HEIGHT: 0px } .greentitle { PADDING-RIGHT: 0px; PADDING-LEFT: 11px; FONT-WEIGHT: bold; FONT-SIZE: = 14px; BACKGROUND: #7dad0c; PADDING-BOTTOM: 2px; COLOR: #000; = PADDING-TOP: 2px } .greentext { PADDING-RIGHT: 0px; PADDING-LEFT: 100px; FONT-SIZE: 14px; MIN-HEIGHT: = 70px; BACKGROUND: url(../images/green_product-Guide_lower_tab.jpg) = no-repeat 0px 0px; MARGIN-BOTTOM: 30px; PADDING-BOTTOM: 22px; = PADDING-TOP: 4px; -height: 70px } .issatvtitle { MARGIN-BOTTOM: 4px } .issatvtext { MARGIN-LEFT: 30px; WIDTH: 230px } ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.issa.com/css/folder_tree_static.css .dhtmlgoodies_tree UL { PADDING-LEFT: 0px; MARGIN-LEFT: 20px } .dhtmlgoodies_tree LI { VERTICAL-ALIGN: middle; LIST-STYLE-TYPE: none } .dhtmlgoodies_tree LI A { PADDING-LEFT: 2px; FONT-WEIGHT: bold; FONT-SIZE: 90%; COLOR: #0074be; = FONT-FAMILY: arial; TEXT-DECORATION: none } ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Location: http://www.issa.com/css/print.css .noprn { DISPLAY: none } .prnw { BACKGROUND: none transparent scroll repeat 0% 0%; WIDTH: 100% } .prnlogo { DISPLAY: block; RIGHT: 5px; POSITION: absolute; TOP: 5px } TABLE.prnw { HEIGHT: auto } TD.prnw2 { HEIGHT: auto } ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: application/x-js Content-Transfer-Encoding: quoted-printable Content-Location: http://www.issa.com/js/AC_OETags.js //Additional Scripts for ISSA website // = -------------------------------------------------------------------------= ---- // Globals // Major version of Flash required var requiredMajorVersion =3D 9; // Minor version of Flash required var requiredMinorVersion =3D 0; // Minor version of Flash required var requiredRevision =3D 18; // = -------------------------------------------------------------------------= ---- // getElementById Special to handle quirky browsers // most will use getElementById() function getElementById_s(id){ var obj =3D null; if(document.getElementById){ /* Prefer the widely supported W3C DOM method, if available:- */ obj =3D document.getElementById(id); }else if(document.all){ /* Branch to use document.all on document.all only browsers. Requires that IDs are unique to the page and do not coincide with NAME attributes on other elements:- */ obj =3D document.all[id]; } /* If no appropriate element retrieval mechanism exists on this browser this function always returns null:- */ return obj; } function resizeSWF(nHeight,nWidth) { //var e=3D getElementById_s("mnu"); //e.style.height =3D nHeight; //e.style.width =3D nWidth; document.mm.style.height=3DnHeight; document.mm.style.width=3DnWidth; =09 return; } function external_video(){ window.open('?m=3Dvideo','','status=3D0,menubar=3D0,width=3D750,height=3D= 600'); } function return_win(){ if(window.opener){ window.opener.location=3D"?m=3Dindex"; window.close(); }else{ window.location=3D"?m=3Dindex"; } } var lastStatus function showBanner(url){ var dv=3Ddocument.getElementById("ban"); var container=3Ddocument.getElementById("ban_container"); if(url=3D=3D"null" || url=3D=3Dnull){ container.style.visibility=3D"hidden"; lastStatus=3D"hidden" }else{ container.style.visibility=3D"visible"; lastStatus=3D"visible"; dv.innerHTML=3D"";} } function ban_vis(stat){ var container=3Ddocument.getElementById("ban_container"); if(stat && lastStatus=3D=3D"visible"){ container.style.visibility=3D"visible"; }else{ container.style.visibility=3D"hidden"; } } //////////END ISSA SCRIPTS/////////////////////////////////////// // Flash Player Version Detection - Rev 1.5 // Detect Client Browser type // Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights = reserved. var isIE =3D (navigator.appVersion.indexOf("MSIE") !=3D -1) ? true : = false; var isWin =3D (navigator.appVersion.toLowerCase().indexOf("win") !=3D = -1) ? true : false; var isOpera =3D (navigator.userAgent.indexOf("Opera") !=3D -1) ? true : = false; function ControlVersion() { var version; var axo; var e; // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't = in the registry try { // version will be set for 7.X or greater players axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); version =3D axo.GetVariable("$version"); } catch (e) { } if (!version) { try { // version will be set for 6.X players only axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); =09 // installed player is some revision of 6.0 // GetVariable("$version") crashes for versions 6.0.22 through = 6.0.29, // so we have to be careful.=20 =09 // default to the first public version version =3D "WIN 6,0,21,0"; // throws if AllowScripAccess does not exist (introduced in 6.0r47) =09 axo.AllowScriptAccess =3D "always"; // safe to call for 6.0r47 or greater version =3D axo.GetVariable("$version"); } catch (e) { } } if (!version) { try { // version will be set for 4.X or 5.X player axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); version =3D axo.GetVariable("$version"); } catch (e) { } } if (!version) { try { // version will be set for 3.X player axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); version =3D "WIN 3,0,18,0"; } catch (e) { } } if (!version) { try { // version will be set for 2.X player axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); version =3D "WIN 2,0,0,11"; } catch (e) { version =3D -1; } } =09 return version; } // JavaScript helper required to detect Flash Player PlugIn version = information function GetSwfVer(){ // NS/Opera version >=3D 3 check for Flash plugin in plugin array var flashVer =3D -1; =09 if (navigator.plugins !=3D null && navigator.plugins.length > 0) { if (navigator.plugins["Shockwave Flash 2.0"] || = navigator.plugins["Shockwave Flash"]) { var swVer2 =3D navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : = ""; var flashDescription =3D navigator.plugins["Shockwave Flash" + = swVer2].description; =09 var descArray =3D flashDescription.split(" "); var tempArrayMajor =3D descArray[2].split("."); var versionMajor =3D tempArrayMajor[0]; var versionMinor =3D tempArrayMajor[1]; if ( descArray[3] !=3D "" ) { tempArrayMinor =3D descArray[3].split("r"); } else { tempArrayMinor =3D descArray[4].split("r"); } var versionRevision =3D tempArrayMinor[1] > 0 ? tempArrayMinor[1] : = 0; var flashVer =3D versionMajor + "." + versionMinor + "." + = versionRevision; } } // MSN/WebTV 2.6 supports Flash 4 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") !=3D = -1) flashVer =3D 4; // WebTV 2.5 supports Flash 3 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") !=3D = -1) flashVer =3D 3; // older WebTV supports Flash 2 else if (navigator.userAgent.toLowerCase().indexOf("webtv") !=3D -1) = flashVer =3D 2; else if ( isIE && isWin && !isOpera ) { flashVer =3D ControlVersion(); }=09 return flashVer; } // When called with reqMajorVer, reqMinorVer, reqRevision returns true = if that version or greater is available function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) { versionStr =3D GetSwfVer(); if (versionStr =3D=3D -1 ) { return false; } else if (versionStr !=3D 0) { if(isIE && isWin && !isOpera) { // Given "WIN 2,0,0,11" tempArray =3D versionStr.split(" "); // ["WIN", "2,0,0,11"] tempString =3D tempArray[1]; // "2,0,0,11" versionArray =3D tempString.split(","); // ['2', '0', '0', '11'] } else { versionArray =3D versionStr.split("."); } var versionMajor =3D versionArray[0]; var versionMinor =3D versionArray[1]; var versionRevision =3D versionArray[2]; // is the major.revision >=3D requested major.revision AND the = minor version >=3D requested minor if (versionMajor > parseFloat(reqMajorVer)) { return true; } else if (versionMajor =3D=3D parseFloat(reqMajorVer)) { if (versionMinor > parseFloat(reqMinorVer)) return true; else if (versionMinor =3D=3D parseFloat(reqMinorVer)) { if (versionRevision >=3D parseFloat(reqRevision)) return true; } } return false; } } function AC_AddExtension(src, ext) { if (src.indexOf('?') !=3D -1) return src.replace(/\?/, ext+'?');=20 else return src + ext; } function AC_Generateobj(objAttrs, params, embedAttrs)=20 {=20 var str =3D ''; if (isIE && isWin && !isOpera) { str +=3D ' = '; str +=3D '>'; } else { str +=3D ' '; } document.write(str); } function AC_FL_RunContent(){ var ret =3D=20 AC_GetArgs ( arguments, ".swf", "movie", = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" , "application/x-shockwave-flash" ); AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs); } function AC_GetArgs(args, ext, srcParamName, classid, mimeType){ var ret =3D new Object(); ret.embedAttrs =3D new Object(); ret.params =3D new Object(); ret.objAttrs =3D new Object(); for (var i=3D0; i < args.length; i=3Di+2){ var currArg =3D args[i].toLowerCase(); =20 switch (currArg){=09 case "classid": break; case "pluginspage": ret.embedAttrs[args[i]] =3D args[i+1]; break; case "src": case "movie":=09 args[i+1] =3D AC_AddExtension(args[i+1], ext); ret.embedAttrs["src"] =3D args[i+1]; ret.params[srcParamName] =3D args[i+1]; break; case "onafterupdate": case "onbeforeupdate": case "onblur": case "oncellchange": case "onclick": case "ondblClick": case "ondrag": case "ondragend": case "ondragenter": case "ondragleave": case "ondragover": case "ondrop": case "onfinish": case "onfocus": case "onhelp": case "onmousedown": case "onmouseup": case "onmouseover": case "onmousemove": case "onmouseout": case "onkeypress": case "onkeydown": case "onkeyup": case "onload": case "onlosecapture": case "onpropertychange": case "onreadystatechange": case "onrowsdelete": case "onrowenter": case "onrowexit": case "onrowsinserted": case "onstart": case "onscroll": case "onbeforeeditfocus": case "onactivate": case "onbeforedeactivate": case "ondeactivate": case "type": case "codebase": case "id": =20 ret.objAttrs[args[i]] =3D args[i+1]; break; case "width": case "height": case "align": case "vspace":=20 case "hspace": case "class": case "title": case "accesskey": case "name": case "tabindex": ret.embedAttrs[args[i]] =3D ret.objAttrs[args[i]] =3D args[i+1]; break; default: ret.embedAttrs[args[i]] =3D ret.params[args[i]] =3D args[i+1]; } } ret.objAttrs["classid"] =3D classid; if (mimeType) ret.embedAttrs["type"] =3D mimeType; return ret; } ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: application/x-js Content-Transfer-Encoding: quoted-printable Content-Location: http://www.issa.com/js/folder_tree_static/folder-tree-static.js var idOfFolderTrees=3D['dhtmlgoodies_tree'];var = imageFolder=3D'images/dhtml_tree/';var = folderImage=3D'dhtmlgoodies_folder.gif';var = plusImage=3D'dhtmlgoodies_plus.gif';var = minusImage=3D'dhtmlgoodies_minus.gif';var initExpandedNodes=3D'';var = treeUlCounter=3D0;var nodeId=3D1;function Get_Cookie(name) {var start=3Ddocument.cookie.indexOf(name+"=3D");var = len=3Dstart+name.length+1;if((!start)&&(name!=3Ddocument.cookie.substring= (0,name.length)))return null;if(start=3D=3D-1)return null;var = end=3Ddocument.cookie.indexOf(";",len);if(end=3D=3D-1) {end=3Ddocument.cookie.length;} return unescape(document.cookie.substring(len,end));} function Set_Cookie(name,value,expires,path,domain,secure) {expires=3Dexpires*60*60*24*1000;var today=3Dnew Date();var = expires_date=3Dnew Date(today.getTime()+(expires));var = cookieString=3Dname+"=3D"+escape(value)+ ((expires)?";expires=3D"+expires_date.toGMTString():"")+ ((path)?";path=3D"+path:"")+ ((domain)?";domain=3D"+domain:"")+ ((secure)?";secure":"");document.cookie=3DcookieString;} function parseSubItems(ulId,parentId) {if(initExpandedNodes) {var nodes=3DinitExpandedNodes.split(',');} var branchObj=3Ddocument.getElementById(ulId);var = menuItems=3DbranchObj.getElementsByTagName('LI');for(var = no=3D0,L=3DmenuItems.length;no0)continu= e;nodeId++;var subItems=3DmenuItems[no].getElementsByTagName('UL');var = img=3Ddocument.createElement('IMG');img.src=3DimageFolder+plusImage;img.o= nclick=3DshowHideNode;if(subItems.length=3D=3D0) {img.style.visibility=3D'hidden';} else {subItems[0].id=3D'tree_ul_'+treeUlCounter++;} var = aTag=3DmenuItems[no].getElementsByTagName('A')[0];aTag.onclick=3DshowHide= Node;menuItems[no].insertBefore(img,aTag);menuItems[no].id=3D'dhtmlgoodie= s_treeNode'+nodeId;var = folderImg=3Ddocument.createElement('IMG');if(menuItems[no].className) {folderImg.src=3DimageFolder+menuItems[no].className;} else {folderImg.src=3DimageFolder+folderImage;} menuItems[no].insertBefore(folderImg,aTag);var = tmpParentId=3DmenuItems[no].getAttribute('parentId');if(!tmpParentId) {tmpParentId=3DmenuItems[no].tmpParentId;} if(tmpParentId&&nodes[tmpParentId]) {showHideNode(false,nodes[no]);}}} function showHideNode(e,inputId) {if(inputId) {var o=3Ddocument.getElementById('dhtmlgoodies_treeNode'+inputId);if(o) {thisNode=3Do.getElementsByTagName('IMG')[0];}} else {thisNode=3Dthis;if(this.tagName=3D=3D'A') {thisNode=3Dthis.parentNode.getElementsByTagName('IMG')[0];}} try {if(thisNode.style.visibility=3D=3D'hidden')return;} catch(e) {return;} var = parentNode=3DthisNode.parentNode;inputId=3DparentNode.id.replace(/[^0-9]/= g,'');if(thisNode.src.indexOf(plusImage)>=3D0) {thisNode.src=3DthisNode.src.replace(plusImage,minusImage);var = ul=3DparentNode.getElementsByTagName('UL')[0];ul.style.display=3D'block';= if(!initExpandedNodes) {initExpandedNodes=3D',';} if(initExpandedNodes.indexOf(','+inputId+',')<0) {initExpandedNodes=3DinitExpandedNodes+inputId+',';}} else {thisNode.src=3DthisNode.src.replace(minusImage,plusImage);parentNode.get= ElementsByTagName('UL')[0].style.display=3D'none';initExpandedNodes=3Dini= tExpandedNodes.replace(','+inputId,'');} Set_Cookie('dhtmlgoodies_expandedNodes',initExpandedNodes,500);return = false;} function initTree() {for(var = treeCounter=3D0;treeCounter=3D0) {=0A= if (!(_uIN(a=3D_uGC(s,"__utma=3D","&")))) a=3D"-";=0A= if (!(_uIN(b=3D_uGC(s,"__utmb=3D","&")))) b=3D"-";=0A= if (!(_uIN(c=3D_uGC(s,"__utmc=3D","&")))) c=3D"-";=0A= v=3D_uGC(s,"__utmv=3D","&");=0A= z=3D_uGC(s,"__utmz=3D","&");=0A= k=3D_uGC(s,"__utmk=3D","&");=0A= xx=3D_uGC(s,"__utmx=3D","&");=0A= if ((k*1) !=3D ((_uHash(a+b+c+xx+z+v)*1)+(_udh*1))) = {_ubl=3D1;a=3D"-";b=3D"-";c=3D"-";xx=3D"-";z=3D"-";v=3D"-";}=0A= if (a!=3D"-" && b!=3D"-" && c!=3D"-") f=3D1;=0A= else if(a!=3D"-") f=3D2;=0A= }=0A= }=0A= if(f=3D=3D1) {=0A= _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A= _ubd.cookie=3D"__utmb=3D"+b+"; path=3D"+_utcp+";"+x+_udo;=0A= _ubd.cookie=3D"__utmc=3D"+c+"; path=3D"+_utcp+";"+_udo;=0A= } else if (f=3D=3D2) {=0A= a=3D_uFixA(s,"&",_ust);=0A= _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A= _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A= _ubd.cookie=3D"__utmc=3D"+_udh+"; path=3D"+_utcp+";"+_udo;=0A= _ufns=3D1;=0A= } else if (a>=3D0 && b>=3D0 && c>=3D0) {=0A= b =3D _uGC(dc,"__utmb=3D"+_udh,";");=0A= b =3D ("-" =3D=3D b) ? _udh : b; =0A= _ubd.cookie=3D"__utmb=3D"+b+"; path=3D"+_utcp+";"+x+_udo;=0A= } else {=0A= if (a>=3D0) a=3D_uFixA(_ubd.cookie,";",_ust);=0A= else {=0A= a=3D_udh+"."+_uu+"."+_ust+"."+_ust+"."+_ust+".1";=0A= nv=3D1;=0A= }=0A= _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A= _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A= _ubd.cookie=3D"__utmc=3D"+_udh+"; path=3D"+_utcp+";"+_udo;=0A= _ufns=3D1;=0A= }=0A= if (_ulink && xx && xx!=3D"" && xx!=3D"-") {=0A= xx=3D_uUES(xx);=0A= if (xx.indexOf(";")=3D=3D-1) _ubd.cookie=3D"__utmx=3D"+xx+"; = path=3D"+_utcp+";"+nx+_udo;=0A= }=0A= if (_ulink && v && v!=3D"" && v!=3D"-") {=0A= v=3D_uUES(v);=0A= if (v.indexOf(";")=3D=3D-1) _ubd.cookie=3D"__utmv=3D"+v+"; = path=3D"+_utcp+";"+nx+_udo;=0A= }=0A= var wc=3Dwindow;=0A= var c=3D_ubd.cookie;=0A= if(wc && wc.gaGlobal && wc.gaGlobal.dh=3D=3D_udh){=0A= var g=3Dwc.gaGlobal;=0A= var ua=3Dc.split("__utma=3D"+_udh+".")[1].split(";")[0].split(".");=0A= if(g.sid)ua[3]=3Dg.sid;=0A= if(nv>0){=0A= ua[2]=3Dua[3];=0A= if(g.vid){=0A= var v=3Dg.vid.split(".");=0A= ua[0]=3Dv[0];=0A= ua[1]=3Dv[1];=0A= }=0A= }=0A= _ubd.cookie=3D"__utma=3D"+_udh+"."+ua.join(".")+"; = path=3D"+_utcp+";"+nx+_udo;=0A= }=0A= _uInfo(page);=0A= _ufns=3D0;=0A= _ufno=3D0;=0A= if (!page || page=3D=3D"") _uff=3D1;=0A= }=0A= function _uGH() {=0A= var hid;=0A= var wc=3Dwindow;=0A= if (wc && wc.gaGlobal && wc.gaGlobal.hid) {=0A= hid=3Dwc.gaGlobal.hid;=0A= } else {=0A= hid=3DMath.round(Math.random()*0x7fffffff);=0A= if (!wc.gaGlobal) wc.gaGlobal=3D{};=0A= wc.gaGlobal.hid=3Dhid;=0A= }=0A= return hid;=0A= }=0A= function _uInfo(page) {=0A= var p,s=3D"",dm=3D"",pg=3D_udl.pathname+_udl.search;=0A= if (page && page!=3D"") pg=3D_uES(page,1);=0A= _ur=3D_ubd.referrer;=0A= if (!_ur || _ur=3D=3D"") { _ur=3D"-"; }=0A= else {=0A= dm=3D_ubd.domain;=0A= if(_utcp && _utcp!=3D"/") dm+=3D_utcp;=0A= p=3D_ur.indexOf(dm);=0A= if ((p>=3D0) && (p<=3D8)) { _ur=3D"0"; }=0A= if (_ur.indexOf("[")=3D=3D0 && = _ur.lastIndexOf("]")=3D=3D(_ur.length-1)) { _ur=3D"-"; }=0A= }=0A= s+=3D"&utmn=3D"+_uu;=0A= if (_ufsc) s+=3D_uBInfo();=0A= if (_uctm) s+=3D_uCInfo();=0A= if (_utitle && _ubd.title && _ubd.title!=3D"") = s+=3D"&utmdt=3D"+_uES(_ubd.title);=0A= if (_udl.hostname && _udl.hostname!=3D"") = s+=3D"&utmhn=3D"+_uES(_udl.hostname);=0A= if (_usample && _usample !=3D 100) s+=3D"&utmsp=3D"+_uES(_usample);=0A= s+=3D"&utmhid=3D"+_uGH();=0A= s+=3D"&utmr=3D"+_ur;=0A= s+=3D"&utmp=3D"+pg;=0A= if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A= var i=3Dnew Image(1,1);=0A= i.src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A= i.onload=3Dfunction() { _uVoid(); }=0A= }=0A= if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A= var i2=3Dnew Image(1,1);=0A= = i2.src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D"+= _uGCS();=0A= i2.onload=3Dfunction() { _uVoid(); }=0A= }=0A= return;=0A= }=0A= function _uVoid() { return; }=0A= function _uCInfo() {=0A= if (!_ucto || _ucto=3D=3D"") { _ucto=3D"15768000"; }=0A= if (!_uVG()) return;=0A= var = c=3D"",t=3D"-",t2=3D"-",t3=3D"-",o=3D0,cs=3D0,cn=3D0,i=3D0,z=3D"-",s=3D""= ;=0A= if (_uanchor && _udlh && _udlh!=3D"") s=3D_udlh+"&";=0A= s+=3D_udl.search;=0A= var x=3Dnew Date(_udt.getTime()+(_ucto*1000));=0A= var dc=3D_ubd.cookie;=0A= x=3D" expires=3D"+x.toGMTString()+";";=0A= if (_ulink && !_ubl) {=0A= z=3D_uUES(_uGC(s,"__utmz=3D","&"));=0A= if (z!=3D"-" && z.indexOf(";")=3D=3D-1) { = _ubd.cookie=3D"__utmz=3D"+z+"; path=3D"+_utcp+";"+x+_udo; return ""; }=0A= }=0A= z=3Ddc.indexOf("__utmz=3D"+_udh+".");=0A= if (z>-1) { z=3D_uGC(dc,"__utmz=3D"+_udh+".",";"); }=0A= else { z=3D"-"; }=0A= t=3D_uGC(s,_ucid+"=3D","&");=0A= t2=3D_uGC(s,_ucsr+"=3D","&");=0A= t3=3D_uGC(s,"gclid=3D","&");=0A= if ((t!=3D"-" && t!=3D"") || (t2!=3D"-" && t2!=3D"") || (t3!=3D"-" && = t3!=3D"")) {=0A= if (t!=3D"-" && t!=3D"") c+=3D"utmcid=3D"+_uEC(t);=0A= if (t2!=3D"-" && t2!=3D"") { if (c !=3D "") c+=3D"|"; = c+=3D"utmcsr=3D"+_uEC(t2); }=0A= if (t3!=3D"-" && t3!=3D"") { if (c !=3D "") c+=3D"|"; = c+=3D"utmgclid=3D"+_uEC(t3); }=0A= t=3D_uGC(s,_uccn+"=3D","&");=0A= if (t!=3D"-" && t!=3D"") c+=3D"|utmccn=3D"+_uEC(t);=0A= else c+=3D"|utmccn=3D(not+set)";=0A= t=3D_uGC(s,_ucmd+"=3D","&");=0A= if (t!=3D"-" && t!=3D"") c+=3D"|utmcmd=3D"+_uEC(t);=0A= else c+=3D"|utmcmd=3D(not+set)";=0A= t=3D_uGC(s,_uctr+"=3D","&");=0A= if (t!=3D"-" && t!=3D"") c+=3D"|utmctr=3D"+_uEC(t);=0A= else { t=3D_uOrg(1); if (t!=3D"-" && t!=3D"") = c+=3D"|utmctr=3D"+_uEC(t); }=0A= t=3D_uGC(s,_ucct+"=3D","&");=0A= if (t!=3D"-" && t!=3D"") c+=3D"|utmcct=3D"+_uEC(t);=0A= t=3D_uGC(s,_ucno+"=3D","&");=0A= if (t=3D=3D"1") o=3D1;=0A= if (z!=3D"-" && o=3D=3D1) return "";=0A= }=0A= if (c=3D=3D"-" || c=3D=3D"") { c=3D_uOrg(); if (z!=3D"-" && = _ufno=3D=3D1) return ""; }=0A= if (c=3D=3D"-" || c=3D=3D"") { if (_ufns=3D=3D1) c=3D_uRef(); if = (z!=3D"-" && _ufno=3D=3D1) return ""; }=0A= if (c=3D=3D"-" || c=3D=3D"") {=0A= if (z=3D=3D"-" && _ufns=3D=3D1) { = c=3D"utmccn=3D(direct)|utmcsr=3D(direct)|utmcmd=3D(none)"; }=0A= if (c=3D=3D"-" || c=3D=3D"") return "";=0A= }=0A= if (z!=3D"-") {=0A= i=3Dz.indexOf(".");=0A= if (i>-1) i=3Dz.indexOf(".",i+1);=0A= if (i>-1) i=3Dz.indexOf(".",i+1);=0A= if (i>-1) i=3Dz.indexOf(".",i+1);=0A= t=3Dz.substring(i+1,z.length);=0A= if (t.toLowerCase()=3D=3Dc.toLowerCase()) cs=3D1;=0A= t=3Dz.substring(0,i);=0A= if ((i=3Dt.lastIndexOf(".")) > -1) {=0A= t=3Dt.substring(i+1,t.length);=0A= cn=3D(t*1);=0A= }=0A= }=0A= if (cs=3D=3D0 || _ufns=3D=3D1) {=0A= t=3D_uGC(dc,"__utma=3D"+_udh+".",";");=0A= if ((i=3Dt.lastIndexOf(".")) > 9) {=0A= _uns=3Dt.substring(i+1,t.length);=0A= _uns=3D(_uns*1);=0A= }=0A= cn++;=0A= if (_uns=3D=3D0) _uns=3D1;=0A= _ubd.cookie=3D"__utmz=3D"+_udh+"."+_ust+"."+_uns+"."+cn+"."+c+"; = path=3D"+_utcp+"; "+x+_udo;=0A= }=0A= if (cs=3D=3D0 || _ufns=3D=3D1) return "&utmcn=3D1";=0A= else return "&utmcr=3D1";=0A= }=0A= function _uRef() {=0A= if (_ur=3D=3D"0" || _ur=3D=3D"" || _ur=3D=3D"-") return "";=0A= var i=3D0,h,k,n;=0A= if ((i=3D_ur.indexOf("://"))<0 || _uGCse()) return "";=0A= h=3D_ur.substring(i+3,_ur.length);=0A= if (h.indexOf("/") > -1) {=0A= k=3Dh.substring(h.indexOf("/"),h.length);=0A= if (k.indexOf("?") > -1) k=3Dk.substring(0,k.indexOf("?"));=0A= h=3Dh.substring(0,h.indexOf("/"));=0A= }=0A= h=3Dh.toLowerCase();=0A= n=3Dh;=0A= if ((i=3Dn.indexOf(":")) > -1) n=3Dn.substring(0,i);=0A= for (var ii=3D0;ii<_uRno.length;ii++) {=0A= if ((i=3Dn.indexOf(_uRno[ii].toLowerCase())) > -1 && = n.length=3D=3D(i+_uRno[ii].length)) { _ufno=3D1; break; }=0A= }=0A= if (h.indexOf("www.")=3D=3D0) h=3Dh.substring(4,h.length);=0A= return = "utmccn=3D(referral)|utmcsr=3D"+_uEC(h)+"|"+"utmcct=3D"+_uEC(k)+"|utmcmd=3D= referral";=0A= }=0A= function _uOrg(t) {=0A= if (_ur=3D=3D"0" || _ur=3D=3D"" || _ur=3D=3D"-") return "";=0A= var i=3D0,h,k;=0A= if ((i=3D_ur.indexOf("://"))<0 || _uGCse()) return "";=0A= h=3D_ur.substring(i+3,_ur.length);=0A= if (h.indexOf("/") > -1) {=0A= h=3Dh.substring(0,h.indexOf("/"));=0A= }=0A= for (var ii=3D0;ii<_uOsr.length;ii++) {=0A= if (h.toLowerCase().indexOf(_uOsr[ii].toLowerCase()) > -1) {=0A= if ((i=3D_ur.indexOf("?"+_uOkw[ii]+"=3D")) > -1 || = (i=3D_ur.indexOf("&"+_uOkw[ii]+"=3D")) > -1) {=0A= k=3D_ur.substring(i+_uOkw[ii].length+2,_ur.length);=0A= if ((i=3Dk.indexOf("&")) > -1) k=3Dk.substring(0,i);=0A= for (var yy=3D0;yy<_uOno.length;yy++) {=0A= if (_uOno[yy].toLowerCase()=3D=3Dk.toLowerCase()) { _ufno=3D1; = break; }=0A= }=0A= if (t) return _uEC(k);=0A= else return = "utmccn=3D(organic)|utmcsr=3D"+_uEC(_uOsr[ii])+"|"+"utmctr=3D"+_uEC(k)+"|= utmcmd=3Dorganic";=0A= }=0A= }=0A= }=0A= return "";=0A= }=0A= function _uGCse() {=0A= var h,p;=0A= h=3Dp=3D_ur.split("://")[1];=0A= if(h.indexOf("/")>-1) {=0A= h=3Dh.split("/")[0];=0A= p=3Dp.substring(p.indexOf("/")+1,p.length);=0A= }=0A= if(p.indexOf("?")>-1) {=0A= p=3Dp.split("?")[0];=0A= }=0A= if(h.toLowerCase().indexOf("google")>-1) {=0A= if(_ur.indexOf("?q=3D")>-1 || _ur.indexOf("&q=3D")>-1) {=0A= if (p.toLowerCase().indexOf("cse")>-1) {=0A= return true;=0A= }=0A= }=0A= }=0A= }=0A= function _uBInfo() {=0A= var sr=3D"-",sc=3D"-",ul=3D"-",fl=3D"-",cs=3D"-",je=3D1;=0A= var n=3Dnavigator;=0A= if (self.screen) {=0A= sr=3Dscreen.width+"x"+screen.height;=0A= sc=3Dscreen.colorDepth+"-bit";=0A= } else if (self.java) {=0A= var j=3Djava.awt.Toolkit.getDefaultToolkit();=0A= var s=3Dj.getScreenSize();=0A= sr=3Ds.width+"x"+s.height;=0A= }=0A= if (n.language) { ul=3Dn.language.toLowerCase(); }=0A= else if (n.browserLanguage) { ul=3Dn.browserLanguage.toLowerCase(); }=0A= je=3Dn.javaEnabled()?1:0;=0A= if (_uflash) fl=3D_uFlash();=0A= if (_ubd.characterSet) cs=3D_uES(_ubd.characterSet);=0A= else if (_ubd.charset) cs=3D_uES(_ubd.charset);=0A= return = "&utmcs=3D"+cs+"&utmsr=3D"+sr+"&utmsc=3D"+sc+"&utmul=3D"+ul+"&utmje=3D"+j= e+"&utmfl=3D"+fl;=0A= }=0A= function __utmSetTrans() {=0A= var e;=0A= if (_ubd.getElementById) e=3D_ubd.getElementById("utmtrans");=0A= else if (_ubd.utmform && _ubd.utmform.utmtrans) = e=3D_ubd.utmform.utmtrans;=0A= if (!e) return;=0A= var l=3De.value.split("UTM:");=0A= var i,i2,c;=0A= if (_userv=3D=3D0 || _userv=3D=3D2) i=3Dnew Array();=0A= if (_userv=3D=3D1 || _userv=3D=3D2) { i2=3Dnew Array(); c=3D_uGCS(); }=0A= =0A= for (var ii=3D0;ii-1) return;=0A= if (h) { url=3Dl+"#"+p; }=0A= else {=0A= if (iq=3D=3D-1 && ih=3D=3D-1) url=3Dl+"?"+p;=0A= else if (ih=3D=3D-1) url=3Dl+"&"+p;=0A= else if (iq=3D=3D-1) url=3Dl.substring(0,ih-1)+"?"+p+l.substring(ih);=0A= else url=3Dl.substring(0,ih-1)+"&"+p+l.substring(ih);=0A= }=0A= }=0A= return url;=0A= }=0A= function __utmLinker(l,h) {=0A= if (!_ulink || !l || l=3D=3D"") return;=0A= _udl.href=3D__utmLinkerUrl(l,h);=0A= }=0A= function __utmLinkPost(f,h) {=0A= if (!_ulink || !f || !f.action) return;=0A= f.action=3D__utmLinkerUrl(f.action, h);=0A= return;=0A= }=0A= function __utmSetVar(v) {=0A= if (!v || v=3D=3D"") return;=0A= if (!_udo || _udo =3D=3D "") {=0A= _udh=3D_uDomain();=0A= if (_udn && _udn!=3D"") { _udo=3D" domain=3D"+_udn+";"; }=0A= }=0A= if (!_uVG()) return;=0A= var r=3DMath.round(Math.random() * 2147483647);=0A= _ubd.cookie=3D"__utmv=3D"+_udh+"."+_uES(v)+"; path=3D"+_utcp+"; = expires=3D"+_uNx()+";"+_udo;=0A= var s=3D"&utmt=3Dvar&utmn=3D"+r;=0A= if (_usample && _usample !=3D 100) s+=3D"&utmsp=3D"+_uES(_usample);=0A= if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A= var i=3Dnew Image(1,1);=0A= i.src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A= i.onload=3Dfunction() { _uVoid(); }=0A= }=0A= if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A= var i2=3Dnew Image(1,1);=0A= = i2.src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D"+= _uGCS();=0A= i2.onload=3Dfunction() { _uVoid(); }=0A= }=0A= }=0A= function _uGCS() {=0A= var t,c=3D"",dc=3D_ubd.cookie;=0A= if ((t=3D_uGC(dc,"__utma=3D"+_udh+".",";"))!=3D"-") = c+=3D_uES("__utma=3D"+t+";+");=0A= if ((t=3D_uGC(dc,"__utmx=3D"+_udh,";"))!=3D"-") = c+=3D_uES("__utmx=3D"+t+";+");=0A= if ((t=3D_uGC(dc,"__utmz=3D"+_udh+".",";"))!=3D"-") = c+=3D_uES("__utmz=3D"+t+";+");=0A= if ((t=3D_uGC(dc,"__utmv=3D"+_udh+".",";"))!=3D"-") = c+=3D_uES("__utmv=3D"+t+";");=0A= if (c.charAt(c.length-1)=3D=3D"+") c=3Dc.substring(0,c.length-1);=0A= return c;=0A= }=0A= function _uGC(l,n,s) {=0A= if (!l || l=3D=3D"" || !n || n=3D=3D"" || !s || s=3D=3D"") return "-";=0A= var i,i2,i3,c=3D"-";=0A= i=3Dl.indexOf(n);=0A= i3=3Dn.indexOf("=3D")+1;=0A= if (i > -1) {=0A= i2=3Dl.indexOf(s,i); if (i2 < 0) { i2=3Dl.length; }=0A= c=3Dl.substring((i+i3),i2);=0A= }=0A= return c;=0A= }=0A= function _uDomain() {=0A= if (!_udn || _udn=3D=3D"" || _udn=3D=3D"none") { _udn=3D""; return 1; }=0A= if (_udn=3D=3D"auto") {=0A= var d=3D_ubd.domain;=0A= if (d.substring(0,4)=3D=3D"www.") {=0A= d=3Dd.substring(4,d.length);=0A= }=0A= _udn=3Dd;=0A= }=0A= _udn =3D _udn.toLowerCase(); =0A= if (_uhash=3D=3D"off") return 1;=0A= return _uHash(_udn);=0A= }=0A= function _uHash(d) {=0A= if (!d || d=3D=3D"") return 1;=0A= var h=3D0,g=3D0;=0A= for (var i=3Dd.length-1;i>=3D0;i--) {=0A= var c=3DparseInt(d.charCodeAt(i));=0A= h=3D((h << 6) & 0xfffffff) + c + (c << 14);=0A= if ((g=3Dh & 0xfe00000)!=3D0) h=3D(h ^ (g >> 21));=0A= }=0A= return h;=0A= }=0A= function _uFixA(c,s,t) {=0A= if (!c || c=3D=3D"" || !s || s=3D=3D"" || !t || t=3D=3D"") return "-";=0A= var a=3D_uGC(c,"__utma=3D"+_udh+".",s);=0A= var lt=3D0,i=3D0;=0A= if ((i=3Da.lastIndexOf(".")) > 9) {=0A= _uns=3Da.substring(i+1,a.length);=0A= _uns=3D(_uns*1)+1;=0A= a=3Da.substring(0,i);=0A= if ((i=3Da.lastIndexOf(".")) > 7) {=0A= lt=3Da.substring(i+1,a.length);=0A= a=3Da.substring(0,i);=0A= }=0A= if ((i=3Da.lastIndexOf(".")) > 5) {=0A= a=3Da.substring(0,i);=0A= }=0A= a+=3D"."+lt+"."+t+"."+_uns;=0A= }=0A= return a;=0A= }=0A= function _uTrim(s) {=0A= if (!s || s=3D=3D"") return "";=0A= while ((s.charAt(0)=3D=3D' ') || (s.charAt(0)=3D=3D'\n') || = (s.charAt(0,1)=3D=3D'\r')) s=3Ds.substring(1,s.length);=0A= while ((s.charAt(s.length-1)=3D=3D' ') || = (s.charAt(s.length-1)=3D=3D'\n') || (s.charAt(s.length-1)=3D=3D'\r')) = s=3Ds.substring(0,s.length-1);=0A= return s;=0A= }=0A= function _uEC(s) {=0A= var n=3D"";=0A= if (!s || s=3D=3D"") return "";=0A= for (var i=3D0;i0) r=3Da.substring(i+1,i2); else return = ""; =0A= if ((i=3Da.indexOf(".",i2+1))>0) t=3Da.substring(i2+1,i); else return = ""; =0A= if (f) {=0A= return r;=0A= } else {=0A= var c=3Dnew = Array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','R','S','T'= ,'U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9');=0A= return = c[r>>28&m]+c[r>>23&m]+c[r>>18&m]+c[r>>13&m]+"-"+c[r>>8&m]+c[r>>3&m]+c[((r= &7)<<2)+(t>>30&3)]+c[t>>25&m]+c[t>>20&m]+"-"+c[t>>15&m]+c[t>>10&m]+c[t>>5= &m]+c[t&m];=0A= }=0A= }=0A= function _uIN(n) {=0A= if (!n) return false;=0A= for (var i=3D0;i"9") && (c!=3D".")) return false;=0A= }=0A= return true;=0A= }=0A= function _uES(s,u) {=0A= if (typeof(encodeURIComponent) =3D=3D 'function') {=0A= if (u) return encodeURI(s);=0A= else return encodeURIComponent(s);=0A= } else {=0A= return escape(s);=0A= }=0A= }=0A= function _uUES(s) {=0A= if (typeof(decodeURIComponent) =3D=3D 'function') {=0A= return decodeURIComponent(s);=0A= } else {=0A= return unescape(s);=0A= }=0A= }=0A= function _uVG() {=0A= if((_udn.indexOf("www.google.") =3D=3D 0 || _udn.indexOf(".google.") = =3D=3D 0 || _udn.indexOf("google.") =3D=3D 0) && _utcp=3D=3D'/' && = _udn.indexOf("google.org")=3D=3D-1) {=0A= return false;=0A= }=0A= return true;=0A= }=0A= function _uSP() {=0A= var s=3D100;=0A= if (_usample) s=3D_usample;=0A= if(s>=3D100 || s<=3D0) return true;=0A= return ((__utmVisitorCode(1)%10000)<(s*100));=0A= }=0A= function urchinPathCopy(p){=0A= var d=3Ddocument,nx,tx,sx,i,c,cs,t,h,o;=0A= cs=3Dnew Array("a","b","c","v","x","z");=0A= h=3D_uDomain(); if (_udn && _udn!=3D"") o=3D" domain=3D"+_udn+";";=0A= nx=3D_uNx()+";";=0A= tx=3Dnew Date(); tx.setTime(tx.getTime()+(_utimeout*1000));=0A= tx=3Dtx.toGMTString()+";";=0A= sx=3Dnew Date(); sx.setTime(sx.getTime()+(_ucto*1000));=0A= sx=3Dsx.toGMTString()+";";=0A= for (i=3D0;i<6;i++){=0A= t=3D" expires=3D";=0A= if (i=3D=3D1) t+=3Dtx; else if (i=3D=3D2) t=3D""; else if (i=3D=3D5) = t+=3Dsx; else t+=3Dnx;=0A= c=3D_uGC(d.cookie,"__utm"+cs[i]+"=3D"+h,";");=0A= if (c!=3D"-") d.cookie=3D"__utm"+cs[i]+"=3D"+c+"; path=3D"+p+";"+t+o;=0A= }=0A= }=0A= function _uCO() {=0A= if (!_utk || _utk=3D=3D"" || _utk.length<10) return;=0A= var d=3D'www.google.com';=0A= if (_utk.charAt(0)=3D=3D'!') d=3D'analytics.corp.google.com';=0A= _ubd.cookie=3D"GASO=3D"+_utk+"; path=3D"+_utcp+";"+_udo;=0A= var sc=3Ddocument.createElement('script');=0A= sc.type=3D'text/javascript';=0A= sc.id=3D"_gasojs";=0A= = sc.src=3D'https://'+d+'/analytics/reporting/overlay_js?gaso=3D'+_utk+'&'+= Math.random();=0A= document.getElementsByTagName('head')[0].appendChild(sc); =0A= }=0A= function _uGT() {=0A= var h=3Dlocation.hash, a;=0A= if (h && h!=3D"" && h.indexOf("#gaso=3D")=3D=3D0) {=0A= a=3D_uGC(h,"gaso=3D","&");=0A= } else {=0A= a=3D_uGC(_ubd.cookie,"GASO=3D",";");=0A= }=0A= return a;=0A= }=0A= var _utk=3D_uGT();=0A= if (_utk && _utk!=3D"" && _utk.length>10 && _utk.indexOf("=3D")=3D=3D-1) = {=0A= if (window.addEventListener) {=0A= window.addEventListener('load', _uCO, false); =0A= } else if (window.attachEvent) { =0A= window.attachEvent('onload', _uCO);=0A= }=0A= }=0A= =0A= function _uNx() {=0A= return (new Date((new Date()).getTime()+63072000000)).toGMTString();=0A= }=0A= ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: application/x-js Content-Transfer-Encoding: quoted-printable Content-Location: http://74482.hittail.com/mlt.js if(!(htr('hittail_ok'))){htc=3Ddocument.referrer;htz=3Dhtl(document.locat= ion.href);if(htz!=3Dhtl(htc)&&(htc!=3D'')){if(htw(htc)){kw=3Dhtq(htc);htA= dt=3DhtAdTk(document.location.href);document.write('');}}hty('hittail_ok','1','','/',document.domain,'');}funct= ion htw(hte){var htd=3Dtrue;var htj=3Dnew = Array("http://private.","http://internal.","http://intranet.","login=3D",= "/login","login.","logon=3D","/logon","logon.","/signin","signin=3D","sig= nin.","signon","/admin/","mail.","/mail/","/email/","webmail","mailbox","= https://","cache:","http://www.blogger.com","http://localhost","http://cl= ient.","http://docs.","http://timebase.","http://www2.blogger.","http://w= ww.typepad.com/t/app/","http://www.typepad.com/t/comments","http://blocke= dReferrer");for(i=3D0;i = -1){htd=3Dfalse;return htd;}}var = htE=3D/https?:\/\/(www\.|\d+\.)?hittail\.com/;var = hto=3D/https?:\/\/(www\.|\d+\.)?mylongtail\.com/;if(hte.search(htE)> = -1||hte.search(hto)> -1){htd=3Dfalse;}return htd;};function = htk(hta){return unescape(hta.replace(/\+/g," "));};function htm(url){var = htH=3D/(http:\/\/)([^\/]*?)(\/)/;htH.test(url);hti=3DRegExp.$2;return = hti;};function htq(url){var = htG=3D/(\?|&|&|;){1}(q|p|query|t|w|search|as_q|wd){1}=3D(.[^&=3D]*)=3D= ?/i;htG.test(url);kw=3Dhtk(RegExp.$3);if(kw.indexOf('cache:')>=3D0||kw.in= dexOf('http://')>=3D0||kw.indexOf('invocationType')>=3D0|| = !isNaN(kw)){kw=3D'';}else{kw=3DhtD(kw);}return kw;};function = htD(hta){hta=3Dhta.replace(/[^\w #\.\-^\u00c0-\u00ff]/g,'');return = hta;};function = htF(url){p=3D0;htI=3D/\.google\./;if(htI.test(url)){htJ=3D/google(.*?)(st= art=3D)([0-9]+)/;htJ.test(url);p=3DRegExp.$3;if(p!=3D''){p=3Dp/10;}else{p= =3D1;}}if(p=3D=3D0||p=3D=3D''){hts=3D/\.yahoo\./;if(hts.test(url)){htt=3D= /yahoo(.*?)b=3D([0-9]+)/;htt.test(url);p=3DRegExp.$2;if(p!=3D''){p=3D(p-1= )/10+1;}else{p=3D1;}}}if(p=3D=3D0||p=3D=3D''){htg=3D/msn|live\.com/;if(ht= g.test(url)){htp=3D/msn|live\.com(.*?)(\?|&)first=3D([0-9]+)/;htp.test(ur= l);p=3DRegExp.$3;if(p!=3D''){p=3D(p-1)/10+1;}else{p=3D1;}}}if(p=3D=3D0||p= =3D=3D''){htg=3D/ask\.com/;if(htg.test(url)){htB=3D/ask(.*?)(\?|&)page=3D= ([0-9]+)/;htB.test(url);p=3DRegExp.$3;if(p!=3D''){p=3D(p-1)/10;}else{p=3D= 1;}}}return p;};function htn(hta){hta=3Dhta.replace(/^\s+|\s+$/g,'');var = htv=3Dhta.split(/\s/);w=3Dhtv.length;return w;};function = hty(name,value,expires,htf,domain,hth){var = htx=3Dname+"=3D"+escape(value)+((htf)?"; htf=3D"+htf:"")+((domain)?"; = domain=3D"+domain:"")+((hth)?"; = hth":"");document.cookie=3Dhtx;};function htr(name){var = dc=3Ddocument.cookie;var prefix=3Dname+"=3D";var htb=3Ddc.indexOf("; = "+prefix);if(htb=3D=3D -1){htb=3Ddc.indexOf(prefix);if(htb!=3D0)return = null;}else htb+=3D2;var = end=3Ddocument.cookie.indexOf(";",htb);if(end=3D=3D = -1)end=3Ddc.length;return = unescape(dc.substring(htb+prefix.length,end));};function htl(url){var = htb,end;htb=3Durl.indexOf('//')+2;if(url.indexOf('/',8)){end=3Durl.indexO= f('/',8);}else{end=3Durl.length}return url.substring(htb,end);};function = htAdTk(url) {if ( (url.indexOf('gclid') > 0) || (url.indexOf('ysmkey') > 0) || = (url.indexOf('OVRAW') > 0) || (url.indexOf('OVKEY') > 0) ){ad =3D = 1;}else{ad =3D 0;}return ad;} ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: application/x-js Content-Transfer-Encoding: quoted-printable Content-Location: https://sec1.woopra.com/js/woopra.js =0A= function wx_chat(){=0A= =0A= var divID=3Dfalse;=0A= var tracker=3Dfalse;=0A= var imsg=3Dfalse;=0A= =0A= this.load=3Dfunction(_tracker,_imsg){=0A= tracker=3D_tracker;=0A= imsg=3D_imsg;=0A= divID=3D'r_'+Math.random();=0A= }=0A= =0A= this.closeNotification=3Dfunction(evt){=0A= this.hideNotification(evt);=0A= tracker.sendEvent("chatnotification","close");=0A= }=0A= =0A= this.hideNotification=3Dfunction(evt){=0A= //=0A= var chat=3D document.getElementById(divID);=0A= if(chat){=0A= chat.style.display=3D"none";=0A= }=0A= }=0A= =0A= this.showNotification=3Dfunction (){=0A= =0A= var chat=3D document.getElementById(divID);=0A= if(!chat){=0A= =0A= chat=3D document.createElement('div');=0A= chat.id =3D divID;=0A= chat.style.position=3D'fixed';=0A= =0A= chat.style.right=3D'0';=0A= chat.style.width=3D'350px';=0A= chat.style.height=3D'110px';=0A= chat.style.border=3D'2px solid #394150';=0A= chat.style.backgroundColor =3D '#2b3f5d';=0A= chat.style.fontFamily =3D 'Verdana';=0A= chat.style.zIndex=3D'107';=0A= =0A= =0A= =0A= if(window.attachEvent) { // IE=0A= = document.getElementsByTagName('html')[0].style.height=3D'100%';=0A= = document.getElementsByTagName('html')[0].style.overflow=3D'hidden';=0A= document.body.style.margin=3D'0';=0A= document.body.style.height=3D'100%';=0A= document.body.style.overflow=3D'auto';=0A= chat.style.position=3D'absolute';=0A= chat.style.right=3D'18';=0A= }=0A= =0A= document.body.appendChild(chat);=0A= //=0A= tracker.sendEvent("chatnotification","show");=0A= //=0A= var txt=3D''+'Webmaster says:'+this.decode(imsg)+"";=0A= //=0A= var r=3DMath.random();=0A= //=0A= chat.innerHTML=3D'
close
'+txt+'
powered by = Woopra
';=0A= chat.style.display=3D'block';=0A= chat.style.bottom=3D'-110px';=0A= =0A= =0A= var pntr=3Dthis;=0A= =0A= var close=3Ddocument.getElementById("c_"+r);=0A= var content=3Ddocument.getElementById("b_"+r);=0A= =0A= if(window.attachEvent) { // IE=0A= =0A= close.attachEvent('onclick', pntr.hideNotification);=0A= close.attachEvent('onclick', = function(){tracker.sendEvent("chatnotification","close");});=0A= =0A= content.attachEvent('onclick', = tracker.showConversation);=0A= content.attachEvent('onclick', = pntr.hideNotification);=0A= content.attachEvent('onclick', = function(){tracker.sendEvent("chatnotification","open");});=0A= }else { // Others=0A= close.addEventListener('click', = pntr.hideNotification, false);=0A= = close.addEventListener('click',function(){tracker.sendEvent("chatnotifica= tion","close");}, false);=0A= =0A= =0A= content.addEventListener('click', = tracker.showConversation, false);=0A= content.addEventListener('click', = pntr.hideNotification, false);=0A= content.addEventListener('click', = function(){tracker.sendEvent("chatnotification","open");}, false);=0A= }=0A= =0A= setTimeout(function(){pntr.moveUp();},10);=0A= chat.style.bottom=3Dbottom+"px";=0A= =0A= }=0A= }=0A= =0A= this.moveUp=3Dfunction(){=0A= var chat=3D document.getElementById(divID);=0A= chat.style.bottom=3Dbottom+"px";=0A= bottom+=3D2;=0A= if(bottom<0){=0A= var pntr=3Dthis;=0A= setTimeout(function(){pntr.moveUp();},10);=0A= }=0A= }=0A= //=0A= var bottom=3D-120;=0A= =0A= this.decode=3Dfunction(msg){=0A= return decodeURIComponent(msg).split('+').join(' ');=0A= }=0A= =0A= }=0A= =0A= function wx_tracker(){=0A= =0A= var pntr=3Dfalse;=0A= var chat=3Dfalse;=0A= =0A= var idle=3Dfalse;=0A= var idle_timeout=3D20*1000;=0A= var last_action=3Dfalse;=0A= var timeout=3Dtimeout=3D30*60*1000;=0A= =0A= var wx_static=3Dfalse;=0A= var wx_engine=3Dfalse;=0A= =0A= var visitor_data=3Dfalse;=0A= var event_data=3Dfalse;=0A= =0A= this.initialize=3Dfunction(){=0A= =0A= pntr=3Dthis;=0A= last_action=3Dnew Date()=0A= =0A= visitor_data=3Dnew Array();=0A= event_data=3Dnew Array();=0A= =0A= =0A= if(document.location.protocol=3D=3D"https:"){=0A= wx_static=3D"https://sec1.woopra.com";=0A= wx_engine=3D"https://sec1.woopra.com";=0A= }else{=0A= wx_static=3D"http://static.woopra.com";=0A= = wx_engine=3D'http://'+((location.hostname.indexOf('www.')<0)?location.hos= tname:location.hostname.substring(4))+'.woopra-ns.com';=0A= }=0A= //=0A= //wx_engine=3D"http://localhost:12001";=0A= //=0A= if(document.addEventListener){=0A= = document.addEventListener("mousedown",this.clicked,false);=0A= document.addEventListener("mousemove",this.moved,false);=0A= }=0A= else{=0A= document.attachEvent("onmousedown",this.clicked);=0A= document.attachEvent("onmousemove",this.moved);=0A= }=0A= }=0A= =0A= this.setVisitorData=3Dfunction(k,v){=0A= visitor_data[k]=3Dv;=0A= }=0A= =0A= this.setEventData=3Dfunction(k,v){=0A= event_data[k]=3Dv;=0A= }=0A= =0A= this.getStatic=3Dfunction(){=0A= return wx_static;=0A= }=0A= =0A= this.getEngine=3Dfunction(){=0A= return wx_engine;=0A= }=0A= =0A= this.sleep=3Dfunction(millis){=0A= var date =3D new Date();=0A= var curDate =3D new Date();=0A= while(curDate-date < millis){=0A= curDate=3Dnew Date();=0A= }=0A= }=0A= =0A= this.randomstring=3Dfunction(){=0A= var chars =3D "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";=0A= var s =3D '';=0A= for (i =3D 0; i < 32; i++) {=0A= var rnum =3D Math.floor(Math.random() * chars.length);=0A= s +=3D chars.substring(rnum, rnum + 1);=0A= }=0A= return s;=0A= }=0A= =0A= this.getnavigatortoken=3Dfunction(){=0A= if(window.opera || window.Opera){=0A= return 'O';=0A= }=0A= if(navigator.userAgent){=0A= return 'U';=0A= }=0A= return "X";=0A= }=0A= =0A= this.getlantoken=3Dfunction(){=0A= return (navigator.browserLanguage || navigator.language || = "");=0A= }=0A= =0A= this.getcookie=3Dfunction(k){=0A= if (this.readcookie(k)) {=0A= return this.readcookie(k);=0A= }=0A= var scookie =3D this.randomstring();=0A= this.createcookie(k,scookie,'Thu, 2 Aug 2050');=0A= rcookie =3D this.readcookie(k);=0A= if (scookie =3D=3D rcookie) {=0A= return rcookie;=0A= }=0A= return '0';=0A= }=0A= =0A= this.readcookie=3Dfunction(k) {=0A= var c=3D""+document.cookie;=0A= var ind=3Dc.indexOf(k);=0A= if (ind=3D=3D-1 || k=3D=3D""){=0A= return "";=0A= }=0A= var ind1=3Dc.indexOf(';',ind);=0A= if (ind1=3D=3D-1){=0A= ind1=3Dc.length;=0A= }=0A= return unescape(c.substring(ind+k.length+1,ind1));=0A= }=0A= this.createcookie=3Dfunction(k,v,exp){=0A= cookieval =3D k + '=3D' + v + '; ' + ((exp)?('expires=3D' + = exp + ' ;'):'') + 'path=3D/';=0A= document.cookie =3D cookieval;=0A= }=0A= =0A= this.request=3Dfunction(url){=0A= var script=3Ddocument.createElement('script');=0A= script.type=3D"text/javascript";=0A= script.src =3D url;=0A= document.getElementsByTagName('head')[0].appendChild(script);=0A= }=0A= =0A= this.sendEvent=3Dfunction(typ, val){=0A= var _mod =3D = ((document.location.protocol=3D=3D"https:")?'/woopras/customevent.jsp?':'= /customevent/');=0A= var _url=3D wx_engine + _mod +'cookie=3D' + = this.getcookie('wooTracker') + '&type=3D' + typ+ '&name=3D'+ val + = '&ra=3D'+this.randomstring();=0A= this.request(_url);=0A= }=0A= =0A= this.track=3Dfunction(){=0A= =0A= var date=3Dnew Date();=0A= =0A= var woopra_request=3Dnew Array();=0A= =0A= = woopra_request['sessioncookie']=3Dthis.getcookie('sessionCookie');=0A= woopra_request['cookie']=3Dthis.getcookie('wooTracker');=0A= woopra_request['browsertoken']=3Dthis.getnavigatortoken();=0A= woopra_request['platformtoken']=3Dnavigator.platform;=0A= woopra_request['language']=3Dthis.getlantoken();=0A= woopra_request['pagetitle']=3Ddocument.title;=0A= woopra_request['referer']=3Ddocument.referrer;=0A= woopra_request['screen']=3Dscreen.width + 'x' + = screen.height;=0A= = woopra_request['localtime']=3Ddate.getHours()+':'+date.getMinutes();=0A= =0A= =0A= var _k=3Dfalse;=0A= =0A= for (_k in visitor_data){=0A= if(typeof visitor_data[_k]!=3D'function'){=0A= woopra_request['cv_'+_k]=3Dvisitor_data[_k];=0A= }=0A= }=0A= =0A= for (_k in event_data){=0A= if(typeof event_data[_k]!=3D'function'){=0A= woopra_request['ev_'+_k]=3Devent_data[_k];=0A= }=0A= }=0A= =0A= =0A= var req_url=3D"";=0A= for (_k in woopra_request){=0A= if(typeof woopra_request[_k]!=3D'function'){=0A= = req_url+=3D"&"+_k+"=3D"+encodeURIComponent(woopra_request[_k]);=0A= }=0A= }=0A= =0A= var _mod =3D = ((document.location.protocol=3D=3D"https:")?'/woopras/visit.jsp?':'/visit= /');=0A= this.request(wx_engine + _mod = +'ra=3D'+this.randomstring()+req_url);=0A= }=0A= =0A= =0A= this.ping=3Dfunction(){=0A= if(new Date()-last_action> timeout){=0A= return;=0A= }=0A= var _mod =3D = ((document.location.protocol=3D=3D"https:")?'/woopras/ping.jsp?':'/ping/'= );=0A= var _url =3D wx_engine + _mod + = 'cookie=3D'+this.getcookie('wooTracker')+'&ra=3D'+this.randomstring();=0A= this.request(_url);=0A= }=0A= =0A= this.clicked=3Dfunction(e) {=0A= =0A= var cElem =3D (e.srcElement) ? e.srcElement : e.target;=0A= if(cElem.tagName =3D=3D "A"){=0A= var link=3DcElem;=0A= var _download =3D = link.pathname.match(/(?:doc|eps|jpg|png|svg|xls|ppt|pdf|xls|zip|txt|vsd|v= xd|js|css|rar|exe|wma|mov|avi|wmv|mp3)($|\&)/);=0A= if(_download){=0A= pntr.sendEvent("download",link.href);=0A= pntr.sleep(100);=0A= }=0A= if (!_download&&link.hostname !=3D location.host && = link.hostname.indexOf('javascript')=3D=3D-1 && link.hostname!=3D''){=0A= pntr.sendEvent("exit",link.href);=0A= pntr.sleep(400);=0A= }=0A= }=0A= }=0A= =0A= this.moved=3Dfunction(e) {=0A= last_action=3Dnew Date();=0A= if(idle=3D=3D1){=0A= idle=3D0;=0A= this.woopra_event("status","0");=0A= }=0A= }=0A= =0A= this.checkidle=3Dfunction(){=0A= if(idle=3D=3D0 && (new Date()-last_action)> idle_timeout){=0A= idle=3D1;=0A= this.woopra_event("status","1");=0A= }=0A= setTimeout("woopra_tracker.checkidle()",5 * 1000);=0A= }=0A= =0A= =0A= this.startConversation=3Dfunction(imsg){=0A= if(!chat){=0A= chat=3Dnew wx_chat();=0A= chat.load(this,imsg);=0A= chat.showNotification();=0A= }=0A= }=0A= =0A= this.showConversation=3Dfunction(){=0A= var = url=3D'chatframe.jsp?cookie=3D'+pntr.getcookie('wooTracker')+'&host=3D'+w= indow.location.host+"&ra=3D"+pntr.randomstring();=0A= var = newwindow=3Dwindow.open(url,'name','height=3D400,width=3D350,resizable=3D= 1,statusbar=3D0,location=3D0,scrollbars=3D0,toolbar=3D0,directories=3D0,m= enubar=3D0');=0A= if (!newwindow.opener) {=0A= newwindow.opener =3D self;=0A= }=0A= if (window.focus) {=0A= newwindow.focus()=0A= }=0A= }=0A= =0A= }=0A= =0A= =0A= var woopra_tracker=3Dnew wx_tracker();=0A= woopra_tracker.initialize();=0A= =0A= =0A= {=0A= if(typeof woopra_array!=3D'undefined'){=0A= for (var woo_key in woopra_array){=0A= if(typeof woopra_array[woo_key]!=3D'function'){=0A= = woopra_tracker.setVisitorData(woo_key,woopra_array[woo_key]);=0A= }=0A= }=0A= }=0A= if(typeof woopra_visitor!=3D'undefined'){=0A= for (var woo_key in woopra_visitor){=0A= if(typeof woopra_visitor[woo_key]!=3D'function'){=0A= = woopra_tracker.setVisitorData(woo_key,woopra_visitor[woo_key]);=0A= }=0A= }=0A= }=0A= if(typeof woopra_event!=3D'undefined'){=0A= for (var woo_key in woopra_event){=0A= if(typeof woopra_event[woo_key]!=3D'function'){=0A= = woopra_tracker.setEventData(woo_key,woopra_event[woo_key]);=0A= }=0A= }=0A= }=0A= }=0A= =0A= woopra_tracker.track();=0A= =0A= setTimeout(function(){woopra_tracker.ping();},6*1000);=0A= =0A= var woopraTracker=3Dwoopra_tracker;=0A= ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.issa.com/?m=banners&position=3 document.write('');document.write('
'= );=0A= document.write('');=0A= document.write('
');=0A= ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.issa.com/?m=banners&position=4 document.write('');document.write('
'= );=0A= document.write('');=0A= document.write('
');=0A= ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.issa.com/?m=banners&position=5 document.write('');document.write('
')= ;=0A= document.write('');=0A= document.write('
');=0A= ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.issa.com/?m=banners&position=6 document.write('');document.write('
');=0A= AC_FL_RunContent(=0A= "src", "swf/shim",=0A= "width", "250",=0A= "height", "150",=0A= "align", "middle",=0A= "id", "banner",=0A= "quality", "high",=0A= "bgcolor", "#FFFFFF",=0A= "wmode", 'transparent',=0A= "flashvars", "file=3Dhttp://www.issa.com/data/banners/flash/173.swf",=0A= "name", "banner",=0A= "allowScriptAccess","sameDomain",=0A= "type", "application/x-shockwave-flash",=0A= 'codebase', = 'http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab',=0A= "pluginspage", "http://www.adobe.com/go/getflashplayer");=0A= document.write('
<= img src=3D"http://www.issa.com/images/_.gif" width=3D"250" = height=3D"150"/>
');=0A= document.write('
');=0A= ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: application/x-js Content-Transfer-Encoding: quoted-printable Content-Location: http://www.issa.com/js/scriptaculous/prototype.js /* Prototype JavaScript framework, version 1.5.1.1 * (c) 2005-2007 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style = license. * For details, see the Prototype web site: http://www.prototypejs.org/ * /*-----------------------------------------------------------------------= ---*/ var Prototype =3D { Version: '1.5.1.1', Browser: { IE: !!(window.attachEvent && !window.opera), Opera: !!window.opera, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.userAgent.indexOf('Gecko') > -1 && = navigator.userAgent.indexOf('KHTML') =3D=3D -1 }, BrowserFeatures: { XPath: !!document.evaluate, ElementExtensions: !!window.HTMLElement, SpecificElementExtensions: (document.createElement('div').__proto__ !=3D=3D document.createElement('form').__proto__) }, ScriptFragment: ']*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } } var Class =3D { create: function() { return function() { this.initialize.apply(this, arguments); } } } var Abstract =3D new Object(); Object.extend =3D function(destination, source) { for (var property in source) { destination[property] =3D source[property]; } return destination; } Object.extend(Object, { inspect: function(object) { try { if (object =3D=3D=3D undefined) return 'undefined'; if (object =3D=3D=3D null) return 'null'; return object.inspect ? object.inspect() : object.toString(); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } }, toJSON: function(object) { var type =3D typeof object; switch(type) { case 'undefined': case 'function': case 'unknown': return; case 'boolean': return object.toString(); } if (object =3D=3D=3D null) return 'null'; if (object.toJSON) return object.toJSON(); if (object.ownerDocument =3D=3D=3D document) return; var results =3D []; for (var property in object) { var value =3D Object.toJSON(object[property]); if (value !=3D=3D undefined) results.push(property.toJSON() + ': ' + value); } return '{' + results.join(', ') + '}'; }, keys: function(object) { var keys =3D []; for (var property in object) keys.push(property); return keys; }, values: function(object) { var values =3D []; for (var property in object) values.push(object[property]); return values; }, clone: function(object) { return Object.extend({}, object); } }); Function.prototype.bind =3D function() { var __method =3D this, args =3D $A(arguments), object =3D = args.shift(); return function() { return __method.apply(object, args.concat($A(arguments))); } } Function.prototype.bindAsEventListener =3D function(object) { var __method =3D this, args =3D $A(arguments), object =3D = args.shift(); return function(event) { return __method.apply(object, [event || window.event].concat(args)); } } Object.extend(Number.prototype, { toColorPart: function() { return this.toPaddedString(2, 16); }, succ: function() { return this + 1; }, times: function(iterator) { $R(0, this, true).each(iterator); return this; }, toPaddedString: function(length, radix) { var string =3D this.toString(radix || 10); return '0'.times(length - string.length) + string; }, toJSON: function() { return isFinite(this) ? this.toString() : 'null'; } }); Date.prototype.toJSON =3D function() { return '"' + this.getFullYear() + '-' + (this.getMonth() + 1).toPaddedString(2) + '-' + this.getDate().toPaddedString(2) + 'T' + this.getHours().toPaddedString(2) + ':' + this.getMinutes().toPaddedString(2) + ':' + this.getSeconds().toPaddedString(2) + '"'; }; var Try =3D { these: function() { var returnValue; for (var i =3D 0, length =3D arguments.length; i < length; i++) { var lambda =3D arguments[i]; try { returnValue =3D lambda(); break; } catch (e) {} } return returnValue; } } /*-----------------------------------------------------------------------= ---*/ var PeriodicalExecuter =3D Class.create(); PeriodicalExecuter.prototype =3D { initialize: function(callback, frequency) { this.callback =3D callback; this.frequency =3D frequency; this.currentlyExecuting =3D false; this.registerCallback(); }, registerCallback: function() { this.timer =3D setInterval(this.onTimerEvent.bind(this), = this.frequency * 1000); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer =3D null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting =3D true; this.callback(this); } finally { this.currentlyExecuting =3D false; } } } } Object.extend(String, { interpret: function(value) { return value =3D=3D null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, { gsub: function(pattern, replacement) { var result =3D '', source =3D this, match; replacement =3D arguments.callee.prepareReplacement(replacement); while (source.length > 0) { if (match =3D source.match(pattern)) { result +=3D source.slice(0, match.index); result +=3D String.interpret(replacement(match)); source =3D source.slice(match.index + match[0].length); } else { result +=3D source, source =3D ''; } } return result; }, sub: function(pattern, replacement, count) { replacement =3D this.gsub.prepareReplacement(replacement); count =3D count =3D=3D=3D undefined ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); }, scan: function(pattern, iterator) { this.gsub(pattern, iterator); return this; }, truncate: function(length, truncation) { length =3D length || 30; truncation =3D truncation =3D=3D=3D undefined ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : this; }, strip: function() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); }, stripTags: function() { return this.replace(/<\/?[^>]+>/gi, ''); }, stripScripts: function() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), = ''); }, extractScripts: function() { var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img'); var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); }, evalScripts: function() { return this.extractScripts().map(function(script) { return = eval(script) }); }, escapeHTML: function() { var self =3D arguments.callee; self.text.data =3D this; return self.div.innerHTML; }, unescapeHTML: function() { var div =3D document.createElement('div'); div.innerHTML =3D this.stripTags(); return div.childNodes[0] ? (div.childNodes.length > 1 ? $A(div.childNodes).inject('', function(memo, node) { return = memo+node.nodeValue }) : div.childNodes[0].nodeValue) : ''; }, toQueryParams: function(separator) { var match =3D this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return {}; return match[1].split(separator || '&').inject({}, function(hash, = pair) { if ((pair =3D pair.split('=3D'))[0]) { var key =3D decodeURIComponent(pair.shift()); var value =3D pair.length > 1 ? pair.join('=3D') : pair[0]; if (value !=3D undefined) value =3D decodeURIComponent(value); if (key in hash) { if (hash[key].constructor !=3D Array) hash[key] =3D = [hash[key]]; hash[key].push(value); } else hash[key] =3D value; } return hash; }); }, toArray: function() { return this.split(''); }, succ: function() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); }, times: function(count) { var result =3D ''; for (var i =3D 0; i < count; i++) result +=3D this; return result; }, camelize: function() { var parts =3D this.split('-'), len =3D parts.length; if (len =3D=3D 1) return parts[0]; var camelized =3D this.charAt(0) =3D=3D '-' ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) : parts[0]; for (var i =3D 1; i < len; i++) camelized +=3D parts[i].charAt(0).toUpperCase() + = parts[i].substring(1); return camelized; }, capitalize: function() { return this.charAt(0).toUpperCase() + = this.substring(1).toLowerCase(); }, underscore: function() { return this.gsub(/::/, = '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{= 1}_#{2}').gsub(/-/,'_').toLowerCase(); }, dasherize: function() { return this.gsub(/_/,'-'); }, inspect: function(useDoubleQuotes) { var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) { var character =3D String.specialChar[match[0]]; return character ? character : '\\u00' + = match[0].charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') = + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; }, toJSON: function() { return this.inspect(true); }, unfilterJSON: function(filter) { return this.sub(filter || Prototype.JSONFilter, '#{1}'); }, isJSON: function() { var str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); }, evalJSON: function(sanitize) { var json =3D this.unfilterJSON(); try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + = this.inspect()); }, include: function(pattern) { return this.indexOf(pattern) > -1; }, startsWith: function(pattern) { return this.indexOf(pattern) =3D=3D=3D 0; }, endsWith: function(pattern) { var d =3D this.length - pattern.length; return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d; }, empty: function() { return this =3D=3D ''; }, blank: function() { return /^\s*$/.test(this); } }); if (Prototype.Browser.WebKit || Prototype.Browser.IE) = Object.extend(String.prototype, { escapeHTML: function() { return = this.replace(/&/g,'&').replace(//g,'>'); }, unescapeHTML: function() { return = this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); } }); String.prototype.gsub.prepareReplacement =3D function(replacement) { if (typeof replacement =3D=3D 'function') return replacement; var template =3D new Template(replacement); return function(match) { return template.evaluate(match) }; } String.prototype.parseQuery =3D String.prototype.toQueryParams; Object.extend(String.prototype.escapeHTML, { div: document.createElement('div'), text: document.createTextNode('') }); with (String.prototype.escapeHTML) div.appendChild(text); var Template =3D Class.create(); Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/; Template.prototype =3D { initialize: function(template, pattern) { this.template =3D template.toString(); this.pattern =3D pattern || Template.Pattern; }, evaluate: function(object) { return this.template.gsub(this.pattern, function(match) { var before =3D match[1]; if (before =3D=3D '\\') return match[2]; return before + String.interpret(object[match[3]]); }); } } var $break =3D {}, $continue =3D new Error('"throw $continue" is = deprecated, use "return" instead'); var Enumerable =3D { each: function(iterator) { var index =3D 0; try { this._each(function(value) { iterator(value, index++); }); } catch (e) { if (e !=3D $break) throw e; } return this; }, eachSlice: function(number, iterator) { var index =3D -number, slices =3D [], array =3D this.toArray(); while ((index +=3D number) < array.length) slices.push(array.slice(index, index+number)); return slices.map(iterator); }, all: function(iterator) { var result =3D true; this.each(function(value, index) { result =3D result && !!(iterator || Prototype.K)(value, index); if (!result) throw $break; }); return result; }, any: function(iterator) { var result =3D false; this.each(function(value, index) { if (result =3D !!(iterator || Prototype.K)(value, index)) throw $break; }); return result; }, collect: function(iterator) { var results =3D []; this.each(function(value, index) { results.push((iterator || Prototype.K)(value, index)); }); return results; }, detect: function(iterator) { var result; this.each(function(value, index) { if (iterator(value, index)) { result =3D value; throw $break; } }); return result; }, findAll: function(iterator) { var results =3D []; this.each(function(value, index) { if (iterator(value, index)) results.push(value); }); return results; }, grep: function(pattern, iterator) { var results =3D []; this.each(function(value, index) { var stringValue =3D value.toString(); if (stringValue.match(pattern)) results.push((iterator || Prototype.K)(value, index)); }) return results; }, include: function(object) { var found =3D false; this.each(function(value) { if (value =3D=3D object) { found =3D true; throw $break; } }); return found; }, inGroupsOf: function(number, fillWith) { fillWith =3D fillWith =3D=3D=3D undefined ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); }, inject: function(memo, iterator) { this.each(function(value, index) { memo =3D iterator(memo, value, index); }); return memo; }, invoke: function(method) { var args =3D $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); }, max: function(iterator) { var result; this.each(function(value, index) { value =3D (iterator || Prototype.K)(value, index); if (result =3D=3D undefined || value >=3D result) result =3D value; }); return result; }, min: function(iterator) { var result; this.each(function(value, index) { value =3D (iterator || Prototype.K)(value, index); if (result =3D=3D undefined || value < result) result =3D value; }); return result; }, partition: function(iterator) { var trues =3D [], falses =3D []; this.each(function(value, index) { ((iterator || Prototype.K)(value, index) ? trues : falses).push(value); }); return [trues, falses]; }, pluck: function(property) { var results =3D []; this.each(function(value, index) { results.push(value[property]); }); return results; }, reject: function(iterator) { var results =3D []; this.each(function(value, index) { if (!iterator(value, index)) results.push(value); }); return results; }, sortBy: function(iterator) { return this.map(function(value, index) { return {value: value, criteria: iterator(value, index)}; }).sort(function(left, right) { var a =3D left.criteria, b =3D right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); }, toArray: function() { return this.map(); }, zip: function() { var iterator =3D Prototype.K, args =3D $A(arguments); if (typeof args.last() =3D=3D 'function') iterator =3D args.pop(); var collections =3D [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); }, size: function() { return this.toArray().length; }, inspect: function() { return '#'; } } Object.extend(Enumerable, { map: Enumerable.collect, find: Enumerable.detect, select: Enumerable.findAll, member: Enumerable.include, entries: Enumerable.toArray }); var $A =3D Array.from =3D function(iterable) { if (!iterable) return []; if (iterable.toArray) { return iterable.toArray(); } else { var results =3D []; for (var i =3D 0, length =3D iterable.length; i < length; i++) results.push(iterable[i]); return results; } } if (Prototype.Browser.WebKit) { $A =3D Array.from =3D function(iterable) { if (!iterable) return []; if (!(typeof iterable =3D=3D 'function' && iterable =3D=3D '[object = NodeList]') && iterable.toArray) { return iterable.toArray(); } else { var results =3D []; for (var i =3D 0, length =3D iterable.length; i < length; i++) results.push(iterable[i]); return results; } } } Object.extend(Array.prototype, Enumerable); if (!Array.prototype._reverse) Array.prototype._reverse =3D Array.prototype.reverse; Object.extend(Array.prototype, { _each: function(iterator) { for (var i =3D 0, length =3D this.length; i < length; i++) iterator(this[i]); }, clear: function() { this.length =3D 0; return this; }, first: function() { return this[0]; }, last: function() { return this[this.length - 1]; }, compact: function() { return this.select(function(value) { return value !=3D null; }); }, flatten: function() { return this.inject([], function(array, value) { return array.concat(value && value.constructor =3D=3D Array ? value.flatten() : [value]); }); }, without: function() { var values =3D $A(arguments); return this.select(function(value) { return !values.include(value); }); }, indexOf: function(object) { for (var i =3D 0, length =3D this.length; i < length; i++) if (this[i] =3D=3D object) return i; return -1; }, reverse: function(inline) { return (inline !=3D=3D false ? this : this.toArray())._reverse(); }, reduce: function() { return this.length > 1 ? this : this[0]; }, uniq: function(sorted) { return this.inject([], function(array, value, index) { if (0 =3D=3D index || (sorted ? array.last() !=3D value : = !array.include(value))) array.push(value); return array; }); }, clone: function() { return [].concat(this); }, size: function() { return this.length; }, inspect: function() { return '[' + this.map(Object.inspect).join(', ') + ']'; }, toJSON: function() { var results =3D []; this.each(function(object) { var value =3D Object.toJSON(object); if (value !=3D=3D undefined) results.push(value); }); return '[' + results.join(', ') + ']'; } }); Array.prototype.toArray =3D Array.prototype.clone; function $w(string) { string =3D string.strip(); return string ? string.split(/\s+/) : []; } if (Prototype.Browser.Opera){ Array.prototype.concat =3D function() { var array =3D []; for (var i =3D 0, length =3D this.length; i < length; i++) = array.push(this[i]); for (var i =3D 0, length =3D arguments.length; i < length; i++) { if (arguments[i].constructor =3D=3D Array) { for (var j =3D 0, arrayLength =3D arguments[i].length; j < = arrayLength; j++) array.push(arguments[i][j]); } else { array.push(arguments[i]); } } return array; } } var Hash =3D function(object) { if (object instanceof Hash) this.merge(object); else Object.extend(this, object || {}); }; Object.extend(Hash, { toQueryString: function(obj) { var parts =3D []; parts.add =3D arguments.callee.addPair; this.prototype._each.call(obj, function(pair) { if (!pair.key) return; var value =3D pair.value; if (value && typeof value =3D=3D 'object') { if (value.constructor =3D=3D Array) value.each(function(value) { parts.add(pair.key, value); }); return; } parts.add(pair.key, value); }); return parts.join('&'); }, toJSON: function(object) { var results =3D []; this.prototype._each.call(object, function(pair) { var value =3D Object.toJSON(pair.value); if (value !=3D=3D undefined) results.push(pair.key.toJSON() + ': ' = + value); }); return '{' + results.join(', ') + '}'; } }); Hash.toQueryString.addPair =3D function(key, value, prefix) { key =3D encodeURIComponent(key); if (value =3D=3D=3D undefined) this.push(key); else this.push(key + '=3D' + (value =3D=3D null ? '' : = encodeURIComponent(value))); } Object.extend(Hash.prototype, Enumerable); Object.extend(Hash.prototype, { _each: function(iterator) { for (var key in this) { var value =3D this[key]; if (value && value =3D=3D Hash.prototype[key]) continue; var pair =3D [key, value]; pair.key =3D key; pair.value =3D value; iterator(pair); } }, keys: function() { return this.pluck('key'); }, values: function() { return this.pluck('value'); }, merge: function(hash) { return $H(hash).inject(this, function(mergedHash, pair) { mergedHash[pair.key] =3D pair.value; return mergedHash; }); }, remove: function() { var result; for(var i =3D 0, length =3D arguments.length; i < length; i++) { var value =3D this[arguments[i]]; if (value !=3D=3D undefined){ if (result =3D=3D=3D undefined) result =3D value; else { if (result.constructor !=3D Array) result =3D [result]; result.push(value) } } delete this[arguments[i]]; } return result; }, toQueryString: function() { return Hash.toQueryString(this); }, inspect: function() { return '#'; }, toJSON: function() { return Hash.toJSON(this); } }); function $H(object) { if (object instanceof Hash) return object; return new Hash(object); }; // Safari iterates over shadowed properties if (function() { var i =3D 0, Test =3D function(value) { this.key =3D value }; Test.prototype.key =3D 'foo'; for (var property in new Test('bar')) i++; return i > 1; }()) Hash.prototype._each =3D function(iterator) { var cache =3D []; for (var key in this) { var value =3D this[key]; if ((value && value =3D=3D Hash.prototype[key]) || = cache.include(key)) continue; cache.push(key); var pair =3D [key, value]; pair.key =3D key; pair.value =3D value; iterator(pair); } }; ObjectRange =3D Class.create(); Object.extend(ObjectRange.prototype, Enumerable); Object.extend(ObjectRange.prototype, { initialize: function(start, end, exclusive) { this.start =3D start; this.end =3D end; this.exclusive =3D exclusive; }, _each: function(iterator) { var value =3D this.start; while (this.include(value)) { iterator(value); value =3D value.succ(); } }, include: function(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <=3D this.end; } }); var $R =3D function(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var Ajax =3D { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 } Ajax.Responders =3D { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders =3D this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (typeof responder[callback] =3D=3D 'function') { try { responder[callback].apply(responder, [request, transport, = json]); } catch (e) {} } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++; }, onComplete: function() { Ajax.activeRequestCount--; } }); Ajax.Base =3D function() {}; Ajax.Base.prototype =3D { setOptions: function(options) { this.options =3D { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '' } Object.extend(this.options, options || {}); this.options.method =3D this.options.method.toLowerCase(); if (typeof this.options.parameters =3D=3D 'string') this.options.parameters =3D = this.options.parameters.toQueryParams(); } } Ajax.Request =3D Class.create(); Ajax.Request.Events =3D ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Request.prototype =3D Object.extend(new Ajax.Base(), { _complete: false, initialize: function(url, options) { this.transport =3D Ajax.getTransport(); this.setOptions(options); this.request(url); }, request: function(url) { this.url =3D url; this.method =3D this.options.method; var params =3D Object.clone(this.options.parameters); if (!['get', 'post'].include(this.method)) { // simulate other verbs over post params['_method'] =3D this.method; this.method =3D 'post'; } this.parameters =3D params; if (params =3D Hash.toQueryString(params)) { // when GET, append parameters to URL if (this.method =3D=3D 'get') this.url +=3D (this.url.include('?') ? '&' : '?') + params; else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) params +=3D '&_=3D'; } try { if (this.options.onCreate) this.options.onCreate(this.transport); Ajax.Responders.dispatch('onCreate', this, this.transport); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) setTimeout(function() { this.respondToReadyState(1) = }.bind(this), 10); this.transport.onreadystatechange =3D = this.onStateChange.bind(this); this.setRequestHeaders(); this.body =3D this.method =3D=3D 'post' ? (this.options.postBody = || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests = */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState =3D this.transport.readyState; if (readyState > 1 && !((readyState =3D=3D 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers =3D { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, = */*' }; if (this.method =3D=3D 'post') { headers['Content-type'] =3D this.options.contentType + (this.options.encoding ? '; charset=3D' + this.options.encoding = : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < = 2005) headers['Connection'] =3D 'close'; } // user-defined headers if (typeof this.options.requestHeaders =3D=3D 'object') { var extras =3D this.options.requestHeaders; if (typeof extras.push =3D=3D 'function') for (var i =3D 0, length =3D extras.length; i < length; i +=3D = 2) headers[extras[i]] =3D extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] =3D = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { return !this.transport.status || (this.transport.status >=3D 200 && this.transport.status < = 300); }, respondToReadyState: function(readyState) { var state =3D Ajax.Request.Events[readyState]; var transport =3D this.transport, json =3D this.evalJSON(); if (state =3D=3D 'Complete') { try { this._complete =3D true; (this.options['on' + this.transport.status] || this.options['on' + (this.success() ? 'Success' : = 'Failure')] || Prototype.emptyFunction)(transport, json); } catch (e) { this.dispatchException(e); } var contentType =3D this.getHeader('Content-type'); if (contentType && contentType.strip(). match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i)) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(transport, = json); Ajax.Responders.dispatch('on' + state, this, transport, json); } catch (e) { this.dispatchException(e); } if (state =3D=3D 'Complete') { // avoid memory leak in MSIE: clean up this.transport.onreadystatechange =3D Prototype.emptyFunction; } }, getHeader: function(name) { try { return this.transport.getResponseHeader(name); } catch (e) { return null } }, evalJSON: function() { try { var json =3D this.getHeader('X-JSON'); return json ? json.evalJSON() : null; } catch (e) { return null } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, = exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Updater =3D Class.create(); Object.extend(Object.extend(Ajax.Updater.prototype, = Ajax.Request.prototype), { initialize: function(container, url, options) { this.container =3D { success: (container.success || container), failure: (container.failure || (container.success ? null : = container)) } this.transport =3D Ajax.getTransport(); this.setOptions(options); var onComplete =3D this.options.onComplete || = Prototype.emptyFunction; this.options.onComplete =3D (function(transport, param) { this.updateContent(); onComplete(transport, param); }).bind(this); this.request(url); }, updateContent: function() { var receiver =3D this.container[this.success() ? 'success' : = 'failure']; var response =3D this.transport.responseText; if (!this.options.evalScripts) response =3D response.stripScripts(); if (receiver =3D $(receiver)) { if (this.options.insertion) new this.options.insertion(receiver, response); else receiver.update(response); } if (this.success()) { if (this.onComplete) setTimeout(this.onComplete.bind(this), 10); } } }); Ajax.PeriodicalUpdater =3D Class.create(); Ajax.PeriodicalUpdater.prototype =3D Object.extend(new Ajax.Base(), { initialize: function(container, url, options) { this.setOptions(options); this.onComplete =3D this.options.onComplete; this.frequency =3D (this.options.frequency || 2); this.decay =3D (this.options.decay || 1); this.updater =3D {}; this.container =3D container; this.url =3D url; this.start(); }, start: function() { this.options.onComplete =3D this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete =3D undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(request) { if (this.options.decay) { this.decay =3D (request.responseText =3D=3D this.lastText ? this.decay * this.options.decay : 1); this.lastText =3D request.responseText; } this.timer =3D setTimeout(this.onTimerEvent.bind(this), this.decay * this.frequency * 1000); }, onTimerEvent: function() { this.updater =3D new Ajax.Updater(this.container, this.url, = this.options); } }); function $(element) { if (arguments.length > 1) { for (var i =3D 0, elements =3D [], length =3D arguments.length; i < = length; i++) elements.push($(arguments[i])); return elements; } if (typeof element =3D=3D 'string') element =3D document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath =3D function(expression, parentElement) { var results =3D []; var query =3D document.evaluate(expression, $(parentElement) || = document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i =3D 0, length =3D query.snapshotLength; i < length; i++) results.push(query.snapshotItem(i)); return results; }; document.getElementsByClassName =3D function(className, parentElement) = { var q =3D ".//*[contains(concat(' ', @class, ' '), ' " + className + = " ')]"; return document._getElementsByXPath(q, parentElement); } } else document.getElementsByClassName =3D function(className, = parentElement) { var children =3D ($(parentElement) || = document.body).getElementsByTagName('*'); var elements =3D [], child, pattern =3D new RegExp("(^|\\s)" + = className + "(\\s|$)"); for (var i =3D 0, length =3D children.length; i < length; i++) { child =3D children[i]; var elementClassName =3D child.className; if (elementClassName.length =3D=3D 0) continue; if (elementClassName =3D=3D className || = elementClassName.match(pattern)) elements.push(Element.extend(child)); } return elements; }; /*-----------------------------------------------------------------------= ---*/ if (!window.Element) var Element =3D {}; Element.extend =3D function(element) { var F =3D Prototype.BrowserFeatures; if (!element || !element.tagName || element.nodeType =3D=3D 3 || element._extended || F.SpecificElementExtensions || element =3D=3D = window) return element; var methods =3D {}, tagName =3D element.tagName, cache =3D = Element.extend.cache, T =3D Element.Methods.ByTag; // extend methods for all tags (Safari doesn't need this) if (!F.ElementExtensions) { Object.extend(methods, Element.Methods), Object.extend(methods, Element.Methods.Simulated); } // extend methods for specific tags if (T[tagName]) Object.extend(methods, T[tagName]); for (var property in methods) { var value =3D methods[property]; if (typeof value =3D=3D 'function' && !(property in element)) element[property] =3D cache.findOrStore(value); } element._extended =3D Prototype.emptyFunction; return element; }; Element.extend.cache =3D { findOrStore: function(value) { return this[value] =3D this[value] || function() { return value.apply(null, [this].concat($A(arguments))); } } }; Element.Methods =3D { visible: function(element) { return $(element).style.display !=3D 'none'; }, toggle: function(element) { element =3D $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { $(element).style.display =3D 'none'; return element; }, show: function(element) { $(element).style.display =3D ''; return element; }, remove: function(element) { element =3D $(element); element.parentNode.removeChild(element); return element; }, update: function(element, html) { html =3D typeof html =3D=3D 'undefined' ? '' : html.toString(); $(element).innerHTML =3D html.stripScripts(); setTimeout(function() {html.evalScripts()}, 10); return element; }, replace: function(element, html) { element =3D $(element); html =3D typeof html =3D=3D 'undefined' ? '' : html.toString(); if (element.outerHTML) { element.outerHTML =3D html.stripScripts(); } else { var range =3D element.ownerDocument.createRange(); range.selectNodeContents(element); element.parentNode.replaceChild( range.createContextualFragment(html.stripScripts()), element); } setTimeout(function() {html.evalScripts()}, 10); return element; }, inspect: function(element) { element =3D $(element); var result =3D '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property =3D pair.first(), attribute =3D pair.last(); var value =3D (element[property] || '').toString(); if (value) result +=3D ' ' + attribute + '=3D' + = value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property) { element =3D $(element); var elements =3D []; while (element =3D element[property]) if (element.nodeType =3D=3D 1) elements.push(Element.extend(element)); return elements; }, ancestors: function(element) { return $(element).recursivelyCollect('parentNode'); }, descendants: function(element) { return = $A($(element).getElementsByTagName('*')).each(Element.extend); }, firstDescendant: function(element) { element =3D $(element).firstChild; while (element && element.nodeType !=3D 1) element =3D = element.nextSibling; return $(element); }, immediateDescendants: function(element) { if (!(element =3D $(element).firstChild)) return []; while (element && element.nodeType !=3D 1) element =3D = element.nextSibling; if (element) return [element].concat($(element).nextSiblings()); return []; }, previousSiblings: function(element) { return $(element).recursivelyCollect('previousSibling'); }, nextSiblings: function(element) { return $(element).recursivelyCollect('nextSibling'); }, siblings: function(element) { element =3D $(element); return = element.previousSiblings().reverse().concat(element.nextSiblings()); }, match: function(element, selector) { if (typeof selector =3D=3D 'string') selector =3D new Selector(selector); return selector.match($(element)); }, up: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return $(element.parentNode); var ancestors =3D element.ancestors(); return expression ? Selector.findElement(ancestors, expression, = index) : ancestors[index || 0]; }, down: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return element.firstDescendant(); var descendants =3D element.descendants(); return expression ? Selector.findElement(descendants, expression, = index) : descendants[index || 0]; }, previous: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return = $(Selector.handlers.previousElementSibling(element)); var previousSiblings =3D element.previousSiblings(); return expression ? Selector.findElement(previousSiblings, = expression, index) : previousSiblings[index || 0]; }, next: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return = $(Selector.handlers.nextElementSibling(element)); var nextSiblings =3D element.nextSiblings(); return expression ? Selector.findElement(nextSiblings, expression, = index) : nextSiblings[index || 0]; }, getElementsBySelector: function() { var args =3D $A(arguments), element =3D $(args.shift()); return Selector.findChildElements(element, args); }, getElementsByClassName: function(element, className) { return document.getElementsByClassName(className, element); }, readAttribute: function(element, name) { element =3D $(element); if (Prototype.Browser.IE) { if (!element.attributes) return null; var t =3D Element._attributeTranslations; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name =3D t.names[name]; var attribute =3D element.attributes[name]; return attribute ? attribute.nodeValue : null; } return element.getAttribute(name); }, getHeight: function(element) { return $(element).getDimensions().height; }, getWidth: function(element) { return $(element).getDimensions().width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element =3D $(element))) return; var elementClassName =3D element.className; if (elementClassName.length =3D=3D 0) return false; if (elementClassName =3D=3D className || elementClassName.match(new RegExp("(^|\\s)" + className + = "(\\s|$)"))) return true; return false; }, addClassName: function(element, className) { if (!(element =3D $(element))) return; Element.classNames(element).add(className); return element; }, removeClassName: function(element, className) { if (!(element =3D $(element))) return; Element.classNames(element).remove(className); return element; }, toggleClassName: function(element, className) { if (!(element =3D $(element))) return; Element.classNames(element)[element.hasClassName(className) ? = 'remove' : 'add'](className); return element; }, observe: function() { Event.observe.apply(Event, arguments); return $A(arguments).first(); }, stopObserving: function() { Event.stopObserving.apply(Event, arguments); return $A(arguments).first(); }, // removes whitespace-only text node children cleanWhitespace: function(element) { element =3D $(element); var node =3D element.firstChild; while (node) { var nextNode =3D node.nextSibling; if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node =3D nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element =3D $(element), ancestor =3D $(ancestor); while (element =3D element.parentNode) if (element =3D=3D ancestor) return true; return false; }, scrollTo: function(element) { element =3D $(element); var pos =3D Position.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element =3D $(element); style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize(); var value =3D element.style[style]; if (!value) { var css =3D document.defaultView.getComputedStyle(element, null); value =3D css ? css[style] : null; } if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0; return value =3D=3D 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles, camelized) { element =3D $(element); var elementStyle =3D element.style; for (var property in styles) if (property =3D=3D 'opacity') = element.setOpacity(styles[property]) else elementStyle[(property =3D=3D 'float' || property =3D=3D = 'cssFloat') ? (elementStyle.styleFloat =3D=3D=3D undefined ? 'cssFloat' : = 'styleFloat') : (camelized ? property : property.camelize())] =3D = styles[property]; return element; }, setOpacity: function(element, value) { element =3D $(element); element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' : (value < 0.00001) ? 0 : value; return element; }, getDimensions: function(element) { element =3D $(element); var display =3D $(element).getStyle('display'); if (display !=3D 'none' && display !=3D null) // Safari bug return {width: element.offsetWidth, height: element.offsetHeight}; // All *Width and *Height properties give 0 on elements with display = none, // so enable the element temporarily var els =3D element.style; var originalVisibility =3D els.visibility; var originalPosition =3D els.position; var originalDisplay =3D els.display; els.visibility =3D 'hidden'; els.position =3D 'absolute'; els.display =3D 'block'; var originalWidth =3D element.clientWidth; var originalHeight =3D element.clientHeight; els.display =3D originalDisplay; els.position =3D originalPosition; els.visibility =3D originalVisibility; return {width: originalWidth, height: originalHeight}; }, makePositioned: function(element) { element =3D $(element); var pos =3D Element.getStyle(element, 'position'); if (pos =3D=3D 'static' || !pos) { element._madePositioned =3D true; element.style.position =3D 'relative'; // Opera returns the offset relative to the positioning context, = when an // element is position relative but top and left have not been = defined if (window.opera) { element.style.top =3D 0; element.style.left =3D 0; } } return element; }, undoPositioned: function(element) { element =3D $(element); if (element._madePositioned) { element._madePositioned =3D undefined; element.style.position =3D element.style.top =3D element.style.left =3D element.style.bottom =3D element.style.right =3D ''; } return element; }, makeClipping: function(element) { element =3D $(element); if (element._overflow) return element; element._overflow =3D element.style.overflow || 'auto'; if ((Element.getStyle(element, 'overflow') || 'visible') !=3D = 'hidden') element.style.overflow =3D 'hidden'; return element; }, undoClipping: function(element) { element =3D $(element); if (!element._overflow) return element; element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : = element._overflow; element._overflow =3D null; return element; } }; Object.extend(Element.Methods, { childOf: Element.Methods.descendantOf, childElements: Element.Methods.immediateDescendants }); if (Prototype.Browser.Opera) { Element.Methods._getStyle =3D Element.Methods.getStyle; Element.Methods.getStyle =3D function(element, style) { switch(style) { case 'left': case 'top': case 'right': case 'bottom': if (Element._getStyle(element, 'position') =3D=3D 'static') = return null; default: return Element._getStyle(element, style); } }; } else if (Prototype.Browser.IE) { Element.Methods.getStyle =3D function(element, style) { element =3D $(element); style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? = 'styleFloat' : style.camelize(); var value =3D element.style[style]; if (!value && element.currentStyle) value =3D = element.currentStyle[style]; if (style =3D=3D 'opacity') { if (value =3D (element.getStyle('filter') || = '').match(/alpha\(opacity=3D(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value =3D=3D 'auto') { if ((style =3D=3D 'width' || style =3D=3D 'height') && = (element.getStyle('display') !=3D 'none')) return element['offset'+style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity =3D function(element, value) { element =3D $(element); var filter =3D element.getStyle('filter'), style =3D element.style; if (value =3D=3D 1 || value =3D=3D=3D '') { style.filter =3D filter.replace(/alpha\([^\)]*\)/gi,''); return element; } else if (value < 0.00001) value =3D 0; style.filter =3D filter.replace(/alpha\([^\)]*\)/gi, '') + 'alpha(opacity=3D' + (value * 100) + ')'; return element; }; // IE is missing .innerHTML support for TABLE-related elements Element.Methods.update =3D function(element, html) { element =3D $(element); html =3D typeof html =3D=3D 'undefined' ? '' : html.toString(); var tagName =3D element.tagName.toUpperCase(); if (['THEAD','TBODY','TR','TD'].include(tagName)) { var div =3D document.createElement('div'); switch (tagName) { case 'THEAD': case 'TBODY': div.innerHTML =3D '' + html.stripScripts() + = '
'; depth =3D 2; break; case 'TR': div.innerHTML =3D '' + html.stripScripts() = + '
'; depth =3D 3; break; case 'TD': div.innerHTML =3D '
' + = html.stripScripts() + '
'; depth =3D 4; } $A(element.childNodes).each(function(node) { = element.removeChild(node) }); depth.times(function() { div =3D div.firstChild }); $A(div.childNodes).each(function(node) { element.appendChild(node) = }); } else { element.innerHTML =3D html.stripScripts(); } setTimeout(function() { html.evalScripts() }, 10); return element; } } else if (Prototype.Browser.Gecko) { Element.Methods.setOpacity =3D function(element, value) { element =3D $(element); element.style.opacity =3D (value =3D=3D 1) ? 0.999999 : (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } Element._attributeTranslations =3D { names: { colspan: "colSpan", rowspan: "rowSpan", valign: "vAlign", datetime: "dateTime", accesskey: "accessKey", tabindex: "tabIndex", enctype: "encType", maxlength: "maxLength", readonly: "readOnly", longdesc: "longDesc" }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute, 2); }, _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { var node =3D element.getAttributeNode('title'); return node.specified ? node.nodeValue : null; } } }; (function() { Object.extend(this, { href: this._getAttr, src: this._getAttr, type: this._getAttr, disabled: this._flag, checked: this._flag, readonly: this._flag, multiple: this._flag }); }).call(Element._attributeTranslations.values); Element.Methods.Simulated =3D { hasAttribute: function(element, attribute) { var t =3D Element._attributeTranslations, node; attribute =3D t.names[attribute] || attribute; node =3D $(element).getAttributeNode(attribute); return node && node.specified; } }; Element.Methods.ByTag =3D {}; Object.extend(Element, Element.Methods); if (!Prototype.BrowserFeatures.ElementExtensions && document.createElement('div').__proto__) { window.HTMLElement =3D {}; window.HTMLElement.prototype =3D = document.createElement('div').__proto__; Prototype.BrowserFeatures.ElementExtensions =3D true; } Element.hasAttribute =3D function(element, attribute) { if (element.hasAttribute) return element.hasAttribute(attribute); return Element.Methods.Simulated.hasAttribute(element, attribute); }; Element.addMethods =3D function(methods) { var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods) }); } if (arguments.length =3D=3D 2) { var tagName =3D methods; methods =3D arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || {}); else { if (tagName.constructor =3D=3D Array) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName =3D tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] =3D {}; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent =3D onlyIfAbsent || false; var cache =3D Element.extend.cache; for (var property in methods) { var value =3D methods[property]; if (!onlyIfAbsent || !(property in destination)) destination[property] =3D cache.findOrStore(value); } } function findDOMClass(tagName) { var klass; var trans =3D { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": = "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": = "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", = "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", = "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", = "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass =3D 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass =3D 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; window[klass] =3D {}; window[klass].prototype =3D = document.createElement(tagName).__proto__; return window[klass]; } if (F.ElementExtensions) { copy(Element.Methods, HTMLElement.prototype); copy(Element.Methods.Simulated, HTMLElement.prototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass =3D findDOMClass(tag); if (typeof klass =3D=3D "undefined") continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; }; var Toggle =3D { display: Element.toggle }; /*-----------------------------------------------------------------------= ---*/ Abstract.Insertion =3D function(adjacency) { this.adjacency =3D adjacency; } Abstract.Insertion.prototype =3D { initialize: function(element, content) { this.element =3D $(element); this.content =3D content.stripScripts(); if (this.adjacency && this.element.insertAdjacentHTML) { try { this.element.insertAdjacentHTML(this.adjacency, this.content); } catch (e) { var tagName =3D this.element.tagName.toUpperCase(); if (['TBODY', 'TR'].include(tagName)) { this.insertContent(this.contentFromAnonymousTable()); } else { throw e; } } } else { this.range =3D this.element.ownerDocument.createRange(); if (this.initializeRange) this.initializeRange(); = this.insertContent([this.range.createContextualFragment(this.content)]); } setTimeout(function() {content.evalScripts()}, 10); }, contentFromAnonymousTable: function() { var div =3D document.createElement('div'); div.innerHTML =3D '' + this.content + = '
'; return $A(div.childNodes[0].childNodes[0].childNodes); } } var Insertion =3D new Object(); Insertion.Before =3D Class.create(); Insertion.Before.prototype =3D Object.extend(new = Abstract.Insertion('beforeBegin'), { initializeRange: function() { this.range.setStartBefore(this.element); }, insertContent: function(fragments) { fragments.each((function(fragment) { this.element.parentNode.insertBefore(fragment, this.element); }).bind(this)); } }); Insertion.Top =3D Class.create(); Insertion.Top.prototype =3D Object.extend(new = Abstract.Insertion('afterBegin'), { initializeRange: function() { this.range.selectNodeContents(this.element); this.range.collapse(true); }, insertContent: function(fragments) { fragments.reverse(false).each((function(fragment) { this.element.insertBefore(fragment, this.element.firstChild); }).bind(this)); } }); Insertion.Bottom =3D Class.create(); Insertion.Bottom.prototype =3D Object.extend(new = Abstract.Insertion('beforeEnd'), { initializeRange: function() { this.range.selectNodeContents(this.element); this.range.collapse(this.element); }, insertContent: function(fragments) { fragments.each((function(fragment) { this.element.appendChild(fragment); }).bind(this)); } }); Insertion.After =3D Class.create(); Insertion.After.prototype =3D Object.extend(new = Abstract.Insertion('afterEnd'), { initializeRange: function() { this.range.setStartAfter(this.element); }, insertContent: function(fragments) { fragments.each((function(fragment) { this.element.parentNode.insertBefore(fragment, this.element.nextSibling); }).bind(this)); } }); /*-----------------------------------------------------------------------= ---*/ Element.ClassNames =3D Class.create(); Element.ClassNames.prototype =3D { initialize: function(element) { this.element =3D $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className =3D className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /* Portions of the Selector class are derived from Jack = Slocum=C3=A2=E2=82=AC=E2=84=A2s DomQuery, * part of YUI-Ext version 0.40, distributed under the terms of an = MIT-style * license. Please see http://www.yui-ext.com/ for more information. */ var Selector =3D Class.create(); Selector.prototype =3D { initialize: function(expression) { this.expression =3D expression.strip(); this.compileMatcher(); }, compileMatcher: function() { // Selectors with namespaced attributes can't use the XPath version if (Prototype.BrowserFeatures.XPath && = !(/\[[\w-]*?:/).test(this.expression)) return this.compileXPathMatcher(); var e =3D this.expression, ps =3D Selector.patterns, h =3D = Selector.handlers, c =3D Selector.criteria, le, p, m; if (Selector._cache[e]) { this.matcher =3D Selector._cache[e]; return; } this.matcher =3D ["this.matcher =3D function(root) {", "var r =3D root, h =3D Selector.handlers, c =3D = false, n;"]; while (e && le !=3D e && (/\S/).test(e)) { le =3D e; for (var i in ps) { p =3D ps[i]; if (m =3D e.match(p)) { this.matcher.push(typeof c[i] =3D=3D 'function' ? c[i](m) : new Template(c[i]).evaluate(m)); e =3D e.replace(m[0], ''); break; } } } this.matcher.push("return h.unique(n);\n}"); eval(this.matcher.join('\n')); Selector._cache[this.expression] =3D this.matcher; }, compileXPathMatcher: function() { var e =3D this.expression, ps =3D Selector.patterns, x =3D Selector.xpath, le, m; if (Selector._cache[e]) { this.xpath =3D Selector._cache[e]; return; } this.matcher =3D ['.//*']; while (e && le !=3D e && (/\S/).test(e)) { le =3D e; for (var i in ps) { if (m =3D e.match(ps[i])) { this.matcher.push(typeof x[i] =3D=3D 'function' ? x[i](m) : new Template(x[i]).evaluate(m)); e =3D e.replace(m[0], ''); break; } } } this.xpath =3D this.matcher.join(''); Selector._cache[this.expression] =3D this.xpath; }, findElements: function(root) { root =3D root || document; if (this.xpath) return document._getElementsByXPath(this.xpath, = root); return this.matcher(root); }, match: function(element) { return this.findElements(document).include(element); }, toString: function() { return this.expression; }, inspect: function() { return "#"; } }; Object.extend(Selector, { _cache: {}, xpath: { descendant: "//*", child: "/*", adjacent: "/following-sibling::*[1]", laterSibling: '/following-sibling::*', tagName: function(m) { if (m[1] =3D=3D '*') return ''; return "[local-name()=3D'" + m[1].toLowerCase() + "' or local-name()=3D'" + m[1].toUpperCase() + "']"; }, className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", id: "[@id=3D'#{1}']", attrPresence: "[@#{1}]", attr: function(m) { m[3] =3D m[5] || m[6]; return new Template(Selector.xpath.operators[m[2]]).evaluate(m); }, pseudo: function(m) { var h =3D Selector.xpath.pseudos[m[1]]; if (!h) return ''; if (typeof h =3D=3D=3D 'function') return h(m); return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); }, operators: { '=3D': "[@#{1}=3D'#{3}']", '!=3D': "[@#{1}!=3D'#{3}']", '^=3D': "[starts-with(@#{1}, '#{3}')]", '$=3D': "[substring(@#{1}, (string-length(@#{1}) - = string-length('#{3}') + 1))=3D'#{3}']", '*=3D': "[contains(@#{1}, '#{3}')]", '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" }, pseudos: { 'first-child': '[not(preceding-sibling::*)]', 'last-child': '[not(following-sibling::*)]', 'only-child': '[not(preceding-sibling::* or = following-sibling::*)]', 'empty': "[count(*) =3D 0 and (count(text()) =3D 0 or = translate(text(), ' \t\r\n', '') =3D '')]", 'checked': "[@checked]", 'disabled': "[@disabled]", 'enabled': "[not(@disabled)]", 'not': function(m) { var e =3D m[6], p =3D Selector.patterns, x =3D Selector.xpath, le, m, v; var exclusion =3D []; while (e && le !=3D e && (/\S/).test(e)) { le =3D e; for (var i in p) { if (m =3D e.match(p[i])) { v =3D typeof x[i] =3D=3D 'function' ? x[i](m) : new = Template(x[i]).evaluate(m); exclusion.push("(" + v.substring(1, v.length - 1) + ")"); e =3D e.replace(m[0], ''); break; } } } return "[not(" + exclusion.join(" and ") + ")]"; }, 'nth-child': function(m) { return = Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); }, 'nth-last-child': function(m) { return = Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); }, 'nth-of-type': function(m) { return Selector.xpath.pseudos.nth("position() ", m); }, 'nth-last-of-type': function(m) { return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", = m); }, 'first-of-type': function(m) { m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m); }, 'last-of-type': function(m) { m[6] =3D "1"; return = Selector.xpath.pseudos['nth-last-of-type'](m); }, 'only-of-type': function(m) { var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + = p['last-of-type'](m); }, nth: function(fragment, m) { var mm, formula =3D m[6], predicate; if (formula =3D=3D 'even') formula =3D '2n+0'; if (formula =3D=3D 'odd') formula =3D '2n+1'; if (mm =3D formula.match(/^(\d+)$/)) // digit only return '[' + fragment + "=3D " + mm[1] + ']'; if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (mm[1] =3D=3D "-") mm[1] =3D -1; var a =3D mm[1] ? Number(mm[1]) : 1; var b =3D mm[2] ? Number(mm[2]) : 0; predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " + "((#{fragment} - #{b}) div #{a} >=3D 0)]"; return new Template(predicate).evaluate({ fragment: fragment, a: a, b: b }); } } } }, criteria: { tagName: 'n =3D h.tagName(n, r, "#{1}", c); c =3D false;', className: 'n =3D h.className(n, r, "#{1}", c); c =3D false;', id: 'n =3D h.id(n, r, "#{1}", c); c =3D false;', attrPresence: 'n =3D h.attrPresence(n, r, "#{1}"); c =3D false;', attr: function(m) { m[3] =3D (m[5] || m[6]); return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = =3D false;').evaluate(m); }, pseudo: function(m) { if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"'); return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c = =3D false;').evaluate(m); }, descendant: 'c =3D "descendant";', child: 'c =3D "child";', adjacent: 'c =3D "adjacent";', laterSibling: 'c =3D "laterSibling";' }, patterns: { // combinators must be listed first // (and descendant needs to be last combinator) laterSibling: /^\s*~\s*/, child: /^\s*>\s*/, adjacent: /^\s*\+\s*/, descendant: /^\s/, // selectors follow tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, id: /^#([\w\-\*]+)(\b|$)/, className: /^\.([\w\-\*]+)(\b|$)/, pseudo: = /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis= )abled|not)(\((.*?)\))?(\b|$|\s|(?=3D:))/, attrPresence: /^\[([\w]+)\]/, attr: = /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\]]*?)\4|([^'"][^= \]]*?)))?\]/ }, handlers: { // UTILITY FUNCTIONS // joins two collections concat: function(a, b) { for (var i =3D 0, node; node =3D b[i]; i++) a.push(node); return a; }, // marks an array of nodes for counting mark: function(nodes) { for (var i =3D 0, node; node =3D nodes[i]; i++) node._counted =3D true; return nodes; }, unmark: function(nodes) { for (var i =3D 0, node; node =3D nodes[i]; i++) node._counted =3D undefined; return nodes; }, // mark each child node with its position (for nth calls) // "ofType" flag indicates whether we're indexing for nth-of-type // rather than nth-child index: function(parentNode, reverse, ofType) { parentNode._counted =3D true; if (reverse) { for (var nodes =3D parentNode.childNodes, i =3D nodes.length - = 1, j =3D 1; i >=3D 0; i--) { node =3D nodes[i]; if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) = node.nodeIndex =3D j++; } } else { for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node = =3D nodes[i]; i++) if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) = node.nodeIndex =3D j++; } }, // filters out duplicates and extends all nodes unique: function(nodes) { if (nodes.length =3D=3D 0) return nodes; var results =3D [], n; for (var i =3D 0, l =3D nodes.length; i < l; i++) if (!(n =3D nodes[i])._counted) { n._counted =3D true; results.push(Element.extend(n)); } return Selector.handlers.unmark(results); }, // COMBINATOR FUNCTIONS descendant: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) h.concat(results, node.getElementsByTagName('*')); return results; }, child: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { for (var j =3D 0, children =3D [], child; child =3D = node.childNodes[j]; j++) if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') = results.push(child); } return results; }, adjacent: function(nodes) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { var next =3D this.nextElementSibling(node); if (next) results.push(next); } return results; }, laterSibling: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) h.concat(results, Element.nextSiblings(node)); return results; }, nextElementSibling: function(node) { while (node =3D node.nextSibling) if (node.nodeType =3D=3D 1) return node; return null; }, previousElementSibling: function(node) { while (node =3D node.previousSibling) if (node.nodeType =3D=3D 1) return node; return null; }, // TOKEN FUNCTIONS tagName: function(nodes, root, tagName, combinator) { tagName =3D tagName.toUpperCase(); var results =3D [], h =3D Selector.handlers; if (nodes) { if (combinator) { // fastlane for ordinary descendant combinators if (combinator =3D=3D "descendant") { for (var i =3D 0, node; node =3D nodes[i]; i++) h.concat(results, node.getElementsByTagName(tagName)); return results; } else nodes =3D this[combinator](nodes); if (tagName =3D=3D "*") return nodes; } for (var i =3D 0, node; node =3D nodes[i]; i++) if (node.tagName.toUpperCase() =3D=3D tagName) = results.push(node); return results; } else return root.getElementsByTagName(tagName); }, id: function(nodes, root, id, combinator) { var targetNode =3D $(id), h =3D Selector.handlers; if (!nodes && root =3D=3D document) return targetNode ? = [targetNode] : []; if (nodes) { if (combinator) { if (combinator =3D=3D 'child') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (targetNode.parentNode =3D=3D node) return = [targetNode]; } else if (combinator =3D=3D 'descendant') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (Element.descendantOf(targetNode, node)) return = [targetNode]; } else if (combinator =3D=3D 'adjacent') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (Selector.handlers.previousElementSibling(targetNode) = =3D=3D node) return [targetNode]; } else nodes =3D h[combinator](nodes); } for (var i =3D 0, node; node =3D nodes[i]; i++) if (node =3D=3D targetNode) return [targetNode]; return []; } return (targetNode && Element.descendantOf(targetNode, root)) ? = [targetNode] : []; }, className: function(nodes, root, className, combinator) { if (nodes && combinator) nodes =3D this[combinator](nodes); return Selector.handlers.byClassName(nodes, root, className); }, byClassName: function(nodes, root, className) { if (!nodes) nodes =3D Selector.handlers.descendant([root]); var needle =3D ' ' + className + ' '; for (var i =3D 0, results =3D [], node, nodeClassName; node =3D = nodes[i]; i++) { nodeClassName =3D node.className; if (nodeClassName.length =3D=3D 0) continue; if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' = ').include(needle)) results.push(node); } return results; }, attrPresence: function(nodes, root, attr) { var results =3D []; for (var i =3D 0, node; node =3D nodes[i]; i++) if (Element.hasAttribute(node, attr)) results.push(node); return results; }, attr: function(nodes, root, attr, value, operator) { if (!nodes) nodes =3D root.getElementsByTagName("*"); var handler =3D Selector.operators[operator], results =3D []; for (var i =3D 0, node; node =3D nodes[i]; i++) { var nodeValue =3D Element.readAttribute(node, attr); if (nodeValue =3D=3D=3D null) continue; if (handler(nodeValue, value)) results.push(node); } return results; }, pseudo: function(nodes, name, value, root, combinator) { if (nodes && combinator) nodes =3D this[combinator](nodes); if (!nodes) nodes =3D root.getElementsByTagName("*"); return Selector.pseudos[name](nodes, value, root); } }, pseudos: { 'first-child': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { if (Selector.handlers.previousElementSibling(node)) continue; results.push(node); } return results; }, 'last-child': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { if (Selector.handlers.nextElementSibling(node)) continue; results.push(node); } return results; }, 'only-child': function(nodes, value, root) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!h.previousElementSibling(node) && = !h.nextElementSibling(node)) results.push(node); return results; }, 'nth-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root); }, 'nth-last-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true); }, 'nth-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, false, true); }, 'nth-last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true, true); }, 'first-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, false, true); }, 'last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, true, true); }, 'only-of-type': function(nodes, formula, root) { var p =3D Selector.pseudos; return p['last-of-type'](p['first-of-type'](nodes, formula, root), = formula, root); }, // handles the an+b logic getIndices: function(a, b, total) { if (a =3D=3D 0) return b > 0 ? [b] : []; return $R(1, total).inject([], function(memo, i) { if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i); return memo; }); }, // handles nth(-last)-child, nth(-last)-of-type, and = (first|last)-of-type nth: function(nodes, formula, root, reverse, ofType) { if (nodes.length =3D=3D 0) return []; if (formula =3D=3D 'even') formula =3D '2n+0'; if (formula =3D=3D 'odd') formula =3D '2n+1'; var h =3D Selector.handlers, results =3D [], indexed =3D [], m; h.mark(nodes); for (var i =3D 0, node; node =3D nodes[i]; i++) { if (!node.parentNode._counted) { h.index(node.parentNode, reverse, ofType); indexed.push(node.parentNode); } } if (formula.match(/^\d+$/)) { // just a number formula =3D Number(formula); for (var i =3D 0, node; node =3D nodes[i]; i++) if (node.nodeIndex =3D=3D formula) results.push(node); } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // = an+b if (m[1] =3D=3D "-") m[1] =3D -1; var a =3D m[1] ? Number(m[1]) : 1; var b =3D m[2] ? Number(m[2]) : 0; var indices =3D Selector.pseudos.getIndices(a, b, nodes.length); for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; = i++) { for (var j =3D 0; j < l; j++) if (node.nodeIndex =3D=3D indices[j]) results.push(node); } } h.unmark(nodes); h.unmark(indexed); return results; }, 'empty': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { // IE treats comments as element nodes if (node.tagName =3D=3D '!' || (node.firstChild && = !node.innerHTML.match(/^\s*$/))) continue; results.push(node); } return results; }, 'not': function(nodes, selector, root) { var h =3D Selector.handlers, selectorType, m; var exclusions =3D new Selector(selector).findElements(root); h.mark(exclusions); for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!node._counted) results.push(node); h.unmark(exclusions); return results; }, 'enabled': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!node.disabled) results.push(node); return results; }, 'disabled': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (node.disabled) results.push(node); return results; }, 'checked': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (node.checked) results.push(node); return results; } }, operators: { '=3D': function(nv, v) { return nv =3D=3D v; }, '!=3D': function(nv, v) { return nv !=3D v; }, '^=3D': function(nv, v) { return nv.startsWith(v); }, '$=3D': function(nv, v) { return nv.endsWith(v); }, '*=3D': function(nv, v) { return nv.include(v); }, '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + = ' '); }, '|=3D': function(nv, v) { return ('-' + nv.toUpperCase() + = '-').include('-' + v.toUpperCase() + '-'); } }, matchElements: function(elements, expression) { var matches =3D new Selector(expression).findElements(), h =3D = Selector.handlers; h.mark(matches); for (var i =3D 0, results =3D [], element; element =3D elements[i]; = i++) if (element._counted) results.push(element); h.unmark(matches); return results; }, findElement: function(elements, expression, index) { if (typeof expression =3D=3D 'number') { index =3D expression; expression =3D false; } return Selector.matchElements(elements, expression || '*')[index || = 0]; }, findChildElements: function(element, expressions) { var exprs =3D expressions.join(','), expressions =3D []; exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { expressions.push(m[1].strip()); }); var results =3D [], h =3D Selector.handlers; for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) { selector =3D new Selector(expressions[i].strip()); h.concat(results, selector.findElements(element)); } return (l > 1) ? h.unique(results) : results; } }); function $$() { return Selector.findChildElements(document, $A(arguments)); } var Form =3D { reset: function(form) { $(form).reset(); return form; }, serializeElements: function(elements, getHash) { var data =3D elements.inject({}, function(result, element) { if (!element.disabled && element.name) { var key =3D element.name, value =3D $(element).getValue(); if (value !=3D null) { if (key in result) { if (result[key].constructor !=3D Array) result[key] =3D = [result[key]]; result[key].push(value); } else result[key] =3D value; } } return result; }); return getHash ? data : Hash.toQueryString(data); } }; Form.Methods =3D { serialize: function(form, getHash) { return Form.serializeElements(Form.getElements(form), getHash); }, getElements: function(form) { return $A($(form).getElementsByTagName('*')).inject([], function(elements, child) { if (Form.Element.Serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; } ); }, getInputs: function(form, typeName, name) { form =3D $(form); var inputs =3D form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i = < length; i++) { var input =3D inputs[i]; if ((typeName && input.type !=3D typeName) || (name && input.name = !=3D name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form =3D $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form =3D $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { return $(form).getElements().find(function(element) { return element.type !=3D 'hidden' && !element.disabled && ['input', 'select', = 'textarea'].include(element.tagName.toLowerCase()); }); }, focusFirstElement: function(form) { form =3D $(form); form.findFirstElement().activate(); return form; }, request: function(form, options) { form =3D $(form), options =3D Object.clone(options || {}); var params =3D options.parameters; options.parameters =3D form.serialize(true); if (params) { if (typeof params =3D=3D 'string') params =3D = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method =3D form.method; return new Ajax.Request(form.readAttribute('action'), options); } } /*-----------------------------------------------------------------------= ---*/ Form.Element =3D { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } } Form.Element.Methods =3D { serialize: function(element) { element =3D $(element); if (!element.disabled && element.name) { var value =3D element.getValue(); if (value !=3D undefined) { var pair =3D {}; pair[element.name] =3D value; return Hash.toQueryString(pair); } } return ''; }, getValue: function(element) { element =3D $(element); var method =3D element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, clear: function(element) { $(element).value =3D ''; return element; }, present: function(element) { return $(element).value !=3D ''; }, activate: function(element) { element =3D $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() !=3D 'input' = || !['button', 'reset', 'submit'].include(element.type))) element.select(); } catch (e) {} return element; }, disable: function(element) { element =3D $(element); element.blur(); element.disabled =3D true; return element; }, enable: function(element) { element =3D $(element); element.disabled =3D false; return element; } } /*-----------------------------------------------------------------------= ---*/ var Field =3D Form.Element; var $F =3D Form.Element.Methods.getValue; /*-----------------------------------------------------------------------= ---*/ Form.Element.Serializers =3D { input: function(element) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return Form.Element.Serializers.inputSelector(element); default: return Form.Element.Serializers.textarea(element); } }, inputSelector: function(element) { return element.checked ? element.value : null; }, textarea: function(element) { return element.value; }, select: function(element) { return this[element.type =3D=3D 'select-one' ? 'selectOne' : 'selectMany'](element); }, selectOne: function(element) { var index =3D element.selectedIndex; return index >=3D 0 ? this.optionValue(element.options[index]) : = null; }, selectMany: function(element) { var values, length =3D element.length; if (!length) return null; for (var i =3D 0, values =3D []; i < length; i++) { var opt =3D element.options[i]; if (opt.selected) values.push(this.optionValue(opt)); } return values; }, optionValue: function(opt) { // extend element because hasAttribute may not be native return Element.extend(opt).hasAttribute('value') ? opt.value : = opt.text; } } /*-----------------------------------------------------------------------= ---*/ Abstract.TimedObserver =3D function() {} Abstract.TimedObserver.prototype =3D { initialize: function(element, frequency, callback) { this.frequency =3D frequency; this.element =3D $(element); this.callback =3D callback; this.lastValue =3D this.getValue(); this.registerCallback(); }, registerCallback: function() { setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, onTimerEvent: function() { var value =3D this.getValue(); var changed =3D ('string' =3D=3D typeof this.lastValue && 'string' = =3D=3D typeof value ? this.lastValue !=3D value : String(this.lastValue) !=3D = String(value)); if (changed) { this.callback(this.element, value); this.lastValue =3D value; } } } Form.Element.Observer =3D Class.create(); Form.Element.Observer.prototype =3D Object.extend(new = Abstract.TimedObserver(), { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer =3D Class.create(); Form.Observer.prototype =3D Object.extend(new Abstract.TimedObserver(), = { getValue: function() { return Form.serialize(this.element); } }); /*-----------------------------------------------------------------------= ---*/ Abstract.EventObserver =3D function() {} Abstract.EventObserver.prototype =3D { initialize: function(element, callback) { this.element =3D $(element); this.callback =3D callback; this.lastValue =3D this.getValue(); if (this.element.tagName.toLowerCase() =3D=3D 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value =3D this.getValue(); if (this.lastValue !=3D value) { this.callback(this.element, value); this.lastValue =3D value; } }, registerFormCallbacks: function() { = Form.getElements(this.element).each(this.registerCallback.bind(this)); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', = this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', = this.onElementEvent.bind(this)); break; } } } } Form.Element.EventObserver =3D Class.create(); Form.Element.EventObserver.prototype =3D Object.extend(new = Abstract.EventObserver(), { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver =3D Class.create(); Form.EventObserver.prototype =3D Object.extend(new = Abstract.EventObserver(), { getValue: function() { return Form.serialize(this.element); } }); if (!window.Event) { var Event =3D new Object(); } Object.extend(Event, { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, element: function(event) { return $(event.target || event.srcElement); }, isLeftClick: function(event) { return (((event.which) && (event.which =3D=3D 1)) || ((event.button) && (event.button =3D=3D 1))); }, pointerX: function(event) { return event.pageX || (event.clientX + (document.documentElement.scrollLeft || = document.body.scrollLeft)); }, pointerY: function(event) { return event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)); }, stop: function(event) { if (event.preventDefault) { event.preventDefault(); event.stopPropagation(); } else { event.returnValue =3D false; event.cancelBubble =3D true; } }, // find the first node with the given tagName, starting from the // node the event was triggered on; traverses the DOM upwards findElement: function(event, tagName) { var element =3D Event.element(event); while (element.parentNode && (!element.tagName || (element.tagName.toUpperCase() !=3D tagName.toUpperCase()))) element =3D element.parentNode; return element; }, observers: false, _observeAndCache: function(element, name, observer, useCapture) { if (!this.observers) this.observers =3D []; if (element.addEventListener) { this.observers.push([element, name, observer, useCapture]); element.addEventListener(name, observer, useCapture); } else if (element.attachEvent) { this.observers.push([element, name, observer, useCapture]); element.attachEvent('on' + name, observer); } }, unloadCache: function() { if (!Event.observers) return; for (var i =3D 0, length =3D Event.observers.length; i < length; = i++) { Event.stopObserving.apply(this, Event.observers[i]); Event.observers[i][0] =3D null; } Event.observers =3D false; }, observe: function(element, name, observer, useCapture) { element =3D $(element); useCapture =3D useCapture || false; if (name =3D=3D 'keypress' && (Prototype.Browser.WebKit || element.attachEvent)) name =3D 'keydown'; Event._observeAndCache(element, name, observer, useCapture); }, stopObserving: function(element, name, observer, useCapture) { element =3D $(element); useCapture =3D useCapture || false; if (name =3D=3D 'keypress' && (Prototype.Browser.WebKit || element.attachEvent)) name =3D 'keydown'; if (element.removeEventListener) { element.removeEventListener(name, observer, useCapture); } else if (element.detachEvent) { try { element.detachEvent('on' + name, observer); } catch (e) {} } } }); /* prevent memory leaks in IE */ if (Prototype.Browser.IE) Event.observe(window, 'unload', Event.unloadCache, false); var Position =3D { // set to true if needed, warning: firefox performance problems // NOT neeeded for page scrolling, only if draggable contained in // scrollable elements includeScrollOffsets: false, // must be called before calling withinIncludingScrolloffset, every = time the // page is scrolled prepare: function() { this.deltaX =3D window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY =3D window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, realOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.scrollTop || 0; valueL +=3D element.scrollLeft || 0; element =3D element.parentNode; } while (element); return [valueL, valueT]; }, cumulativeOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; element =3D element.offsetParent; } while (element); return [valueL, valueT]; }, positionedOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; element =3D element.offsetParent; if (element) { if(element.tagName=3D=3D'BODY') break; var p =3D Element.getStyle(element, 'position'); if (p =3D=3D 'relative' || p =3D=3D 'absolute') break; } } while (element); return [valueL, valueT]; }, offsetParent: function(element) { if (element.offsetParent) return element.offsetParent; if (element =3D=3D document.body) return element; while ((element =3D element.parentNode) && element !=3D = document.body) if (Element.getStyle(element, 'position') !=3D 'static') return element; return document.body; }, // caches x/y coordinate pair to use with overlap within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp =3D x; this.ycomp =3D y; this.offset =3D this.cumulativeOffset(element); return (y >=3D this.offset[1] && y < this.offset[1] + element.offsetHeight && x >=3D this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache =3D this.realOffset(element); this.xcomp =3D x + offsetcache[0] - this.deltaX; this.ycomp =3D y + offsetcache[1] - this.deltaY; this.offset =3D this.cumulativeOffset(element); return (this.ycomp >=3D this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >=3D this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, // within must be called directly before overlap: function(mode, element) { if (!mode) return 0; if (mode =3D=3D 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode =3D=3D 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, page: function(forElement) { var valueT =3D 0, valueL =3D 0; var element =3D forElement; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; // Safari fix if (element.offsetParent =3D=3D document.body) if (Element.getStyle(element,'position')=3D=3D'absolute') break; } while (element =3D element.offsetParent); element =3D forElement; do { if (!window.opera || element.tagName=3D=3D'BODY') { valueT -=3D element.scrollTop || 0; valueL -=3D element.scrollLeft || 0; } } while (element =3D element.parentNode); return [valueL, valueT]; }, clone: function(source, target) { var options =3D Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || {}) // find page position of source source =3D $(source); var p =3D Position.page(source); // find coordinate system to use target =3D $(target); var delta =3D [0, 0]; var parent =3D null; // delta [0,0] will do fine with position: fixed elements, // position:absolute needs offsetParent deltas if (Element.getStyle(target,'position') =3D=3D 'absolute') { parent =3D Position.offsetParent(target); delta =3D Position.page(parent); } // correct by body offsets (fixes Safari) if (parent =3D=3D document.body) { delta[0] -=3D document.body.offsetLeft; delta[1] -=3D document.body.offsetTop; } // set position if(options.setLeft) target.style.left =3D (p[0] - delta[0] + = options.offsetLeft) + 'px'; if(options.setTop) target.style.top =3D (p[1] - delta[1] + = options.offsetTop) + 'px'; if(options.setWidth) target.style.width =3D source.offsetWidth + = 'px'; if(options.setHeight) target.style.height =3D source.offsetHeight + = 'px'; }, absolutize: function(element) { element =3D $(element); if (element.style.position =3D=3D 'absolute') return; Position.prepare(); var offsets =3D Position.positionedOffset(element); var top =3D offsets[1]; var left =3D offsets[0]; var width =3D element.clientWidth; var height =3D element.clientHeight; element._originalLeft =3D left - parseFloat(element.style.left || = 0); element._originalTop =3D top - parseFloat(element.style.top || = 0); element._originalWidth =3D element.style.width; element._originalHeight =3D element.style.height; element.style.position =3D 'absolute'; element.style.top =3D top + 'px'; element.style.left =3D left + 'px'; element.style.width =3D width + 'px'; element.style.height =3D height + 'px'; }, relativize: function(element) { element =3D $(element); if (element.style.position =3D=3D 'relative') return; Position.prepare(); element.style.position =3D 'relative'; var top =3D parseFloat(element.style.top || 0) - = (element._originalTop || 0); var left =3D parseFloat(element.style.left || 0) - = (element._originalLeft || 0); element.style.top =3D top + 'px'; element.style.left =3D left + 'px'; element.style.height =3D element._originalHeight; element.style.width =3D element._originalWidth; } } // Safari returns margins on body which is incorrect if the child is = absolutely // positioned. For performance reasons, redefine = Position.cumulativeOffset for // KHTML/WebKit only. if (Prototype.Browser.WebKit) { Position.cumulativeOffset =3D function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; if (element.offsetParent =3D=3D document.body) if (Element.getStyle(element, 'position') =3D=3D 'absolute') = break; element =3D element.offsetParent; } while (element); return [valueL, valueT]; } } Element.addMethods(); ------=_NextPart_000_0000_01C9BF66.D39F4650 Content-Type: application/x-js Content-Transfer-Encoding: quoted-printable Content-Location: http://www.issa.com/js/scriptaculous/scriptaculous.js // script.aculo.us scriptaculous.js v1.7.1_beta2, Sat Apr 28 15:20:12 = CEST 2007=0A= =0A= // Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, = http://mir.aculo.us)=0A= // =0A= // Permission is hereby granted, free of charge, to any person obtaining=0A= // a copy of this software and associated documentation files (the=0A= // "Software"), to deal in the Software without restriction, including=0A= // without limitation the rights to use, copy, modify, merge, publish,=0A= // distribute, sublicense, and/or sell copies of the Software, and to=0A= // permit persons to whom the Software is furnished to do so, subject to=0A= // the following conditions:=0A= // =0A= // The above copyright notice and this permission notice shall be=0A= // included in all copies or substantial portions of the Software.=0A= //=0A= // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,=0A= // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF=0A= // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND=0A= // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE=0A= // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION=0A= // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION=0A= // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.=0A= //=0A= // For details, see the script.aculo.us web site: http://script.aculo.us/=0A= =0A= var Scriptaculous =3D {=0A= Version: '1.7.1_beta2',=0A= require: function(libraryName) {=0A= // inserting via DOM fails in Safari 2.0, so brute force approach=0A= document.write('');=0A= },=0A= REQUIRED_PROTOTYPE: '1.5.1',=0A= load: function() {=0A= function convertVersionString(versionString){=0A= var r =3D versionString.split('.');=0A= return parseInt(r[0])*100000 + parseInt(r[1])*1000 + = parseInt(r[2]);=0A= }=0A= =0A= if((typeof Prototype=3D=3D'undefined') || =0A= (typeof Element =3D=3D 'undefined') || =0A= (typeof Element.Methods=3D=3D'undefined') ||=0A= (convertVersionString(Prototype.Version) < =0A= convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE)))=0A= throw("script.aculo.us requires the Prototype JavaScript = framework >=3D " +=0A= Scriptaculous.REQUIRED_PROTOTYPE);=0A= =0A= $A(document.getElementsByTagName("script")).findAll( function(s) {=0A= return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))=0A= }).each( function(s) {=0A= var path =3D s.src.replace(/scriptaculous\.js(\?.*)?$/,'');=0A= var includes =3D s.src.match(/\?.*load=3D([a-z,]*)/);=0A= (includes ? includes[1] : = 'builder,effects,dragdrop,controls,slider,sound').split(',').each(=0A= function(include) { Scriptaculous.require(path+include+'.js') });=0A= });=0A= }=0A= }=0A= =0A= Scriptaculous.load(); ------=_NextPart_000_0000_01C9BF66.D39F4650--