Content-Type: multipart/related; start=; boundary=----------bHiCU6udPUzEKQSwTnJGqI Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/ Subject: =?utf-8?Q?Learn=20CSS=20Positioning=20in=20Ten=20Steps:=20position=20static=20relative=20absolute=20float?= MIME-Version: 1.0 ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=default.htm Content-Type: text/html; name=default.htm Content-Id: Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/ Content-Transfer-Encoding: 8bit Learn CSS Positioning in Ten Steps: position static relative absolute float

Web-standard solutions for a non-standard world

Learn CSS Positioning in Ten Steps

This tutorial examines the different layout properties available in CSS: position:static, position:relative, position:absolute, and float.

1. position:static

The default positioning for all elements is position:static, which means the element is not positioned and occurs where it normally would in the document.

Normally you wouldn't specify this unless you needed to override a positioning that had been previously set.

#div-1 {
 position:static;
}

2. position:relative

If you specify position:relative, then you can use top or bottom, and left or right to move the element relative to where it would normally occur in the document.

Let's move div-1 down 20 pixels, and to the left 40 pixels:

#div-1 {
 position:relative;
 top:20px;
 left:-40px;
}

Notice the space where div-1 normally would have been if we had not moved it: now it is an empty space. The next element (div-after) did not move when we moved div-1. That's because div-1 still occupies that original space in the document, even though we have moved it.

It appears that position:relative is not very useful, but it will perform an important task later in this tutorial.

3. position:absolute

When you specify position:absolute, the element is removed from the document and placed exactly where you tell it to go.

Let's move div-1a to the top right of the page:

#div-1a {
 position:absolute;
 top:0;
 right:0;
 width:200px;
}

Notice that this time, since div-1a was removed from the document, the other elements on the page were positioned differently: div-1b, div-1c, and div-after moved up since div-1a was no longer there.

Also notice that div-1a was positioned in the top right corner of the page. It's nice to be able to position things directly the page, but it's of limited value.

What I really want is to position div-1a relative to div-1. And that's where relative position comes back into play.

Footnotes

  • There is a bug in the Windows IE browser: if you specify a relative width (like "width:50%") then the width will be based on the parent element instead of on the positioning element.

4. position:relative + position:absolute

If we set relative positioning on div-1, any elements within div-1 will be positioned relative to div-1. Then if we set absolute positioning on div-1a, we can move it to the top right of div-1:

#div-1 {
 position:relative;
}
#div-1a {
 position:absolute;
 top:0;
 right:0;
 width:200px;
}

5. two column absolute

Now we can make a two-column layout using relative and absolute positioning!

#div-1 {
 position:relative;
}
#div-1a {
 position:absolute;
 top:0;
 right:0;
 width:200px;
}
#div-1b {
 position:absolute;
 top:0;
 left:0;
 width:200px;
}

One advantage to using absolute positioning is that we can position the elements in any order on the page, regardless of the order they appear in the HTML. So I put div-1b before div-1a.

But wait - what happened to the other elements? They are being obscured by the absolutely positioned elements. What can we do about that?

6. two column absolute height

One solution is to set a fixed height on the elements.

But that is not a viable solution for most designs, because we usually do not know how much text will be in the elements, or the exact font sizes that will be used.

#div-1 {
 position:relative;
 height:250px;
}
#div-1a {
 position:absolute;
 top:0;
 right:0;
 width:200px;
}
#div-1b {
 position:absolute;
 top:0;
 left:0;
 width:200px;
}

7. float

For variable height columns, absolute positioning does not work, so let's come up with another solution.

We can "float" an element to push it as far as possible to the right or to the left, and allow text to wrap around it. This is typically used for images, but we will use it for more complex layout tasks (because it's the only tool we have).

#div-1a {
 float:left;
 width:200px;
}

8. float columns

If we float one column to the left, then also float the second column to the left, they will push up against each other.

#div-1a {
 float:left;
 width:150px;
}
#div-1b {
 float:left;
 width:150px;
}

9. float columns with clear

Then after the floating elements we can "clear" the floats to push down the rest of the content.

#div-1a {
 float:left;
 width:190px;
}
#div-1b {
 float:left;
 width:190px;
}
#div-1c {
 clear:both;
}

10. Disclaimer & Resources

These examples are extremely simplified and do not trigger some of the CSS bugs in the Windows IE browser (of which there are many).

The following page was invaluable:
Relatively Absolute

While you're here check out the following:

Comments | More on CSS and JavaScript from BarelyFitz Designs

id = div-before

id = div-1

id = div-1a

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.

id = div-1b

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.

id = div-1c

id = div-after

Home : Contact Us : ©2006 BarelyFitz Designs, All Rights Reserved
------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=logo-blur.jpg Content-Type: image/jpeg; name=logo-blur.jpg Content-Location: http://www.barelyfitz.com/img/logo-blur.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+IMWElDQ19Q Uk9GSUxFAAEBAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNz cE1TRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAEAAPbWAAEAAAAA0y1IUCAgAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3By dAAAAVAAAAAzZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZ WgAAAhgAAAAUZ1hZWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1k ZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVh cwAABAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRS QwAABDwAAAgMdGV4dAAAAABDb3B5cmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNr YXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA AAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAAARbMWFla IAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABi mQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAAAAAAABZJRUMgaHR0 cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVz YwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2Ug LSBzUkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xv dXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAA LFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAA AAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYt Mi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDP FAAD7cwABBMLAANcngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAA AQAAAAAAAAAAAAAAAAAAAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAE AAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0A cgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA 6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwB gwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkEC SwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgD QwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGME cQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF 1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EH dAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJ TwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1EL aQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakN ww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQ YRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMT QxNjE4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkW bBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ 3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAd mR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUh oSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl 9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1Kmgq myrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ov kS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRlNJ40 2DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5OjY6 dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNA ZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdG q0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJN Sk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZU QlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0Vb lVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBj Q2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdr T2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11z uHQUdHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8 gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeF q4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6P No+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZ JJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowaj dqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavprFys0K1Erbiu La6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbwt2i34LhZuNG5 SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPUxFHE zsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQ utE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF3Ird EN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp 0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32 +/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf///+4AJkFkb2JlAGTAAAAA AQMAFQQDBgoNAAAQxgAAEPMAABLzAAAVdP/bAIQABgQEBAUEBgUFBgkGBQYJCwgG BggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEH BwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f Hx8fHx8fHx8fHx8fHx8f/8IAEQgAZADIAwERAAIRAQMRAf/EAJkAAQADAQEBAAAA AAAAAAAAAAACAwQBBQcBAQEBAQEAAAAAAAAAAAAAAAABAgMEEAACAgICAgMBAQEA AAAAAAAAARECEAMgEjATQCExIlCAEQACAwEAAAAAAAAAAAAAAAARIUBQYAASAQAA AAAAAAAAAAAAAAAAAIATAQEAAQUBAQEBAQEAAAAAAAEAERAgMCExQVFAUGGB/9oA DAMBAAIRAxEAAAH6fQAAAAAAAAGLzYlq6++gAAAAEkIrxIwJVZuz1QAMPmxd0ujr oAAACGJn5SjErxOR04CVau2tfopQk8/zZ2+jU9UAACOZl4zNxzGLNr+lt3ZaqKsz NwzDL0PXu7pRViUcs7PRsAACrEw+bFeFu7r727pe2gAVYnneTG7060ddJMfDOntq eqAAKuc8/wA2OZau9199dtSRiVLQIZnneTHo+vc9XPxzLS7poAARzPO8uK8NnfWv 0UsMyrEt3Z6oBMfnktNXbVHLIv66AAAycM4/Pm3b0fXvtvJMfDOzvrtoHJM/KDR1 tHKdq/roAAAef5cUcpq7Xb6divEx8M7vRrtcivKvEt6XpRzlml3S9tAAAGLz4y8J d0voerXbSZ+UhlKu1Zq8KOU5Jp7as3QAAABDMweXNWJf1urtZ6vThDKvEhmdtv62 3RaAAAAAOSZ+Up5yMCVSqerZu27dtAAAAAAAAJyAO0UAAAAAAAD/2gAIAQEAAQUC +HtNPl7o9qPae09qFZctv7qX14XdIe0exk8ZZTZxt92qvrm3BbaNzhUYtR6ketHr Q9RasY1uVi7ha6y+drwWvOK0bK60RyvX6Zq/MW/p1ULle8Dc4prEs9uN/wA/XVQi 9ilednCtaWa6ZdoPtirx2Wk10xaxWvg2vFFLWGxf1ZLhJa8laH4WsVr4dv6ac3/K OH2RJ2Q7n9MVUh3SJbK18W1Y1uGnm2s6WOtj1nVId0i2xsVGxVjx2rJajWK7IFsR 2R2R2R7EPaTZi1tiovM0PUPUzpY62Otj12FqFrRC+J9fE//aAAgBAgABBQL4divl k7HY7HYnlYr4pOxPNPixeF2zB1OpBB1GsLLF4GxvCRHN4rli5t5S4TxeFhsS8Dwl mcRxbEsNiXgtheJsSxIl4bYrlizJOIJxHithcOpBBBBJJBHjY1hM7EkkknbEEefq dSCCCDqR/k//2gAIAQMAAQUC/wCRf//aAAgBAgIGPwIi/wD/2gAIAQMCBj8CIv8A /9oACAEBAQY/As8bARRIXOxWY//aAAgBAQMBPyH+P3ylCRmMbGIVvsXGj85kpu7D YdAr5sOdXzS4uAM/CWYWVfvGgsn8lg4dqZ2DgKItUF7ANxMHcdC4JOE4MATqBb7s BopYQ7Fihqxl6WHt4AbQ+7BjQoZf+QGxbKwsHbeXzL7vB89cGDTEZkwAbEEnSfeZ BK9F9njPWpb68JYSF+Nhdchbohjh786oCaJmF8sUftC+xpi6Ce3HxgE5eTRWzNG/ CbehGgxyixPm1XiX6wIL+PrR1/H/AP/aAAgBAgMBPyH/ABsxvBxMa3O3O77MOBdB dCmy2YNHq48GDYJcbjtdmG/BLrhwn2HESy27PY/hWC0MaLHbBszsF/gDeLNnQ3Cx GZzHEGjjVmdlrMaZRxhnYptCzKxTmpMZnZWVnoLj/I//2gAIAQMDAT8h/jY5s2bN nexx5s7x5864sWLFixqasceLG90OYP6A4mON0OPHI6Gw2Z53Q2YsaY1z/BmzszZ0 xY58WLGuLFj/ACf/2gAMAwEAAhEDEQAAEJJJJJJJJJIxJJJJJGOQ7JJPZJJJIlJl s0ZHLJJJPnqXFGtJDJJJJdv5JJJYzZJJFVzG3JB5GZJJGcjLTJDoO5JJJE/DXJOO X5JJJIHIJ+xoA/JJJJQPDQKpnpJJJJLtDeMno5JJJJJD+ImsZJJJJJJJJe/ZJJJJ JJJJ/9oACAEBAwE/EP4zQ8nqN9iL9my3+3jsI+bVnC7Dhzi9Ju3E+nes3bQwXZO5 GRRYBk1WEy6j9sGcB2Vvcr2VjwXy5Uh/SPwlfJBG+zqYEmHPzUF/WSQMGN4733Nu +rtb5vUCYdwXRuRuO7AyQz0JFvmbMAH3ezB7nCs5gsmBh8BoD1u3BZDOwUl6/wBs aS4MzL6tj/R3iizDvqBWDooBg0O/7L807R7YA1AMs3o3mu5QSv3WfP3gxvc6M2Bj MNAedi8GBBsJysxT5+0/iYlZH9GDBwNz0BrYsWYhGRv+t6zD53nushC5fYLp7uhe SepGOF+jQQz5AkdAGGVz0Y8L1L9iPV3DE9JdITGadAHnEzGQYOrtXTL1HdsN9v8A rJfbzGR6N04M9lw/ncHg5Q8JZ5gPJLzMB+wv7egt+i+PeAWP4er/AM3/AIv/ADdf xf/aAAgBAgMBPxD+P1ylkkiwsIMDufd1cRmkrK0w2NBl8WHOq6DAcAl+MrBmR0A2 MmOSDizGuEs7ngGK6IxkA3CkmGPWi4k4LCb8adYM36wGi2EOx4IMzEaZuiwd78RZ 2L7MGhEZgGxbN0WLt0+Bfd4PnplYYNMRKsGxBK9F9myFn6L6cL709ajqyu4LYSC/ DQGRkvRBjj8bLOiRNgiD9wCEnfJ/UZx4UheSkDBsJMkvxmivsBBygxsuoEDRRIJ/ H1dXX8f/2gAIAQMDAT8Q/wAHztLP8Isxmdudw+xwLMXQhshiY0WqhwLLoQ3htPcG 9ZdTGudroGiwb1l2i3tjaoaLBwLQRo3u5Y0LBzLKzpnR2wS2cwcQ0Wx0MOjFmYEH GkmhCZs2dDMsQ5mJ1GGw7Bj/ACP/2Q== ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=style-old.css Content-Type: text/css; name=style-old.css Content-Location: http://www.barelyfitz.com/css/style-old.css Content-Transfer-Encoding: 8bit .blocktop { margin:0px; border:0px; padding:15px; padding-left: 60px; color: #000; background: url(/img/logo-blur.jpg) no-repeat #f7f7fb; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=style.css Content-Type: text/css; name=style.css Content-Location: http://www.barelyfitz.com/css/style.css Content-Transfer-Encoding: 8bit body { margin:0; padding:0; border:0; color:#333; background: #fff; font-family: verdana, arial, helvetica, sans-serif; font-size: 62.5%; } #layout_table { margin:0; padding:0; border:0; width:100%; border-spacing: 0px; } a:link, a:visited { text-decoration: underline; } a:link:focus, a:visited:focus { color: #09c; } a:link { color: #05a; } a:visited { color: #048; } a:link:hover, a:visited:hover { color: #080; text-decoration: underline; } a:link:active, a:visited:active { color: #0a0; } acronym { color:#333; border-bottom:1px dashed #aaa; cursor:help; } h1, h2, h3, h4 { font-family: "trebuchet ms", verdana, arial, sans-serif; } pre, code { font-family: "lucida console", "courier new", monospace; } blockquote{ font-family: georgia, "times new roman", serif; color:#464; margin-left:1em; } INPUT, SELECT, TABLE, TH, TD {font-size:1em} LI LI, LI P, TD P, BLOCKQUOTE P {font-size:1em} code {font-size:1em;font-family:"courier new",monospace;} p { margin:1em 0; padding:0; } h1 { margin:0; margin-bottom: 10px; padding:0; border:0; color:#000; font-weight:bold; font-size:2em; font-family: "trebuchet ms", verdana, arial, sans-serif; } h2 { margin:1em 0 0.25em; font-size: 1.6em; font-weight: bold; } h3 { margin:1em 0 0.25em; font-size: 1.2em; font-weight: bold; } h4 { font-size: 1em; font-weight: normal; text-decoration: underline; } form { margin: 0; } ul, ol { margin-left: 12px; padding-left: 12px; border: 0; } li { margin-left: 4px; padding-left: 4px; } hr { margin: 0; padding: 0; border: 0; height: 1px; background-color: #09c; } img { border:0; } /***************************************************/ #block_top { margin:0; border:0; padding:15px; padding-left: 60px; color: #666; background: url(/img/logo-blur.jpg) no-repeat #f7f7fb; font-family: "trebuchet ms", verdana, arial, sans-serif; } #block_top a { color:#666; text-decoration:none; font-weight:bold; } #block_top .block_top_head { margin:0; padding:0; font-size: 32px; font-weight:bold; color:#666; } #block_top .slogan { margin:0; padding:0; font-size:14px; font-weight:bold; font-style:italic; color:#555; } /***************************************************/ #block_left_kludge { margin:0; padding:0; border-top: 1px solid #aaa; background: #eef; height:1px; width:160px; } #block_left { background: #f7f7fb; font-size:1.2em; width:160px; } #block_left :link { } #block_left :visited { } #block_left .leftnav { background: #eef; } #block_left h2 { font-size: 1em; background: #E4F1D2 url(/img/x-gradient.png) repeat-x; color:#333; font-weight:bold; margin: 0; margin-top:12px; padding: 2px; padding-top: 4px; border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; } #block_left ul { list-style:none; margin: 0; padding:0; background:#eef; } #block_left ul li { margin:0; padding:2px 2px 2px 4px; border-bottom:1px dotted #aaa; } #block_left ul li.highlight { background:#ccd; } #block_left ul li :link, #block_left ul li :visited { text-decoration: none; color:#333;} #block_left ul li :link:hover, #block_left ul li :visited:hover { text-decoration: underline; } /***************************************************/ #block_middle { border: 1px solid #aaa; border-bottom: 0; padding: 0; padding-bottom: 10px; min-width:370px; } #block_middle li { margin-bottom: 12px; } #block_middle :link, #block_middle :visited { font-weight: 600; } /***************************************************/ #block_right { padding:5px; border-top:1px solid #aaa; font-size:1.2em; background: #f7f7fb; } #block_right h2 { margin:1em 0; background:#EBFFED; padding:2px; border-top:1px solid #A8DDA0; border-bottom:2px solid #A8DDA0; font-size:1em; } /***************************************************/ #block_bottom { border-top:1px solid #ddd; padding:5px; padding-top:1px; color: #333; background: #eee; font-size:0.9em; text-align:center; } /***************************************************/ .block { margin: 0; margin-top: 4px; margin-bottom: 4px; border: 1px solid #aaa; background: #fff; padding:5px; } .block h2 { margin-top: 0; } /***************************************************/ .topborder { padding-left: 20px; padding-right: 20px; border: 1px solid #09c; border-bottom: 0; padding-top: 4px; } /***************************************************/ .hide { display:none; } /***************************************************/ .column { float:left; margin:0; border:0; padding:10px; width:45%; } /***************************************************/ .boxdiv { border: 5px solid #bbc; background: #dde; padding:5px; } /***************************************************/ .rowtable { border: 3px solid #bbc; } .rowtable TH { padding: 5px; border-bottom: 3px solid #bbc; vertical-align: bottom; background-color: #ded; background: #E4F1D2 url(/img/x-gradient.png) repeat-x; } .rowtable .row0 { background: #eef; vertical-align: top; } .rowtable .row1 { background: #dde; vertical-align: top; } .rowtable .row2 { background: #ccd; vertical-align: top; } .rowtable .row3 { background: #dde; vertical-align: top; } .rowtable .col1 { font-weight: 600; } /***************************************************/ #breadcrumb { border-bottom: 1px solid #aaa; padding: 2px; background: #eee; font-size:1em; } #breadcrumb :link, #breadcrumb :visited { text-decoration: none; font-weight: normal; } #breadcrumb :link:hover, #breadcrumb :visited:hover { text-decoration: underline; } /***************************************************/ #content { padding: 8px 15px; padding-bottom:0; font-size:1.2em; } /***************************************************/ #page_tools { margin:0; margin-top:-7px; margin-bottom:1em; padding:2px 4px 4px; border:1px solid #aaa; font-size:0.8em; background:#fff; } #page_tools img { vertical-align:bottom; } /***************************************************/ .navlinkselected { font-weight:bold; } .navlinkunselected { font-weight:normal; } /***************************************************/ .imgborder { border:1px solid #888; } /***************************************************/ .listmenu { margin-left:0; padding-left:0; border:0; line-height: 200%; } .listmenu li { display: inline; margin-left:0; padding-left:0; border:0; } .listmenu a { margin: 0; padding-left: 5px; padding-right: 5px; padding-top: 2px; padding-bottom: 2px; border: 1px outset; background: #E4F1D2 url(/img/x-gradient.png) repeat-x; font-weight: normal; } .listmenu a:link { color: #333; font-weight: normal; } .listmenu a:visited { color: #333; font-weight: normal; } .listmenu a:active { border: 1px inset; font-weight: normal; } /***************************************************/ .listmenu2 { margin:0; padding:0; padding-left:6px; font-size:0.8em; font-family: arial, sans-serif; line-height:1.75em; border-bottom:1px solid #aaa; } .listmenu2 li { margin:0; padding:0; border:0; display:inline; } .listmenu2 a { display: inline; margin:0; padding:0.25em 4px 0.25em; border: 1px solid #aaa; background: #E4F1D2 url(/img/x-gradient.png) repeat-x; color:#333; text-decoration: none; font-weight:normal; } .listmenu2 a.here { border-bottom: 1px solid #f8f8f8; list-style: none; display: inline; background:#f8f8f8; color: #333; } .listmenu2 a:hover, .listmenu2 a:link, .listmenu2 a:visited { text-decoration:none; font-weight:normal; } .listmenu2 a:active { border: 1px outset black; border-bottom: 1px solid #f8f8f8; font-weight: normal; } .listmenu2content { padding:10px; padding-left:15px; background:#f8f8f8; border:1px solid #aaa; border-top:0; } /***************************************************/ .printable_version hr { margin:1em 0; } /***************************************************/ .nowrap { white-space:nowrap; } .xml-button { border:1px solid; border-color:#FC9 #630 #330 #F96; padding:0 3px; font:bold 10px verdana,sans-serif; color:#FFF; background:#F60; text-decoration:none; margin:0; width:4em; text-align:center; } .xml-button:link { color: #fff;text-decoration:none; } .xml-button:visited { color: #fff;text-decoration:none; } #block_left .xml-button:link { color: #fff } #block_left .xml-button:visited { color: #fff } /***************************************************/ .code { color: #333; padding: 6px; background: #eeeeee url(/img/code-background-repeat-x.gif) repeat-x; border-top: 1px solid #aaa; border-left: 1px solid #aaa; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; margin-top: 1em; margin-bottom: 1em; white-space:pre; } /***************************************************/ #homepagenews { list-style-type:none; margin:0; padding:0; } li { margin:1em 0; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=style.css Content-Type: text/css; name=style.css Content-Location: http://www.barelyfitz.com/css/style.css Content-Transfer-Encoding: 8bit body { margin:0; padding:0; border:0; color:#333; background: #fff; font-family: verdana, arial, helvetica, sans-serif; font-size: 62.5%; } #layout_table { margin:0; padding:0; border:0; width:100%; border-spacing: 0px; } a:link, a:visited { text-decoration: underline; } a:link:focus, a:visited:focus { color: #09c; } a:link { color: #05a; } a:visited { color: #048; } a:link:hover, a:visited:hover { color: #080; text-decoration: underline; } a:link:active, a:visited:active { color: #0a0; } acronym { color:#333; border-bottom:1px dashed #aaa; cursor:help; } h1, h2, h3, h4 { font-family: "trebuchet ms", verdana, arial, sans-serif; } pre, code { font-family: "lucida console", "courier new", monospace; } blockquote{ font-family: georgia, "times new roman", serif; color:#464; margin-left:1em; } INPUT, SELECT, TABLE, TH, TD {font-size:1em} LI LI, LI P, TD P, BLOCKQUOTE P {font-size:1em} code {font-size:1em;font-family:"courier new",monospace;} p { margin:1em 0; padding:0; } h1 { margin:0; margin-bottom: 10px; padding:0; border:0; color:#000; font-weight:bold; font-size:2em; font-family: "trebuchet ms", verdana, arial, sans-serif; } h2 { margin:1em 0 0.25em; font-size: 1.6em; font-weight: bold; } h3 { margin:1em 0 0.25em; font-size: 1.2em; font-weight: bold; } h4 { font-size: 1em; font-weight: normal; text-decoration: underline; } form { margin: 0; } ul, ol { margin-left: 12px; padding-left: 12px; border: 0; } li { margin-left: 4px; padding-left: 4px; } hr { margin: 0; padding: 0; border: 0; height: 1px; background-color: #09c; } img { border:0; } /***************************************************/ #block_top { margin:0; border:0; padding:15px; padding-left: 60px; color: #666; background: url(/img/logo-blur.jpg) no-repeat #f7f7fb; font-family: "trebuchet ms", verdana, arial, sans-serif; } #block_top a { color:#666; text-decoration:none; font-weight:bold; } #block_top .block_top_head { margin:0; padding:0; font-size: 32px; font-weight:bold; color:#666; } #block_top .slogan { margin:0; padding:0; font-size:14px; font-weight:bold; font-style:italic; color:#555; } /***************************************************/ #block_left_kludge { margin:0; padding:0; border-top: 1px solid #aaa; background: #eef; height:1px; width:160px; } #block_left { background: #f7f7fb; font-size:1.2em; width:160px; } #block_left :link { } #block_left :visited { } #block_left .leftnav { background: #eef; } #block_left h2 { font-size: 1em; background: #E4F1D2 url(/img/x-gradient.png) repeat-x; color:#333; font-weight:bold; margin: 0; margin-top:12px; padding: 2px; padding-top: 4px; border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; } #block_left ul { list-style:none; margin: 0; padding:0; background:#eef; } #block_left ul li { margin:0; padding:2px 2px 2px 4px; border-bottom:1px dotted #aaa; } #block_left ul li.highlight { background:#ccd; } #block_left ul li :link, #block_left ul li :visited { text-decoration: none; color:#333;} #block_left ul li :link:hover, #block_left ul li :visited:hover { text-decoration: underline; } /***************************************************/ #block_middle { border: 1px solid #aaa; border-bottom: 0; padding: 0; padding-bottom: 10px; min-width:370px; } #block_middle li { margin-bottom: 12px; } #block_middle :link, #block_middle :visited { font-weight: 600; } /***************************************************/ #block_right { padding:5px; border-top:1px solid #aaa; font-size:1.2em; background: #f7f7fb; } #block_right h2 { margin:1em 0; background:#EBFFED; padding:2px; border-top:1px solid #A8DDA0; border-bottom:2px solid #A8DDA0; font-size:1em; } /***************************************************/ #block_bottom { border-top:1px solid #ddd; padding:5px; padding-top:1px; color: #333; background: #eee; font-size:0.9em; text-align:center; } /***************************************************/ .block { margin: 0; margin-top: 4px; margin-bottom: 4px; border: 1px solid #aaa; background: #fff; padding:5px; } .block h2 { margin-top: 0; } /***************************************************/ .topborder { padding-left: 20px; padding-right: 20px; border: 1px solid #09c; border-bottom: 0; padding-top: 4px; } /***************************************************/ .hide { display:none; } /***************************************************/ .column { float:left; margin:0; border:0; padding:10px; width:45%; } /***************************************************/ .boxdiv { border: 5px solid #bbc; background: #dde; padding:5px; } /***************************************************/ .rowtable { border: 3px solid #bbc; } .rowtable TH { padding: 5px; border-bottom: 3px solid #bbc; vertical-align: bottom; background-color: #ded; background: #E4F1D2 url(/img/x-gradient.png) repeat-x; } .rowtable .row0 { background: #eef; vertical-align: top; } .rowtable .row1 { background: #dde; vertical-align: top; } .rowtable .row2 { background: #ccd; vertical-align: top; } .rowtable .row3 { background: #dde; vertical-align: top; } .rowtable .col1 { font-weight: 600; } /***************************************************/ #breadcrumb { border-bottom: 1px solid #aaa; padding: 2px; background: #eee; font-size:1em; } #breadcrumb :link, #breadcrumb :visited { text-decoration: none; font-weight: normal; } #breadcrumb :link:hover, #breadcrumb :visited:hover { text-decoration: underline; } /***************************************************/ #content { padding: 8px 15px; padding-bottom:0; font-size:1.2em; } /***************************************************/ #page_tools { margin:0; margin-top:-7px; margin-bottom:1em; padding:2px 4px 4px; border:1px solid #aaa; font-size:0.8em; background:#fff; } #page_tools img { vertical-align:bottom; } /***************************************************/ .navlinkselected { font-weight:bold; } .navlinkunselected { font-weight:normal; } /***************************************************/ .imgborder { border:1px solid #888; } /***************************************************/ .listmenu { margin-left:0; padding-left:0; border:0; line-height: 200%; } .listmenu li { display: inline; margin-left:0; padding-left:0; border:0; } .listmenu a { margin: 0; padding-left: 5px; padding-right: 5px; padding-top: 2px; padding-bottom: 2px; border: 1px outset; background: #E4F1D2 url(/img/x-gradient.png) repeat-x; font-weight: normal; } .listmenu a:link { color: #333; font-weight: normal; } .listmenu a:visited { color: #333; font-weight: normal; } .listmenu a:active { border: 1px inset; font-weight: normal; } /***************************************************/ .listmenu2 { margin:0; padding:0; padding-left:6px; font-size:0.8em; font-family: arial, sans-serif; line-height:1.75em; border-bottom:1px solid #aaa; } .listmenu2 li { margin:0; padding:0; border:0; display:inline; } .listmenu2 a { display: inline; margin:0; padding:0.25em 4px 0.25em; border: 1px solid #aaa; background: #E4F1D2 url(/img/x-gradient.png) repeat-x; color:#333; text-decoration: none; font-weight:normal; } .listmenu2 a.here { border-bottom: 1px solid #f8f8f8; list-style: none; display: inline; background:#f8f8f8; color: #333; } .listmenu2 a:hover, .listmenu2 a:link, .listmenu2 a:visited { text-decoration:none; font-weight:normal; } .listmenu2 a:active { border: 1px outset black; border-bottom: 1px solid #f8f8f8; font-weight: normal; } .listmenu2content { padding:10px; padding-left:15px; background:#f8f8f8; border:1px solid #aaa; border-top:0; } /***************************************************/ .printable_version hr { margin:1em 0; } /***************************************************/ .nowrap { white-space:nowrap; } .xml-button { border:1px solid; border-color:#FC9 #630 #330 #F96; padding:0 3px; font:bold 10px verdana,sans-serif; color:#FFF; background:#F60; text-decoration:none; margin:0; width:4em; text-align:center; } .xml-button:link { color: #fff;text-decoration:none; } .xml-button:visited { color: #fff;text-decoration:none; } #block_left .xml-button:link { color: #fff } #block_left .xml-button:visited { color: #fff } /***************************************************/ .code { color: #333; padding: 6px; background: #eeeeee url(/img/code-background-repeat-x.gif) repeat-x; border-top: 1px solid #aaa; border-left: 1px solid #aaa; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; margin-top: 1em; margin-bottom: 1em; white-space:pre; } /***************************************************/ #homepagenews { list-style-type:none; margin:0; padding:0; } li { margin:1em 0; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=tabber.css Content-Type: text/css; name=tabber.css Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/tabber.css Content-Transfer-Encoding: 8bit /* $Id: example.css,v 1.5 2006/03/27 02:44:36 pat Exp $ */ /*-------------------------------------------------- REQUIRED to hide the non-active tab content. But do not hide them in the print stylesheet! --------------------------------------------------*/ .tabberlive .tabbertabhide { display:none; } /*-------------------------------------------------- .tabber = before the tabber interface is set up .tabberlive = after the tabber interface is set up --------------------------------------------------*/ .tabber { } .tabberlive { margin-top:1em; } /*-------------------------------------------------- ul.tabbernav = the tab navigation list li.tabberactive = the active tab --------------------------------------------------*/ ul.tabbernav { margin:0; padding: 3px 0; border-bottom: 1px solid #778; font: bold 12px Verdana, sans-serif; } ul.tabbernav li { list-style: none; margin: 0; padding:0; display: inline; } ul.tabbernav li a { padding: 3px 0.5em; margin-left: 3px; border: 1px solid #778; border-bottom: none; background: #DDE; text-decoration: none; } ul.tabbernav li a:link { color: #448; } ul.tabbernav li a:visited { color: #667; } ul.tabbernav li a:hover { color: #000; background: #AAE; border-color: #227; } ul.tabbernav li.tabberactive a { background-color: #fff; border-bottom: 1px solid #fff; } ul.tabbernav li.tabberactive a:hover { color: #000; background: white; border-bottom: 1px solid white; } /*-------------------------------------------------- .tabbertab = the tab content Add style only after the tabber interface is set up (.tabberlive) --------------------------------------------------*/ .tabberlive .tabbertab { padding:5px; border:1px solid #aaa; border-top:0; /* If you don't want the tab size changing whenever a tab is changed you can set a fixed height */ height:300px; /* If you set a fix height set overflow to auto and you will get a scrollbar when necessary */ overflow:auto; } /* If desired, hide the heading since a heading is provided by the tab */ .tabberlive .tabbertab h2 { /*display:none;*/ } .tabberlive .tabbertab h3 { /*display:none;*/ } /* Example of using an ID to set different styles for the tabs on the page */ .tabberlive#tab1 { } .tabberlive#tab2 { } .tabberlive#tab2 .tabbertab { height:200px; overflow:auto; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=tabber-print.css Content-Type: text/css; name=tabber-print.css Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/tabber-print.css Content-Transfer-Encoding: 8bit /* $Id: example-print.css,v 1.2 2006/03/06 04:11:55 pat Exp $ */ /* When printing, hide the tab navigation list and don't use any other styles */ .tabbernav { display:none; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=1.css Content-Type: text/css; name=1.css Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/1.css Content-Transfer-Encoding: 8bit #div-1 { position:static; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=2.css Content-Type: text/css; name=2.css Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/2.css Content-Transfer-Encoding: 8bit #div-1 { position:relative; top:20px; left:-40px; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=3.css Content-Type: text/css; name=3.css Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/3.css Content-Transfer-Encoding: 8bit #div-1a { position:absolute; top:0; right:0; width:200px; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=4.css Content-Type: text/css; name=4.css Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/4.css Content-Transfer-Encoding: 8bit #div-1 { position:relative; } #div-1a { position:absolute; top:0; right:0; width:200px; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=5.css Content-Type: text/css; name=5.css Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/5.css Content-Transfer-Encoding: 8bit #div-1 { position:relative; } #div-1a { position:absolute; top:0; right:0; width:200px; } #div-1b { position:absolute; top:0; left:0; width:200px; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=6.css Content-Type: text/css; name=6.css Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/6.css Content-Transfer-Encoding: 8bit #div-1 { position:relative; height:250px; } #div-1a { position:absolute; top:0; right:0; width:200px; } #div-1b { position:absolute; top:0; left:0; width:200px; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=7.css Content-Type: text/css; name=7.css Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/7.css Content-Transfer-Encoding: 8bit #div-1a { float:left; width:200px; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=8.css Content-Type: text/css; name=8.css Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/8.css Content-Transfer-Encoding: 8bit #div-1a { float:left; width:150px; } #div-1b { float:left; width:150px; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=9.css Content-Type: text/css; name=9.css Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/9.css Content-Transfer-Encoding: 8bit #div-1a { float:left; width:190px; } #div-1b { float:left; width:190px; } #div-1c { clear:both; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=10.css Content-Type: text/css; name=10.css Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/10.css Content-Transfer-Encoding: 8bit #example p { display:none; } #div-1 { position:relative; background-color:#eee; } #div-1a { position:absolute; top:20px; left:10px; width:40px; height:40px; background-color:green; } #div-1b { position:absolute; top:20px; right:10px; width:40px; height:40px; background-color:green; } #div-1c { position:absolute; top:120px; left:20px; width:360px; height:20px; background-color:pink; } #div-before { background-color:brown; } ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=styleswitcher.js Content-Type: application/x-javascript; name=styleswitcher.js Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/styleswitcher.js Content-Transfer-Encoding: Base64 ZnVuY3Rpb24gc2V0QWN0aXZlU3R5bGVTaGVldCh0aXRsZSkgew0KICB2YXIgaSwg YSwgbWFpbjsNCiAgZm9yKGk9MDsgKGEgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5 VGFnTmFtZSgibGluayIpW2ldKTsgaSsrKSB7DQogICAgaWYoYS5nZXRBdHRyaWJ1 dGUoInJlbCIpLmluZGV4T2YoInN0eWxlIikgIT0gLTEgJiYgYS5nZXRBdHRyaWJ1 dGUoInRpdGxlIikpIHsNCiAgICAgIGEuZGlzYWJsZWQgPSB0cnVlOw0KICAgICAg aWYoYS5nZXRBdHRyaWJ1dGUoInRpdGxlIikgPT0gdGl0bGUpIHsgYS5kaXNhYmxl ZCA9IGZhbHNlOyB9DQogICAgfQ0KICB9DQp9DQoNCmZ1bmN0aW9uIGdldEFjdGl2 ZVN0eWxlU2hlZXQoKSB7DQogIHZhciBpLCBhOw0KICBmb3IoaT0wOyAoYSA9IGRv Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbaV0pOyBpKyspIHsN CiAgICBpZihhLmdldEF0dHJpYnV0ZSgicmVsIikuaW5kZXhPZigic3R5bGUiKSAh PSAtMSAmJiBhLmdldEF0dHJpYnV0ZSgidGl0bGUiKSAmJiAhYS5kaXNhYmxlZCkg cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJ0aXRsZSIpOw0KICB9DQogIHJldHVybiBu dWxsOw0KfQ0KDQpmdW5jdGlvbiBnZXRQcmVmZXJyZWRTdHlsZVNoZWV0KCkgew0K ICB2YXIgaSwgYTsNCiAgZm9yKGk9MDsgKGEgPSBkb2N1bWVudC5nZXRFbGVtZW50 c0J5VGFnTmFtZSgibGluayIpW2ldKTsgaSsrKSB7DQogICAgaWYoYS5nZXRBdHRy aWJ1dGUoInJlbCIpLmluZGV4T2YoInN0eWxlIikgIT0gLTENCiAgICAgICAmJiBh LmdldEF0dHJpYnV0ZSgicmVsIikuaW5kZXhPZigiYWx0IikgPT0gLTENCiAgICAg ICAmJiBhLmdldEF0dHJpYnV0ZSgidGl0bGUiKQ0KICAgICAgICkgcmV0dXJuIGEu Z2V0QXR0cmlidXRlKCJ0aXRsZSIpOw0KICB9DQogIHJldHVybiBudWxsOw0KfQ0K DQpmdW5jdGlvbiBjcmVhdGVDb29raWUobmFtZSx2YWx1ZSxkYXlzKSB7DQogIGlm IChkYXlzKSB7DQogICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpOw0KICAgIGRhdGUu c2V0VGltZShkYXRlLmdldFRpbWUoKSsoZGF5cyoyNCo2MCo2MCoxMDAwKSk7DQog ICAgdmFyIGV4cGlyZXMgPSAiOyBleHBpcmVzPSIrZGF0ZS50b0dNVFN0cmluZygp Ow0KICB9DQogIGVsc2UgZXhwaXJlcyA9ICIiOw0KICBkb2N1bWVudC5jb29raWUg PSBuYW1lKyI9Iit2YWx1ZStleHBpcmVzKyI7IHBhdGg9LyI7DQp9DQoNCmZ1bmN0 aW9uIHJlYWRDb29raWUobmFtZSkgew0KICB2YXIgbmFtZUVRID0gbmFtZSArICI9 IjsNCiAgdmFyIGNhID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jyk7DQogIGZv cih2YXIgaT0wO2kgPCBjYS5sZW5ndGg7aSsrKSB7DQogICAgdmFyIGMgPSBjYVtp XTsNCiAgICB3aGlsZSAoYy5jaGFyQXQoMCk9PScgJykgYyA9IGMuc3Vic3RyaW5n KDEsYy5sZW5ndGgpOw0KICAgIGlmIChjLmluZGV4T2YobmFtZUVRKSA9PSAwKSBy ZXR1cm4gYy5zdWJzdHJpbmcobmFtZUVRLmxlbmd0aCxjLmxlbmd0aCk7DQogIH0N CiAgcmV0dXJuIG51bGw7DQp9DQoNCndpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbihl KSB7DQogIHZhciBjb29raWUgPSByZWFkQ29va2llKCJzdHlsZSIpOw0KICB2YXIg dGl0bGUgPSBjb29raWUgPyBjb29raWUgOiBnZXRQcmVmZXJyZWRTdHlsZVNoZWV0 KCk7DQogIHNldEFjdGl2ZVN0eWxlU2hlZXQodGl0bGUpOw0KfQ0KDQp3aW5kb3cu b251bmxvYWQgPSBmdW5jdGlvbihlKSB7DQogIHZhciB0aXRsZSA9IGdldEFjdGl2 ZVN0eWxlU2hlZXQoKTsNCiAgY3JlYXRlQ29va2llKCJzdHlsZSIsIHRpdGxlLCAz NjUpOw0KfQ0KDQp2YXIgY29va2llID0gcmVhZENvb2tpZSgic3R5bGUiKTsNCnZh ciB0aXRsZSA9IGNvb2tpZSA/IGNvb2tpZSA6IGdldFByZWZlcnJlZFN0eWxlU2hl ZXQoKTsNCnNldEFjdGl2ZVN0eWxlU2hlZXQodGl0bGUpOw0K ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=tabber.js Content-Type: application/x-javascript; name=tabber.js Content-Location: http://www.barelyfitz.com/screencast/html-training/css/positioning/tabber.js Content-Transfer-Encoding: Base64 Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KICAkSWQ6IHRhYmJlci5qcyx2IDEuNSAyMDA2LzAzLzI3IDAzOjAwOjEx IHBhdCBFeHAgJA0KICB0YWJiZXIuanMgYnkgUGF0cmljayBGaXR6Z2VyYWxkIHBh dEBiYXJlbHlmaXR6LmNvbQ0KDQogIERvY3VtZW50YXRpb24gY2FuIGJlIGZvdW5k IGF0IHRoZSBmb2xsb3dpbmcgVVJMOg0KICBodHRwOi8vd3d3LmJhcmVseWZpdHou Y29tL3Byb2plY3RzL3RhYmJlci8NCg0KICBMaWNlbnNlIChodHRwOi8vd3d3Lm9w ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocCkNCg0KICBDb3B5 cmlnaHQgKGMpIDIwMDYgUGF0cmljayBGaXR6Z2VyYWxkDQoNCiAgUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24NCiAgb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMNCiAgKHRoZSAiU29mdHdhcmUiKSwg dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwNCiAg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwNCiAgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwNCiAg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywNCiAgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6DQoNCiAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUNCiAgaW5jbHVkZWQgaW4gYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu DQoNCiAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg V0FSUkFOVFkgT0YgQU5ZIEtJTkQsDQogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRg0KICBN RVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORA0KICBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTDQogIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB Tg0KICBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HIEZST00sIE9VVCBPRiBPUiBJTg0KICBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFDQogIFNP RlRXQVJFLg0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PSovDQoNCmZ1bmN0aW9uIHRhYmJlck9iaigpDQp7DQogIC8q IENvbnN0cnVjdG9yIGZ1bmN0aW9uIGZvciBhIHRhYmJlciBvYmplY3QgKi8NCg0K ICAvKiBFbGVtZW50IGZvciB0aGUgbWFpbiB0YWJiZXIgZGl2ICovDQogIC8qIHRo aXMuZGl2ICovDQoNCiAgLyogQ2xhc3Mgb2YgdGhlIG1haW4gdGFiYmVyIGRpdiAq Lw0KICB0aGlzLmNsYXNzTWFpbiA9ICJ0YWJiZXIiOw0KDQogIC8qIFJlbmFtZSBj bGFzc01haW4gdG8gY2xhc3NNYWluTGl2ZSBhZnRlciB0YWJpZnlpbmcNCiAgICAg KHNvIGEgZGlmZmVyZW50IHN0eWxlIGNhbiBiZSBhcHBsaWVkKQ0KICAqLw0KICB0 aGlzLmNsYXNzTWFpbkxpdmUgPSAidGFiYmVybGl2ZSI7DQoNCiAgLyogQ2xhc3Mg b2YgZWFjaCBESVYgdGhhdCBjb250YWlucyBhIHRhYiAqLw0KICB0aGlzLmNsYXNz VGFiID0gInRhYmJlcnRhYiI7DQoNCiAgLyogQ2xhc3MgdG8gaW5kaWNhdGUgd2hp Y2ggdGFiIHNob3VsZCBiZSBhY3RpdmUgb24gc3RhcnR1cCAqLw0KICB0aGlzLmNs YXNzVGFiRGVmYXVsdCA9ICJ0YWJiZXJ0YWJkZWZhdWx0IjsNCg0KICAvKiBDbGFz cyBmb3IgdGhlIG5hdmlnYXRpb24gVUwgKi8NCiAgdGhpcy5jbGFzc05hdiA9ICJ0 YWJiZXJuYXYiOw0KDQogIC8qIFdoZW4gYSB0YWIgaXMgdG8gYmUgaGlkZGVuLCBp bnN0ZWFkIG9mIHNldHRpbmcgZGlzcGxheT0nbm9uZScsIHdlDQogICAgIHNldCB0 aGUgY2xhc3Mgb2YgdGhlIGRpdiB0byBjbGFzc1RhYkhpZGUuIEluIHlvdXIgc2Ny ZWVuDQogICAgIHN0eWxlc2hlZXQgeW91IHNob3VsZCBzZXQgY2xhc3NUYWJIaWRl IHRvIGRpc3BsYXk6bm9uZS4gIEluIHlvdXINCiAgICAgcHJpbnQgc3R5bGVzaGVl dCB5b3Ugc2hvdWxkIHNldCBkaXNwbGF5OmJsb2NrIHRvIGVuc3VyZSB0aGF0IGFs bA0KICAgICB0aGUgaW5mb3JtYXRpb24gaXMgcHJpbnRlZC4NCiAgKi8NCiAgdGhp cy5jbGFzc1RhYkhpZGUgPSAidGFiYmVydGFiaGlkZSI7DQoNCiAgLyogQ2xhc3Mg dG8gc2V0IHRoZSBuYXZpZ2F0aW9uIExJIHdoZW4gdGhlIHRhYiBpcyBhY3RpdmUs IHNvIHlvdSBjYW4NCiAgICAgdXNlIGEgZGlmZmVyZW50IHN0eWxlIG9uIHRoZSBh Y3RpdmUgdGFiLg0KICAqLw0KICB0aGlzLmNsYXNzTmF2QWN0aXZlID0gInRhYmJl cmFjdGl2ZSI7DQoNCiAgLyogRWxlbWVudHMgdGhhdCBtaWdodCBjb250YWluIHRo ZSB0aXRsZSBmb3IgdGhlIHRhYiwgb25seSB1c2VkIGlmIGENCiAgICAgdGl0bGUg aXMgbm90IHNwZWNpZmllZCBpbiB0aGUgVElUTEUgYXR0cmlidXRlIG9mIERJViBj bGFzc1RhYi4NCiAgKi8NCiAgdGhpcy50aXRsZUVsZW1lbnRzID0gWydoMicsJ2gz JywnaDQnLCdoNScsJ2g2J107DQoNCiAgLyogU2hvdWxkIHdlIHN0cmlwIG91dCB0 aGUgSFRNTCBmcm9tIHRoZSBpbm5lckhUTUwgb2YgdGhlIHRpdGxlIGVsZW1lbnRz Pw0KICAgICBUaGlzIHNob3VsZCB1c3VhbGx5IGJlIHRydWUuDQogICovDQogIHRo aXMudGl0bGVFbGVtZW50c1N0cmlwSFRNTCA9IHRydWU7DQoNCiAgLyogSWYgdGhl IHVzZXIgc3BlY2lmaWVkIHRoZSB0YWIgbmFtZXMgdXNpbmcgYSBUSVRMRSBhdHRy aWJ1dGUgb24NCiAgICAgdGhlIERJViwgdGhlbiB0aGUgYnJvd3NlciB3aWxsIGRp c3BsYXkgYSB0b29sdGlwIHdoZW5ldmVyIHRoZQ0KICAgICBtb3VzZSBpcyBvdmVy IHRoZSBESVYuIFRvIHByZXZlbnQgdGhpcyB0b29sdGlwLCB3ZSBjYW4gcmVtb3Zl IHRoZQ0KICAgICBUSVRMRSBhdHRyaWJ1dGUgYWZ0ZXIgZ2V0dGluZyB0aGUgdGFi IG5hbWUuDQogICovDQogIHRoaXMucmVtb3ZlVGl0bGUgPSB0cnVlOw0KDQogIC8q IFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHRzIGxpc3RlZCBhYm92ZSBieSBw YXNzaW5nIGluIGFuIG9iamVjdDoNCiAgICAgdmFyIG15dGFiID0gbmV3IHRhYmJl cih7cHJvcGVydHk6dmFsdWUscHJvcGVydHk6dmFsdWV9KTsNCiAgKi8NCiAgZm9y ICh2YXIgbiBpbiBhcmd1bWVudHNbMF0pIHsgdGhpc1tuXSA9IGFyZ3VtZW50c1sw XVtuXTsgfQ0KDQogIC8qIENyZWF0ZSByZWd1bGFyIGV4cHJlc3Npb25zIGZvciB0 aGUgY2xhc3MgbmFtZXMgKi8NCiAgdGhpcy5SRWNsYXNzTWFpbiA9IG5ldyBSZWdF eHAoJ1xcYicgKyB0aGlzLmNsYXNzTWFpbiArICdcXGInLCAnZ2knKTsNCiAgdGhp cy5SRWNsYXNzTWFpbkxpdmUgPSBuZXcgUmVnRXhwKCdcXGInICsgdGhpcy5jbGFz c01haW5MaXZlICsgJ1xcYicsICdnaScpOw0KICB0aGlzLlJFY2xhc3NUYWIgPSBu ZXcgUmVnRXhwKCdcXGInICsgdGhpcy5jbGFzc1RhYiArICdcXGInLCAnZ2knKTsN CiAgdGhpcy5SRWNsYXNzVGFiRGVmYXVsdCA9IG5ldyBSZWdFeHAoJ1xcYicgKyB0 aGlzLmNsYXNzVGFiRGVmYXVsdCArICdcXGInLCAnZ2knKTsNCiAgdGhpcy5SRWNs YXNzVGFiSGlkZSA9IG5ldyBSZWdFeHAoJ1xcYicgKyB0aGlzLmNsYXNzVGFiSGlk ZSArICdcXGInLCAnZ2knKTsNCg0KICAvKiBBcnJheSBvZiBvYmplY3RzIGhvbGRp bmcgaW5mbyBhYm91dCBlYWNoIHRhYiAqLw0KICB0aGlzLnRhYnMgPSBuZXcgQXJy YXkoKTsNCg0KICAvKiBJZiB0aGUgbWFpbiB0YWJiZXIgZGl2IHdhcyBzcGVjaWZp ZWQsIGNhbGwgaW5pdCgpIG5vdyAqLw0KICBpZiAodGhpcy5kaXYpIHsNCg0KICAg IHRoaXMuaW5pdCh0aGlzLmRpdik7DQoNCiAgICAvKiBXZSBkb24ndCBuZWVkIHRo ZSBtYWluIGRpdiBhbnltb3JlLCBhbmQgdG8gcHJldmVudCBhIG1lbW9yeSBsZWFr DQogICAgICAgaW4gSUUsIHdlIG11c3QgcmVtb3ZlIHRoZSBjaXJjdWxhciByZWZl cmVuY2UgYmV0d2VlbiB0aGUgZGl2DQogICAgICAgYW5kIHRoZSB0YWJiZXIgb2Jq ZWN0LiAqLw0KICAgIHRoaXMuZGl2ID0gbnVsbDsNCiAgfQ0KfQ0KDQoNCi8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CiAgTWV0aG9kcyBmb3IgdGFiYmVyT2JqDQogIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCg0KDQp0YWJiZXJPYmou cHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihlKQ0Kew0KICAvKiBTZXQgdXAgdGhl IHRhYmJlciBpbnRlcmZhY2UuDQoNCiAgICAgZSA9IGVsZW1lbnQgKHRoZSBtYWlu IGNvbnRhaW5pbmcgZGl2KQ0KDQogICAgIEV4YW1wbGU6DQogICAgIGluaXQoZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215dGFiYmVyZGl2JykpDQogICAqLw0KDQog IHZhcg0KICBjaGlsZE5vZGVzLCAvKiBjaGlsZCBub2RlcyBvZiB0aGUgdGFiYmVy IGRpdiAqLw0KICBpLCBpMiwgLyogbG9vcCBpbmRpY2VzICovDQogIHQsIC8qIG9i amVjdCB0byBzdG9yZSBpbmZvIGFib3V0IGEgc2luZ2xlIHRhYiAqLw0KICBkZWZh dWx0VGFiPTAsIC8qIHdoaWNoIHRhYiB0byBzZWxlY3QgYnkgZGVmYXVsdCAqLw0K ICBET01fdWwsIC8qIHRhYmJlcm5hdiBsaXN0ICovDQogIERPTV9saSwgLyogdGFi YmVybmF2IGxpc3QgaXRlbSAqLw0KICBET01fYSwgLyogdGFiYmVybmF2IGxpbmsg Ki8NCiAgaGVhZGluZ0VsZW1lbnQ7IC8qIHNlYXJjaGluZyBmb3IgdGV4dCB0byB1 c2UgaW4gdGhlIHRhYiAqLw0KDQogIC8qIFZlcmlmeSB0aGF0IHRoZSBicm93c2Vy IHN1cHBvcnRzIERPTSBzY3JpcHRpbmcgKi8NCiAgaWYgKCFkb2N1bWVudC5nZXRF bGVtZW50c0J5VGFnTmFtZSkgeyByZXR1cm4gZmFsc2U7IH0NCg0KICAvKiBDbGVh ciB0aGUgdGFicyBhcnJheSAoYnV0IGl0IHNob3VsZCBub3JtYWxseSBiZSBlbXB0 eSkgKi8NCiAgdGhpcy50YWJzLmxlbmd0aCA9IDA7DQoNCiAgLyogTG9vcCB0aHJv dWdoIGFuIGFycmF5IG9mIGFsbCB0aGUgY2hpbGQgbm9kZXMgd2l0aGluIG91ciB0 YWJiZXIgZWxlbWVudC4gKi8NCiAgY2hpbGROb2RlcyA9IGUuY2hpbGROb2RlczsN CiAgZm9yKGk9MDsgaSA8IGNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHsNCg0KICAg IC8qIEZpbmQgdGhlIG5vZGVzIHdoZXJlIGNsYXNzPSJ0YWJiZXJ0YWIiICovDQog ICAgaWYoY2hpbGROb2Rlc1tpXS5jbGFzc05hbWUgJiYNCiAgICAgICBjaGlsZE5v ZGVzW2ldLmNsYXNzTmFtZS5tYXRjaCh0aGlzLlJFY2xhc3NUYWIpKSB7DQogICAg ICANCiAgICAgIC8qIENyZWF0ZSBhIG5ldyBvYmplY3QgdG8gc2F2ZSBpbmZvIGFi b3V0IHRoaXMgdGFiICovDQogICAgICB0ID0gbmV3IE9iamVjdCgpOw0KICAgICAg DQogICAgICAvKiBTYXZlIGEgcG9pbnRlciB0byB0aGUgZGl2IGZvciB0aGlzIHRh YiAqLw0KICAgICAgdC5kaXYgPSBjaGlsZE5vZGVzW2ldOw0KICAgICAgDQogICAg ICAvKiBBZGQgdGhlIG5ldyBvYmplY3QgdG8gdGhlIGFycmF5IG9mIHRhYnMgKi8N CiAgICAgIHRoaXMudGFic1t0aGlzLnRhYnMubGVuZ3RoXSA9IHQ7DQoNCiAgICAg IC8qIElmIHRoZSBjbGFzcyBuYW1lIGNvbnRhaW5zIGNsYXNzVGFiRGVmYXVsdCwN CgkgdGhlbiBzZWxlY3QgdGhpcyB0YWIgYnkgZGVmYXVsdC4NCiAgICAgICovDQog ICAgICBpZiAoY2hpbGROb2Rlc1tpXS5jbGFzc05hbWUubWF0Y2godGhpcy5SRWNs YXNzVGFiRGVmYXVsdCkpIHsNCglkZWZhdWx0VGFiID0gdGhpcy50YWJzLmxlbmd0 aC0xOw0KICAgICAgfQ0KICAgIH0NCiAgfQ0KDQogIC8qIENyZWF0ZSBhIG5ldyBV TCBsaXN0IHRvIGhvbGQgdGhlIHRhYiBoZWFkaW5ncyAqLw0KICBET01fdWwgPSBk b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ1bCIpOw0KICBET01fdWwuY2xhc3NOYW1l ID0gdGhpcy5jbGFzc05hdjsNCiAgDQogIC8qIExvb3AgdGhyb3VnaCBlYWNoIHRh YiB3ZSBmb3VuZCAqLw0KICBmb3IgKGk9MDsgaSA8IHRoaXMudGFicy5sZW5ndGg7 IGkrKykgew0KDQogICAgdCA9IHRoaXMudGFic1tpXTsNCg0KICAgIC8qIEdldCB0 aGUgbGFiZWwgdG8gdXNlIGZvciB0aGlzIHRhYjoNCiAgICAgICBGcm9tIHRoZSB0 aXRsZSBhdHRyaWJ1dGUgb24gdGhlIERJViwNCiAgICAgICBPciBmcm9tIG9uZSBv ZiB0aGUgdGhpcy50aXRsZUVsZW1lbnRzW10gZWxlbWVudHMsDQogICAgICAgT3Ig dXNlIGFuIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG51bWJlci4NCiAgICAgKi8N CiAgICB0LmhlYWRpbmdUZXh0ID0gdC5kaXYudGl0bGU7DQoNCiAgICAvKiBSZW1v dmUgdGhlIHRpdGxlIGF0dHJpYnV0ZSB0byBwcmV2ZW50IGEgdG9vbHRpcCBmcm9t IGFwcGVhcmluZyAqLw0KICAgIGlmICh0aGlzLnJlbW92ZVRpdGxlKSB7IHQuZGl2 LnRpdGxlID0gJyc7IH0NCg0KICAgIGlmICghdC5oZWFkaW5nVGV4dCkgew0KDQog ICAgICAvKiBUaXRsZSB3YXMgbm90IGRlZmluZWQgaW4gdGhlIHRpdGxlIG9mIHRo ZSBESVYsDQoJIFNvIHRyeSB0byBnZXQgdGhlIHRpdGxlIGZyb20gYW4gZWxlbWVu dCB3aXRoaW4gdGhlIERJVi4NCgkgR28gdGhyb3VnaCB0aGUgbGlzdCBvZiBlbGVt ZW50cyBpbiB0aGlzLnRpdGxlRWxlbWVudHMNCgkgKHR5cGljYWxseSBoZWFkaW5n IGVsZW1lbnRzIFsnaDInLCdoMycsJ2g0J10pDQogICAgICAqLw0KICAgICAgZm9y IChpMj0wOyBpMjx0aGlzLnRpdGxlRWxlbWVudHMubGVuZ3RoOyBpMisrKSB7DQoJ aGVhZGluZ0VsZW1lbnQgPSB0LmRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSh0aGlz LnRpdGxlRWxlbWVudHNbaTJdKVswXTsNCglpZiAoaGVhZGluZ0VsZW1lbnQpIHsN CgkgIHQuaGVhZGluZ1RleHQgPSBoZWFkaW5nRWxlbWVudC5pbm5lckhUTUw7DQoJ ICBpZiAodGhpcy50aXRsZUVsZW1lbnRzU3RyaXBIVE1MKSB7DQoJICAgIHQuaGVh ZGluZ1RleHQucmVwbGFjZSgvPGJyPi9naSwiICIpOw0KCSAgICB0LmhlYWRpbmdU ZXh0ID0gdC5oZWFkaW5nVGV4dC5yZXBsYWNlKC88W14+XSs+L2csIiIpOw0KCSAg fQ0KCSAgYnJlYWs7DQoJfQ0KICAgICAgfQ0KICAgIH0NCg0KICAgIGlmICghdC5o ZWFkaW5nVGV4dCkgew0KICAgICAgLyogVGl0bGUgd2FzIG5vdCBmb3VuZCAob3Ig aXMgYmxhbmspIHNvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYQ0KICAgICAgICAg bnVtYmVyIGZvciB0aGUgdGFiLg0KICAgICAgKi8NCiAgICAgIHQuaGVhZGluZ1Rl eHQgPSBpICsgMTsNCiAgICB9DQoNCiAgICAvKiBDcmVhdGUgYSBsaXN0IGVsZW1l bnQgZm9yIHRoZSB0YWIgKi8NCiAgICBET01fbGkgPSBkb2N1bWVudC5jcmVhdGVF bGVtZW50KCJsaSIpOw0KDQogICAgLyogU2F2ZSBhIHJlZmVyZW5jZSB0byB0aGlz IGxpc3QgaXRlbSBzbyB3ZSBjYW4gbGF0ZXIgY2hhbmdlIGl0IHRvDQogICAgICAg dGhlICJhY3RpdmUiIGNsYXNzICovDQogICAgdC5saSA9IERPTV9saTsNCg0KICAg IC8qIENyZWF0ZSBhIGxpbmsgdG8gYWN0aXZhdGUgdGhlIHRhYiAqLw0KICAgIERP TV9hID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOw0KICAgIERPTV9hLmFw cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQuaGVhZGluZ1RleHQp KTsNCiAgICBET01fYS5ocmVmID0gImphdmFzY3JpcHQ6dm9pZChudWxsKTsiOw0K ICAgIERPTV9hLnRpdGxlID0gdC5oZWFkaW5nVGV4dDsNCiAgICBET01fYS5vbmNs aWNrID0gdGhpcy5vbkNsaWNrOw0KDQogICAgLyogQWRkIHNvbWUgcHJvcGVydGll cyB0byB0aGUgbGluayBzbyB3ZSBjYW4gaWRlbnRpZnkgd2hpY2ggdGFiDQogICAg ICAgd2FzIGNsaWNrZWQuIExhdGVyIHRoZSBvbkNsaWNrIG1ldGhvZCB3aWxsIG5l ZWQgdGhpcy4NCiAgICAqLw0KICAgIERPTV9hLnRhYmJlciA9IHRoaXM7DQogICAg RE9NX2EudGFiSW5kZXggPSBpOw0KDQogICAgLyogQWRkIHRoZSBsaW5rIHRvIHRo ZSBsaXN0IGVsZW1lbnQgKi8NCiAgICBET01fbGkuYXBwZW5kQ2hpbGQoRE9NX2Ep Ow0KDQogICAgLyogQWRkIHRoZSBsaXN0IGVsZW1lbnQgdG8gdGhlIGxpc3QgKi8N CiAgICBET01fdWwuYXBwZW5kQ2hpbGQoRE9NX2xpKTsNCiAgfQ0KDQogIC8qIEFk ZCB0aGUgVUwgbGlzdCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0YWJiZXIgZGl2 ICovDQogIGUuaW5zZXJ0QmVmb3JlKERPTV91bCwgZS5maXJzdENoaWxkKTsNCg0K ICAvKiBNYWtlIHRoZSB0YWJiZXIgZGl2ICJsaXZlIiBzbyBkaWZmZXJlbnQgQ1NT IGNhbiBiZSBhcHBsaWVkICovDQogIGUuY2xhc3NOYW1lID0gZS5jbGFzc05hbWUu cmVwbGFjZSh0aGlzLlJFY2xhc3NNYWluLCB0aGlzLmNsYXNzTWFpbkxpdmUpOw0K DQogIC8qIEFjdGl2YXRlIHRoZSBkZWZhdWx0IHRhYiAqLw0KICB0aGlzLnRhYlNo b3coZGVmYXVsdFRhYik7DQoNCiAgcmV0dXJuIHRoaXM7DQp9Ow0KDQoNCnRhYmJl ck9iai5wcm90b3R5cGUub25DbGljayA9IGZ1bmN0aW9uKCkNCnsNCiAgLyogVGhp cyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvbkNsaWNrIGV2 ZW50IG9mIGFuIDxBPg0KICAgICBlbGVtZW50LCBpbiB3aGljaCBjYXNlIHdlIHdp bGwgZGV0ZXJtaW5lIHdoaWNoIHRhYiB3YXMgY2xpY2tlZCBieQ0KICAgICBleGFt aW5pbmcgYSBwcm9wZXJ0eSB0aGF0IHdlIHByZXZpb3VzbHkgYXR0YWNoZWQgdG8g dGhlIDxBPg0KICAgICBlbGVtZW50Lg0KDQogICAgIFNpbmNlIHRoaXMgd2FzIHRy aWdnZXJlZCBmcm9tIGFuIG9uQ2xpY2sgZXZlbnQsIHRoZSB2YXJpYWJsZQ0KICAg ICAidGhpcyIgcmVmZXJzIHRvIHRoZSA8QT4gZWxlbWVudCB0aGF0IHRyaWdnZXJl ZCB0aGUgb25DbGljaw0KICAgICBldmVudCAoYW5kIG5vdCB0byB0aGUgdGFiYmVy T2JqKS4NCg0KICAgICBXaGVuIHRhYmJlck9iaiB3YXMgaW5pdGlhbGl6ZWQsIHdl IGFkZGVkIHNvbWUgZXh0cmEgcHJvcGVydGllcw0KICAgICB0byB0aGUgPEE+IGVs ZW1lbnQsIGZvciB0aGUgcHVycG9zZSBvZiByZXRyaWV2aW5nIHRoZW0gbm93LiBH ZXQNCiAgICAgdGhlIHRhYmJlck9iaiBvYmplY3QsIHBsdXMgdGhlIHRhYiBudW1i ZXIgdGhhdCB3YXMgY2xpY2tlZC4NCiAgKi8NCiAgdmFyIGEgPSB0aGlzOw0KICBp ZiAoIWEudGFiYmVyKSB7IHJldHVybiBmYWxzZTsgfQ0KDQogIHZhciBzZWxmID0g YS50YWJiZXI7DQogIHZhciB0YWJJbmRleCA9IGEudGFiSW5kZXg7DQoNCiAgLyog UmVtb3ZlIGZvY3VzIGZyb20gdGhlIGxpbmsgYmVjYXVzZSBpdCBsb29rcyB1Z2x5 Lg0KICAgICBJIGRvbid0IGtub3cgaWYgdGhpcyBpcyBhIGdvb2QgaWRlYS4uLg0K ICAqLw0KICBhLmJsdXIoKTsNCg0KICBzZWxmLnRhYlNob3codGFiSW5kZXgpOw0K DQogIHJldHVybiBmYWxzZTsNCn07DQoNCg0KdGFiYmVyT2JqLnByb3RvdHlwZS50 YWJIaWRlQWxsID0gZnVuY3Rpb24oKQ0Kew0KICAvKiBIaWRlIGFsbCB0YWJzIGFu ZCBtYWtlIGFsbCBuYXZpZ2F0aW9uIGxpbmtzIGluYWN0aXZlICovDQogIGZvciAo dmFyIGkgPSAwOyBpIDwgdGhpcy50YWJzLmxlbmd0aDsgaSsrKSB7DQogICAgdGhp cy50YWJIaWRlKGkpOw0KICB9DQp9Ow0KDQoNCnRhYmJlck9iai5wcm90b3R5cGUu dGFiSGlkZSA9IGZ1bmN0aW9uKHRhYkluZGV4KQ0Kew0KICAvKiBIaWRlIGEgc2lu Z2xlIHRhYiBhbmQgbWFrZSBpdHMgbmF2aWdhdGlvbiBsaW5rIGluYWN0aXZlICov DQogIHZhciBkaXYgPSB0aGlzLnRhYnNbdGFiSW5kZXhdLmRpdjsNCg0KICAvKiBI aWRlIHRoZSB0YWIgY29udGVudHMgYnkgYWRkaW5nIGNsYXNzVGFiSGlkZSB0byB0 aGUgZGl2ICovDQogIGlmICghZGl2LmNsYXNzTmFtZS5tYXRjaCh0aGlzLlJFY2xh c3NUYWJIaWRlKSkgew0KICAgIGRpdi5jbGFzc05hbWUgKz0gJyAnICsgdGhpcy5j bGFzc1RhYkhpZGU7DQogIH0NCiAgdGhpcy5uYXZDbGVhckFjdGl2ZSh0YWJJbmRl eCk7DQp9Ow0KDQoNCnRhYmJlck9iai5wcm90b3R5cGUudGFiU2hvdyA9IGZ1bmN0 aW9uKHRhYkluZGV4KQ0Kew0KICAvKiBTaG93IHRoZSB0YWJJbmRleCB0YWIgYW5k IGhpZGUgYWxsIHRoZSBvdGhlciB0YWJzICovDQoNCiAgaWYgKCF0aGlzLnRhYnNb dGFiSW5kZXhdKSB7IHJldHVybiBmYWxzZTsgfQ0KDQogIC8qIENhbGwgdGhlIGN1 c3RvbSBvbmNsaWNrICovDQogIGlmICh0eXBlb2YgdGhpcy5vblRhYkNsaWNrID09 ICdmdW5jdGlvbicpIHsNCiAgICB0aGlzLm9uVGFiQ2xpY2sodGFiSW5kZXgpOw0K ICB9DQoNCiAgLyogSGlkZSBhbGwgdGhlIHRhYnMgZmlyc3QgKi8NCiAgdGhpcy50 YWJIaWRlQWxsKCk7DQoNCiAgLyogR2V0IHRoZSBkaXYgdGhhdCBob2xkcyB0aGlz IHRhYiAqLw0KICB2YXIgZGl2ID0gdGhpcy50YWJzW3RhYkluZGV4XS5kaXY7DQoN CiAgLyogUmVtb3ZlIGNsYXNzVGFiSGlkZSBmcm9tIHRoZSBkaXYgKi8NCiAgZGl2 LmNsYXNzTmFtZSA9IGRpdi5jbGFzc05hbWUucmVwbGFjZSh0aGlzLlJFY2xhc3NU YWJIaWRlLCAnJyk7DQoNCiAgLyogTWFyayB0aGlzIHRhYiBuYXZpZ2F0aW9uIGxp bmsgYXMgImFjdGl2ZSIgKi8NCiAgdGhpcy5uYXZTZXRBY3RpdmUodGFiSW5kZXgp Ow0KDQogIHJldHVybiB0aGlzOw0KfTsNCg0KDQp0YWJiZXJPYmoucHJvdG90eXBl Lm5hdlNldEFjdGl2ZSA9IGZ1bmN0aW9uKHRhYkluZGV4KQ0Kew0KICAvKiBOb3Rl OiB0aGlzIG1ldGhvZCBkb2VzICpub3QqIGVuZm9yY2UgdGhlIHJ1bGUNCiAgICAg dGhhdCBvbmx5IG9uZSBuYXYgaXRlbSBjYW4gYmUgYWN0aXZlIGF0IGEgdGltZS4N CiAgKi8NCg0KICAvKiBTZXQgY2xhc3NOYXZBY3RpdmUgZm9yIHRoZSBuYXZpZ2F0 aW9uIGxpc3QgaXRlbSAqLw0KICB0aGlzLnRhYnNbdGFiSW5kZXhdLmxpLmNsYXNz TmFtZSA9IHRoaXMuY2xhc3NOYXZBY3RpdmU7DQoNCiAgcmV0dXJuIHRoaXM7DQp9 Ow0KDQoNCnRhYmJlck9iai5wcm90b3R5cGUubmF2Q2xlYXJBY3RpdmUgPSBmdW5j dGlvbih0YWJJbmRleCkNCnsNCiAgLyogTm90ZTogdGhpcyBtZXRob2QgZG9lcyAq bm90KiBlbmZvcmNlIHRoZSBydWxlDQogICAgIHRoYXQgb25lIG5hdiBzaG91bGQg YWx3YXlzIGJlIGFjdGl2ZS4NCiAgKi8NCg0KICAvKiBSZW1vdmUgY2xhc3NOYXZB Y3RpdmUgZnJvbSB0aGUgbmF2aWdhdGlvbiBsaXN0IGl0ZW0gKi8NCiAgdGhpcy50 YWJzW3RhYkluZGV4XS5saS5jbGFzc05hbWUgPSAnJzsNCg0KICByZXR1cm4gdGhp czsNCn07DQoNCg0KLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PSovDQoNCg0KZnVuY3Rpb24gdGFiYmVyQXV0b21hdGlj KHRhYmJlckFyZ3MpDQp7DQogIC8qIFRoaXMgZnVuY3Rpb24gZmluZHMgYWxsIERJ ViBlbGVtZW50cyBpbiB0aGUgZG9jdW1lbnQgd2hlcmUNCiAgICAgY2xhc3M9dGFi YmVyLmNsYXNzTWFpbiwgdGhlbiBjb252ZXJ0cyB0aGVtIHRvIHVzZSB0aGUgdGFi YmVyDQogICAgIGludGVyZmFjZS4NCg0KICAgICB0YWJiZXJBcmdzID0gYW4gb2Jq ZWN0IHRvIHNlbmQgdG8gIm5ldyB0YWJiZXIoKSINCiAgKi8NCiAgaWYgKCF0YWJi ZXJBcmdzKSB7IHRhYmJlckFyZ3MgPSB7fTsgfQ0KDQogIC8qIENyZWF0ZSBhIHRh YmJlciBvYmplY3Qgc28gd2UgY2FuIGdldCB0aGUgdmFsdWUgb2YgY2xhc3NNYWlu ICovDQogIHZhciB0ZW1wT2JqID0gbmV3IHRhYmJlck9iaih0YWJiZXJBcmdzKTsN Cg0KICAvKiBGaW5kIGFsbCBESVYgZWxlbWVudHMgaW4gdGhlIGRvY3VtZW50IHRo YXQgaGF2ZSBjbGFzcz10YWJiZXIgKi8NCg0KICAvKiBGaXJzdCBnZXQgYW4gYXJy YXkgb2YgYWxsIERJViBlbGVtZW50cyBhbmQgbG9vcCB0aHJvdWdoIHRoZW0gKi8N CiAgdmFyIGRpdnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGl2 Iik7DQogIGZvciAodmFyIGk9MDsgaSA8IGRpdnMubGVuZ3RoOyBpKyspIHsNCiAg ICANCiAgICAvKiBJcyB0aGlzIERJViB0aGUgY29ycmVjdCBjbGFzcz8gKi8NCiAg ICBpZiAoZGl2c1tpXS5jbGFzc05hbWUgJiYNCglkaXZzW2ldLmNsYXNzTmFtZS5t YXRjaCh0ZW1wT2JqLlJFY2xhc3NNYWluKSkgew0KICAgICAgDQogICAgICAvKiBO b3cgdGFiaWZ5IHRoZSBESVYgKi8NCiAgICAgIHRhYmJlckFyZ3MuZGl2ID0gZGl2 c1tpXTsNCiAgICAgIGRpdnNbaV0udGFiYmVyID0gbmV3IHRhYmJlck9iaih0YWJi ZXJBcmdzKTsNCiAgICB9DQogIH0NCiAgDQogIHJldHVybiB0aGlzOw0KfQ0KDQoN Ci8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0qLw0KDQoNCmZ1bmN0aW9uIHRhYmJlckF1dG9tYXRpY09uTG9hZCh0YWJi ZXJBcmdzKQ0Kew0KICAvKiBUaGlzIGZ1bmN0aW9uIGFkZHMgdGFiYmVyQXV0b21h dGljIHRvIHRoZSB3aW5kb3cub25sb2FkIGV2ZW50LA0KICAgICBzbyBpdCB3aWxs IHJ1biBhZnRlciB0aGUgZG9jdW1lbnQgaGFzIGZpbmlzaGVkIGxvYWRpbmcuDQog ICovDQoNCiAgaWYgKCF0YWJiZXJBcmdzKSB7IHRhYmJlckFyZ3MgPSB7fTsgfQ0K DQogIC8qIFRha2VuIGZyb206IGh0dHA6Ly9zaW1vbi5pbmN1dGlvLmNvbS9hcmNo aXZlLzIwMDQvMDUvMjYvYWRkTG9hZEV2ZW50ICovDQoNCiAgdmFyIG9sZE9uTG9h ZCA9IHdpbmRvdy5vbmxvYWQ7DQogIGlmICh0eXBlb2Ygd2luZG93Lm9ubG9hZCAh PSAnZnVuY3Rpb24nKSB7DQogICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkg ew0KICAgICAgdGFiYmVyQXV0b21hdGljKHRhYmJlckFyZ3MpOw0KICAgIH07DQog IH0gZWxzZSB7DQogICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgew0KICAg ICAgb2xkT25Mb2FkKCk7DQogICAgICB0YWJiZXJBdXRvbWF0aWModGFiYmVyQXJn cyk7DQogICAgfTsNCiAgfQ0KfQ0KDQoNCi8qPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQoNCi8qIFJ1biB0YWJi ZXJBdXRvbWF0aWNPbmxvYWQoKSB1bmxlc3MgdGhlICJtYW51YWxTdGFydHVwIiBv cHRpb24gd2FzIHNwZWNpZmllZCAqLw0KDQppZiAodHlwZW9mIHRhYmJlck9wdGlv bnMgPT0gJ3VuZGVmaW5lZCcpIHsNCg0KICAgIHRhYmJlckF1dG9tYXRpY09uTG9h ZCgpOw0KDQp9IGVsc2Ugew0KDQogIGlmICghdGFiYmVyT3B0aW9uc1snbWFudWFs U3RhcnR1cCddKSB7DQogICAgdGFiYmVyQXV0b21hdGljT25Mb2FkKHRhYmJlck9w dGlvbnMpOw0KICB9DQoNCn0NCg== ------------bHiCU6udPUzEKQSwTnJGqI Content-Disposition: inline; filename=urchin.js Content-Type: text/javascript; name=urchin.js Content-Location: http://www.google-analytics.com/urchin.js Content-Transfer-Encoding: 8bit //-- Google Analytics Urchin Module //-- Copyright 2005 Google, All Rights Reserved. //-- Urchin On Demand Settings ONLY var _uacct=""; // set up the Urchin Account var _userv=1; // service mode (0=local,1=remote,2=both) //-- UTM User Settings var _ufsc=1; // set client info flag (1=on|0=off) var _udn="auto"; // (auto|none|domain) set the domain name for cookies var _uhash="on"; // (on|off) unique domain hash for cookies var _utimeout="1800"; // set the inactive session timeout in seconds var _ugifpath="/__utm.gif"; // set the web path to the __utm.gif file var _utsp="|"; // transaction field separator var _uflash=1; // set flash version detect option (1=on|0=off) var _utitle=1; // set the document title detect option (1=on|0=off) var _ulink=0; // enable linker functionality (1=on|0=off) var _uanchor=0; // enable use of anchors for campaign (1=on|0=off) var _utcp="/"; // the cookie path for tracking var _usample=100; // The sampling % of visitors to track (1-100). //-- UTM Campaign Tracking Settings var _uctm=1; // set campaign tracking module (1=on|0=off) var _ucto="15768000"; // set timeout in seconds (6 month default) var _uccn="utm_campaign"; // name var _ucmd="utm_medium"; // medium (cpc|cpm|link|email|organic) var _ucsr="utm_source"; // source var _uctr="utm_term"; // term/keyword var _ucct="utm_content"; // content var _ucid="utm_id"; // id number var _ucno="utm_nooverride"; // don't override //-- Auto/Organic Sources and Keywords var _uOsr=new Array(); var _uOkw=new Array(); _uOsr[0]="google"; _uOkw[0]="q"; _uOsr[1]="yahoo"; _uOkw[1]="p"; _uOsr[2]="msn"; _uOkw[2]="q"; _uOsr[3]="aol"; _uOkw[3]="query"; _uOsr[4]="aol"; _uOkw[4]="encquery"; _uOsr[5]="lycos"; _uOkw[5]="query"; _uOsr[6]="ask"; _uOkw[6]="q"; _uOsr[7]="altavista"; _uOkw[7]="q"; _uOsr[8]="search"; _uOkw[8]="q"; _uOsr[9]="netscape"; _uOkw[9]="s"; _uOsr[10]="cnn"; _uOkw[10]="query"; _uOsr[11]="looksmart"; _uOkw[11]="qt"; _uOsr[12]="about"; _uOkw[12]="terms"; _uOsr[13]="mamma"; _uOkw[13]="query"; _uOsr[14]="alltheweb"; _uOkw[14]="q"; _uOsr[15]="gigablast"; _uOkw[15]="q"; _uOsr[16]="voila"; _uOkw[16]="kw"; _uOsr[17]="virgilio"; _uOkw[17]="qs"; _uOsr[18]="live"; _uOkw[18]="q"; _uOsr[19]="baidu"; _uOkw[19]="wd"; _uOsr[20]="alice"; _uOkw[20]="qs"; _uOsr[21]="seznam"; _uOkw[21]="w"; _uOsr[22]="yandex"; _uOkw[22]="text"; _uOsr[23]="najdi"; _uOkw[23]="q"; //-- Auto/Organic Keywords to Ignore var _uOno=new Array(); //_uOno[0]="urchin"; //_uOno[1]="urchin.com"; //_uOno[2]="www.urchin.com"; //-- Referral domains to Ignore var _uRno=new Array(); //_uRno[0]=".urchin.com"; //-- **** Don't modify below this point *** var _uff,_udh,_udt,_ubl=0,_udo="",_uu,_ufns=0,_uns=0,_ur="-",_ufno=0,_ust=0,_ubd=document,_udl=_ubd.location,_udlh="",_uwv="1"; var _ugifpath2="http://www.google-analytics.com/__utm.gif"; if (_udl.hash) _udlh=_udl.href.substring(_udl.href.indexOf('#')); if (_udl.protocol=="https:") _ugifpath2="https://ssl.google-analytics.com/__utm.gif"; if (!_utcp || _utcp=="") _utcp="/"; function urchinTracker(page) { if (_udl.protocol=="file:") return; if (_uff && (!page || page=="")) return; var a,b,c,xx,v,z,k,x="",s="",f=0; var nx=" expires=Sun, 18 Jan 2038 00:00:00 GMT;"; var dc=_ubd.cookie; _udh=_uDomain(); if (!_uVG()) return; _uu=Math.round(Math.random()*2147483647); _udt=new Date(); _ust=Math.round(_udt.getTime()/1000); a=dc.indexOf("__utma="+_udh); b=dc.indexOf("__utmb="+_udh); c=dc.indexOf("__utmc="+_udh); if (_udn && _udn!="") { _udo=" domain="+_udn+";"; } if (_utimeout && _utimeout!="") { x=new Date(_udt.getTime()+(_utimeout*1000)); x=" expires="+x.toGMTString()+";"; } if (_ulink) { if (_uanchor && _udlh && _udlh!="") s=_udlh+"&"; s+=_udl.search; if(s && s!="" && s.indexOf("__utma=")>=0) { if (!(_uIN(a=_uGC(s,"__utma=","&")))) a="-"; if (!(_uIN(b=_uGC(s,"__utmb=","&")))) b="-"; if (!(_uIN(c=_uGC(s,"__utmc=","&")))) c="-"; v=_uGC(s,"__utmv=","&"); z=_uGC(s,"__utmz=","&"); k=_uGC(s,"__utmk=","&"); xx=_uGC(s,"__utmx=","&"); if ((k*1) != ((_uHash(a+b+c+xx+z+v)*1)+(_udh*1))) {_ubl=1;a="-";b="-";c="-";xx="-";z="-";v="-";} if (a!="-" && b!="-" && c!="-") f=1; else if(a!="-") f=2; } } if(f==1) { _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+b+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+c+"; path="+_utcp+";"+_udo; } else if (f==2) { a=_uFixA(s,"&",_ust); _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+_udh+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+_udh+"; path="+_utcp+";"+_udo; _ufns=1; } else if (a>=0 && b>=0 && c>=0) { _ubd.cookie="__utmb="+_udh+"; path="+_utcp+";"+x+_udo; } else { if (a>=0) a=_uFixA(_ubd.cookie,";",_ust); else a=_udh+"."+_uu+"."+_ust+"."+_ust+"."+_ust+".1"; _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+_udh+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+_udh+"; path="+_utcp+";"+_udo; _ufns=1; } if (_ulink && xx && xx!="" && xx!="-") { xx=_uUES(xx); if (xx.indexOf(";")==-1) _ubd.cookie="__utmx="+xx+"; path="+_utcp+";"+nx+_udo; } if (_ulink && v && v!="" && v!="-") { v=_uUES(v); if (v.indexOf(";")==-1) _ubd.cookie="__utmv="+v+"; path="+_utcp+";"+nx+_udo; } _uInfo(page); _ufns=0; _ufno=0; _uff=1; } function _uInfo(page) { var p,s="",dm="",pg=_udl.pathname+_udl.search; if (page && page!="") pg=_uES(page,1); _ur=_ubd.referrer; if (!_ur || _ur=="") { _ur="-"; } else { dm=_ubd.domain; if(_utcp && _utcp!="/") dm+=_utcp; p=_ur.indexOf(dm); if ((p>=0) && (p<=8)) { _ur="0"; } if (_ur.indexOf("[")==0 && _ur.lastIndexOf("]")==(_ur.length-1)) { _ur="-"; } } s+="&utmn="+_uu; if (_ufsc) s+=_uBInfo(); if (_uctm) s+=_uCInfo(); if (_utitle && _ubd.title && _ubd.title!="") s+="&utmdt="+_uES(_ubd.title); if (_udl.hostname && _udl.hostname!="") s+="&utmhn="+_uES(_udl.hostname); s+="&utmr="+_ur; s+="&utmp="+pg; if ((_userv==0 || _userv==2) && _uSP()) { var i=new Image(1,1); i.src=_ugifpath+"?"+"utmwv="+_uwv+s; i.onload=function() {_uVoid();} } if ((_userv==1 || _userv==2) && _uSP()) { var i2=new Image(1,1); i2.src=_ugifpath2+"?"+"utmwv="+_uwv+s+"&utmac="+_uacct+"&utmcc="+_uGCS(); i2.onload=function() { _uVoid(); } } return; } function _uVoid() { return; } function _uCInfo() { if (!_ucto || _ucto=="") { _ucto="15768000"; } if (!_uVG()) return; var c="",t="-",t2="-",t3="-",o=0,cs=0,cn=0,i=0,z="-",s=""; if (_uanchor && _udlh && _udlh!="") s=_udlh+"&"; s+=_udl.search; var x=new Date(_udt.getTime()+(_ucto*1000)); var dc=_ubd.cookie; x=" expires="+x.toGMTString()+";"; if (_ulink && !_ubl) { z=_uUES(_uGC(s,"__utmz=","&")); if (z!="-" && z.indexOf(";")==-1) { _ubd.cookie="__utmz="+z+"; path="+_utcp+";"+x+_udo; return ""; } } z=dc.indexOf("__utmz="+_udh); if (z>-1) { z=_uGC(dc,"__utmz="+_udh,";"); } else { z="-"; } t=_uGC(s,_ucid+"=","&"); t2=_uGC(s,_ucsr+"=","&"); t3=_uGC(s,"gclid=","&"); if ((t!="-" && t!="") || (t2!="-" && t2!="") || (t3!="-" && t3!="")) { if (t!="-" && t!="") c+="utmcid="+_uEC(t); if (t2!="-" && t2!="") { if (c != "") c+="|"; c+="utmcsr="+_uEC(t2); } if (t3!="-" && t3!="") { if (c != "") c+="|"; c+="utmgclid="+_uEC(t3); } t=_uGC(s,_uccn+"=","&"); if (t!="-" && t!="") c+="|utmccn="+_uEC(t); else c+="|utmccn=(not+set)"; t=_uGC(s,_ucmd+"=","&"); if (t!="-" && t!="") c+="|utmcmd="+_uEC(t); else c+="|utmcmd=(not+set)"; t=_uGC(s,_uctr+"=","&"); if (t!="-" && t!="") c+="|utmctr="+_uEC(t); else { t=_uOrg(1); if (t!="-" && t!="") c+="|utmctr="+_uEC(t); } t=_uGC(s,_ucct+"=","&"); if (t!="-" && t!="") c+="|utmcct="+_uEC(t); t=_uGC(s,_ucno+"=","&"); if (t=="1") o=1; if (z!="-" && o==1) return ""; } if (c=="-" || c=="") { c=_uOrg(); if (z!="-" && _ufno==1) return ""; } if (c=="-" || c=="") { if (_ufns==1) c=_uRef(); if (z!="-" && _ufno==1) return ""; } if (c=="-" || c=="") { if (z=="-" && _ufns==1) { c="utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)"; } if (c=="-" || c=="") return ""; } if (z!="-") { i=z.indexOf("."); if (i>-1) i=z.indexOf(".",i+1); if (i>-1) i=z.indexOf(".",i+1); if (i>-1) i=z.indexOf(".",i+1); t=z.substring(i+1,z.length); if (t.toLowerCase()==c.toLowerCase()) cs=1; t=z.substring(0,i); if ((i=t.lastIndexOf(".")) > -1) { t=t.substring(i+1,t.length); cn=(t*1); } } if (cs==0 || _ufns==1) { t=_uGC(dc,"__utma="+_udh,";"); if ((i=t.lastIndexOf(".")) > 9) { _uns=t.substring(i+1,t.length); _uns=(_uns*1); } cn++; if (_uns==0) _uns=1; _ubd.cookie="__utmz="+_udh+"."+_ust+"."+_uns+"."+cn+"."+c+"; path="+_utcp+"; "+x+_udo; } if (cs==0 || _ufns==1) return "&utmcn=1"; else return "&utmcr=1"; } function _uRef() { if (_ur=="0" || _ur=="" || _ur=="-") return ""; var i=0,h,k,n; if ((i=_ur.indexOf("://"))<0) return ""; h=_ur.substring(i+3,_ur.length); if (h.indexOf("/") > -1) { k=h.substring(h.indexOf("/"),h.length); if (k.indexOf("?") > -1) k=k.substring(0,k.indexOf("?")); h=h.substring(0,h.indexOf("/")); } h=h.toLowerCase(); n=h; if ((i=n.indexOf(":")) > -1) n=n.substring(0,i); for (var ii=0;ii<_uRno.length;ii++) { if ((i=n.indexOf(_uRno[ii].toLowerCase())) > -1 && n.length==(i+_uRno[ii].length)) { _ufno=1; break; } } if (h.indexOf("www.")==0) h=h.substring(4,h.length); return "utmccn=(referral)|utmcsr="+_uEC(h)+"|"+"utmcct="+_uEC(k)+"|utmcmd=referral"; } function _uOrg(t) { if (_ur=="0" || _ur=="" || _ur=="-") return ""; var i=0,h,k; if ((i=_ur.indexOf("://")) < 0) return ""; h=_ur.substring(i+3,_ur.length); if (h.indexOf("/") > -1) { h=h.substring(0,h.indexOf("/")); } for (var ii=0;ii<_uOsr.length;ii++) { if (h.toLowerCase().indexOf(_uOsr[ii].toLowerCase()) > -1) { if ((i=_ur.indexOf("?"+_uOkw[ii]+"=")) > -1 || (i=_ur.indexOf("&"+_uOkw[ii]+"=")) > -1) { k=_ur.substring(i+_uOkw[ii].length+2,_ur.length); if ((i=k.indexOf("&")) > -1) k=k.substring(0,i); for (var yy=0;yy<_uOno.length;yy++) { if (_uOno[yy].toLowerCase()==k.toLowerCase()) { _ufno=1; break; } } if (t) return _uEC(k); else return "utmccn=(organic)|utmcsr="+_uEC(_uOsr[ii])+"|"+"utmctr="+_uEC(k)+"|utmcmd=organic"; } } } return ""; } function _uBInfo() { var sr="-",sc="-",ul="-",fl="-",cs="-",je=1; var n=navigator; if (self.screen) { sr=screen.width+"x"+screen.height; sc=screen.colorDepth+"-bit"; } else if (self.java) { var j=java.awt.Toolkit.getDefaultToolkit(); var s=j.getScreenSize(); sr=s.width+"x"+s.height; } if (n.language) { ul=n.language.toLowerCase(); } else if (n.browserLanguage) { ul=n.browserLanguage.toLowerCase(); } je=n.javaEnabled()?1:0; if (_uflash) fl=_uFlash(); if (_ubd.characterSet) cs=_uES(_ubd.characterSet); else if (_ubd.charset) cs=_uES(_ubd.charset); return "&utmcs="+cs+"&utmsr="+sr+"&utmsc="+sc+"&utmul="+ul+"&utmje="+je+"&utmfl="+fl; } function __utmSetTrans() { var e; if (_ubd.getElementById) e=_ubd.getElementById("utmtrans"); else if (_ubd.utmform && _ubd.utmform.utmtrans) e=_ubd.utmform.utmtrans; if (!e) return; var l=e.value.split("UTM:"); var i,i2,c; if (_userv==0 || _userv==2) i=new Array(); if (_userv==1 || _userv==2) { i2=new Array(); c=_uGCS(); } for (var ii=0;ii=2;ii--) { try { var fl=eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash."+ii+"');"); if (fl) { f=ii + '.0'; break; } } catch(e) {} } } return f; } function __utmLinker(l,h) { if (!_ulink) return; var p,k,a="-",b="-",c="-",x="-",z="-",v="-"; var dc=_ubd.cookie; if (!l || l=="") return; var iq = l.indexOf("?"); var ih = l.indexOf("#"); if (dc) { a=_uES(_uGC(dc,"__utma="+_udh,";")); b=_uES(_uGC(dc,"__utmb="+_udh,";")); c=_uES(_uGC(dc,"__utmc="+_udh,";")); x=_uES(_uGC(dc,"__utmx="+_udh,";")); z=_uES(_uGC(dc,"__utmz="+_udh,";")); v=_uES(_uGC(dc,"__utmv="+_udh,";")); k=(_uHash(a+b+c+x+z+v)*1)+(_udh*1); p="__utma="+a+"&__utmb="+b+"&__utmc="+c+"&__utmx="+x+"&__utmz="+z+"&__utmv="+v+"&__utmk="+k; } if (p) { if (h && ih>-1) return; if (h) { _udl.href=l+"#"+p; } else { if (iq==-1 && ih==-1) _udl.href=l+"?"+p; else if (ih==-1) _udl.href=l+"&"+p; else if (iq==-1) _udl.href=l.substring(0,ih-1)+"?"+p+l.substring(ih); else _udl.href=l.substring(0,ih-1)+"&"+p+l.substring(ih); } } else { _udl.href=l; } } function __utmLinkPost(f,h) { if (!_ulink) return; var p,k,a="-",b="-",c="-",x="-",z="-",v="-"; var dc=_ubd.cookie; if (!f || !f.action) return; var iq = f.action.indexOf("?"); var ih = f.action.indexOf("#"); if (dc) { a=_uES(_uGC(dc,"__utma="+_udh,";")); b=_uES(_uGC(dc,"__utmb="+_udh,";")); c=_uES(_uGC(dc,"__utmc="+_udh,";")); x=_uES(_uGC(dc,"__utmx="+_udh,";")); z=_uES(_uGC(dc,"__utmz="+_udh,";")); v=_uES(_uGC(dc,"__utmv="+_udh,";")); k=(_uHash(a+b+c+x+z+v)*1)+(_udh*1); p="__utma="+a+"&__utmb="+b+"&__utmc="+c+"&__utmx="+x+"&__utmz="+z+"&__utmv="+v+"&__utmk="+k; } if (p) { if (h && ih>-1) return; if (h) { f.action+="#"+p; } else { if (iq==-1 && ih==-1) f.action+="?"+p; else if (ih==-1) f.action+="&"+p; else if (iq==-1) f.action=f.action.substring(0,ih-1)+"?"+p+f.action.substring(ih); else f.action=f.action.substring(0,ih-1)+"&"+p+f.action.substring(ih); } } return; } function __utmSetVar(v) { if (!v || v=="") return; if (!_udo || _udo == "") { _udh=_uDomain(); if (_udn && _udn!="") { _udo=" domain="+_udn+";"; } } if (!_uVG()) return; var r=Math.round(Math.random() * 2147483647); _ubd.cookie="__utmv="+_udh+"."+_uES(v)+"; path="+_utcp+"; expires=Sun, 18 Jan 2038 00:00:00 GMT;"+_udo; var s="&utmt=var&utmn="+r; if ((_userv==0 || _userv==2) && _uSP()) { var i=new Image(1,1); i.src=_ugifpath+"?"+"utmwv="+_uwv+s; i.onload=function() { _uVoid(); } } if ((_userv==1 || _userv==2) && _uSP()) { var i2=new Image(1,1); i2.src=_ugifpath2+"?"+"utmwv="+_uwv+s+"&utmac="+_uacct+"&utmcc="+_uGCS(); i2.onload=function() { _uVoid(); } } } function _uGCS() { var t,c="",dc=_ubd.cookie; if ((t=_uGC(dc,"__utma="+_udh,";"))!="-") c+=_uES("__utma="+t+";+"); if ((t=_uGC(dc,"__utmb="+_udh,";"))!="-") c+=_uES("__utmb="+t+";+"); if ((t=_uGC(dc,"__utmc="+_udh,";"))!="-") c+=_uES("__utmc="+t+";+"); if ((t=_uGC(dc,"__utmx="+_udh,";"))!="-") c+=_uES("__utmx="+t+";+"); if ((t=_uGC(dc,"__utmz="+_udh,";"))!="-") c+=_uES("__utmz="+t+";+"); if ((t=_uGC(dc,"__utmv="+_udh,";"))!="-") c+=_uES("__utmv="+t+";"); if (c.charAt(c.length-1)=="+") c=c.substring(0,c.length-1); return c; } function _uGC(l,n,s) { if (!l || l=="" || !n || n=="" || !s || s=="") return "-"; var i,i2,i3,c="-"; i=l.indexOf(n); i3=n.indexOf("=")+1; if (i > -1) { i2=l.indexOf(s,i); if (i2 < 0) { i2=l.length; } c=l.substring((i+i3),i2); } return c; } function _uDomain() { if (!_udn || _udn=="" || _udn=="none") { _udn=""; return 1; } if (_udn=="auto") { var d=_ubd.domain; if (d.substring(0,4)=="www.") { d=d.substring(4,d.length); } _udn=d; } if (_uhash=="off") return 1; return _uHash(_udn); } function _uHash(d) { if (!d || d=="") return 1; var h=0,g=0; for (var i=d.length-1;i>=0;i--) { var c=parseInt(d.charCodeAt(i)); h=((h << 6) & 0xfffffff) + c + (c << 14); if ((g=h & 0xfe00000)!=0) h=(h ^ (g >> 21)); } return h; } function _uFixA(c,s,t) { if (!c || c=="" || !s || s=="" || !t || t=="") return "-"; var a=_uGC(c,"__utma="+_udh,s); var lt=0,i=0; if ((i=a.lastIndexOf(".")) > 9) { _uns=a.substring(i+1,a.length); _uns=(_uns*1)+1; a=a.substring(0,i); if ((i=a.lastIndexOf(".")) > 7) { lt=a.substring(i+1,a.length); a=a.substring(0,i); } if ((i=a.lastIndexOf(".")) > 5) { a=a.substring(0,i); } a+="."+lt+"."+t+"."+_uns; } return a; } function _uTrim(s) { if (!s || s=="") return ""; while ((s.charAt(0)==' ') || (s.charAt(0)=='\n') || (s.charAt(0,1)=='\r')) s=s.substring(1,s.length); while ((s.charAt(s.length-1)==' ') || (s.charAt(s.length-1)=='\n') || (s.charAt(s.length-1)=='\r')) s=s.substring(0,s.length-1); return s; } function _uEC(s) { var n=""; if (!s || s=="") return ""; for (var i=0;i0) r=a.substring(i+1,i2); else return ""; if ((i=a.indexOf(".",i2+1))>0) t=a.substring(i2+1,i); else return ""; if (f) { return r; } else { var c=new 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'); 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]; } } function _uIN(n) { if (!n) return false; for (var i=0;i"9") && (c!=".")) return false; } return true; } function _uES(s,u) { if (typeof(encodeURIComponent) == 'function') { if (u) return encodeURI(s); else return encodeURIComponent(s); } else { return escape(s); } } function _uUES(s) { if (typeof(decodeURIComponent) == 'function') { return decodeURIComponent(s); } else { return unescape(s); } } function _uVG() { if((_udn.indexOf("www.google.") == 0 || _udn.indexOf(".google.") == 0 || _udn.indexOf("google.") == 0) && _utcp=='/') { return false; } return true; } function _uSP() { var s=100; if (_usample) s=_usample; if(s>=100 || s<=0) return true; return ((__utmVisitorCode(1)%10000)<(s*100)); } function urchinPathCopy(p){ var d=document,nx,tx,sx,i,c,cs,t,h,o; cs=new Array("a","b","c","v","x","z"); h=_uDomain(); if (_udn && _udn!="") o=" domain="+_udn+";"; nx="Sun, 18 Jan 2038 00:00:00 GMT;"; tx=new Date(); tx.setTime(tx.getTime()+(_utimeout*1000)); tx=tx.toGMTString()+";"; sx=new Date(); sx.setTime(sx.getTime()+(_ucto*1000)); sx=sx.toGMTString()+";"; for (i=0;i<6;i++){ t=" expires="; if (i==1) t+=tx; else if (i==2) t=""; else if (i==5) t+=sx; else t+=nx; c=_uGC(d.cookie,"__utm"+cs[i]+"="+h,";"); if (c!="-") d.cookie="__utm"+cs[i]+"="+c+"; path="+p+";"+t+o; } } function _uCO() { if (!_utk || _utk=="" || _utk.length<10) return; _ubd.cookie="GASO="+_utk+"; path="+_utcp+";"+_udo; var sc=document.createElement('script'); sc.type='text/javascript'; sc.id="_gasojs"; sc.src='https://www.google.com/analytics/reporting/overlay_js?gaso='+_utk+'&'+Math.random(); document.getElementsByTagName('head')[0].appendChild(sc); } function _uGT() { var h=location.hash, a; if (h && h!="" && h.indexOf("#gaso=")==0) { a=_uGC(h,"gaso=","&"); } else { a=_uGC(_ubd.cookie,"GASO=",";"); } return a; } var _utk=_uGT(); if (_utk && _utk!="" && _utk.length>10) { if (window.addEventListener) { window.addEventListener('load', _uCO, false); } else if (window.attachEvent) { window.attachEvent('onload', _uCO); } } ------------bHiCU6udPUzEKQSwTnJGqI--