diff --git a/Lesenswertes/Anonyme Kryptobombe - Theorie/DAA.pdf b/Lesenswertes/Anonyme Kryptobombe - Theorie/DAA.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..c1635a44a7bc67e8e732b6a6b7b32e0317a817e4
Binary files /dev/null and b/Lesenswertes/Anonyme Kryptobombe - Theorie/DAA.pdf differ
diff --git a/Lesenswertes/Anonyme Kryptobombe - Theorie/bcgs.pdf b/Lesenswertes/Anonyme Kryptobombe - Theorie/bcgs.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..40fc0d06b3e0249f479540301c3a1bb1cbed5568
Binary files /dev/null and b/Lesenswertes/Anonyme Kryptobombe - Theorie/bcgs.pdf differ
diff --git a/Lesenswertes/P521G072V0P - unser SC-Prozessor.pdf b/Lesenswertes/P521G072V0P - unser SC-Prozessor.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..e58986c4d00e2495c47df48ee1c923ebeb8bad1f
Binary files /dev/null and b/Lesenswertes/P521G072V0P - unser SC-Prozessor.pdf differ
diff --git a/Lesenswertes/bis-ais20.pdf b/Lesenswertes/bis-ais20.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5cfe43073b20ff70af0423214ce8421a75885abc
Binary files /dev/null and b/Lesenswertes/bis-ais20.pdf differ
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/a.gif b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/a.gif
new file mode 100644
index 0000000000000000000000000000000000000000..35d42e808f0a8017b8d52a06be2f8fec0b466a66
Binary files /dev/null and b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/a.gif differ
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/ajs.gif b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/ajs.gif
new file mode 100644
index 0000000000000000000000000000000000000000..35d42e808f0a8017b8d52a06be2f8fec0b466a66
Binary files /dev/null and b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/ajs.gif differ
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/answer-helpful-16x16.gif b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/answer-helpful-16x16.gif
new file mode 100644
index 0000000000000000000000000000000000000000..55fc765435b0e2d50fd067c3388f892f3f5a0fb9
Binary files /dev/null and b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/answer-helpful-16x16.gif differ
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/bronze-star.gif b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/bronze-star.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5cea3708c654a77141777f4a1060d0ca54201c26
Binary files /dev/null and b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/bronze-star.gif differ
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/button_xml.gif b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/button_xml.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3404462735026825c22b4f3c70869394cdf32ecb
Binary files /dev/null and b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/button_xml.gif differ
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/default.css b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/default.css
new file mode 100644
index 0000000000000000000000000000000000000000..b8eaed2d92dc1ee9a53f44d5eaa8408801651256
--- /dev/null
+++ b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/default.css	
@@ -0,0 +1,358 @@
+/* ###########################################################################
+
+GLOBAL ASSETS RELEASE v6.0
+
+BUILD DATE: 20100121
+
+########################################################################### */
+
+@import url("common.css");
+@import url("k5.css");
+@import url("oo_style.css");
+
+/* text styles */
+span.rightarrowblue,
+span.rightarrowdkblue{color:#000}
+span.rightarrowgrey{color:#333}
+span.rightarrowyellow{color:#eee} /*trash?*/
+a.redlink,a.redlink:visited,.red,.sunblue .red,.sunyellow .red,b.error,span.error{color:#c00}
+a.greylink,a.greylink:visited{color:#333}
+a.ltgreylink,a.ltgreylink:visited{color:#9a9a9a}
+div.resultstitle b,.note{color:#000}
+.newscap{text-transform:uppercase;color:#000}
+.grey1copy{color:#999}
+.grey2copy{color:#696969}
+.grey3copy{color:#9a9a9a}
+.sunbluecopy{color:#444}
+.ltgreycopy{color:#888}
+.medgreycopy{color:#666}
+.dkgreycopy{color:#4d4d4d}
+.vdkgreycopy{color:#333}
+
+/* pad & spacer */
+.pad0x10,.sitelinks,.pagetitle2{padding:0px 10px}
+.padbottom6{padding:0px 0px 6px 0px}
+.padtop6{padding:6px 0px 0px 0px}
+.pad6{padding:6px}
+.pad8{padding:8px}
+.pad10{padding:10px}
+.pad2x5{padding:2px 5px}
+.pad10x0{padding:10px 0px}
+.pad0x3{padding:0px 3px}
+.pad10x10x10x0{padding:10px 10px 10px 0px}
+.pad0x0x0x20{padding:0px 0px 0px 20px}
+.pad0x0x0x10{padding:0px 0px 0px 10px}
+.pad8x20{padding:8px 20px}
+.pad1x10{padding:1px 10px}
+.cellpadtop{padding:6px 6px 0px 6px}
+.cellpadbottom{padding:0px 6px 6px 6px}
+.headerpadding2{padding:1px 10px 1px 5px}
+.sp10{line-height:8px;font-size:8px}
+.sp8{line-height:7px;font-size:7px}
+.sp5{line-height:5px;font-size:5px}
+.sp2{line-height:2px;font-size:2px}
+
+/* table colors */
+.sunred{background:#f00}
+.sunblue{background:#6b6b6b}
+.sunyellow{background:#eee}
+.sunblue,td.sunblue a{color:#fff}
+td.sunred b,td.sunred div.navtitle{color:#fff;font-weight:bold}
+td.sunred ul,td.sunred ul li{margin-left:7px;padding-left:0px}
+td.sunblue li,td.sunblue ul{color:#fff;list-style-image:url("../im/ic_bullet_white.gif")}
+td.sunred .rightarrowwhite,td.sunred a:link,td.sunred a:visited,td.sunyellow b,td.sunyellow div.navtitle,td.sunyellow a:link,td.sunyellow a:visited{color:#8a8a8a}
+table.dkgrey{background:#666}
+table.BLACK,table.black{background:#000}
+table.blue3{background:#898989}
+td.black,th.black,tr.black td,tr.black th,table tr td.black,table tr th.black{background:#000;color:#fff}
+td.dkgrey,th.dkgrey,tr.dkgrey td,tr.dkgrey th,table tr td.dkgrey,table tr th.dkgrey{background:#666;color:#fff}
+td.blue3,th.blue3,tr.blue3 td,tr.blue3 th,table tr td.blue3,table tr th.blue3{background:#898989;color:#fff}
+table.ltgrey,td.ltgrey,th.ltgrey,tr.ltgrey td,tr.ltgrey th,table tr td.ltgrey,table tr th.ltgrey{background:#e5e5e5}
+table.vltgrey,td.vltgrey,th.vltgrey,tr.vltgrey td,tr.vltgrey th,table tr td.vltgrey,table tr th.vltgrey{background:#ddd}
+table.white,td.white,th.white,tr.white td,tr.white th,table tr td.white,table tr th.white,td.white,
+table.white1,td.white1,th.white1,tr.white1 td,tr.white1 th,table tr td.white1,table tr th.white1{background:#fff}
+table.grey3,td.grey3,th.grey3,tr.grey3 td,tr.grey3 th,table tr td.grey3,table tr th.grey3{background:#e3e3e3}
+table.grey4,td.grey4,th.grey4,tr.grey4 td,tr.grey4 th,table tr td.grey4,table tr th.grey4{background:#f0f0f0}
+table.grey5,td.grey5,th.grey5,tr.grey5 td,tr.grey5 th,table tr td.grey5,table tr th.grey5{background:#999}
+table.grey6,td.grey6,th.grey6,tr.grey6 td,tr.grey6 th,table tr td.grey6,table tr th.grey6{background:#ececec}
+table.grey7,td.grey7,th.grey7,tr.grey7 td,tr.grey7 th,table tr td.grey7,table tr th.grey7{background:#e5e5e5}
+table.grey8,td.grey8,th.grey8,tr.grey8 td,tr.grey8 th,table tr td.grey8,table tr th.grey8{background:#c8c8c8}
+table.blue1,td.blue1,th.blue1,tr.blue1 td,tr.blue1 th,table tr td.blue1,table tr th.blue1{background:#a1a1a1}
+table.blue2,td.blue2,th.blue2,tr.blue2 td,tr.blue2 th,table tr td.blue2,table tr th.blue2{background:#ececec}
+table.yellow2,td.yellow2,th.yellow2,tr.yellow2 td,tr.yellow2 th,table tr td.yellow2,table tr th.yellow2{background:#f9f9f9}
+table.medgrey,td.medgrey,th.medgrey,tr.medgrey td,tr.medgrey th,table tr td.medgrey,table tr th.medgrey{background:#777;color:#fff}
+table.featshade1,td.featshade1,th.featshade1,tr.featshade1 td,tr.featshade1 th,table tr td.featshade1,table tr th.featshade1{background:#ececec}
+table.featshade2,td.featshade2,th.featshade2,tr.featshade2 td,tr.featshade2 th,table tr td.featshade2,table tr th.featshade2{background:#f0f0f0}
+table.rose,td.rose,th.rose,tr.rose td,tr.rose th,table tr td.rose,table tr th.rose{background:#ddd}
+table.dkrose,td.dkrose,th.dkrose,tr.dkrose td,tr.dkrose th,table tr td.dkrose,table tr th.dkrose{background:#aaa}
+.featshade2 div.pad10,.featshade1 div.pad10{padding-left:15px}
+table.blue1 tr td{padding:0px}
+table.blue1 table.white1{border:#999 solid 1px}
+td.sunblue{background:url("../im/bg_sunblue.gif") repeat-x left top #7a7a7a;border-top:#fff solid 6px}
+td.sunred{background:url("../im/bg_sunorange.gif") repeat-x left bottom #f00}
+td.sunyellow{background:#eee}
+
+
+/* a0 */
+body.a0v0,div.a0v0,div.a0v4{margin:0px auto;width:800px;padding:0px}
+body.a0v1,div#a0v1{width:100%;max-width:1770px}
+body.a0v1,div#a0v1{_width:98%}/* iepc56 */
+
+/* a1 */
+.a1{margin:0px 22px 3px 23px;float:none;position:relative;z-index:50}
+* html .a1{margin:0 22px}
+.a1 div.a1v0,.a1 div.a1v1,.a1 div.a1v2,.a1 div.a1v3,.a1 div.a1v4,.a1 div.a1v5{width:100%;min-width:755px}
+.a1 .skiplink {position:absolute;left:-2000px}
+.a1 .skiplink:focus {left:0;padding:5px;border:1px #35556B solid;margin:10px;background:#FFD868;text-decoration:underline}
+.toolbarlinks {float:right;clear:both;display:block;margin-top:0px;height:20px;position:absolute;top:50px;width:100%;text-align:right}
+.toolbarlinks *{text-align:left}
+.siteid {float:right;display:block;padding:1px 0 0 0;clear:both;top:0px;height:20px;position:absolute;top:28px;width:50%;text-align:right;right:0}
+div.a1 .a1menu {padding:0;margin:9px 0 0 -107px;float:none;visibility:hidden;position:absolute;z-index:42;left:0;top:-20000px}
+div.a1 .a1menux1 {height:4px;overflow:hidden;background:url("../im/a1a2_sprite.png") -350px -65px transparent repeat-x;margin:1px 3px 0 -3px;padding:0}
+div.a1 .a1menuw1 {background:url("../im/a1a2_sprite.png") repeat-x -270px -70px #fafbfc;padding:10px;border:#808080 solid 1px;border-top:0;margin:0px 0px 0px -3px}
+div.a1 .a1menuw1 a{font-size:12px;border:0;padding:0}
+div.a1menuw2{background:url("../im/a1a2_sprite.png") 100% 100% no-repeat;padding:0 3px 3px 0;margin:0}
+div.a1Large{width:472px}
+div.a1Large .a1menuw1{width:450px}
+div.a1Medium{width:302px}
+div.a1Medium .a1menuw1{width:280px}
+div.a1Small{width:202px}
+div.a1Small .a1menuw1{width:180px}
+.a1r1 .selectorlinks{float:right;padding-right:10px}
+.toolbarlinks a.k2over{border-right:0}
+.toolbarlinks a.lastlink,.selectorlinks span.lastlink{border-right:0;padding:0 3px 0 2px;font-size:11px}
+.siteid,.siteid span,.siteid a,.selectorlinks span a,.selectorlinks span.lastlink a{font-size:11px}
+.siteid span{padding:0 2px 0 3px}
+.siteid a,.siteid span.nolink{border-left:1px solid #bbb;padding:0 2px 0 6px}
+.siteid a.firstlink,.siteid span.firstlink{border-left:0;padding-left:0}
+.browserExplorer7 div.a1 .a1menu{background:url("../im/a.gif") repeat 0 0}
+.a1menu p {margin:0;font-size:11px}
+.toolbarlinks a,.selectorlinks span{margin-right:10px;padding:0 5px 0 2px;font-size:11px;border-right:0px solid #bbb}
+span.toolbarlinks a.karrow {background:transparent}
+span.toolbarlinks a.k2over,.siteid a.language-select{padding-right:12px;background:url("../im/a1a2_sprite.png") 100% -392px no-repeat;margin:0 0 0 10px;border:0}
+div.a1 span.toolbarlinks a.dividelink{border-right:0}
+div.a1 h5{margin-bottom:6px}
+a.language-select,a:link.language-select,a:visited.language-select,a:hover.language-select,a:active.language-select{text-decoration:none;cursor:default;color:#000}
+#languageselector *{text-align:left !important}
+.a1-2colwrap{float:left}
+.a1-2colul ul{width:47%;margin-right:10px;float:left}
+.a1 ul.bluearrows li{background:url("../im/a1a2_sprite.png") no-repeat -117px -220px}
+* html div.a1 div.a1menux1{margin:6px 0 0 0}
+* html div.a1 .a1menuw1 {margin:0}
+* html div.a1menuw2{padding:0;margin:0}
+* html div.a1Large .a1menuw1{width:394px}
+* html div.a1 .a1menu {margin-top:2px}
+* html .a1-2colwrap{background:url("../im/a.gif")}
+
+/* a1 - OLD */
+.a1 table{width:100%;margin-top:25px;position:relative}
+
+/* a2 */
+.a2w0{float:left;position:relative;_height:19px;width:100%;z-index:30;margin-top:67px}
+.a2w0 + table,.a2w0 + br,.a2w0 + div,.a2w0 + form > table{clear:both}
+.a2w0 .a2{padding:4px 0 3px 0px;float:none;min-width:780px;clear:both;width:100%;background:transparent !Important;min-height:38px;margin-top:0}
+.a2w1{background:url("../im/a1a2_sprite.png") no-repeat -47px -453px;margin:0 10px}
+.a2w2{background:url("../im/a1a2_sprite.png") no-repeat 100% -453px;height:38px;_overflow:hidden}
+.a2w3{background:url("../im/a1a2_sprite.png") repeat-x 0 0;margin:0 10px 0 10px;height:38px}
+.a2w4{min-height:38px;background-position:143px 12px;background-repeat:no-repeat}
+.a2w3{position:relative}
+.a2w4{height:85px;position:absolute;top:-56px;width:100%}
+.a2 li a:link,.a2 li a:hover,.a2 li a:active,.a2 li a:visited {color:#fff;font-weight:bold;text-decoration:none;display:block;float:left}
+.a2 li a:hover,.a2 li a:focus{text-decoration:underline}
+.a2search{float:right;background-color:transparent;text-align:right;margin:-8px 0 0 0;padding:16px 0px 0 0;position:relative;z-index:2;white-space:nowrap}
+.a2search a{color:#fff}
+.a2search select{float:right;margin-left:8px;width:100px}
+.a2searchmenu {float:right;width:195px;left:-20px}
+.a2searchmenu select{float:left;margin:0}
+.a2searchmenu input{float:right}
+#venuespacer {display:block;left:-94px;position:relative}
+#sunlogo,.sunlogo{float:left;padding:1px;display:block;height:70px;width:134px;position:absolute;left:-12px;top:-85px;z-index:9;background:url("../im/a1a2_sprite.png") no-repeat 0 -365px;_background-image:url("../im/a1a2_sprite.gif")}
+#sunlogo span{display:none}
+#searchfield,.searchfield{width:89px !important;height:16px;margin:0 -20px 0 0;padding:3px 17px 1px 5px;background:url("../im/a1a2_sprite.png")  no-repeat -202px -1170px;border:0;color:#555;position:relative;z-index:39}
+#searchfield:focus,.searchfield:focus,.sfieldfocused{background-position:-202px -1131px !important;color:#000}
+#searchbttn{padding:1px;vertical-align:middle;margin-right:1px;width:15px;z-index:40;position:relative}
+.a2topiclinks{position:relative;*z-index:29;top:56px}
+.a2topiclinks ul{margin:0;padding-left:7px;float:left}
+.a2topiclinks li{display:block;float:left;margin:0 0 0 5px;padding:0}
+#mtopics{position:absolute;z-index:31;left:-12px;top:0;_left:-6px}
+#mtopics li{position:relative;z-index:35}
+#mtopics li a{height:23px;padding:12px 7px 8px 6px;margin:0;display:block}
+#a2v3 .a2search {float:right;width:215px}
+#a2v3 .a2search input{float:left}
+#a2v1 #mtopics,#a2v3 #mtopics{left:-9px}
+#a2v1 #mtopics li a,#a2v3 #mtopics li a{padding:12px 4px 8px 4px}
+#a2v1 #searchfield,#a2v1 .searchfield,#a2v3 #searchfield,#a2v3 .searchfield{width:69px !important;margin-left:20px;background-position:-345px -1170px}
+#a2v1 #searchfield:focus,#a2v1 .searchfield:focus,#a2v3 #searchfield:focus,#a2v3 .searchfield:focus{width:69px !important;margin-left:20px;background-position:-345px -1131px !important}
+div.a2m{position:absolute !important;margin:0;padding:0 15px 12px 20px !important;display:none;background:url("../im/a1a2_sprite.png")  no-repeat 20px 100%;width:179px;margin-top:36px;left:0;z-index:32} /* left margin in js */
+div.a2 div.a2m{margin-top:35px}
+div.a2m ul{display:block;margin:0;padding:3px 3px 0 0;background:url("../im/a1a2_sprite.png") 100% -902px no-repeat}
+div.a2m ul li{display:block;margin:0 !important;padding:0;height:auto !important}
+#mtopics li ul li a,div.a2m ul li a{margin:0 0 1px 0;padding:3px 8px !important;height:auto !important;font-weight:normal !important;width:168px;text-transform:none !important;font-size:12px;color:#fff}
+#mtopics li ul li:hover{background:transparent}
+#mtopics li ul li.newgroup{border-top:#999 1px solid;margin-top:6px !important;padding-top:6px}
+div.a2m ul li a:hover,div.a2m ul li a:focus{background:url("../im/a1a2_sprite.png") -203px -981px no-repeat #fe0000 !important;border-bottom:1px #454545 solid !important;margin-bottom:0px !important}
+* html div.a2m ul li a:hover{background-image:url("../im/a1a2_sprite.gif") !important}
+#mtopics li.a2mshow,#mtopics li:hover{background:url("../im/a1a2_sprite.png") -203px -921px no-repeat}
+.a2mshow div.a2m, #mtopics li:hover div.a2m{display:block}
+.a2nomenu{background:transparent !important}
+#searchsubmit{border:0;background:transparent;width:15px;position:relative;z-index:6;left:1px}
+#searchsubmit{cursor:pointer}
+
+/* a2 - LEGACY */
+.a2 {margin-top:-50px}
+.a2 .cornerTL{margin:100px 10px 0 10px;background:url("../im/a1a2_sprite.png") no-repeat -47px -453px}
+.a2 .cornerTR{background:url("../im/a1a2_sprite.png") no-repeat 100% -453px}
+.a2 .cornerBL{padding:0 10px}
+.a2 .cornerBR{background:url("../im/a1a2_sprite.png") repeat-x 0 0;height:38px}
+.a2 .cornerBR img.sunlogo{margin:-50px 0 0 10px;height:60px}
+.a2 table{position:absolute;margin-top:-56px;height:35px}
+.a2 td.navlinks{position:relative;padding:0;margin:0}
+.a2 td.navlinks a{display:block;padding:10px 6px 0 6px;height:24px;color:#fff;font-weight:bold;text-transform:uppercase;font-size:11px;text-decoration:none}
+.a2 td.navlinks div{position:relative}
+td.a2mshow div.a2m,td.navlinks:hover div.a2m{display:block;margin-top:0px}
+td.a2mshow,td.navlinks:hover{background:url("../im/a1a2_sprite.png") -203px -921px no-repeat}
+
+/* ###########################################################################
+
+GLOBAL ASSETS RELEASE v6.0
+
+BUILD DATE: 20100121
+
+########################################################################### */
+
+/* a2v8 */
+div#a2v8{margin:10px 0px 25px;background:transparent url('../im/a1a2_sprite_a2v8.png') no-repeat 0px -200px;padding:48px 10px 0;position:relative}
+div.a2v8w1{background:transparent url('../im/a1a2_sprite_a2v8.png') repeat-x 0px -150px;margin:0 10px}
+div.a2v8w2{background:transparent url('../im/a1a2_sprite_a2v8.png') no-repeat 0px -100px;margin:0 -10px}
+div.a2v8w3{background:transparent url('../im/a1a2_sprite_a2v8.png') no-repeat 100% -50px;height:18px;position:relative;padding:10px 17px}
+div#a2v8 ul.a2v8links,
+div#a2v8 ul.a2v8links li{padding:0;margin:0;list-style:none}
+div#a2v8 ul.a2v8links li{position:absolute;top:-48px;left:139px}
+div#a2v8 ul.a2v8links li a{font-size:19px;color:#aaa;font-weight:bold}
+div#a2v8 ul.a2v8links li.a2v8sunlogo{left:-10px;top:-48px}
+div#a2v8 ul.a2v8links li.a2v8sunlogo a{display:block;width:134px;height:68px;text-indent:-10000px;text-align:left}
+div#a2v8 form{padding:0;margin:0;position:absolute;right:11px;top:8px}
+
+div#a2v8 .listTitle,
+div#a2v8 ul.goto,
+div#a2v8 ul.goto li{margin:0;padding:0;list-style:none;display:inline-block;color:#fff;text-shadow:rgba(0,0,0,0.4) 0px -1px 0px,rgba(255,255,255,0.3) 0px 1px 0px;font-size:13px}
+div#a2v8 ul.goto li:before{content:" | ";color:#ccc;margin:0px 4px}
+div#a2v8 ul.goto li:first-child{margin-left:10px}
+div#a2v8 ul.goto li:first-child:before{content:none}
+div#a2v8 ul.goto li a{color:#fff}
+div#a2v8 .listTitle:after{content:":";color:#ccc}
+
+.regenabled div#a2v8 .listTitle{display:none}
+
+
+/* a4 */
+div#breadcrumb,div.breadcrumb{clear:both;padding:5px 25px;color:#999}
+
+/* a5 */
+.a5{margin:5px 16px 10px 8px;font-size:11px}
+#a5{z-index:45;position:relative}
+#a5 ul{margin:6px 0 0 4px;padding:0;width:100%}
+#a5 ul li{float:left;padding:2px 15px 0 6px;margin:0;list-style:none;list-style-image:url("../im/a.gif");position:relative}
+#a5 ul li a,#a5 ul li span#pwdby{font-size:11px;float:left;display:block;padding:0}
+#a5 ul li a span{font-size:11px}
+#a5 ul li.copyright{float:right}
+#a5 ul li a#pwdby,#a5 ul li span#pwdby{padding-right:57px;float:left;display:block;width:67px;height:27px;background:url("../im/a1a2_sprite.png") 100% -358px no-repeat;color:#fff}
+#a5 ul li a#pwdby span,#a5 ul li span#pwdby span{display:none}
+#a5 ul li div.a5menu ul li a{display:inline;float:none;font-size:12px}
+#a5 ul li div.a5menu ul li{display:block;float:none;clear:both;padding:0 0 4px 15px}
+#a5 ul li.hasmenu{background:url("../im/a1a2_sprite.png") 100% -579px no-repeat;padding-right:12px;margin-right:10px}
+#a5 div.a5menu{left:-2500px;position:absolute;top:-150px;width:195px;z-index:50;display:none}
+#a5 ul li.a5show div.a5menu{left:0px;display:block}
+#a5 ul ul{margin:0}
+#a5:after,#a5 .a5menuw1:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}
+#a5 .a5menuw1{background:url("../im/a1a2_sprite.png") repeat-x -129px -145px #fbfbfb;padding:10px;border:#888 solid 1px;margin:0}
+#a5 .a5menuw2{background:url("../im/a1a2_sprite.png") no-repeat 100% 100%;padding:0 3px 3px 0;margin:0}
+#a5 .a5menux2{height:8px;margin-top:-5px;background:url("../im/a1a2_sprite.png") no-repeat -200px -875px transparent}
+#a5 .a5menuw1{_height:1px}
+#a5 ul li ul li{min-height:1px}
+#a5 .a5menu{_margin-top:6px}
+
+/* a5 */
+div.a0v2 .a5 {margin:0 !important}
+div.a0v2 .a5v1 {margin:0 !important;float:left;clear:both;width:100%}
+.a5v1 a,.a5v1 span{font-size:11px}
+.a5v1 .a5w1{background:url("../im/generic_bl.png") no-repeat bottom left #E1E3E4;margin:0}
+.a5v1 .a5w2{background:url("../im/generic_br.png") no-repeat bottom right;padding:6px 8px 16px 8px;min-height:25px}
+* html .a5v1 .a5w2 {height:25px}
+* html .a5v1 .a5w1{background-image:url("../im/generic_bl.gif")}
+* html .a5v1 .a5w2{background-image:url("../im/generic_br.gif")}
+.footerlinks a{border-right:1px solid #bbb;padding-right:5px;padding-left:2px}
+ul.footerlinks li {display:inline;margin:0}
+ul.footerlinks {display:inline;margin-left:4px}
+span.footercopy{white-space:nowrap;padding-left:2px}
+span.poweredbysun,.footerextra{float:right}
+.a5v1 .footerlinks a.lastlink {border-right:0}
+.a5v1 .footercopy {display:block;padding-top:3px}
+.a5v1 #poweredby {width:80px;text-align:right;float:right;background:url("../im/sunhome_sprite.gif") no-repeat 90% -140px;height:40px;padding:0 68px 0 0;color:#343434;margin:0}
+.a5v1 #poweredby b{display:none}
+.copyright{float:left;color:#777}
+.a5w3 {padding:8px 0 0 16px}
+.footerextra{padding:0 5px 0 0}
+.a5r1 .footerextra div.hdtxt{font-size:15px}
+.a5r1 .footerextra a div.sbtxt{padding-left:19px;font-size:11px}
+.a5r1 .footerextra a:hover div b,.footerextra a:hover div.sbtxt{text-decoration:underline}
+.a5r1 .footerextra img{width:16px;height:15px;background:url("../im/sunhome_sprite.gif") no-repeat top right;vertical-align:top;margin-right:3px}
+
+/*IE 6 */
+* html #a5 ul li.hasmenu,* html #a5 .a5menuw1,* html #a5 .a5menuw2,* html #a5 .a5menux2, * html div.a1 .a1menux1,* html div.a1 .a1menuw1,* html div.a1menuw2,* html span.toolbarlinks a.k2over,* html .siteid a.language-select,* html .a1 ul.bluearrows li,* html .a2w1,* html .a2w2,* html .a2w3,* html #searchfield,* html .searchfield,* html div.a2m,* html div.a2m ul,* html #mtopics li.a2mshow,* html #mtopics li:hover,* html .a2 .cornerTL,* html .a2 .cornerTR,* html .a2 .cornerBL,* html td.a2mshow,* html td.navlinks:hover{background-image:url("../im/a1a2_sprite.gif")}
+* html .a2 *{zoom:1}
+
+/* link underlines */
+#breadcrumb a,.breadcrumb a,.a1 a,.a2v8links a,.a5 a{text-decoration:none}
+
+/* navblue fade */
+tr.navblue{background:#ddd}
+table.navblue .navtitle,table.navblue .rightarrowblue,table.navblue table:first-child{padding-left:8px}
+table.navblue .navtitle{color:#666;padding-top:3px}
+table.navblue img{padding-left:4px}
+table.navblue span.sp10{line-height:2px;font-size:2px !important}
+table.navblue table:first-child .rightarrowblue,table.navblue table:first-child img,table.navblue table:first-child .navtitle{padding-left:0px}
+table.navblue table:first-child{padding-top:5px}
+table.navblue table{margin-left:0px;margin-bottom:10px;padding:0px}
+table.navblue td.white1{background:transparent}
+table.navblue tr td table tr td{background:transparent;padding:2px 2px 2px 4px}
+table.navblue tr td table tr td:first-child{padding:0px}
+table.navblue tr td table:first-child{background:url("../im/generic_tr.gif") no-repeat top right;border-top:none}
+table.navblue tr td{background:url("../im/generic_tl.gif") no-repeat top left;padding:0px}
+table.navblue{background:url("../im/bg_navgrey.gif") repeat-x left bottom #e4e4e4}
+* html table.navblue tr td table{background:url("../im/generic_tr.gif") no-repeat top right;border-top:#fff solid 2px}
+
+/* pre magellan */
+.blknote,.rednote,.updated{text-transform:uppercase;font-weight:bold}
+.fea-main1{margin:5px 8px 9px 8px}
+.main1{margin:5px}
+.main3{margin:0px 9px}
+.main4{margin:9px 9px 0px 9px}
+.main5{margin:9px 0px 0px 0px}
+.redbld,.rednote,.updated{color:#f00}
+.redcopy{color:#c33}
+.solo-pad{padding:9px 5px 1px 9px}
+.whtbld,.blkbld,.redbld{font-weight:bold}
+a.nonu,a.nonu:visited,a.nonuc,a.nonuc:visited,a.unbl,a.unbl:visited,a.blklink,a.blklink:visited,.blkbld,.blknote{color:#000}
+a.nonu,a.nonuc,a.nonuw{text-decoration:none}
+a.nonuw,a.nonuw:visited,a.undw,a.undw:visited,a.unwt,a.unwt:visited,.whitehdr,.whtbld{color:#fff}
+div.group-pad P,div.group-pad div,.main2,.fea-main2{margin:0px;padding:3px 0px}
+div.group-pad{margin:0px;padding:9px}
+p.credit{padding:0px 30px}
+p.quote{color:#900}
+table.dkred{background:#f00}
+table.dktan,td.dktan,th.dktan,tr.dktan td,tr.dktan th,table tr td.dktan,table tr th.dktan{background:#c96}
+table.green,td.green,th.green,tr.green td,tr.green th,table tr td.green,table tr th.green{background:#b2bc00}
+table.ltblue,td.ltblue,th.ltblue,tr.ltblue td,tr.ltblue th,table tr td.ltblue,table tr th.ltblue{background:#e1e1e1}
+table.ltred,td.ltred,th.ltred,tr.ltred td,tr.ltred th,table tr td.ltred,table tr th.ltred{background:#f8d4b3}
+table.lttan,td.lttan,th.lttan,tr.lttan td,tr.lttan th,table tr td.lttan,table tr th.lttan{background:#f0f0f0}
+table.orange,td.orange,th.orange,tr.orange td,tr.orange th,table tr td.orange,table tr th.orange{background:#f00}
+table.present,td.present,th.present,tr.present td,tr.present th,table tr td.present,table tr th.present{background:#c06600;color:#fff}
+table.present{background:#c60}
+table.promo,td.promo,th.promo,tr.promo td,tr.promo th,table tr td.promo,table tr th.promo{background:#ffc726}
+table.yell,td.yell,th.yell,tr.yell td,tr.yell th,table tr td.yell,table tr th.yell{background:#fff4d4}
+td.dkred,th.dkred,tr.dkred td,tr.dkred th,table tr td.dkred,table tr th.dkred{background:#f00;color:#fff}
+tr.title-bg td,td.title-bg{background:#fff}
+table[bgcolor="#ccccff"],
+td[bgcolor="#ccccff"]{background:#ececec}
+
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/default_developer.css b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/default_developer.css
new file mode 100644
index 0000000000000000000000000000000000000000..19e1f25113e2d2f7925f29ee00a444c8f3c06c85
--- /dev/null
+++ b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/default_developer.css	
@@ -0,0 +1,449 @@
+/* ###########################################################################
+
+GLOBAL ASSETS RELEASE v6.0
+
+BUILD DATE: 20100121
+
+########################################################################### */
+
+@import url("common.css");
+@import url("k5.css");
+@import url("oo_style.css");
+
+/* text styles */
+span.rightarrowblue{color:#000}
+span.rightarrow,span.rightarrowblue,span.rightarrowred,span.rightarrowwhite{font-size:12px;font-weight:bold}
+a.redlink,a.redlink:visited,.red,.sunblue .red,.sunyellow .red,b.error,p.error,span.error{color:#f00}
+.note{color:#000}
+p.compact{margin:0px}
+p.compact2{margin:0px 0px 7px 0px}
+
+/* pad & spacer */
+div.breadcrumb{padding:0px 25px}
+div.pad0x10,div.sitelinks,div.pagetitle2{padding:0px 10px}
+div.pad6{padding:6px}
+div.pad8{padding:8px}
+div.pad10{padding:10px}
+div.pad5x10{padding:5px 10px}
+div.pad10x0{padding:10px 0px}
+div.pad3x0{padding:3px 0px}
+div.contentdivider{padding:3px 0px 6px 0px}
+div.pad2x0x10x0{padding:2px 0px 10px 0px}
+.sp10{font-size:8px !important}
+.sp8{font-size:7px !important}
+.sp5{font-size:4px !important}
+.sp4{font-size:3px !important}
+.sp2{font-size:2px !important}
+span.sp20{font-size:19px !important}
+
+/* table colors */
+table.dkgrey{background:#666}
+.sunred{background:#f00}
+.sunblue{background:#525252}
+.sunyellow{background:#a4a4a4}
+.sunred,.sunblue,td.sunred a,td.sunblue a{color:#fff}
+td.sunred b,td.sunred div.navtitle{color:#9f9f9f;font-weight:bold}
+td.sunred li,td.sunblue li,td.sunred ul,td.sunblue ul{color:#fff;list-style-image:url("../im/ic_bullet_white.gif")}
+td.sunyellow b,td.sunyellow div.navtitle,td.sunyellow a:link,td.sunyellow a:visited{color:#000}
+td.sunyellow a:hover{color:#666;text-decoration:underline}
+table.white,td.white,th.white,tr.white td,tr.white th,table tr td.white,table tr th.white,td.white,table.white1,td.white1,th.white1,tr.white1 td,tr.white1 th,table tr td.white1,table tr th.white1,td.white1{background:#fff}
+table.ltgrey,td.ltgrey,th.ltgrey,tr.ltgrey td,tr.ltgrey th,table tr td.ltgrey,table tr th.ltgrey{background:#ccc}
+table.vltgrey,td.vltgrey,th.vltgrey,tr.vltgrey td,tr.vltgrey th,table tr td.vltgrey,table tr th.vltgrey{background:#ddd}
+table.grey3,td.grey3,th.grey3,tr.grey3 td,tr.grey3 th,table tr td.grey3,table tr th.grey3{background:#e3e3e3}
+table.blue1,td.blue1,th.blue1,tr.blue1 td,tr.blue1 th,table tr td.blue1,table tr th.blue1{background:#999}
+table.yellow2,td.yellow2,th.yellow2,tr.yellow2 td,tr.yellow2 th,table tr td.yellow2,table tr th.yellow2{background:#fff}
+
+/* misc */
+hr.ltgrey{background:#ccc;color:#ccc}
+hr.grey3{color:#e3e3e3}
+.sectiontitle1,.sectiontitle1 a,.sectiontitle2,.sectiontitle2 a{font-size:16px;font-weight:bold}
+span.quotehighlight{color:#666;font-size:16px;line-height:21px}
+div.sectiontitle1 a{font-weight:bold}
+td.selectcell{font-size:12px} /* this is a workaround to patch ns4's bug regarding styled select elements */
+table.topnav td a,table.topnav td,table.topnavlight td a,table.topnavlight td,td.selectcell,span.ltcaption1,span.ltcaption1 a,span.dkcaption1,span.dkcaption1 a,div.footer,div.footer a{font-size:12px}
+a:visited span.ltcaption1{color:#666}
+a:link span.ltcaption1{color:#000}
+p{margin-top:3px;margin-bottom:17px}
+table.dkgrey2,tr.dkgrey2,th.dkgrey2,td.dkgrey2{background-color:#d6d6d6}
+table.grey4,tr.grey4,th.grey4,td.grey4{background-color:#e7e7e7}
+table.grey5,tr.grey5,th.grey5,td.grey5{background-color:#f1f1f1}
+div.datacell{padding:3px 6px 4px 6px}
+div.pad4x9{padding:4px 9px}
+div.pad3x5{padding:3px 5px}
+div.pad3{padding:3px}
+div.colpadding1{padding:7px 10px 8px 10px}
+div.colpadding2{padding:4px 8px 8px 8px}
+div.colpadding3{padding:4px 10px 8px 10px}
+div.colcaption1{padding:4px 6px 0px 6px}
+div.padbottom10{padding-bottom:10px}
+div.headerpadding2{padding:1px 6px 2px 6px}
+table.topnav td{color:#666}
+table.topnavlight td a,table.topnavlight td a:visited,table.topnavlight td{color:#fff}
+table.topnav td a:visited{color:#7d7d7d}
+table.topnav span.rightarrowblue,table.topnav span.rightarrowwhite{font-size:11px}
+td.headerbar1{color:#333;background:#e7e7e7;font-weight:bold}
+td.headerbar2{color:#666;background:#e7e7e7;font-weight:bold}
+td.headerbar3{color:#fff;background:#525252;font-weight:bold}
+td.headerbar4{color:#fff;background:#666;font-weight:bold}
+td.headerbar5{color:#fff;background:#7d7d7d;font-weight:bold}
+td.headerbar6,th.headerbar6{color:#fff;background:#999;font-weight:bold}
+span.ltcaption1,span.ltcaption2{color:#999}
+span.dkcaption1,b.dkgrey{color:#666}
+span.termhighlight{background-color:#ddd;layer-background-color:#ddd}
+span.eventdate{font-size:23px !important;color:#666}
+input.medium{width:95px}
+input.large,select.large,textarea.large{width:155px}
+input.xxlarge,textarea.xxlarge,select.xxlarge{width:300px}
+div.greyformfield select,div.greyformfield input,div.greyformfield textarea{background:#f1f1f1}
+input.buttonltblue,input.buttonblue2{cursor:hand;color:#fff;height:1.45em;font-size:11px;padding:0px;margin:0px;border:0px none #000;font-weight:bold}
+div.leftnav1{font-weight:bold;color:#999}
+div.leftnav1 a{font-weight:bold}
+td.tooltabon,td.tooltab{vertical-align:bottom}
+td.tooltabon div{padding:3px 0px 3px 6px}
+td.tooltabon b{color:#fff}
+input.buttonblue2{background:#7d7d7d}
+input.buttonltblue{background:#a4a4a4}
+table.photobackground{background-repeat:no-repeat}
+.hyphen{color:#7d7d7d;text-align:right;white-space:nowrap}
+div.footer{color:#999;padding:5px 0px 10px 0px}
+a.red{color:#f00;font-size:9px}
+a.red:link,a.red:visited,div.red a:visited{color:#f00;font-size:10px;font-weight:bold}
+.trafficalert{color:#666;background-color:#f1f1f1;font-size:10px;margin:1px;font-weight:bold}
+table.highlight,td.highlight,th.highlight,tr.highlight td,tr.highlight th,table tr td.highlight,table tr th.highlight{background:#f5f5f5}
+.contentdivider table.grey4 img{height:2px}
+
+/* MVS GENERALIZED PASTED AUGMENTATION FROM EXISTING JSC PAGES */
+span.wrapper{font-size:13px}
+span.title{color:#000;font-size:20px;font-weight:bold}
+span.body{color:#000;font-size:13px}
+span.copyright{color:#000;font-size:10px}
+span.date{color:#ccc;font-size:10px}
+span.byline{color:#000;font-size:13px}
+a.tab:link,a.tab:active,a.tab:visited,a.tab2:link,a.tab2:active,a.tab2:visited{text-decoration:none;font-size:14px;font-weight:bold}
+a.tab:link,a.tab:visited{color:#000}
+a.tab:active,a.tab2:active{color:#000}
+a.tab2:link,a.tab2:visited{color:#fff}
+a.footer:link,a.footer:visited,a.footer:active{font-size:10px}
+a.footer:link{color:#000}
+a.footer:visited{color:#666}
+a.footer:active{color:#000}
+td.dkgray{background:#999}
+td.yellow{background:#eee}
+
+/* MVS GENERALIZED PASTED AUGMENTATION FROM EXISTING WIRELESS PAGES */
+span.search{color:#fff;font-size:13px}
+span.subtitle{color:#000;font-size:13px;font-weight:bold}
+span.rtbtitle{color:#666;font-size:13px;font-weight:bold}
+span.right{color:#777;font-size:13px;font-weight:bold}
+span.wrong{color:#c00;font-size:13px;font-weight:bold}
+div.box2{padding-top:0px}
+div.box{padding-top:4px}
+td.leftnav div.box{padding-top:3px}
+td.leftnav div.box2{padding-top:1px}
+table.black{background:#000}
+table.gray{background:#ccc}
+table.ltgray,tr.ltgray{background:#eee}
+td.code{font-size:12px;font-family:Monaco,Courier,"Courier New"}
+td.ltblue{background:#e1e1e1;color:#000}
+td.gray{background:#eee;font-size:13px;text-decoration:none;color:#000}
+td.grayline{background:#ccc}
+td.heading{background:#eee;color:#9a9a9a;font-size:14px;font-weight:bold}
+td.whitetitle{background:#fff;font-size:13px;font-weight:bold}
+td.yellowtitle{background:#eee;font-size:13px;font-weight:bold;color:#666}
+td.ltyellow{background:#eee}
+input.textentry{color:#000;font-size:10px;font-weight:normal}
+a.tree:link,a.tree:visited,a.tree:active{color:#000;text-decoration:none;font-size:12px}
+a.map{text-decoration:none;color:#000;font-size:13px}
+a.jscnav:link,a.jscnav:active,a.jscnav:visited{text-decoration:none;color:#000;font-size:13px;font-weight:bold}
+a.wdnav:link,a.wdnav:active,a.wdnav:visited{text-decoration:none;color:#000;font-size:13px;font-weight:bold}
+.menu{position:absolute;background-color:#eee;width:300px}
+.menuborder{position:absolute;background-color:#ccc;width:302px}
+.origin{position:absolute;background-color:#000}
+.popText{color:#000;text-decoration:none;font-size:12px}
+
+/* navblue2 fade */
+table.navblue,td.navblue,th.navblue,tr.navblue td,tr.navblue th,table tr td.navblue,table tr th.navblue{background:#eaeaea}
+table.navblue2,tr.navblue2,td.navblue2{background:#e5e5e5}
+table.navblue,table.navblue2{background:url("../im/bg_navblue.gif") repeat-x left bottom #e5e5e5}
+
+/* tooltabon */
+td.tooltabon,td.tooltabon + td {background:url("../im/a2_background.gif") repeat-x left top !important}
+td.tooltabon div{padding:6px 7px 8px 7px}
+td.tooltab{background:#d8d8d8 url("../im/d7_tab_bg.gif") repeat-x;border-right:1px solid #fff;border-top:3px solid #fff}
+td.tooltab div{background:url("../im/corner_navblue_tr.gif") no-repeat right top;padding:9px 7px 5px 7px}
+td.tooltab div{padding:6px 7px 8px 7px}
+td.tooltab div a:visited{color:#525252}
+
+/* headerbar */
+tr td.headerbar1 div.headerpadding2{padding:5px 6px}
+tr td.headerbar1{background:url("../im/bg_titlebar5.gif") repeat-x left top}
+tr td.headerbar2{padding:0px;background:url("../im/bg_titlebar4.gif") no-repeat left top}
+tr td.headerbar2 div.headerpadding2{background:url("../im/generic_tr.gif") no-repeat right top;padding:6px 8px 4px 10px}
+tr td.headerbar4{padding:0px;background:url("../im/bg_titlebar.gif") no-repeat left top}
+tr td.headerbar4 div.headerpadding2{background:url("../im/a2_corner_tr.gif") no-repeat right top;padding:6px 8px 4px 10px}
+tr td.headerbar3{padding:0px;background:url("../im/bg_titlebar.gif") no-repeat left top}
+tr td.headerbar3 div.headerpadding2{background:url("../im/a2_corner_tr.gif") no-repeat right top;padding:6px 8px 4px 10px}
+tr td.headerbar5{padding:0px;background:url("../im/bg_titlebar2.gif") no-repeat left top}
+tr td.headerbar5 div.headerpadding2{background:url("../im/generic_tr.gif") no-repeat right top;padding:6px 8px 4px 10px}
+tr td.headerbar6 div.headerpadding2,tr th.headerbar6 div.headerpadding2{padding:5px 6px}
+tr td.headerbar6,tr th.headerbar6{background:url("../im/bg_titlebar6.gif") repeat-x left top}
+
+/* vaa2 */
+body.vaa2v0{margin:0px auto;width:800px;padding:0px}
+body.vaa2v1{width:100%}
+
+/* bread fix */
+.vatop {clear:both}
+
+/* a0 */
+body.a0v0,div.a0v0,div.a0v4{margin:0px auto;width:800px;padding:0px}
+body.a0v1,div#a0v1{width:100%;max-width:1770px}
+body.a0v1,div#a0v1{_width:98%}/* iepc56 */
+
+/* a1 */
+.a1{margin:0px 22px 3px 23px;float:none;position:relative;z-index:50}
+* html .a1{margin:0 22px}
+.a1 div.a1v0,.a1 div.a1v1,.a1 div.a1v2,.a1 div.a1v3,.a1 div.a1v4,.a1 div.a1v5{width:100%;min-width:755px}
+.a1 .skiplink {position:absolute;left:-2000px}
+.a1 .skiplink:focus {left:0;padding:5px;border:1px #35556B solid;margin:10px;background:#FFD868;text-decoration:underline}
+.toolbarlinks {float:right;clear:both;display:block;margin-top:0px;height:20px;position:absolute;top:50px;width:100%;text-align:right}
+.toolbarlinks *{text-align:left}
+.siteid {float:right;display:block;padding:1px 0 0 0;clear:both;top:0px;height:20px;position:absolute;top:28px;width:50%;text-align:right;right:0}
+div.a1 .a1menu {padding:0;margin:9px 0 0 -107px;float:none;visibility:hidden;position:absolute;z-index:42;left:0;top:-20000px}
+div.a1 .a1menux1 {height:4px;overflow:hidden;background:url("../im/a1a2_sprite.png") -350px -65px transparent repeat-x;margin:1px 3px 0 -3px;padding:0}
+div.a1 .a1menuw1 {background:url("../im/a1a2_sprite.png") repeat-x -270px -70px #fafbfc;padding:10px;border:#808080 solid 1px;border-top:0;margin:0px 0px 0px -3px}
+div.a1 .a1menuw1 a{font-size:12px;border:0;padding:0}
+div.a1menuw2{background:url("../im/a1a2_sprite.png") 100% 100% no-repeat;padding:0 3px 3px 0;margin:0}
+div.a1Large{width:472px}
+div.a1Large .a1menuw1{width:450px}
+div.a1Medium{width:302px}
+div.a1Medium .a1menuw1{width:280px}
+div.a1Small{width:202px}
+div.a1Small .a1menuw1{width:180px}
+.a1r1 .selectorlinks{float:right;padding-right:10px}
+.toolbarlinks a.k2over{border-right:0}
+.toolbarlinks a.lastlink,.selectorlinks span.lastlink{border-right:0;padding:0 3px 0 2px;font-size:11px}
+.siteid,.siteid span,.siteid a,.selectorlinks span a,.selectorlinks span.lastlink a{font-size:11px}
+.siteid span{padding:0 2px 0 3px}
+.siteid a,.siteid span.nolink{border-left:1px solid #bbb;padding:0 2px 0 6px}
+.siteid a.firstlink,.siteid span.firstlink{border-left:0;padding-left:0}
+.browserExplorer7 div.a1 .a1menu{background:url("../im/a.gif") repeat 0 0}
+.a1menu p {margin:0;font-size:11px}
+.toolbarlinks a,.selectorlinks span{margin-right:10px;padding:0 5px 0 2px;font-size:11px;border-right:0px solid #bbb}
+span.toolbarlinks a.karrow {background:transparent}
+span.toolbarlinks a.k2over,.siteid a.language-select{padding-right:12px;background:url("../im/a1a2_sprite.png") 100% -392px no-repeat;margin:0 0 0 10px;border:0}
+div.a1 span.toolbarlinks a.dividelink{border-right:0}
+div.a1 h5{margin-bottom:6px}
+a.language-select,a:link.language-select,a:visited.language-select,a:hover.language-select,a:active.language-select{text-decoration:none;cursor:default;color:#000}
+#languageselector *{text-align:left !important}
+.a1-2colwrap{float:left}
+.a1-2colul ul{width:47%;margin-right:10px;float:left}
+.a1 ul.bluearrows li{background:url("../im/a1a2_sprite.png") no-repeat -117px -220px}
+* html div.a1 div.a1menux1{margin:6px 0 0 0}
+* html div.a1 .a1menuw1 {margin:0}
+* html div.a1menuw2{padding:0;margin:0}
+* html div.a1Large .a1menuw1{width:394px}
+* html div.a1 .a1menu {margin-top:2px}
+* html .a1-2colwrap{background:url("../im/a.gif")}
+
+/* a1 - OLD */
+.a1 table{width:100%;margin-top:25px;position:relative}
+
+/* a2 */
+.a2w0{float:left;position:relative;_height:19px;width:100%;z-index:30;margin-top:67px}
+.a2w0 + table,.a2w0 + br,.a2w0 + div,.a2w0 + form > table{clear:both}
+.a2w0 .a2{padding:4px 0 3px 0px;float:none;min-width:780px;clear:both;width:100%;background:transparent !Important;min-height:38px;margin-top:0}
+.a2w1{background:url("../im/a1a2_sprite.png") no-repeat -47px -453px;margin:0 10px}
+.a2w2{background:url("../im/a1a2_sprite.png") no-repeat 100% -453px;height:38px;_overflow:hidden}
+.a2w3{background:url("../im/a1a2_sprite.png") repeat-x 0 0;margin:0 10px 0 10px;height:38px}
+.a2w4{min-height:38px;background-position:143px 12px;background-repeat:no-repeat}
+.a2w3{position:relative}
+.a2w4{height:85px;position:absolute;top:-56px;width:100%}
+.a2 li a:link,.a2 li a:hover,.a2 li a:active,.a2 li a:visited {color:#fff;font-weight:bold;text-decoration:none;display:block;float:left}
+.a2 li a:hover,.a2 li a:focus{text-decoration:underline}
+.a2search{float:right;background-color:transparent;text-align:right;margin:-8px 0 0 0;padding:16px 0px 0 0;position:relative;z-index:2;white-space:nowrap}
+.a2search a{color:#fff}
+.a2search select{float:right;margin-left:8px;width:100px}
+.a2searchmenu {float:right;width:195px;left:-20px}
+.a2searchmenu select{float:left;margin:0}
+.a2searchmenu input{float:right}
+#venuespacer {display:block;left:-94px;position:relative}
+#sunlogo,.sunlogo{float:left;padding:1px;display:block;height:70px;width:134px;position:absolute;left:-12px;top:-85px;z-index:9;background:url("../im/a1a2_sprite.png") no-repeat 0 -365px;_background-image:url("../im/a1a2_sprite.gif")}
+#sunlogo span{display:none}
+#searchfield,.searchfield{width:89px !important;height:16px;margin:0 -20px 0 0;padding:3px 17px 1px 5px;background:url("../im/a1a2_sprite.png")  no-repeat -202px -1170px;border:0;color:#555;position:relative;z-index:39}
+#searchfield:focus,.searchfield:focus,.sfieldfocused{background-position:-202px -1131px !important;color:#000}
+#searchbttn{padding:1px;vertical-align:middle;margin-right:1px;width:15px;z-index:40;position:relative}
+.a2topiclinks{position:relative;*z-index:29;top:56px}
+.a2topiclinks ul{margin:0;padding-left:7px;float:left}
+.a2topiclinks li{display:block;float:left;margin:0 0 0 5px;padding:0}
+#mtopics{position:absolute;z-index:31;left:-12px;top:0;_left:-6px}
+#mtopics li{position:relative;z-index:35}
+#mtopics li a{height:23px;padding:12px 7px 8px 6px;margin:0;display:block}
+#a2v3 .a2search {float:right;width:215px}
+#a2v3 .a2search input{float:left}
+#a2v1 #mtopics,#a2v3 #mtopics{left:-9px}
+#a2v1 #mtopics li a,#a2v3 #mtopics li a{padding:12px 4px 8px 4px}
+#a2v1 #searchfield,#a2v1 .searchfield,#a2v3 #searchfield,#a2v3 .searchfield{width:69px !important;margin-left:20px;background-position:-345px -1170px}
+#a2v1 #searchfield:focus,#a2v1 .searchfield:focus,#a2v3 #searchfield:focus,#a2v3 .searchfield:focus{width:69px !important;margin-left:20px;background-position:-345px -1131px !important}
+div.a2m{position:absolute !important;margin:0;padding:0 15px 12px 20px !important;display:none;background:url("../im/a1a2_sprite.png")  no-repeat 20px 100%;width:179px;margin-top:36px;left:0;z-index:32} /* left margin in js */
+div.a2 div.a2m{margin-top:35px}
+div.a2m ul{display:block;margin:0;padding:3px 3px 0 0;background:url("../im/a1a2_sprite.png") 100% -902px no-repeat}
+div.a2m ul li{display:block;margin:0 !important;padding:0;height:auto !important}
+#mtopics li ul li a,div.a2m ul li a{margin:0 0 1px 0;padding:3px 8px !important;height:auto !important;font-weight:normal !important;width:168px;text-transform:none !important;font-size:12px;color:#fff}
+#mtopics li ul li:hover{background:transparent}
+#mtopics li ul li.newgroup{border-top:#999 1px solid;margin-top:6px !important;padding-top:6px}
+div.a2m ul li a:hover,div.a2m ul li a:focus{background:url("../im/a1a2_sprite.png") -203px -981px no-repeat #fe0000 !important;border-bottom:1px #454545 solid !important;margin-bottom:0px !important}
+* html div.a2m ul li a:hover{background-image:url("../im/a1a2_sprite.gif") !important}
+#mtopics li.a2mshow,#mtopics li:hover{background:url("../im/a1a2_sprite.png") -203px -921px no-repeat}
+.a2mshow div.a2m, #mtopics li:hover div.a2m{display:block}
+.a2nomenu{background:transparent !important}
+#searchsubmit{border:0;background:transparent;width:15px;position:relative;z-index:6;left:1px}
+#searchsubmit{cursor:pointer}
+
+/* a2 - LEGACY */
+.a2 {margin-top:-50px}
+.a2 .cornerTL{margin:100px 10px 0 10px;background:url("../im/a1a2_sprite.png") no-repeat -47px -453px}
+.a2 .cornerTR{background:url("../im/a1a2_sprite.png") no-repeat 100% -453px}
+.a2 .cornerBL{padding:0 10px}
+.a2 .cornerBR{background:url("../im/a1a2_sprite.png") repeat-x 0 0;height:38px}
+.a2 .cornerBR img.sunlogo{margin:-50px 0 0 10px;height:60px}
+.a2 table{position:absolute;margin-top:-56px;height:35px}
+.a2 td.navlinks{position:relative;padding:0;margin:0}
+.a2 td.navlinks a{display:block;padding:10px 6px 0 6px;height:24px;color:#fff;font-weight:bold;text-transform:uppercase;font-size:11px;text-decoration:none}
+.a2 td.navlinks div{position:relative}
+td.a2mshow div.a2m,td.navlinks:hover div.a2m{display:block;margin-top:0px}
+td.a2mshow,td.navlinks:hover{background:url("../im/a1a2_sprite.png") -203px -921px no-repeat}
+
+/* ###########################################################################
+
+GLOBAL ASSETS RELEASE v6.0
+
+BUILD DATE: 20100121
+
+########################################################################### */
+
+/* a2v8 */
+div#a2v8{margin:10px 0px 25px;background:transparent url('../im/a1a2_sprite_a2v8.png') no-repeat 0px -200px;padding:48px 15px 0;position:relative}
+div.a2v8w1{background:transparent url('../im/a1a2_sprite_a2v8.png') repeat-x 0px -150px;margin:0 10px}
+div.a2v8w2{background:transparent url('../im/a1a2_sprite_a2v8.png') no-repeat 0px -100px;margin:0 -10px}
+div.a2v8w3{background:transparent url('../im/a1a2_sprite_a2v8.png') no-repeat 100% -50px;height:18px;position:relative;padding:10px 17px}
+div#a2v8 ul.a2v8links,
+div#a2v8 ul.a2v8links li{padding:0;margin:0;list-style:none}
+div#a2v8 ul.a2v8links li{position:absolute;top:-48px;left:139px}
+div#a2v8 ul.a2v8links li a{font-size:19px;color:#aaa;font-weight:bold}
+div#a2v8 ul.a2v8links li.a2v8sunlogo{left:-10px;top:-48px}
+div#a2v8 ul.a2v8links li.a2v8sunlogo a{display:block;width:134px;height:68px;text-indent:-10000px;text-align:left}
+div#a2v8 form{padding:0;margin:0;position:absolute;right:11px;top:8px}
+
+div#a2v8 .listTitle,
+div#a2v8 ul.goto,
+div#a2v8 ul.goto li{margin:0;padding:0;list-style:none;display:inline-block;color:#fff;text-shadow:rgba(0,0,0,0.4) 0px -1px 0px,rgba(255,255,255,0.3) 0px 1px 0px;font-size:13px}
+div#a2v8 ul.goto li:before{content:" | ";color:#ccc;margin:0px 4px}
+div#a2v8 ul.goto li:first-child{margin-left:10px}
+div#a2v8 ul.goto li:first-child:before{content:none}
+div#a2v8 ul.goto li a{color:#fff}
+div#a2v8 .listTitle:after{content:":";color:#ccc}
+
+.regenabled div#a2v8 .listTitle{display:none}
+
+
+/* a4 */
+div#breadcrumb,div.breadcrumb{clear:both;padding:5px 25px;color:#999}
+
+/* a5 */
+.a5{margin:5px 16px 10px 8px;font-size:11px}
+#a5{z-index:45;position:relative}
+#a5 ul{margin:6px 0 0 4px;padding:0;width:100%}
+#a5 ul li{float:left;padding:2px 15px 0 6px;margin:0;list-style:none;list-style-image:url("../im/a.gif");position:relative}
+#a5 ul li a,#a5 ul li span#pwdby{font-size:11px;float:left;display:block;padding:0}
+#a5 ul li a span{font-size:11px}
+#a5 ul li.copyright{float:right}
+#a5 ul li a#pwdby,#a5 ul li span#pwdby{padding-right:57px;float:left;display:block;width:67px;height:27px;background:url("../im/a1a2_sprite.png") 100% -358px no-repeat;color:#fff}
+#a5 ul li a#pwdby span,#a5 ul li span#pwdby span{display:none}
+#a5 ul li div.a5menu ul li a{display:inline;float:none;font-size:12px}
+#a5 ul li div.a5menu ul li{display:block;float:none;clear:both;padding:0 0 4px 15px}
+#a5 ul li.hasmenu{background:url("../im/a1a2_sprite.png") 100% -579px no-repeat;padding-right:12px;margin-right:10px}
+#a5 div.a5menu{left:-2500px;position:absolute;top:-150px;width:195px;z-index:50;display:none}
+#a5 ul li.a5show div.a5menu{left:0px;display:block}
+#a5 ul ul{margin:0}
+#a5:after,#a5 .a5menuw1:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}
+#a5 .a5menuw1{background:url("../im/a1a2_sprite.png") repeat-x -129px -145px #fbfbfb;padding:10px;border:#888 solid 1px;margin:0}
+#a5 .a5menuw2{background:url("../im/a1a2_sprite.png") no-repeat 100% 100%;padding:0 3px 3px 0;margin:0}
+#a5 .a5menux2{height:8px;margin-top:-5px;background:url("../im/a1a2_sprite.png") no-repeat -200px -875px transparent}
+#a5 .a5menuw1{_height:1px}
+#a5 ul li ul li{min-height:1px}
+#a5 .a5menu{_margin-top:6px}
+
+/* a5 */
+div.a0v2 .a5 {margin:0 !important}
+div.a0v2 .a5v1 {margin:0 !important;float:left;clear:both;width:100%}
+.a5v1 a,.a5v1 span{font-size:11px}
+.a5v1 .a5w1{background:url("../im/generic_bl.png") no-repeat bottom left #E1E3E4;margin:0}
+.a5v1 .a5w2{background:url("../im/generic_br.png") no-repeat bottom right;padding:6px 8px 16px 8px;min-height:25px}
+* html .a5v1 .a5w2 {height:25px}
+* html .a5v1 .a5w1{background-image:url("../im/generic_bl.gif")}
+* html .a5v1 .a5w2{background-image:url("../im/generic_br.gif")}
+.footerlinks a{border-right:1px solid #bbb;padding-right:5px;padding-left:2px}
+ul.footerlinks li {display:inline;margin:0}
+ul.footerlinks {display:inline;margin-left:4px}
+span.footercopy{white-space:nowrap;padding-left:2px}
+span.poweredbysun,.footerextra{float:right}
+.a5v1 .footerlinks a.lastlink {border-right:0}
+.a5v1 .footercopy {display:block;padding-top:3px}
+.a5v1 #poweredby {width:80px;text-align:right;float:right;background:url("../im/sunhome_sprite.gif") no-repeat 90% -140px;height:40px;padding:0 68px 0 0;color:#343434;margin:0}
+.a5v1 #poweredby b{display:none}
+.copyright{float:left;color:#777}
+.a5w3 {padding:8px 0 0 16px}
+.footerextra{padding:0 5px 0 0}
+.a5r1 .footerextra div.hdtxt{font-size:15px}
+.a5r1 .footerextra a div.sbtxt{padding-left:19px;font-size:11px}
+.a5r1 .footerextra a:hover div b,.footerextra a:hover div.sbtxt{text-decoration:underline}
+.a5r1 .footerextra img{width:16px;height:15px;background:url("../im/sunhome_sprite.gif") no-repeat top right;vertical-align:top;margin-right:3px}
+
+/*IE 6 */
+* html #a5 ul li.hasmenu,* html #a5 .a5menuw1,* html #a5 .a5menuw2,* html #a5 .a5menux2, * html div.a1 .a1menux1,* html div.a1 .a1menuw1,* html div.a1menuw2,* html span.toolbarlinks a.k2over,* html .siteid a.language-select,* html .a1 ul.bluearrows li,* html .a2w1,* html .a2w2,* html .a2w3,* html #searchfield,* html .searchfield,* html div.a2m,* html div.a2m ul,* html #mtopics li.a2mshow,* html #mtopics li:hover,* html .a2 .cornerTL,* html .a2 .cornerTR,* html .a2 .cornerBL,* html td.a2mshow,* html td.navlinks:hover{background-image:url("../im/a1a2_sprite.gif")}
+* html .a2 *{zoom:1}
+
+/* link underlines */
+#breadcrumb a,.breadcrumb a,.a1 a,.a2v8links a,.a5 a{text-decoration:none}
+
+/* a2 for dev */
+.a2w4{background-image:url("../im/a2r1_sun_developer_network.gif")}
+
+/* custom b3 - requires b3w1 & b3w2 DIVs inside b3 DIV */
+.b3	.b3w1{width:100%;background:url("../im/generic_bl.gif") no-repeat bottom left;height:23px}
+.b3 .b3w2{width:100%;background:url("../im/generic_br.gif") no-repeat bottom right;height:23px}
+.b3 {position:relative;margin:6px 10px 2px 10px;background:url("../im/bg_home_b3.gif")  0px 3px repeat-x;height:27px}
+.newsitems {font-weight:bold;white-space:nowrap;width:500px;position:absolute;z-index:2;visibility:hidden}
+#newsitem1 {visibility:visible}
+#newsextra span.xmlbttn{font-weight:normal}
+#newsextra span.newslink{float:left;font-weight:bold;padding-left:18px;padding-right:5px}
+/* ie5mac hack \*/
+#newsextra span.newslink{background:url("../im/ar_lg_orange_h.gif") no-repeat top left;font-weight:bold;padding-left:18px;padding-right:5px}
+div.b3 {position:relative;margin:6px 10px 2px 10px;background:url("../im/bg_home_b3.gif")  0px 1px repeat-x;height:24px}
+div.newsitems {font-weight:bold;white-space:nowrap;width:500px;position:absolute;z-index:2;opacity:0;filter:alpha(opacity=0);-moz-opacity:0;visibility:visible}
+div#newsitem1 {opacity:.99;filter:alpha(opacity=99);-moz-opacity:.99}
+div#newsextra span.xmlbttn{float:right;font-weight:normal}
+div#newsextra span.newslink{float:none}
+/* do not delete this */
+#newsextra {position:absolute;top:5px;left:585px;z-index:8;padding:0px 0px 0px 18px;width:170px;text-align:right}
+#newstitle {position:absolute;top:5px;left:15px;z-index:8}
+#newstitle,#newstitle a{font-weight:bold}
+#newsticker {width:470px;height:15px;overflow:hidden;white-space:nowrap;z-index:8;position:absolute;padding:1px 1px 1px 10px;margin:4px 0px 0px 90px;left:-8px}
+/* b3v1 */
+.b3v1 #newsextra a{font-weight:bold}
+.b3v1 #newsextra{color:#b7b7b7}
+.b3v1 #newsextra{left:568px;width:205px;padding:0px}
+.b3v1 a.xmlbttn img{vertical-align:top;border:0px}
+.b3v1 .small a{position:relative;top:1px}
+.b3v1 .small a.xmlbttn{position:relative;top:0px}
+.b3v1 a.xmlbttn{padding-left:4px}
+
+table.grey4 pre{font-size:11px}
+
+@media screen {
+	body.vaa2v0 table.grey4 pre {width:380px;overflow:scroll}
+}
+
+/* link underlines */
+a.named,.navblue2 a,.vatop .footer a,.a2search a,div.sectiontitle1 a,.sitelinks td.smaller a{text-decoration:none}
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/duke.gif b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/duke.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fcd133a1f3b6c957b4ef47e731466be668784b25
Binary files /dev/null and b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/duke.gif differ
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/edit-16x16.gif b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/edit-16x16.gif
new file mode 100644
index 0000000000000000000000000000000000000000..249024bc593b94ffa6e8228e6fc0b2913cd03b42
Binary files /dev/null and b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/edit-16x16.gif differ
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/ic_email.gif b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/ic_email.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8ffce466f4d2c4dc37ac1fc75fcb7904388acd61
Binary files /dev/null and b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/ic_email.gif differ
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/ic_eye.gif b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/ic_eye.gif
new file mode 100644
index 0000000000000000000000000000000000000000..66d872972ff5e2e5c4ad0fbb7c7575c297b492e6
Binary files /dev/null and b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/ic_eye.gif differ
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/ic_jive_forums.gif b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/ic_jive_forums.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fd9d7f933dee12c3dca08927e6574c06850e49f3
Binary files /dev/null and b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/ic_jive_forums.gif differ
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/logo_oracle_footer.gif b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/logo_oracle_footer.gif
new file mode 100644
index 0000000000000000000000000000000000000000..98e0350edc11473d12b2b64102f920dfabdf43ee
Binary files /dev/null and b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/logo_oracle_footer.gif differ
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/metrics_group1.js b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/metrics_group1.js
new file mode 100644
index 0000000000000000000000000000000000000000..5507d9c539182cffcd32b556ea4413ce1078c471
--- /dev/null
+++ b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/metrics_group1.js	
@@ -0,0 +1,866 @@
+/* SiteCatalyst code version: H.14. Copyright Omniture, Inc. More info available at http://www.omniture.com */
+/* Owner: Neil Evans */
+/* Group1 */
+
+var s=s_gi(s_account,1);
+
+s.dynamicAccountSelection=sun_dynamicAccountSelection;
+s.dynamicAccountList=sun_dynamicAccountList;
+
+/* Link Tracking Config */
+s.trackDownloadLinks=true
+s.trackExternalLinks=true
+s.trackInlineStats=true
+s.linkDownloadFileTypes="exe,zip,wav,mp3,mov,mpg,avi,doc,pdf,xls,bin,tar,Z,gz,txt,bz2,mp4,jar,dmg,sh,msi,jnlp"
+s.linkInternalFilters="javascript:,sun.com,java.com,opensolaris.org,sun-catalogue.com,java.net,netbeans.org,openmediacommons.org,sunspotworld.com,openoffice.org,opensparc.net,sunsource.net,opensolaris.com,mysql.com,mysql.de,mysql.fr,projectdarkstar.com,sunstudentcourses.com,kenai.com,virtualbox.org,odftoolkit.org,javafx.com,openoffice.bouncer.osuosl.org,opends.org,suntrainingcatalogue.com,cloudoffice.com"
+s.linkLeaveQueryString=false
+if (typeof ltv=="undefined" || ltv=="") { s.linkTrackVars="None"; }
+	else { s.linkTrackVars=ltv; }
+	
+if (typeof lte=="undefined" || lte=="") { s.linkTrackEvents="None"; }
+	else { s.linkTrackEvents=lte; }
+
+/***************** STANDARD CODE FOR ALL SUN SITES ******************/
+/**********TO BE CHANGED ONLY BY SMI .SUN PROGRAM MANAGEMENT*****/
+var s_prop33="Group1-v5";
+var s_server=location.hostname;
+var s_eVar35=location.href;
+s_eVar35=s_eVar35.replace(/;jsessionid.*$/,'');
+s_eVar35=s_eVar35.replace(/jsessionid.*$/,'');
+s.charSet="UTF-8";
+/* Set Date Stamp */
+var s_date=new Date();
+var s_hour=s_date.getUTCHours();
+var s_minute=s_date.getUTCMinutes();
+var s_seconds=s_date.getUTCSeconds();
+if (s_hour < 10) { s_hour="0"+s_hour }
+if (s_minute < 10) { s_minute="0"+s_minute }
+if (s_seconds < 10) { s_seconds="0"+s_seconds }
+var s_time=s_hour+":"+s_minute+":"+s_seconds;
+var s_prop44=s_time;
+/* Make certain these variables are defined, if not on page */
+if (typeof s_channel=='undefined')
+   var s_channel = "";
+if (typeof s_pageName=='undefined')
+   var s_pageName = "";   
+if(typeof s_events=='undefined')
+  var s_events="";
+if(typeof s_campaign=='undefined')
+  var s_campaign="";
+if(typeof s_hier1=='undefined')
+  var s_hier1="";
+if (typeof s_pageType=='undefined')
+  var s_pageType="";
+        
+/* Use URL as default pageName unless s_pageName already populated. */
+if(s_pageType==""){
+	if(s_pageName==""){
+		try{
+		  s_pageName=window.top.location.pathname.toLowerCase();
+	  }catch(err){
+		  s_pageName=window.location.pathname.toLowerCase();
+	  }
+	}
+}
+
+/* Remove any variation of index.xxx  */
+var s_iNames = ["index.html","index.jsp","index.htm","index.shtml","index.xml","index.jhtml","index.jshtml","index.jspa","index.php"];
+for (var a=0; a<s_iNames.length; a++) {
+   var s_iName = "/"+s_iNames[a];
+   if (s_pageName.indexOf(s_iName) > -1 && s_pageName.indexOf(s_iName) == s_pageName.length - s_iName.length) {
+       s_pageName = s_pageName.substring(0, s_pageName.length - s_iNames[a].length);
+   }
+   if (s_prop31.indexOf(s_iName) > -1 && s_prop31.indexOf(s_iName) == s_prop31.length - s_iName.length) {
+       s_prop31 = s_prop31.substring(0, s_prop31.length - s_iNames[a].length);
+   }
+}
+
+var s_disableLegacyVars=true
+var s_eVarCFG=""
+
+/*pageType 404 fix */
+if(s_pageType==""){
+
+	/* Populate "s_channel" variable (if not already populated). Based on 15 levels of directory. */
+	if(s_channel==""){
+	  var s_t1=0
+	  var s_t2=0
+	  var s_du=""
+	  try{
+		  s_du=window.top.location.href.toLowerCase();
+	  }catch(err){
+		  s_du=window.location.href.toLowerCase()
+	  }
+	  if((s_t1=s_du.indexOf("://"))>=0){
+	    if((s_t2=s_du.indexOf("/",s_t1+3))>=(s_t1+3)){
+	      if(s_du.indexOf(".",s_t1+3)<s_t2){
+	        var s_c2=""
+	        s_t1=s_t2+1
+	        s_t2=s_du.lastIndexOf("/")
+	        s_channel=s_du.substring(s_t1,s_t2)
+       
+	        // Replace all "/" chars with ":"
+	        for(s_t2=0; s_t2<s_channel.length; s_t2++){
+	          if(s_channel.charAt(s_t2)=="/"){
+	            // Bogus code, but JavaScript 1.0-compatible
+	            s_c2=s_channel.substring(0,s_t2)+":"+s_channel.substring(s_t2+1,s_channel.length)
+	            s_channel=s_c2
+	          }
+	        }
+	      }
+	    }
+  
+	    // Remove everything after the fifteenth "/"
+	    s_t1=0
+	    for(s_t2=0;s_t2<s_channel.length;s_t2++){
+	      if(s_channel.charAt(s_t2)==":"){
+	        s_t1++
+	        if(s_t1==15){
+	          s_channel=s_channel.substring(0,s_t1-1)
+	          break
+	        }
+	      }
+	    }
+	  }
+	}
+
+	/* Places entire path into Hierarchy variable, or just s_channel if populated on page. */
+	if(s_hier1==""){
+		if(s_channel!==""){
+      s_hier1=s_siteid+s_channel
+    }
+	}
+
+
+	/* STANDARD SUN GLOBAL ACCOUNT CODE: pre-pend "pageName", "channel", and "s_hier" with "s_siteid" if not already prepended*/
+	if(typeof s_siteid!='undefined'){
+	  if(typeof s_pageName!='undefined'&&s_pageName.length>0){
+	    if(s_pageName.substr(0,s_siteid.length).toLowerCase()!=s_siteid){
+	    	s_pageName=s_siteid+s_pageName;
+	    }
+	  }
+	  if(s_channel.length>0){
+	    if (s_channel.substr(0,s_siteid.length).toLowerCase()!=s_siteid){
+	    	s_channel=s_siteid+s_channel;
+	    }
+	  }
+		if(s_hier1.length>0){
+			if (s_hier1.substr(0,s_siteid.length).toLowerCase()!=s_siteid){
+				s_hier1=s_siteid+s_hier1;
+			}
+		}
+	}
+
+	/* PUT SITE_ID INTO S_PROP2*/
+	if(typeof s_siteid=='undefined'){var s_siteid=""};
+	if(typeof s_prop2=='undefined'){var s_prop2=""};
+		s_prop2=s_siteid;
+}
+
+/* strips whitespace from beginning and end of string */
+function s_trim(s){if(s&&typeof s.replace=='function'){s=s.replace(/^\s+|\s+$/g,'');}return s;}
+if (typeof s_pageName!='undefined' && s_pageName) {
+s_pageName = s_trim(s_pageName);
+}
+
+/* strips ;jsessionid parameters from pageName */
+s_pageName=s_pageName.replace(/;jsessionid.*$/,'');
+
+/* strips jsessionid parameters from pageName */
+s_pageName=s_pageName.replace(/jsessionid.*$/,'');
+
+/* strips &cid= parameters from pageName */
+s_pageName=s_pageName.replace(/&cid=.*$/,'');
+
+/* Local Drive Checker */
+var s_isValid = true;
+if (location.protocol=="file:") { s_isValid=false; }
+
+if(s_account.indexOf("sunopenoffice") != -1 ) {s_isValid=false; }
+ 
+/* Grab Cookie */
+function getCookie(c_name)
+{
+if (document.cookie.length>0)
+  {
+  c_start=document.cookie.indexOf(c_name + "=");
+  if (c_start!=-1)
+    { 
+    c_start=c_start + c_name.length+1; 
+    c_end=document.cookie.indexOf(";",c_start);
+    if (c_end==-1) c_end=document.cookie.length;
+    return unescape(document.cookie.substring(c_start,c_end));
+    } 
+  }
+return "";
+}
+/* Grab CWP Session Cookie */
+s.prop35=(getCookie("CWP_SESSION"));
+
+/* Grab Omniture user ID for Olab */
+var s_omnitureID=(getCookie("s_vi"));
+s_omnitureID=s_omnitureID.replace(/^.*?\|/,'');
+s_omnitureID=s_omnitureID.replace(/\[.*$/,'');
+
+/* Form Analysis Config */
+s.formList="registerForm";
+s.trackFormList=true;
+s.trackPageName=true;
+s.useCommerce=false;
+s.varUsed="prop30";
+// Abandon, Success, Error
+s.eventList=""
+
+/* Set DL Prod & Venue for DL Handler */
+var sun_venue=s_siteid.replace(/:/,'');
+var sun_prodCategory="Download Products";
+var sun_prodMeta=document.getElementById("sundownload");
+if (sun_prodMeta){
+var sun_prodName=sun_prodMeta.content;
+var sun_prodValue=sun_prodCategory+';'+sun_prodName;
+}
+
+/* Check for empty channel */
+if(s_channel==""){
+	if(s_pageType!="errorPage"){
+	s_pageName="No Channel";
+	}
+}
+
+/* Impression Handler, for intcmp */
+var impressionsSet=false;
+function setLinkAdImpressions() {
+	// check to only fire once
+	if(impressionsSet){
+		return false;
+	}else{
+		impressionsSet=true;
+		var anchors = document.getElementsByTagName('a');
+		var areas = document.getElementsByTagName('area');
+		var links=new Array();
+		for (var i=0; i<anchors.length; i++) {
+			links[links.length]=anchors[i];
+		}
+		for (var i=0; i<areas.length; i++) {
+			links[links.length]=areas[i];
+		}
+		
+		var tmpProducts='',impressionsCount=0,urlFlag='__maxdest=,redirectUrl=',thisPage=document.location.href.toLowerCase(),nextPage='';
+		// strip off q-string and named anchors
+		if(thisPage.indexOf('?')>-1) thisPage=thisPage.substring(0,thisPage.indexOf('?'));
+		if(thisPage.indexOf('#')>-1) thisPage=thisPage.substring(0,thisPage.indexOf('#'));
+		for (var i=0; i<links.length; i++) {
+			nextPage=links[i].href?links[i].href.toLowerCase():'';
+			if(nextPage.indexOf('?')>-1) nextPage=nextPage.substring(0,nextPage.indexOf('?'));
+			if(nextPage.indexOf('#')>-1) nextPage=nextPage.substring(0,nextPage.indexOf('#'));
+			// if impression should be set and the destination URL is not the same as the current URL
+			var isValidImpression=links[i].rel?(links[i].rel.indexOf('no_impression')==-1?true:false):true;
+			if(isValidImpression&&nextPage!=''&&(thisPage!=nextPage)&&(thisPage+'index.'!=nextPage)&&(thisPage!=nextPage+'index.')){
+				var qp=s.getQueryParam('intcmp','',links[i].href);
+				// add q-param intcmp to tmpProducts
+				if (qp&&tmpProducts.indexOf(qp)==-1) {
+					tmpProducts+=(impressionsCount>0?',':'')+';'+qp+';;;event33=1';
+					impressionsCount++;
+				} else {
+					var urlFlags=s.split(urlFlag,','), tmpUrl='';
+					// look through all additional URL flags to see if the same intcmp q-string is there; then fire the impression from that
+					for (var j=0; j<urlFlags.length; j++) {
+						if (links[i].href.indexOf(urlFlags[j])>-1){
+							tmpUrl = links[i].href.substring(links[i].href.indexOf(urlFlags[j])+urlFlags[j].length);
+							qp=s.getQueryParam('intcmp','',tmpUrl);
+							if (qp&&tmpProducts.indexOf(qp)==-1) {
+								tmpProducts+=(impressionsCount>0?',':'')+';'+qp+';;;event33=1';
+								impressionsCount++;
+								break;
+							}
+						}
+					}
+				}
+			}
+		}
+		return tmpProducts;
+	}
+}
+
+/* Strip Referrer to Domain for evar42 */
+function getReferringDomain(r){
+                r=r?r:document.referrer;
+                if(!r){
+                                return false;
+                }else{
+                                var end=r.replace('://','').indexOf('/')>-1?r.replace('://','').indexOf('/')+3:r.length;
+                                var start=r.indexOf('://')>-1?r.indexOf('://')+3:0;
+                                var rd = r.substring(start,end);
+                                rd = rd.replace('www.','');
+                                rd = rd.indexOf(':')>-1?rd.substring(0,rd.indexOf(':')):rd;
+                                return rd;
+                }
+}
+/* Use linkInternalFilters to determin valid intcmps */
+function checkInternal(url){
+     if(!url) return false;
+     url=url.indexOf('?')==-1?url:url.substring(0,url.indexOf('?'));
+     var domains=s.split(s.linkInternalFilters, ",");
+     for (var i=0;i<domains.length; i++) {
+           if (url.indexOf(domains[i])!=-1) {
+                return true;
+           }
+     }
+     return false;
+}
+/* Set Clearvars */
+var clearvars=false;
+/* getNewRepeat() */
+/* Looks for s_resetstandard() in local config */
+if (window.s_resetstandard) { s_resetstandard(s) }
+/**************** END SUN CUSTOM CODE *******************************/
+/* Plugin Config */
+s.usePlugins=true
+function s_doPlugins(s) {
+	
+	/* Add calls to plugins here */
+	
+	/**** prePlugins ****/
+	if (window.s_prePlugins) { s_prePlugins(s) }
+	/********************/
+	
+	/*** FormAnalysis ***/
+	s.setupFormAnalysis();
+	
+	/*** getNewRepeat ***/
+	s.prop43=s.getNewRepeat();
+	s.eVar44=s.getNewRepeat();
+	
+	/*pageType 404 fix */
+	if(s_pageType==""||!s.pageType){
+		var sunPrePageName=s.getPreviousValue(s.pageName,'gpName','');
+		var sunPreChannel=s.getPreviousValue(s.channel,'gpChannel','');
+		var sunPreServer=s.getPreviousValue(s.server,'gpServer','');
+		/* External campaigns */
+		if(s_campaign=="" || s.campaign==""){
+			var cid_temp=s.getQueryParam('cid,sc',':');
+			if(cid_temp){			
+				if(cid_temp.length <30) {
+					s.campaign=cid_temp;
+				}
+			}
+		}
+		s.campaign=s.getValOnce(s.campaign,"suncmp",0);
+		/* Campaign Pathing */
+		s.prop4=s.getCustomPagePath(s.campaign,"cmpPath","cid=");
+		s_prop4=s.prop4;
+		/* Campaign Page Views-30 minutes */
+		s.prop5=s.getAndPersistValue(s.campaign,'cmp_pv',1.0/48);
+		s_prop5=s.prop5;
+		/* Ad impression tracking */
+		if (!s.products){
+			s.products="";
+		}
+		s.impressionString = setLinkAdImpressions();
+		if (s.impressionString) {
+			// add s.events
+			// add value to s.products
+			s.eVar9=s.pageName;
+			s.eVar12=s.channel;
+			s.eVar3=s.server;
+			s.events=s.apl(s.events,"event33",",",2);
+			s.products=s.apl(s.products,s.impressionString,",",2);
+		}
+		/* Internal Campaigns */
+		if(checkInternal(document.referrer)||!document.referrer){
+			s.eVar1=s.getQueryParam('intcmp');
+			s_eVar1=s.eVar1;
+			s.eVar1=s.getValOnce(s.eVar1,"sunintcmp",0)
+			if (s.eVar1) {
+				// first check to see if there was also an impression of this ad
+				var impressionCheck = ';'+s.eVar1+';;;event33=1';
+				if (s.products.indexOf(impressionCheck)>-1){
+				s.products=s.products.replace(impressionCheck, impressionCheck+'|event34=1');
+				} else {
+					s.products=s.apl(s.products,';'+s.eVar1+';;;event34=1',',',2);
+					}
+					s.events=s.apl(s.events,'event34',',',2);
+					s.eVar29=sunPrePageName?sunPrePageName:'No sun.com referrer';
+					s.eVar40=sunPreChannel?sunPreChannel:'No sun.com referrer';
+					s.eVar42=getReferringDomain(document.referrer);
+					}
+				}
+		/* Internal Campaign Pathing */
+		s.prop1=s.getCustomPagePath(s.eVar1,"intcmpPath","intcmp=");
+		s_prop1=s.prop1;
+		/* Campaign Page Views-30 minutes */
+		s.prop3=s.getAndPersistValue(s.eVar1,'intcmp_pv',1.0/48);
+		s_prop3=s.prop3;		
+		/* RSS Feeds */
+		s.prop8=s.getQueryParam('feed');
+		s_prop8=s.prop8;
+		/* Set prop36=pageName on Exit Link  */
+		var exitUrl=s.exitLinkHandler()
+		if (exitUrl){
+			s.prop36=s.pageName
+			s.linkTrackVars='prop36';
+		}
+	}
+	
+	/* downloadLinkHandler */
+	// if no linkType the "onclick" isn't tagged
+
+	if (!s.linkType) {
+		s.linkTrackVars=s.linkTrackEvents="None";
+		// this should only run if the metatag exists and there is no onclick
+		var downloadUrl=s.downloadLinkHandler("msi,tar,gz,dmg,deb,rpm,run,bz2,zip,jar,exe");
+		if (sun_prodMeta && downloadUrl){
+			var urlSplit=downloadUrl.split("/");
+			var sun_file=urlSplit.pop()          
+			s.linkName=sun_file;
+			s.eVar8=sun_file;
+			s.eVar3=sun_venue;
+			s.products=sun_prodValue;
+			s.linkTrackVars='events,products,eVar3,eVar8';
+			s.linkTrackEvents='event7';
+			s.events='event7';
+		}
+	} else if (s.linkType!='o'&&downloadUrl) {
+		// flush required
+		s.linkType="";
+		s.linkName="";
+		s.linkTrackVars="";
+		s.linkTrackEvents="";
+	}
+	/**** postPlugins ****/
+	if (window.s_postPlugins) { s_postPlugins(s) }
+	/********************/
+	
+	/**** send prop50 in with pv and custom links ****/
+	s.prop50=s_prop2;
+	s.linkTrackVars=s.apl(s.linkTrackVars,"prop50",",",2);
+	
+	/**** send prop44 in with custom links ****/
+	s.linkTrackVars=s.apl(s.linkTrackVars,"prop44",",",2);
+	
+	/**** Clear vars for K5 ****/
+	if (clearvars) {
+                s.events=s_events='';
+		s.eVar2=s_eVar2='';
+                s.eVar3=s_eVar3='';
+		s.eVar4=s_eVar4='';
+		s.eVar5=s_eVar5='';
+		s.eVar6=s_eVar6='';
+		s.eVar7=s_eVar7='';
+                s.eVar8=s_eVar8='';
+		s.eVar9=s_eVar9='';
+		s.eVar10=s_eVar10='';
+		s.eVar11=s_eVar11='';
+		s.eVar13=s_eVar13='';
+                s.eVar14=s_eVar14='';
+                s.eVar15=s_eVar15='';
+                s.eVar16=s_eVar16='';
+		s.eVar17=s_eVar17='';
+		s.eVar18=s_eVar18='';
+		s.eVar19=s_eVar19='';
+		s.eVar20=s_eVar20='';
+		s.eVar21=s_eVar21='';
+		s.eVar22=s_eVar22='';
+		s.eVar23=s_eVar23='';
+		s.eVar24=s_eVar24='';
+		s.eVar25=s_eVar25='';
+		s.eVar26=s_eVar26='';
+		s.eVar27=s_eVar27='';
+		s.eVar28=s_eVar28='';
+		s.eVar29=s_eVar29='';
+		s.eVar30=s_eVar30='';
+		s.eVar31=s_eVar31='';
+		s.eVar32=s_eVar32='';
+		s.eVar33=s_eVar33='';
+		s.eVar34=s_eVar34='';
+		s.eVar36=s_eVar36='';
+		s.eVar37=s_eVar37='';
+		s.eVar38=s_eVar38='';
+		s.eVar39=s_eVar39='';
+		s.eVar40=s_eVar40='';
+		s.prop6=s_prop6='';
+		s.prop9=s_prop9='';
+		s.prop11=s_prop11='';
+		s.prop12=s_prop12='';
+		s.prop13=s_prop13='';
+		s.prop14=s_prop14='';
+		s.prop15=s_prop15='';
+		s.prop16=s_prop16='';
+		s.prop17=s_prop17='';
+		s.prop18=s_prop18='';
+		s.prop19=s_prop19='';
+		s.prop20=s_prop20='';
+		s.prop21=s_prop21='';
+		s.prop22=s_prop22='';
+		s.prop23=s_prop23='';
+		s.prop24=s_prop24='';
+		s.prop25=s_prop25='';
+		s.prop26=s_prop26='';
+		s.prop27=s_prop27='';
+		s.prop28=s_prop28='';
+		s.prop29=s_prop29='';
+		s.prop30=s_prop30='';
+		s.prop31=s_prop31='';
+		s.prop32=s_prop32='';
+		s.prop34=s_prop34='';
+		s.prop35=s_prop35='';
+		s.prop36=s_prop36='';
+		s.prop37=s_prop37='';
+		s.prop38=s_prop38='';
+		s.prop39=s_prop39='';
+		s.prop40=s_prop40='';
+		s.prop41=s_prop41='';
+		s.prop42=s_prop42='';
+		s.prop43=s_prop43='';
+		//s.prop44=s_prop44=''; removed for K5's
+		s.prop45=s_prop45='';
+		s.prop46=s_prop46='';
+		s.prop47=s_prop47='';
+		s.prop48=s_prop48='';
+		s.prop49=s_prop49='';
+                s.products=s_products='';
+	}
+}
+s.doPlugins=s_doPlugins
+/************************** PLUGINS SECTION *************************/
+/* You may insert any plugins you wish to use here.                 */
+/* Plugin: getNewRepeat 1.0 - Return whether user is new or repeat */
+s.getNewRepeat=new Function(""
++"var s=this,e=new Date(),cval,ct=e.getTime(),y=e.getYear();e.setTime"
++"(ct+30*24*60*60*1000);cval=s.c_r('s_nr');if(cval.length==0){s.c_w("
++"'s_nr',ct,e);return 'New';}if(cval.length!=0&&ct-cval<30*60*1000){s"
++".c_w('s_nr',ct,e);return 'New';}if(cval<1123916400001){e.setTime(cv"
++"al+30*24*60*60*1000);s.c_w('s_nr',ct,e);return 'Repeat';}else retur"
++"n 'Repeat';");
+/* Plugin: getPreviousValue_v1.0 - return previous value of designated variable */
+s.getPreviousValue=new Function("v","c","el",""
++"var s=this,t=new Date,i,j,r='';t.setTime(t.getTime()+1800000);if(el"
++"){if(s.events){i=s.split(el,',');j=s.split(s.events,',');for(x in i"
++"){for(y in j){if(i[x]==j[y]){if(s.c_r(c)) r=s.c_r(c);v?s.c_w(c,v,t)"
++":s.c_w(c,'no value',t);return r}}}}}else{if(s.c_r(c)) r=s.c_r(c);v?"
++"s.c_w(c,v,t):s.c_w(c,'no value',t);return r}");
+/* Plugin Utility: apl v1.1 */
+s.apl=new Function("l","v","d","u",""
++"var s=this,m=0;if(!l)l='';if(u){var i,n,a=s.split(l,d);for(i=0;i<a."
++"length;i++){n=a[i];m=m||(u==1?(n==v):(n.toLowerCase()==v.toLowerCas"
++"e()));}}if(!m)l=l?l+d+v:v;return l");
+/* Utility Function: split v1.5 (JS 1.0 compatible) */
+s.split=new Function("l","d",""
++"var i,x=0,a=new Array;while(l){i=l.indexOf(d);i=i>-1?i:l.length;a[x"
++"++]=l.substring(0,i);l=l.substring(i+d.length);}return a");
+/* Plugin: getQueryParam 2.3*/
+s.getQueryParam=new Function("p","d","u",""
++"var s=this,v='',i,t;d=d?d:'';u=u?u:(s.pageURL?s.pageURL:s.wd.locati"
++"on);if(u=='f')u=s.gtfs().location;while(p){i=p.indexOf(',');i=i<0?p"
++".length:i;t=s.p_gpv(p.substring(0,i),u+'');if(t){t=t.indexOf('#')>-"
++"1?t.substring(0,t.indexOf('#')):t;}if(t)v+=v?d+t:t;p=p.substring(i="
++"=p.length?i:i+1)}return v");
+s.p_gpv=new Function("k","u",""
++"var s=this,v='',i=u.indexOf('?'),q;if(k&&i>-1){q=u.substring(i+1);v"
++"=s.pt(q,'&','p_gvf',k)}return v");
+s.p_gvf=new Function("t","k",""
++"if(t){var s=this,i=t.indexOf('='),p=i<0?t:t.substring(0,i),v=i<0?'T"
++"rue':t.substring(i+1);if(p.toLowerCase()==k.toLowerCase())return s."
++"escp(v)}return ''");
+s.p_gpv=new Function("k","u",""
++"var s=this,v='',i=u.indexOf('?'),q;if(k&&i>-1){q=u.substring(i+1);v"
++"=s.pt(q,'&','p_gvf',k)}return v");
+s.p_gvf=new Function("t","k",""
++"if(t){var s=this,i=t.indexOf('='),p=i<0?t:t.substring(0,i),v=i<0?'T"
++"rue':t.substring(i+1);if(p.toLowerCase()==k.toLowerCase())return s."
++"epa(v)}return ''");
+/* Plugin: getAndPersistValue 0.3 - get a value on every page */
+s.getAndPersistValue=new Function("v","c","e",""
++"var s=this,a=new Date;e=e?e:0;a.setTime(a.getTime()+e*86400000);if("
++"v)s.c_w(c,v,e?a:0);return s.c_r(c);");
+/* Plugin: Custom Page Path v1.0 (Campaign Pathing-30 minutes) */
+s.getCustomPagePath=new Function("v","c","p",""
++"var s=this,t=new Date,pn;pn=s.pageName;t.setTime(t.getTime()+180000"
++"0);if(v){if(s.c_w(c,v,t)){return p+v+':'+pn}}else{v=s.c_r(c);if(v)"
++"{s.c_w(c,v,t);return pn;}}return ''");
+/* Plugin: getValOnce 0.2 - get a value once per session or number of days */
+s.getValOnce=new Function("v","c","e",""
++"var s=this,k=s.c_r(c),a=new Date;e=e?e:0;if(v){a.setTime(a.getTime("
++")+e*86400000);s.c_w(c,v,e?a:0);}return v==k?'':v");
+/* Plugin: downloadLinkHandler 0.5 - identify and report download links */
+s.downloadLinkHandler=new Function("p",""
++"var s=this,h=s.p_gh(),n='linkDownloadFileTypes',i,t;if(!h||(s.linkT"
++"ype&&(h||s.linkName)))return '';i=h.indexOf('?');t=s[n];s[n]=p?p:t;"
++"if(s.lt(h)=='d')s.linkType='d';else h='';s[n]=t;return h;");
+/* Plugin: exitLinkHandler 0.5 - identify and report exit links */
+s.exitLinkHandler=new Function("p",""
++"var s=this,h=s.p_gh(),n='linkInternalFilters',i,t;if(!h||(s.linkTyp"
++"e&&(h||s.linkName)))return '';i=h.indexOf('?');t=s[n];s[n]=p?p:t;h="
++"s.linkLeaveQueryString||i<0?h:h.substring(0,i);if(s.lt(h)=='e')s.li"
++"nkType='e';else h='';s[n]=t;return h;");
+/* Utility Function: p_gh */
+s.p_gh=new Function(""
++"var s=this;if(!s.eo&&!s.lnk)return '';var o=s.eo?s.eo:s.lnk,y=s.ot("
++"o),n=s.oid(o),x=o.s_oidt;if(s.eo&&o==s.eo){while(o&&!n&&y!='BODY'){"
++"o=o.parentElement?o.parentElement:o.parentNode;if(!o)return '';y=s."
++"ot(o);n=s.oid(o);x=o.s_oidt}}return o.href?o.href:'';");
+/* Plugin: Form Analysis 2.1 (Success, Error, Abandonment) */
+s.setupFormAnalysis=new Function(""
++"var s=this;if(!s.fa){s.fa=new Object;var f=s.fa;f.ol=s.wd.onload;s."
++"wd.onload=s.faol;f.uc=s.useCommerce;f.vu=s.varUsed;f.vl=f.uc?s.even"
++"tList:'';f.tfl=s.trackFormList;f.fl=s.formList;f.va=new Array('',''"
++",'','')}");
+s.sendFormEvent=new Function("t","pn","fn","en",""
++"var s=this,f=s.fa;t=t=='s'?t:'e';f.va[0]=pn;f.va[1]=fn;f.va[3]=t=='"
++"s'?'Success':en;s.fasl(t);f.va[1]='';f.va[3]='';");
+s.faol=new Function("e",""
++"var s=s_c_il["+s._in+"],f=s.fa,r=true,fo,fn,i,en,t,tf;if(!e)e=s.wd."
++"event;f.os=new Array;if(f.ol)r=f.ol(e);if(s.d.forms&&s.d.forms.leng"
++"th>0){for(i=s.d.forms.length-1;i>=0;i--){fo=s.d.forms[i];fn=fo.name"
++";tf=f.tfl&&s.pt(f.fl,',','ee',fn)||!f.tfl&&!s.pt(f.fl,',','ee',fn);"
++"if(tf){f.os[fn]=fo.onsubmit;fo.onsubmit=s.faos;f.va[1]=fn;f.va[3]='"
++"No Data Entered';for(en=0;en<fo.elements.length;en++){el=fo.element"
++"s[en];t=el.type;if(t&&t.toUpperCase){t=t.toUpperCase();var md=el.on"
++"mousedown,kd=el.onkeydown,omd=md?md.toString():'',okd=kd?kd.toStrin"
++"g():'';if(omd.indexOf('.fam(')<0&&okd.indexOf('.fam(')<0){el.s_famd"
++"=md;el.s_fakd=kd;el.onmousedown=s.fam;el.onkeydown=s.fam}}}}}f.ul=s"
++".wd.onunload;s.wd.onunload=s.fasl;}return r;");
+s.faos=new Function("e",""
++"var s=s_c_il["+s._in+"],f=s.fa,su;if(!e)e=s.wd.event;if(f.vu){s[f.v"
++"u]='';f.va[1]='';f.va[3]='';}su=f.os[this.name];return su?su(e):tru"
++"e;");
+s.fasl=new Function("e",""
++"var s=s_c_il["+s._in+"],f=s.fa,a=f.va,l=s.wd.location,ip=s.trackPag"
++"eName,p=s.pageName;if(a[1]!=''&&a[3]!=''){a[0]=!p&&ip?l.host+l.path"
++"name:a[0]?a[0]:p;if(!f.uc&&a[3]!='No Data Entered'){if(e=='e')a[2]="
++"'Error';else if(e=='s')a[2]='Success';else a[2]='Abandon'}else a[2]"
++"='';var tp=ip?a[0]+':':'',t3=e!='s'?':('+a[3]+')':'',ym=!f.uc&&a[3]"
++"!='No Data Entered'?tp+a[1]+':'+a[2]+t3:tp+a[1]+t3,ltv=s.linkTrackV"
++"ars,lte=s.linkTrackEvents,up=s.usePlugins;if(f.uc){s.linkTrackVars="
++"ltv=='None'?f.vu+',events':ltv+',events,'+f.vu;s.linkTrackEvents=lt"
++"e=='None'?f.vl:lte+','+f.vl;f.cnt=-1;if(e=='e')s.events=s.pt(f.vl,'"
++",','fage',2);else if(e=='s')s.events=s.pt(f.vl,',','fage',1);else s"
++".events=s.pt(f.vl,',','fage',0)}else{s.linkTrackVars=ltv=='None'?f."
++"vu:ltv+','+f.vu}s[f.vu]=ym;s.usePlugins=false;var faLink=new Object"
++"();faLink.href='#';s.tl(faLink,'o','Form Analysis');s[f.vu]='';s.us"
++"ePlugins=up}return f.ul&&e!='e'&&e!='s'?f.ul(e):true;");
+s.fam=new Function("e",""
++"var s=s_c_il["+s._in+"],f=s.fa;if(!e) e=s.wd.event;var o=s.trackLas"
++"tChanged,et=e.type.toUpperCase(),t=this.type.toUpperCase(),fn=this."
++"form.name,en=this.name,sc=false;if(document.layers){kp=e.which;b=e."
++"which}else{kp=e.keyCode;b=e.button}et=et=='MOUSEDOWN'?1:et=='KEYDOW"
++"N'?2:et;if(f.ce!=en||f.cf!=fn){if(et==1&&b!=2&&'BUTTONSUBMITRESETIM"
++"AGERADIOCHECKBOXSELECT-ONEFILE'.indexOf(t)>-1){f.va[1]=fn;f.va[3]=e"
++"n;sc=true}else if(et==1&&b==2&&'TEXTAREAPASSWORDFILE'.indexOf(t)>-1"
++"){f.va[1]=fn;f.va[3]=en;sc=true}else if(et==2&&kp!=9&&kp!=13){f.va["
++"1]=fn;f.va[3]=en;sc=true}if(sc){nface=en;nfacf=fn}}if(et==1&&this.s"
++"_famd)return this.s_famd(e);if(et==2&&this.s_fakd)return this.s_fak"
++"d(e);");
+s.ee=new Function("e","n",""
++"return n&&n.toLowerCase?e.toLowerCase()==n.toLowerCase():false;");
+s.fage=new Function("e","a",""
++"var s=this,f=s.fa,x=f.cnt;x=x?x+1:1;f.cnt=x;return x==a?e:'';");
+
+/* WARNING: Changing any of the below variables will cause drastic
+changes to how your visitor data is collected.  Changes should only be
+made when instructed to do so by your account manager.*/
+s.dc=112
+
+/* 1st Party Cookie */
+s.trackingServer="metrics.sun.com"
+s.trackingServerSecure="smetrics.sun.com"
+/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
+var s_code='',s_objectID;function s_gi(un,pg,ss){var d="function s_dr"
++"(x,o,n){var i=x.indexOf(o);if(i>=0&&x.split)x=(x.split(o)).join(n);"
++"else while(i>=0){x=x.substring(0,i)+n+x.substring(i+o.length);i=x.i"
++"ndexOf(o)}return x}w.s_dr=s_dr;function s_d(x) {var t='`^@$#',l='01"
++"23456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',d,n=0"
++",b,k,w,i=x.lastIndexOf('~~');if(i>0){d=x.substring(0,i);x=x.substri"
++"ng(i+2);while(d){w=d;i=d.indexOf('~');if(i>0){w=d.substring(0,i);d="
++"d.substring(i+1)}else d='';b=parseInt(n/62);k=n-b*62;k=t.substring("
++"b,b+1)+l.substring(k,k+1);x=s_dr(x,k,w);n++}for(i=0;i<5;i++){w=t.su"
++"bstring(i,i+1);x=s_dr(x,w+' ',w)}}return x}w.s_d=s_d;",c=".substrin"
++"g(~.indexOf(~return ~=fun`K(~){`Os=^u~`t $6~;$6~.toLowerCase()~`cFu"
++"n`K('e`s`Os=s_c_il['+@i+']~};s.~.length~.toUpperCase~`cObject~s.wd~"
++"t^D~.location~')q='~dynamicAccount~link~s.apv~ction~$l$X~)$6x^X!Obj"
++"ect||!Object.prototype||!Object.prototype[x])~@G^Al)@G^Al['+@i+'].m"
++"rq(\"'+un+'\")'~var ~s.pt(~ookieDomainPeriods~,`s,'~while(~);s.~.pr"
++"otocol~){$6~visitor~=''~:'')~;@F^Vs[k],255)}~s_c2f~javaEnabled~=new"
++" ~.lastIndexOf('~tm.get~@5\"$Qs.b.addBehavior('# default# ~onclick~"
++"ternalFilters~entElement~Name~javascriptVersion~=parseFloat(~cookie"
++"~parseInt(~s.^J~Type~o^joid~browser~','~else~referrer~colorDepth~St"
++"ring~.host~s.rep(~}catch(e){~r=s.m(f)?s[f](~}$6~s.un~s.eo~s.sq~t=s."
++"ot(o)~track~j='1.~)?'Y':'N'~$dURL~^jc_i~s.ismac~lugins~=='~;for(~Sa"
++"mpling~s.rc[un]~s.b.addEventListener~Download~tfs~resolution~.get@I"
++"()~s.eh~s.isie~s.vl_l~s.vl_t~Height~t,h){t=t?t~isopera~escape(~scre"
++"en.~s.fl(~harCode~&&(~variableProvider~s.gg('objectID')~&&s.~:'';h="
++"h?h~e&&l$kSESSION'~');~f',~_'+~Date~name~home$d~.s_~s.c_r(~s.rl[u~o"
++".href~Lifetime~Width~sEnabled~'){q='~b.attachEvent~&&l$kNONE'){~Ext"
++"ernalLinks~this~charSet~onerror~currencyCode~s=s_gi(~e$SElement~;s."
++"gl(s.vl_g~.parent~Array~lnk~Opera~eval(~Math.~s.fsg~s.ns6~docum~s.o"
++"un~conne~InlineStats~Track~'0123456789~s[k]=~window~onload~Time~s.e"
++"pa(~s.c_w(~o.type~(s.ssl~n=s.oid(o)~LeaveQuery~')>=~&&t~'=')~){n=~+"
++"1))~' '+~s.t()}~\",''),~=s.oh(o);~+(y<1900?~ingServer~s_gs~true~ses"
++"s~campaign~lif~;fun~,100)~s.co(~s._in~x in ~='s_~ffset~s.c_d~'&pe~s"
++".gv(~s.qav~s.pl~=(apn~sqs',q);~Year(~=s.n.app~&&!~(''+~(\")>=~)+'/~"
++"',s~s()+':'+~){p=~():''~a):f(~){v=s.n.~channel~if(~un)~.target~o.va"
++"lue~etscape~(ns?ns:~s_')t=t~omePage~++}~')<~){x~1);~e))~'+n~height~"
++"events~trk~random~code~un,~try{~'MSIE ~.src~INPUT'~floor(~s.pg~s.nu"
++"m(~s.ape(~s.c_gd~s.dc~.inner~transa~Events~page~.set~Group,~Match,~"
++".fromC~++){~?'':~!='~='+~(\")<~?'&~+';~(f){~>=5)~&&i>~[b](~=l[n];~~"
++"fun`K `ae$p`Ox`X,s=0,e,a,b,c;`S1){e=f`1'\"@z);b=f`1'\\\\',s);c=f`1"
++"\"\\n\",s)`6e<0||(b>=0&&b<$Ie=b`6e<0||(c>=0&&c<$Ie=c`6e>=0$G+=(e>s?"
++"f`0s,e)`Y+(e==c?'\\\\n':'\\\\'+f`0e,e@T;s=e+1}`t `2x+f`0s)}`2f}w.`a"
++"e=`ae@f`K `aa$p`Os=f`1'(')+1,e=f`1')'),a`X,c;`Ss>=0&&s<e){c=f`0s,s+"
++"1)`6c==`s)a+='\",\"';`5(\"\\n\\r\\t \")`1c)<0)a+=c;s$E`2a?'\"'+a+'"
++"\"':a}w.`aa=`ae@f`K `a(cc){cc`X+cc;`Ofc='`Of`cFun`K(@z=cc`1';',cc`1"
++"'{')),e=cc`d}'),o,a,d,q,c,f,h,x;fc+=`aa(cc)+',\"`Os`C;';c=cc`0s+1,e"
++");s=c`1'fun`K^d`Ss>=0){d=1;q`X;x=0;f=c`0s);a=`aa(f);e=o=c`1'{@z);e+"
++"+;`Sd>0){h=c`0e,e+1)`6q`Vh==q@vx)q`X`6h^D\\\\')x=x?0:1;`t x=0}`t{$6"
++"h^D\"'||h==\"'\")q=h`6h^D{')d++`6h^D}')d--^1d>0)e$Ec=c`00,s)+'new F"
++"un`K('+(a?a+`s`Y+'\"'+`ae(c`0o+1,$I+'\")'+c`0e+$Hs=c`1'fun`K')}fc+="
++"`ae(c)$o`2s\");';@5fc);`2f}w.`a=`a`6pg){fun`K s_co(o){`O^y\"_\",1,$"
++"H`2@ho)}w^jco=s_co@f`K @a($7{`O^y$P1,$H`2@Vw^jgs=@a@f`K s_dc($7{`O^"
++"y$P$H`2@Vw^jdc=s_dc;}fun`K s_c($Ppg,ss`4;s._c@kc';`D=@G`6!`D^An){`D"
++"^Al`c@2;`D^An=0;}s._il=`D^Al;@i=`D^An;s._il[@i]=s;`D^An++;s.m`3m){`"
++"2@wm)`1'{$F0`9fl`3x,l){`2x?@wx)`00,l):x`9co`3o`V!o)`2o;`On`C,x^E@jo"
++")$6x`1'select$F0&&x`1'filter$F0)n[x]=o[x];`2n`9num`3x$G`X+x^E`Op=0;"
++"p<x`A;p++)$6(@E')`1x`0p,p@T<0)`20;`21`9rep`3x,o,n){`Oi=x`1o);`Sx$r="
++"0$G=x`00,i)+n+x`0i+o`A);i=x`1o,i+n`A)}`2x`9ape`3x`4,h=@EABCDEF',i,c"
++"=s.^v,n,l,e,y`X;c=c?c`B$2`6x$G`X+x`6c^DAUTO'^X'').c^WAt){for(i=0;i<"
++"x`A;i$ic=x`0i,i+$Hn=x.c^WAt(i)`6n>127){l=0;e`X;`Sn||l<4){e=h`0n%16,"
++"n%16+1)+e;n=`nn/16);l$Ey+='%u'+e}`5c^D+')y+='%2B';`t y+=^Tc)}x=y}`t"
++"{x=x?`y^T''+x),'+`s%2B'):x`6x&&c^aem==1&&x`1'%u$F0&&x`1'%U$F0){i=x`"
++"1'%^d`Si>=0){i++`6h`08)`1x`0i,i+1)`B())>=0)`2x`00,i)+'u00'+x`0i);i="
++"x`1'%',i)}}}}`2x`9epa`3x`4;`2x?un^T`y''+x,'+`s ')):x`9pt`3x,d,f,a`4"
++",t=x,z=0,y,r;`St){y=t`1d);y=y<0?t`A:y;t=t`00,y);^0t,$3t,a)`6r)`2r;z"
++"+=y+d`A;t=x`0z,x`A);t=z<x`A?t:''}`2''`9isf`3t,a){`Oc=a`1':')`6c>=0)"
++"a=a`00,c)`6t`00,2)^D$C`02);`2(t!`X@Q==a)`9fsf`3t,a`4`6`Pa`Ris^et))@"
++"7+=(@7!`X?`s`Y+t;`20`9fs`3x,f`4;@7`X;`Px`Rfs^ef);`2@7`9c_d`X;$Yf`3t"
++",a`4`6!$Wt))`21;`20`9c_gd`3`4,d=`D`F`x^h,n=s.fpC`Q,p`6!n)n=s.c`Q`6d"
++"@v@m@Sn?`nn):2;n=n>2?n:2;p=d`d.')`6p>=0){`Sp>=0&&n>1$1d`d.',p-$Hn--"
++"}@m=p>0&&`Pd,'.`sc_gd^e0)?d`0p):d}}`2@m`9c_r`3k`4;k=$Xk);`Oc=@Us.d."
++"`m,i=c`1@Uk+@R,e=i<0?i:c`1';',i),v=i<0$j@Jc`0i+2+k`A,e<0?c`A:$I;`2v"
++"$k[[B]]'?v:''`9c_w`3k,v,e`4,d=$Y(),l=s.`m^n,t;v`X+v;l=l?@wl)`B$2`6^"
++"c^st=(v!`X?`nl?l:0):-60)`6t){e`c^g;e$e@I(e^L+(t*1000))}^1k^ss.d.`m="
++"k+'`Lv!`X?v:'[[B]]')$o path=/;'+(^c?' expires$le.toGMT`w()$o'`Y+(d?"
++"' domain$ld$o'`Y;`2^kk)==v}`20`9eh`3o,e,r,f`4,b='s^fe+'^f@i,n=-1,l,"
++"i,x`6!^Ml)^Ml`c@2;l=^Ml^Ei=0;i<l`A&&n<0;i++`Vl[i].o==o&&l[i].e==e)n"
++"=i^1n<0@Si;l[n]`C}x$tx.o=o;x.e=e;f=r?x.b:f`6r||f$G.b=r?0:o[e];x.o[e"
++"]=f^1x.b$G.o[b]=x.b;`2b}`20`9cet`3f,a,t,o,b`4,r`6`J>=5^X!s.^S||`J>="
++"7))@5'$Q^0$3a)`zr=s.m(t)?s[t](e):t(e)}^d`t{$6^B^au`1$R4@P0)r=s.m(b)"
++"?s$sa):b(a);`t{^M(`D,'^w',0,o);^0$3a`Teh(`D,'^w',1)}}`2r`9g^Jet`3e`"
++"4;`2`o`9g^Joe`8;^M(@G,\"^w\",1`Te^J=1;`Oc=s.t()`6c)s.d.write(c`Te^J"
++"=0;`2@b'`Tg^Jfb`3a){`2@G`9g^Jf`3w`4,p=w@1,l=w`F;`o=w`6p&&p`F!=l&&p`"
++"F`x==l`x){`o=p;`2s.g^Jf(`o)}`2`o`9g^J`3`4`6!`o){`o=`D`6!s.e^J)`o=s."
++"cet('g^J^e`o,'g^Jet@z.g^Joe,'g^Jfb')}`2`o`9mrq`3u`4,l=^l],n,r;^l]=0"
++"`6l)for(n=0;n<l`A;n$ir$ts.mr(0,0,r.t,r.u,r.r)}`9mr`3@c,q,ta,u,rs`4,"
++"dc=$Z,t1=s.^6@Z,t2=s.^6@ZSecure,ns=s.`W`jspace,un=u?u:$Bs.f$7,unc=`"
++"y$P'_`s-'),r`C,l,imn@ki^f($7,im,b,e`6!rs){rs='http'+@M?'s'`Y+'://'+"
++"(t1?@M@Q2?t2:t1):($B@M?'102':unc))+'.'+($Z?$Z:112)+'.2o7.net')@yb/s"
++"s/'+^2+'/1/H.14/'+@c+'?[AQB]&ndh=1'+(q?q`Y+'&[AQE]'`6^N@v^B`V`J>5.5"
++")rs=^Vrs,4095);`t rs=^Vrs,2047)}^1s.d.images&&`J>=3^X!s.^S||`J>=7)^"
++"X@8<0||`J>=6.1)`V!s.rc)s.rc`C`6!^G){^G=1`6!s.rl)s.rl`C;^ln]`c@2;set"
++"@Iout('$6`N,750)}`t{l=^ln]`6l){r.t=ta;r.u=un;r.r=rs;l[l`A]=r;`2''}i"
++"mn+='^f^G;^G$Eim=`D[imn]`6!im)im=`D[imn]`cImage;im^jl=0;im.@H`cFun`"
++"K('e`s^u^jl=1`6`N);im$S=rs`6rs`1@n=@P0^X!ta||ta^D_self'||ta^D_top'|"
++"|(`D.^h@Qa==`D.^h))){b=e`c^g;`S!im^jl&&e^L-b^L<500)e`c^g}`2''}`2'<i"
++"m'+'g sr'+'c=\"'+rs+'\" width=1 $K=1 border=0 alt=\"\">'`9gg`3v`4`6"
++"!`D['s^fv])`D['s^fv]`X;`2`D['s^fv]`9glf`3t,a`Vt`00,2)^D$C`02);`Os=^"
++"u,v=s.gg(t)`6v)s[t]=v`9gl`3v`4`6$V)`Pv`Rgl^e0)`9gv`3v`4;`2s['vpm^fv"
++"]?s['vpv^fv]:(s[v]?s[v]`Y`9havf`3t,a`4,b=t`00,4),x=t`04),n=`nx),k='"
++"g^ft,m='vpm^ft,q=t,v=s.`I@DVars,e=s.`I@D$c;@F@ot)`6s.@3||^3){v=v?v+"
++"`s+^O+`s+^O2:''`6v@v`Pv`Ris^et))s[k]`X`6`E$L'&&e)@Fs.fs(s[k],e)}s[m"
++"]=0`6`E`WID`Gvid';`5`E^9^qg'`Z`5`E`u^qr'`Z`5`Evmk`Gvmt';`5`E^v^qce'"
++"`6s[k]&&s[k]`B()^DAUTO')@F'ISO8859-1';`5s[k]^aem==2)@F'UTF-8'}`5`E`"
++"W`jspace`Gns';`5`Ec`Q`Gcdp';`5`E`m^n`Gcl';`5`E^Y`Gvvp';`5`E^x`Gcc';"
++"`5`E$5`Gch';`5`E$b`KID`Gxact';`5`E@d`Gv0';`5`E^K`Gs';`5`E`v`Gc';`5`"
++"E`k`Gj';`5`E`b`Gv';`5`E`m^p`Gk';`5`E`r^o`Gbw';`5`E`r^Q`Gbh';`5`E@B`"
++"K`p`Gct';`5`E^i`Ghp';`5`Ep^C`Gp';`5$Wx)`Vb^Dprop`Gc$J;`5b^DeVar`Gv$"
++"J;`5b^Dhier^qh$J`Z^1s[k]@Q$k`I`j'@Q$k`I`p')@p+='&'+q+'`Ls[k]);`2''`"
++"9hav`3`4;@p`X;`P^P`Rhav^e0);`2@p`9lnf`3^R`7^b`7:'';`Ote=t`1@R`6t@Qe"
++">0&&h`1t`0te@T>=0)`2t`00,te);`2''`9ln`3h`4,n=s.`I`js`6n)`2`Pn`Rln^e"
++"h);`2''`9ltdf`3^R`7^b`7:'';`Oqi=h`1'?^dh=qi>=0?h`00,qi):h`6t&&h`0h`"
++"A-(t`A@T^D.'+t)`21;`20`9ltef`3^R`7^b`7:''`6t&&h`1t)>=0)`21;`20`9lt`"
++"3h`4,lft=s.`I^IFile`ps,lef=s.`IEx`h,@e=s.`IIn`h;@e=@e?@e:`D`F`x^h;h"
++"=h`7`6s.^6^ILinks&&lft&&`Plft`Rltd^eh))`2'd'`6s.^6^t^Xlef||@e)^X!le"
++"f||`Plef`Rlte^eh))^X!@e||!`P@e`Rlte^eh)))`2'e';`2''`9lc`8,b=^M(^u,"
++"\"`g\"`T@3=@h^u`Tt(`T@3=0`6b)`2^u$se);`2@b'`Tbc`8,f`6s.d^ad.all^ad."
++"all.cppXYctnr)return;^3=^z?^z:e$8;@5\"$Q$6^3^X^3.tag`j||^3.par`i||^"
++"3@1Nod$I@Vcatch$p}\"`Teo=0'`Toh`3o`4,l=`D`F,h=^m?^m:'',i,j,k,p;i=h`"
++"1':^dj=h`1'?^dk=h`1'/')`6h^Xi<0||(j>=0$rj)||(k>=0$rk))$1o`U&&o`U`A>"
++"1?o`U:(l`U?l`U`Y;i=l.path^h`d/^dh=(p?p+'//'`Y+(o`x?o`x:(l`x?l`x`Y)+"
++"(h`00,1)$k/'?l.path^h`00,i<0?0:i@y'`Y+h}`2h`9ot`3o){`Ot=o.tag`j;t=t"
++"@Q`B?t`B$2`6`ESHAPE')t`X`6t`V`E$T&&@L&&@L`B)t=@L`B();`5^m)t='A';}`2"
++"t`9oid`3o`4,^5,p,c,n`X,x=0`6t@v`q$1o`U;c=o.`g`6^m^X`EA'||`EAREA')^X"
++"!c||!p||p`7`1'javascript$F0))n@X`5c@S`ys.rep(`ys.rep@wc,\"\\r@W\"\\"
++"n@W\"\\t@W' `s^dx=2}`5$9^X`E$T||`ESUBMIT')@S$9;x=3}`5o$S&&`EIMAGE')"
++"n=o$S`6n){`q=^Vn@g;`qt=x}}`2`q`9rqf`3t,un`4,e=t`1@R,u=e>=0?`s+t`00,"
++"e)+`s:'';`2u&&u`1`s+un+`s)>=0?@Jt`0e@T:''`9rq`3un`4,c=un`1`s),v=^k'"
++"s_sq'),q`X`6c<0)`2`Pv,'&`srq^e$7;`2`Pun`Rrq',0)`9sqp`3t,a`4,e=t`1@R"
++",q=e<0$j@Jt`0e+1)`Tsqq[q]`X`6e>=0)`Pt`00,e)`R@s`20`9sqs`3$Pq`4;^4u["
++"un]=q;`20`9sq`3q`4,k@ksq',v=^kk),x,c=0;^4q`C;^4u`C;^4q[q]`X;`Pv,'&`"
++"ssqp',0);`P^2`R@sv`X^E@j^4u`M)^4q[^4u[x]]+=(^4q[^4u[x]]?`s`Y+x^E@j^"
++"4q`M&&^4q[x]^Xx==q||c<2)){v+=(v$n'`Y+^4q[x]+'`Lx);c$E`2@Kk,v,0)`9wd"
++"l`8,r=@b,b=^M(`D,\"@H\"),i,o,oc`6b)r=^u$se)^Ei=0;i<s.d.`Is`A;i$io=s"
++".d.`Is[i];oc=o.`g?\"\"+o.`g:\"\"`6(oc`1\"@a$m0||oc`1\"^joc@x0)&&oc`"
++"1\".tl$m0)^M(o,\"`g\",0,s.lc);}`2r^d`Ds`3`4`6`J>3^X!^N||!^B||`J$q`V"
++"s.b^a^r)s.^r('`g@z.bc);`5s.b&&^H)^H('click@z.bc,false);`t ^M(`D,'@H"
++"',0,`Dl)}`9vs`3x`4,v=s.`W^F,g=s.`W^F$fk@kvsn^f^2+(g?'^fg`Y,n=^kk),e"
++"`c^g,y=e.get@t);e$e@ty+10@Y1900:0))`6v){v*=100`6!n`V!@Kk,x,$I`20;n="
++"x^1n%10000>v)`20}`21`9dyasmf`3t,m`Vt&&m&&m`1t)>=0)`21;`20`9dyasf`3t"
++",m`4,i=t?t`1@R:-1,n,x`6i>=0&&m){`On=t`00,i),x=t`0i+1)`6`Px`Rdyasm^e"
++"m))`2n}`20`9uns`3`4,x=s.`HSele`K,l=s.`HList,m=s.`H$gn,i;^2=^2`7`6x&"
++"&l`V!m)m=`D`F`x`6!m.toLowerCase)m`X+m;l=l`7;m=m`7;n=`Pl,';`sdyas^em"
++")`6n)^2=n}i=^2`1`s`Tfun=i<0?^2:^2`00,i)`9sa`3un`4;^2=un`6!@A)@A=un;"
++"`5(`s+@A+`s)`1$7<0)@A+=`s+un;^2s()`9t`3`4,$M=1,tm`c^g,sed=Math&&@6$"
++"N?@6$U@6$N()*10000000000000):`e@I(),@c='s'+@6$U`e@I()/10800000)%10+"
++"sed,y=`e@t),vt=`e^g(@y'+`eMonth(@y'@Yy+1900:y)+@U`eHour$0`eMinute$0"
++"`eSeconds()+@U`eDay()+@U`e@IzoneO@l(),^J=s.g^J(),ta`X,q`X,qs`X@0`Tu"
++"ns()`6!s.td){`Otl=^J`F,a,o,i,x`X,c`X,v`X,p`X,bw`X,bh`X,^70',k=@K's_"
++"cc`s@b',0^8,hp`X,ct`X,pn=0,ps`6`w&&`w.prototype){^71'`6j.match){^72"
++"'`6tm$eUTC^g){^73'`6^N&&^B&&`J$q^74'`6pn.toPrecision){^75';a`c@2`6a"
++".forEach){^76';i=0;o`C;@5'$Qi`cIterator(o)`z}')`6i&&i.next)^77'}}}}"
++"^1`J>=4)x=^Uwidth+'x'+^U$K`6s.isns||s.^S`V`J>=3$4`b(^8`6`J>=4){c=^U"
++"pixelDepth;bw=`D$a^o;bh=`D$a^Q}}@q=s.n.p^C}`5^N`V`J>=4$4`b(^8;c=^U`"
++"v`6`J$q{bw=s.d.@9`i.o@l^o;bh=s.d.@9`i.o@l^Q`6!^B^ab){`fh$D^dhp=s.b."
++"isH$D(tl^8`z}\");`fclientCaps^dct=s.b.@B`K`p`z}\")}}}`t r`X^1@q)`Sp"
++"n<@q`A&&pn<30){ps=^V@q[pn].^h@g$o'`6p`1ps)<0)p+=ps;pn$Es.^K=x;s.`v="
++"c;s.`k=j;s.`b=v;s.`m^p=k;s.`r^o=bw;s.`r^Q=bh;s.@B`K`p=ct;s.^i=hp;s."
++"p^C=p;s.td=1^1s.useP^C)s.doP^C(s);`Ol=`D`F,r=^J.@9ent.`u`6!s.^9)s.^"
++"9=l`6!s.`u)s.`u=r`6s.@3||^3){`Oo=^3?^3:s.@3`6!o)`2'';`Op=@o'$d`j'),"
++"w=1,^5,@N,x=`qt,h,l,i,oc`6^3&&o==^3){`So@vn@Q$kBODY'){o=o.par`i?o.p"
++"ar`i:o@1Node`6!o)`2'';^5;@N;x=`qt}oc=o.`g?''+o.`g:''`6(oc`1\"@a@x0&"
++"&oc`1\"^joc$m0)||oc`1\".tl@x0)`2''}ta=n?o$8:1;h@Xi=h`1'?^dh=s.`I@O`"
++"w||i<0?h:h`00,i);l=s.`I`j?s.`I`j:s.ln(h);t=s.`I`p?s.`I`p`7:s.lt(h)`"
++"6t^Xh||l))q+=@n=@3^f(`Ed'||`Ee'?$Xt):'o')+(h?@nv1`Lh)`Y+(l?@nv2`Ll)"
++"`Y;`t $M=0`6s.^6@C`V!p$1@o'^9^dw=0}^5;i=o.sourceIndex`6^Z@S^Z;x=1;i"
++"=1^1p&&n@Q)qs='&pid`L^Vp,255))+(w$npidt$lw`Y+'&oid`L^Vn@g)+(x$noidt"
++"$lx`Y+'&ot`Lt)+(i$noi$li`Y}^1!$M@vqs)`2''`6s.p_r)s.p_r();`O$O`X`6$M"
++"^avs(sed))$O=s.mr(@c,(vt$nt`Lvt)`Y+s.hav()+q+(qs?qs:s.rq(^2)),ta`Ts"
++"q($M$jqs`T@3=^3=s.`I`j=s.`I`p=`D^jobjectID=s.ppu`X`6$V)`D^j@3=`D^je"
++"o=`D^j`I`j=`D^j`I`p`X;`2$O`9tl`3o,t,n`4;s.@3=@ho`T`I`p=t;s.`I`j=n;s"
++".t()`9ssl=(`D`F`U`7`1'https@P0`Td=@9ent;s.b=s.d.body;s.n=navigator;"
++"s.u=s.n.userAgent;@8=s.u`1'N$A6/^d`Oapn@u`j,v@uVersion,ie=v`1$R'),o"
++"=s.u`1'@4 '),i`6v`1'@4@P0||o>0)apn='@4';^N@r^DMicrosoft Internet Ex"
++"plorer'`Tisns@r^DN$A'`T^S@r^D@4'`Tismac=(s.u`1'Mac@P0)`6o>0)`J`ls.u"
++"`0o+6));`5ie>0){`J=`ni=v`0ie+5))`6`J>3)`J`li)}`5@8>0)`J`ls.u`0@8+10"
++"));`t `J`lv`Tem=0`6`w$h^W){i=^T`w$h^W(256))`B(`Tem=(i^D%C4%80'?2:(i"
++"^D%U0100'?1:0))}s.sa(un`Tvl_l='`WID,vmk,ppu,^v,`W`jspace,c`Q,`m^n,$"
++"d`j,^9,`u,^x';^P=^O+',^Y,$5,server,$d`p,$b`KID,purchaseID,@d,state,"
++"zip,$L,products,`I`j,`I`p'^E`On=1;n<51;n++)^P+=',prop$J+',eVar$J+',"
++"hier$J;^O2='^K,`v,`k,`b,`m^p,`r^o,`r^Q,@B`K`p,^i,p^C';^P+=`s+^O2;s."
++"vl_g=^P+',`W^F,`W^F$f`HSele`K,`HList,`H$g^6^ILinks,^6^t,^6@C,`I@O`w"
++",`I^IFile`ps,`IEx`h,`IIn`h,`I@DVars,`I@D$c,`I`js,@3';$V=pg@0)`6!ss)"
++"`Ds()}",
+w=window,l=w.s_c_il,n=navigator,u=n.userAgent,v=n.appVersion,e=
+v.indexOf('MSIE '),m=u.indexOf('Netscape6/'),a,i,s;if(un){un=
+un.toLowerCase();if(l)for(i=0;i<l.length;i++){s=l[i];if(s._c=='s_c'){
+if(s.oun==un)return s;else if(s.fs(s.oun,un)){s.sa(un);return s}}}}
+eval(d);c=s_d(c);i=c.indexOf("function s_c(");eval(c.substring(0,i))
+if(!un)return 0;c=c.substring(i);if(e>0){a=parseInt(i=v.substring(e
++5));if(a>3)a=parseFloat(i)}else if(m>0)a=parseFloat(u.substring(m+10)
+);else a=parseFloat(v);if(a>=5&&v.indexOf('Opera')<0&&u.indexOf(
+'Opera')<0){eval(c);return new s_c(un,pg,ss)}else s=s_c2f(c);return s(
+un,pg,ss)}s_gi()
+
+/* function call to write image request */
+//var s_code=s.t();if(s_code)document.write(s_code)
+/* Local Drive Handler */
+if(s_isValid) {  s_code=s.t();if(s_code)document.write(s_code) }
+
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/question-open-24x24.gif b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/question-open-24x24.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d4e96752f9fea5a693de7bd2787f8c85fa11467e
Binary files /dev/null and b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/question-open-24x24.gif differ
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/s_code_remote.js b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/s_code_remote.js
new file mode 100644
index 0000000000000000000000000000000000000000..e6052e4a62f29e7ba1161d37b19ab40b93d8cfb8
--- /dev/null
+++ b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/s_code_remote.js	
@@ -0,0 +1,39 @@
+/* SiteCatalyst code version: H.14. Copyright Omniture, Inc. More info available at http://www.omniture.com */
+/* Author: Neil Evans */
+/************************** CONFIG SECTION ****************************************/
+/* Specify the Report Suite(s) */
+var s_account="sundevdevforums";
+var sun_dynamicAccountSelection=true;
+var sun_dynamicAccountList="sunglobal,sundevforums=forums.sun.com;sundevdevforums=.";	
+/* Specify the Report Suite ID */
+var s_siteid = "sunforums:";
+/* Site Settings */
+if(typeof s_prop23=='undefined'){var s_prop23=""};
+   s_prop23=document.title;
+if(typeof s_channel=='undefined'){var s_channel=""};
+   s_channel=s_siteid;
+/* Remote Omniture JS call  */
+var sun_ssl=(window.location.protocol.toLowerCase().indexOf("https")!=-1);
+	if(sun_ssl == true) { var fullURL = "https://www.sun.com/share/metrics/metrics_group1.js"; }
+		else { var fullURL= "http://www-cdn.sun.com/share/metrics/metrics_group1.js"; }
+document.write("<sc" + "ript type=\"text/javascript\" src=\""+fullURL+"\"></sc" + "ript>");
+/************************** END CONFIG SECTION **************************************/
+/* CUSTOM VARS PULLED FROM QUERYSTRING */
+/* prePlugins functions */
+function s_prePlugins(s) {
+	/* grab categoryID param */
+	s.prop18=s.getQueryParam('categoryID');
+	s_prop18=s.prop18;
+	/* grab forumID param */
+	s.prop19=s.getQueryParam('forumID');
+	s_prop19=s.prop19;
+	/* grab threadID param */
+	s.prop20=s.getQueryParam('threadID');
+	s_prop20=s.prop20;
+	/* grab messageID param */
+	s.prop21=s.getQueryParam('messageID');
+	s_prop21=s.prop21;
+	/* grab userID param */
+	s.prop22=s.getQueryParam('userID');
+	s_prop22=s.prop22;
+}
\ No newline at end of file
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/sniff.js b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/sniff.js
new file mode 100644
index 0000000000000000000000000000000000000000..c1290798fbd9fbece7d5f30b41b6384f96a71fd3
--- /dev/null
+++ b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/sniff.js	
@@ -0,0 +1,5721 @@
+/* ###########################################################################
+
+GLOBAL ASSETS RELEASE v6.0
+
+BUILD DATE: 20100121
+
+########################################################################### */
+
+/*
+reglib version 1.1
+Copyright 2008
+Released under MIT license
+http://code.google.com/p/reglib/
+*/
+
+// you can rename window.reg to whatever you want
+window.reg = (function(){
+
+var reg = {};
+
+// this adds reg's dom helper functions and event functions to the
+// global namespace. don't call this method if you want to keep your
+// global namespace clean. alternatively you can individually import
+// certain sections, this is just a convenient way to do them all.
+reg.importAll = function() {
+	var errStrings = [];
+	try { reg.importSelectorAPI(); }
+	catch (err) { errStrings.push(err.message); }
+	try { reg.importHelperFunctions(); }
+	catch (err) { errStrings.push(err.message); }
+	try { reg.importEventFunctions(); }
+	catch (err) { errStrings.push(err.message); }
+	if (errStrings.length > 0) { if (console && console.log) { console.log(errStrings.join("\n")); } }
+};
+function globalError(name) {
+	return "reglib tried to add \""+name+"\" to global namespace but \""+name+"\" already existed.";
+}
+if (window.Node && Node.prototype && !Node.prototype.contains) {
+	Node.prototype.contains = function (arg) {
+		try{return !!(this.compareDocumentPosition(arg) & 16);}
+		catch(ex){return false;}
+	}
+}
+
+// #############################################################################
+// #### SELECTORS ##############################################################
+// #############################################################################
+
+/*
+A CSS-like selector API focusing on matching not traversal:
+- new reg.Selector(selectorString)
+- new reg.Selector(selectorString).matches(someElement)
+
+For example:
+var sel = new reg.Selector('div#foo > ul.bar > li');
+var item = document.getElementById('myListItem');
+if (sel.matches(item)) { ... }
+*/
+
+// precompiled patterns
+var expressions = {
+	leadSpace:  new RegExp("^\\s+"),
+	tagName:    new RegExp("^([a-z_][a-z0-9_-]*)","i"),
+	wildCard:   new RegExp("^\\*([^=]|$)"),
+	className:  new RegExp("^(\\.([a-z0-9_-]+))","i"),
+	id:         new RegExp("^(#([a-z0-9_-]+))","i"),
+	att:        new RegExp("^(@([a-z0-9_-]+))","i"),
+	matchType:  new RegExp("(^\\^=)|(^\\$=)|(^\\*=)|(^~=)|(^\\|=)|(^=)"),
+	spaceQuote: new RegExp("^\\s+['\"]")
+};
+
+// constructor
+reg.Selector=function(selString) {
+	var exp = expressions;
+	this.items = []; // for each comma-separated selector, this array has an item
+	var itms = []; // this will be added to this.items
+	var count = 0;
+	var origSel = selString;
+	while (selString.length>0) {
+		if (count > 100) { throw new Error("failed parsing '"+origSel+"' stuck at '"+selString+"'"); }
+		// get rid of any leading spaces
+		var leadSpaceChopped = false;
+		if (exp.leadSpace.test(selString)) {
+			selString=selString.replace(exp.leadSpace,'');
+			leadSpaceChopped = true;
+		}
+
+		// find tag name
+		var tagNameMatch = exp.tagName.exec(selString);
+		if (tagNameMatch) {
+			if (itms.length > 0 && itms[itms.length-1].name=='tag') { itms.push({name:'descendant'}); }
+			itms.push({name:'tag',tagName:tagNameMatch[1].toLowerCase()});
+			selString=selString.substring(tagNameMatch[1].length);
+			tagNameMatch=null;
+			continue;
+		}
+		// explicit wildcard selector
+		if (exp.wildCard.test(selString)) {
+			if (itms.length > 0 && itms[itms.length-1].name=='tag') { itms.push({name:'descendant'}); }
+			itms.push({name:'tag',tagName:'*'});
+			selString = selString.substring(1);
+			continue;
+		}
+		var classMatch = exp.className.exec(selString);
+		var idMatch = exp.id.exec(selString);
+		var attMatch = exp.att.exec(selString);
+		if (classMatch || idMatch || attMatch) {
+			// declare descendant if necessary
+			if (leadSpaceChopped && itms.length>0 && itms[itms.length-1].name=='tag') { itms.push({name:'descendant'}); }
+			// create a tag wildcard * if necessary
+			if (itms.length==0 || itms[itms.length-1].name!='tag') { itms.push({name:'tag',tagName:'*'}); }
+			var lastTag = itms[itms.length-1];
+			// find class name, like .entry
+			if (classMatch) {
+				if (!lastTag.classNames) {
+					lastTag.classNames = [classMatch[2]];
+				} else {
+					lastTag.classNames.push(classMatch[2]);
+				}
+				selString=selString.substring(classMatch[1].length);
+				classMatch=null;
+				continue;
+			}
+			// find id, like #content
+			if (idMatch) {
+				lastTag.id=idMatch[2];
+				selString=selString.substring(idMatch[1].length);
+				idMatch=null;
+				continue;
+			}
+			// find attribute selector, like @src
+			if (attMatch) {
+				if (!lastTag.attributes) {
+					lastTag.attributes = [{name:attMatch[2]}];
+				} else {
+					lastTag.attributes.push({name:attMatch[2]});
+				}
+				selString=selString.substring(attMatch[1].length);
+				attMatch=null;
+				continue;
+			}
+		}
+		// find attribute value specifier
+		var mTypeMatch=exp.matchType.exec(selString);
+		if (mTypeMatch) {
+			// this will determine how the matching is done
+			// (lastTag should still be hanging around)
+			if(lastTag && lastTag.attributes && !lastTag.attributes[lastTag.attributes.length-1].value){
+
+				var lastAttribute = lastTag.attributes[lastTag.attributes.length-1];
+				lastAttribute.matchType = mTypeMatch[0];
+
+				selString=selString.substring(lastAttribute.matchType.length);
+				if(selString.charAt(0)!='"'&&selString.charAt(0)!="'"){
+					if(exp.spaceQuote.test(selString)){selString=selString.replace(exp.leadSpace,'');}
+					else{throw new Error(origSel+" is invalid, single or double quotes required around attribute values");}
+				}
+				// it is enclosed in quotes, end is closing quote
+				var q=selString.charAt(0);
+				var lastQInd=selString.indexOf(q,1);
+				if(lastQInd==-1){throw new Error(origSel+" is invalid, missing closing quote");}
+				while(selString.charAt(lastQInd-1)=='\\'){
+					lastQInd=selString.indexOf(q,lastQInd+1);
+					if(lastQInd==-1){throw new Error(origSel+" is invalid, missing closing quote");}
+				}
+				lastAttribute.value=selString.substring(1,lastQInd);
+				if      ('~=' == lastAttribute.matchType) { lastAttribute.valuePatt = new RegExp("(^|\\s)"+lastAttribute.value+"($|\\s)"); }
+				else if ('|=' == lastAttribute.matchType) { lastAttribute.valuePatt = new RegExp("^"+lastAttribute.value+"($|\\-)"); }
+				selString=selString.substring(lastAttribute.value.length+2);// +2 for the quotes
+				continue;
+			} else {
+				throw new Error(origSel+" is invalid, "+mTypeMatch[0]+" appeared without preceding attribute identifier");
+			}
+			mTypeMatch=null;
+		}
+		// find child selector
+		if (selString.charAt(0) == '>') {
+			itms.push({name:'child'});
+			selString=selString.substring(1);
+			continue;
+		}
+		// find next sibling selector
+		if (selString.charAt(0) == '+') {
+			itms.push({name:'nextSib'});
+			selString=selString.substring(1);
+			continue;
+		}
+		// find after sibling selector
+		if (selString.charAt(0) == '~') {
+			itms.push({name:'followingSib'});
+			selString=selString.substring(1);
+			continue;
+		}
+		// find the comma separator
+		if (selString.charAt(0) == ',') {
+			this.items.push(itms);
+			itms = [];
+			selString = selString.substring(1);
+			continue;
+		}
+		count++;
+	}
+	this.items.push(itms);
+	this.selectorString=origSel;
+	// do some structural validation
+	for (var a=0;a<this.items.length;a++){
+		var itms = this.items[a];
+		if (itms.length==0) { throw new Error("illegal structure: '"+origSel+"' contains an empty set"); }
+		if (itms[0].name!='tag') { throw new Error("illegal structure: '"+origSel+"' contains a dangling relation"); }
+		if (itms[itms.length-1].name!='tag') { throw new Error("illegal structure: '"+origSel+"' contains a dangling relation"); }
+		for(var b=1;b<itms.length;b++){
+			if(itms[b].name!='tag'&&itms[b-1].name!='tag'){ throw new Error("illegal structure: '"+origSel+"' contains doubled up relations"); }
+		}
+	}
+}
+
+// returns string suitable for querySelector() and querySelectorAll()
+function toQuerySelectorString(sel) {
+	if (!sel.qss) {
+		var itemStrings = [];
+		for (var i=0; i<sel.items.length; i++) {
+			var result = '';
+			var item = sel.items[i];
+			for (var j=0; j<item.length; j++) {
+				var des = item[j];
+				if (des.name=='tag') {
+					result += des.tagName;
+					if (des.classNames) { result += "." + des.classNames.join("."); }
+					if (des.id) { result += '#' + des.id; }
+					if (des.targeted) {  result += ':target'; }
+					if (des.attributes) {
+
+						for (var k=0; k<des.attributes.length; k++) {
+							result += '[' + des.attributes[k].name;
+							if (des.attributes[k].matchType) {
+								result += des.attributes[k].matchType;
+								result += '"'+des.attributes[k].value.replace(/"/,'\\"')+'"';
+							}
+							result += ']';
+						}
+
+					}
+				} else if (des.name=='descendant') {
+					result += ' ';
+					continue;
+				} else if (des.name=='child') {
+					result += ' > ';
+					continue;
+				} else if (des.name=='followingSib') {
+					result += ' ~ ';
+					continue;
+				} else if (des.name=='nextSib') {
+					result += ' + ';
+					continue;
+				}
+			}
+			itemStrings.push(result);
+		}
+		sel.qss = itemStrings.join(', ');
+	}
+	return sel.qss;
+}
+
+// match against an element
+reg.Selector.prototype.matches = function(el) {
+	if (!el) { throw new Error('no element provided'); }
+	if (el.nodeType != 1) { throw new Error(this.selectorString+' cannot be evaluated against element of type '+el.nodeType); }
+	commas:for (var a=0;a<this.items.length;a++) { // for each comma-separated selector
+		var tempEl = el;
+		var itms = this.items[a];
+		for (var b=itms.length-1; b>=0; b--) { // loop backwards through the items
+			var itm = itms[b];
+			if (itm.name == 'tag') {
+				if (!matchIt(tempEl, itm)) {
+					// these relational selectors require more extensive searching
+					if (tempEl && b < itms.length-1 && itms[b+1].name=='descendant') { tempEl=tempEl.parentNode; b++; continue; }
+					else if (tempEl && b < itms.length-1 && itms[b+1].name=='followingSib') { tempEl=tempEl.previousSibling; b++; continue; }
+					else { continue commas; } // fail this one
+				}
+			}
+			else if (itm.name == 'nextSib') { tempEl = previousElement(tempEl); }
+			else if (itm.name == 'followingSib') { tempEl = previousElement(tempEl); }
+			else if (itm.name == 'child') { tempEl = tempEl.parentNode; }
+			else if (itm.name == 'descendant') { tempEl = tempEl.parentNode; }
+		}
+		return true;
+	}
+	return false;
+};
+
+// subroutine for matches() above
+function matchIt(el, itm) {
+	// try to falsify as soon as possible
+	if (!el) { return false; }
+	if (el.nodeName.toLowerCase()!=itm.tagName && itm.tagName!='*') { return false; }
+	if (itm.classNames) {
+		 for (var i=0; i<itm.classNames.length; i++) {
+			if (!hasClassName(el, itm.classNames[i])) {
+				return false;
+			}
+		}
+	}
+	if (itm.id && el.id != itm.id) { return false; }
+	if (itm.attributes) {
+		for (var i=0; i<itm.attributes.length; i++) {
+			var itmAtt = itm.attributes[i];
+			if (typeof el.hasAttribute != 'undefined') {
+				if (!el.hasAttribute(itmAtt.name)) { return false; }
+				var att = el.getAttribute(itmAtt.name);
+			}else{
+				if(el.nodeType!=1) {return false;}
+				var att = el.getAttribute(itmAtt.name,2);//ie6/7 returns fully resolved href but ,2 fixes that
+				if(itmAtt.name=='class'){att=el.className;}//todo:remove this line
+				else if(itmAtt.name=='for'){att=el.htmlFor;}//todo:and this one
+				if(!att){return false;}
+			}
+			if (itmAtt.value) {
+				if (itmAtt.matchType=='^='){
+					if (att.indexOf(itmAtt.value)!=0){return false;}
+				} else if (itmAtt.matchType=='*='){
+					if (att.indexOf(itmAtt.value)==-1){return false;}
+				} else if (itmAtt.matchType=='$='){
+					var indOf = att.indexOf(itmAtt.value);
+					if (indOf===-1||indOf!=att.length-itmAtt.value.length){return false;}
+				} else if (itmAtt.matchType=='='){
+					if (att!=itmAtt.value){return false;}
+				} else if ('|='==itmAtt.matchType || '~='==itmAtt.matchType){
+					if (!itmAtt.valuePatt.test(att)){return false;}
+				}else{
+					if(!itmAtt.matchType){throw new Error("illegal structure, parsed selector cannot have null or empty attribute match type");}
+					else{throw new Error("illegal structure, parsed selector cannot have '"+itm.matchType+"' as an attribute match type");}
+				}
+			}
+		}
+	}
+	return true;
+}
+
+// gets the tag names that the selector represents
+function getTagNames(sel) {
+	var hash = {}; // this avoids dupes
+	for (var a=0;a<sel.items.length;a++){
+		hash[sel.items[a][sel.items[a].length-1].tagName]=null;
+	}
+	var result = [];
+	for (var tag in hash){if(hash.hasOwnProperty(tag)){result.push(tag);}}
+	return result;
+}
+
+reg.importSelectorAPI = function() {
+	if (window.Selector) { throw new Error(globalError("Selector")); }
+	window.Selector = reg.Selector;
+};
+
+// #############################################################################
+// #### DOM HELPERS ############################################################
+// #############################################################################
+
+/*
+A bunch of DOM convenience methods (alias names in braces):
+
+CLASSNAMES
+- reg.addClassName(el, cName)..............................{acn}
+- reg.getElementsByClassName(cNames[, ctxNode[, tagName]]).{gebcn}
+- reg.hasClassName(el, cName)..............................{hcn}
+- reg.matchClassName(el, regexp)...........................{mcn}
+- reg.removeClassName(el, cName)...........................{rcn}
+- reg.switchClassName(el, cName1, cName2)..................{scn}
+- reg.toggleClassName(el, cName)...........................{tcn}
+
+SELECTORS
+- reg.elementMatchesSelector(el, selString)................{matches}
+- reg.getElementsBySelector(selString[, ctxNode])..........{gebs}
+
+OTHER
+- reg.elementText(el)......................................{elemText}
+- reg.getElementById().....................................{gebi}
+- reg.getElementsByTagName(tagName[, ctxNode]).............{gebtn}
+- reg.getParent(el, selString)
+- reg.innerWrap(el, wrapperEl)
+- reg.insertAfter(insertMe, afterThis)
+- reg.newElement(tagName[, attObj[, contents]])............{elem}
+- reg.nextElement(el)......................................{nextElem}
+- reg.outerWrap(el, wrapperEl)
+- reg.previousElement(el)..................................{prevElem}
+*/
+
+var clPatts={};// cache compiled classname regexps
+var cSels={};// cache compiled selectors
+
+// TEST FOR CLASS NAME
+function hasClassName(element, cName) {
+	if (!clPatts[cName]) { clPatts[cName] = new RegExp("(^|\\s)"+cName+"($|\\s)"); }
+	return element.className && clPatts[cName].test(element.className);
+}
+
+// ADD CLASS NAME
+function addClassName(element, cName) {
+	if (!hasClassName(element, cName)) {
+		element.className += ' ' + cName;
+	}
+}
+
+// REMOVE CLASS NAME
+function removeClassName(element, cName) {
+	if (!clPatts[cName]) { clPatts[cName] = new RegExp("(^|\\s+)"+cName+"($|\\s+)"); }
+	element.className = element.className.replace(clPatts[cName], ' ');
+}
+
+// TOGGLE CLASS NAME
+function toggleClassName(element, cName) {
+	if (hasClassName(element, cName)) { removeClassName(element, cName); }
+	else { addClassName(element, cName); }
+}
+
+// SWITCH CLASS NAME A->B, B->A
+function switchClassName(element, cName1, cName2) {
+	if (cName1 == cName2) { throw new Error("cName1 and cName2 both equal "+cName1); }
+	var has1 = hasClassName(element, cName1);
+	var has2 = hasClassName(element, cName2);
+	if (has1 && has2) { removeClassName(element, cName2); }
+	else if (!has1 && !has2) { addClassName(element, cName1); }
+	else if (has1) { removeClassName(element, cName1); addClassName(element, cName2); }
+	else { removeClassName(element, cName2); addClassName(element, cName1); }
+}
+
+// TEST FOR CLASS NAME BY REGEXP
+function matchClassName(element, pattern){
+	var cNames = element.className.split(' ');
+	for (var a=0; a<cNames.length; a++){
+		var matches = cNames[a].match(pattern);
+		if (matches) { return matches; }
+	}
+	return null;
+}
+
+// TEST AGAINST SELECTOR
+function elementMatchesSelector(element, selString){
+	if(!cSels[selString]){cSels[selString]=new reg.Selector(selString);}
+	return cSels[selString].matches(element);
+}
+
+// FIND PREVIOUS ELEMENT
+function previousElement(el) {
+	var prev = el.previousSibling;
+	while(prev && prev.nodeType!=1){prev=prev.previousSibling;}
+	return prev;
+}
+
+// FIND NEXT ELEMENT
+function nextElement(el) {
+	var next = el.nextSibling;
+	while(next && next.nodeType!=1){next=next.nextSibling;}
+	return next;
+}
+
+// ADD INNER WRAPPER
+function innerWrap(el, wrapperEl) {
+	var nodes = el.childNodes;
+	while (nodes.length > 0) {
+		var myNode = nodes[0];
+		el.removeChild(myNode);
+		wrapperEl.appendChild(myNode);
+	}
+	el.appendChild(wrapperEl);
+}
+
+// ADD OUTER WRAPPER
+function outerWrap(el, wrapperEl) {
+	el.parentNode.insertBefore(wrapperEl, el);
+	el.parentNode.removeChild(el);
+	wrapperEl.appendChild(el);
+}
+
+// GET PARENT
+function getParent(el, selString) {
+	var parsedSel = new reg.Selector(selString);
+	while (el.parentNode) {
+		el = el.parentNode;
+		if (el.nodeType==1 && parsedSel.matches(el)) { return el; }
+	}
+	return null;
+}
+
+// INSERT AFTER
+function insertAfter(insertMe, afterThis){
+	var beforeThis = afterThis.nextSibling;
+	var parent = afterThis.parentNode;
+	if (beforeThis) { parent.insertBefore(insertMe, beforeThis); }
+	else { parent.appendChild(insertMe); }
+}
+
+// SHORTCUT FOR BUILDING ELEMENTS
+function newElement(name, atts, content) {
+	// name: e.g. 'div', 'div.foo', 'div#bar', 'div.foo#bar', 'div#bar.foo'
+	// atts: (optional) e.g. {'href':'page.html','target':'_blank'}
+	// content: (optional) either a string, or an element, or an arry of strings or elements
+	if (name.indexOf('.') + name.indexOf('#') > -2) {
+		var className = (name.indexOf('.') > -1) ? name.replace(/^.*\.([^\.#]*).*$/,"$1") : "";
+		var id = (name.indexOf('#') > -1) ? name.replace(/^.*#([^\.#]*).*$/,"$1") : "";
+		name = name.replace(/^([^\.#]*).*$/,'$1');
+	}
+	var e = document.createElement(name);
+	if (className) { e.className = className; }
+	if (id) { e.id = id; }
+	if (atts) {
+		for (var key in atts) {
+			// setAttribute() has shaky support, try direct methods first
+			if (!atts.hasOwnProperty(key)) { continue; }
+			if (key == 'class') { e.className = e.className ? e.className += ' ' + atts[key] : atts[key]; }
+			else if (key == 'for') { e.htmlFor = atts[key]; }
+			else if (key.indexOf('on') == 0) { e[key] = atts[key]; }
+			else {
+				e.setAttribute(key, atts[key]);
+			}
+		}
+	}
+	if (content) {
+		if (!(content instanceof Array)) {
+			content = [content];
+		}
+		for (var a=0; a<content.length; a++) {
+			if (content[a].nodeType !== undefined) {
+				e.appendChild(content[a]);
+			}else{
+				e.appendChild(document.createTextNode(content[a]));
+			}
+		}
+	}
+	if (name.toLowerCase() == 'img' && !e.alt) { e.alt = ''; }
+	return e;
+}
+
+// GRAB JUST THE TEXTUAL DATA OF AN ELEMENT
+function elementText(el) {
+	// <a id="foo" href="page.html">click <b>here</b></a>
+	// elementText(document.getElementById('foo')) == "click here"
+	// warning: recurses through *all* descendants of el
+	if(!el){return '';}
+	var chlds = el.childNodes;
+	var result = '';
+	if (reg.matches(el,'img@alt,area@alt')) { result += el.alt; }
+	else if (reg.matches(el,'input')) { result += el.value; }
+	else {
+		for (var a=0; a<chlds.length; a++) {
+			if (3 == chlds[a].nodeType) {
+				result += chlds[a].data;
+			} else if (1 == chlds[a].nodeType) {
+				result += elementText(chlds[a]);
+			}
+		}
+	}
+	return result;
+}
+
+// GET ELEMENT BY ID
+function getElementById(id) { return document.getElementById(id); }
+
+// GET ELEMENTS BY TAG NAME
+function getElementsByTagName(tag, contextNode) {
+	if(!contextNode){contextNode=document;}
+	return contextNode.getElementsByTagName(tag);
+}
+
+// GET ELEMENTS BY SELECTOR
+var classTest = /^\s*([a-z0-9_-]+)?\.([a-z0-9_-]+)\s*$/i;
+var idTest = /^\s*([a-z0-9_-]+)?\#([a-z0-9_-]+)\s*$/i;
+function getElementsBySelector(selString, contextNode) {
+	contextNode = contextNode || window.document.documentElement;
+	var result = [];
+	var cMat, iMat;
+	if (cMat = selString.match(classTest)) {
+		var cl = cMat[2];
+		var tg = cMat[1];
+		result = reg.gebcn(cl, contextNode, tg);
+	} else if (iMat = selString.match(idTest)) {
+		var id = iMat[2];
+		var tg = iMat[1];
+		var el = reg.gebi(id);
+		if (el && contextNode.contains(el) && reg.matches(el, selString)) { result[0] = el; }
+	} else {
+		if (!cSels[selString]) { cSels[selString] = new reg.Selector(selString); }
+		var sel = cSels[selString];
+		if (contextNode.querySelectorAll) {
+			var qlist = contextNode.querySelectorAll(toQuerySelectorString(sel));
+			for (var i=0; i<qlist.length; i++) {
+				result[result.length] = qlist[i];
+			}
+		} else {
+			var tagNames = getTagNames(sel);
+			for (var a=0; a<tagNames.length; a++) {
+				var els = getElementsByTagName(tagNames[a], contextNode);
+				for (var b=0, el; el=els[b++];) {
+					if (el.nodeType!=1) { continue; }
+					if (sel.matches(el)) { result.push(el); }
+				}
+			}
+		}
+	}
+	return result;
+}
+
+// GET ELEMENTS BY CLASS NAME
+function getElementsByClassName(classNames, contextNode, tag) {
+	contextNode = (contextNode) ? contextNode : document;
+	tag = (tag) ? tag.toLowerCase() : '*';
+	var results = [];
+	if (document.getElementsByClassName) {
+		// traverse natively
+		var liveList = contextNode.getElementsByClassName(classNames);
+		if (tag != '*') {
+			for (var i=0; i<liveList.length; i++) {
+				var el = liveList[i];
+				if (tag == el.nodeName.toLowerCase()) {
+					results.push(el);
+				}
+			}
+		} else {
+			for (var i=0; i<liveList.length; i++) { results.push(liveList[i]); }
+		}
+	} else {
+		classNames = classNames.split(/\s+/);
+		if (document.evaluate) {
+			// traverse w/ xpath
+			var xpath = ".//"+tag;
+			var len = classNames.length;
+			for(var i=0; i<len; i++) {
+				xpath += "[contains(concat(' ', @class, ' '), ' " + classNames[i] + " ')]";
+			}
+			var xpathResult = document.evaluate(xpath, contextNode, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, xpathResult);
+			var el;
+			while (el = xpathResult.iterateNext()) {
+				results.push(el);
+			}
+		} else {
+			// traverse w/ dom
+			var els = (tag=='*'&&contextNode.all) ? contextNode.all : getElementsByTagName(tag,contextNode);
+			elements:for (var i=0,el;el=els[i++];) {
+				for (var j=0; j<classNames.length; j++) {
+					if (!hasClassName(el, classNames[j])) { continue elements; }
+				}
+				results.push(el);
+			}
+		}
+	}
+	return results;
+}
+
+var helpers = {
+	hasClassName:           hasClassName,
+	addClassName:           addClassName,
+	removeClassName:        removeClassName,
+	toggleClassName:        toggleClassName,
+	switchClassName:        switchClassName,
+	matchClassName:         matchClassName,
+	elementMatchesSelector: elementMatchesSelector,
+	previousElement:        previousElement,
+	nextElement:            nextElement,
+	innerWrap:              innerWrap,
+	outerWrap:              outerWrap,
+	getParent:              getParent,
+	insertAfter:            insertAfter,
+	newElement:             newElement,
+	elementText:            elementText,
+	getElementById:         getElementById,
+	getElementsByTagName:   getElementsByTagName,
+	getElementsBySelector:  getElementsBySelector,
+	getElementsByClassName: getElementsByClassName
+};
+
+// aliases
+helpers.hcn      = helpers.hasClassName;
+helpers.acn      = helpers.addClassName;
+helpers.rcn      = helpers.removeClassName;
+helpers.tcn      = helpers.toggleClassName;
+helpers.scn      = helpers.switchClassName;
+helpers.mcn      = helpers.matchClassName;
+helpers.matches  = helpers.elementMatchesSelector;
+helpers.prevElem = helpers.previousElement;
+helpers.nextElem = helpers.nextElement;
+helpers.elem     = helpers.newElement;
+helpers.elemText = helpers.elementText;
+helpers.gebi     = helpers.getElementById;
+helpers.gebtn    = helpers.getElementsByTagName;
+helpers.gebs     = helpers.getElementsBySelector;
+helpers.gebcn    = helpers.getElementsByClassName;
+
+// add it globally
+reg.importHelperFunctions = function() {
+	var errStrings = [];
+	for (var func in helpers) {
+		if(!helpers.hasOwnProperty(func)) { continue; }
+		if (window[func]) { errStrings.push(globalError(func)); }
+		else { window[func] = helpers[func]; }
+	}
+	if (errStrings.length > 0) { throw new Error(errStrings.join("\n")); }
+};
+
+// add it to reg
+for (var func in helpers) {
+	if(!helpers.hasOwnProperty(func)) { continue; }
+	if (reg[func]) { throw new Error("Already exists under reg: "+func); }
+	else { reg[func] = helpers[func]; }
+}
+
+// #############################################################################
+// #### X-BROWSER EVENTS #######################################################
+// #############################################################################
+
+/*
+Event attachment and detachment:
+*/
+
+// get the element on which the event occurred
+function getTarget(e) {
+	if (!e) { e = window.event; }
+	if (e.target) { var targ = e.target; }
+	else if (e.srcElement) { var targ = e.srcElement; }
+	if (targ.nodeType == 3) { targ = targ.parentNode; } // safari hack
+	return targ;
+}
+
+// get the element on which the event occurred
+function getRelatedTarget(e) {
+	if (!e) { e = window.event; }
+	var rTarg = e.relatedTarget;
+	if (!rTarg) {
+		if ('mouseover'==e.type) { rTarg = e.fromElement; }
+		if ('mouseout'==e.type) { rTarg = e.toElement; }
+	}
+	return rTarg;
+}
+
+// cancel default action
+function cancelDefault(e) {
+	if (typeof e.preventDefault != 'undefined') { e.preventDefault(); return; }
+	e.returnValue=false;
+}
+
+// cancel bubble
+function cancelBubble(e) {
+	if (typeof e.stopPropagation != 'undefined') { e.stopPropagation(); return; }
+	e.cancelBubble=true;
+}
+
+// event registry
+var memEvents = {};
+var aMemInd = 0;
+function rememberEvent(elmt,evt,handle,cptr,cleanable){
+	var memInd = aMemInd++;
+	memEvents[memInd+""] = {
+		element:   elmt,
+		event:     evt,
+		handler:   handle,
+		capture:   !!cptr,
+		cleanable: !!cleanable
+	};
+	return memInd;
+}
+
+// event remover
+function removeEvent(memInd) {
+	var key = memInd+"";
+	var eo = memEvents[key];
+	if (eo) {
+		var el=eo.element;
+		if(el.removeEventListener) {
+			el.removeEventListener(eo.event, eo.handler, eo.capture);
+			delete memEvents[key];
+			return true;
+		} else if(el.detachEvent) {
+			el.detachEvent('on'+eo.event, eo.handler);
+			delete memEvents[key];
+			return true;
+		}
+	}
+	return false;
+}
+
+// if "all" is true, it nukes all events
+// otherwise only those created with "cleanable" flag
+function cleanup(all){
+	for (var key in memEvents) {
+		if (!memEvents.hasOwnProperty(key)) { continue; }
+		if (all || (memEvents[key].cleanable && !document.documentElement.contains(memEvents[key].element))) {
+			removeEvent(key);
+			//console.log("cleaning up event: "+key);
+		}
+	}
+}
+
+//periodically clean up all cleanable events
+window.setInterval(function(){
+	cleanup(false);
+},10000);
+
+// generic event adder, plus memory leak prevention
+// returns an int mem that you can use to later remove that event removeEvent(mem)
+// cptr defaults false
+function addEvent(elmt,evt,handler,cptr,cleanable) {
+	if(elmt.addEventListener){
+		elmt.addEventListener(evt,handler,cptr);
+		return rememberEvent(elmt,evt,handler,cptr,cleanable);
+	}else if(elmt.attachEvent){
+		var actualHandler = function(){handler.call(elmt,window.event);};
+		elmt.attachEvent("on"+evt,actualHandler);
+		return rememberEvent(elmt,evt,actualHandler,cptr,cleanable);
+	}
+}
+
+// try to reduce memory leaks in ie
+addEvent(window,'unload',function(){cleanup(true)});
+
+var events = {
+	getTarget:        getTarget,
+	getRelatedTarget: getRelatedTarget,
+	cancelDefault:    cancelDefault,
+	addEvent:         addEvent,
+	removeEvent:      removeEvent,
+	cancelBubble:     cancelBubble
+};
+
+reg.importEventFunctions = function() {
+	var errStrings = [];
+	for (var func in events) {
+		if(!events.hasOwnProperty(func)) { continue; }
+		if (window[func]) { errStrings.push(globalError(func)); }
+		else { window[func] = events[func]; }
+	}
+	if (errStrings.length > 0) { throw new Error(errStrings.join("\n")); }
+};
+
+for (var func in events) {
+	if(!events.hasOwnProperty(func)) { continue; }
+	if (reg[func]) { throw new Error("Already exists under reg: "+func); }
+	else { reg[func] = events[func]; }
+}
+
+// #############################################################################
+// #### ON(DOM)LOAD ACTIONS ####################################################
+// #############################################################################
+
+/*
+Add actions to run onload:
+- reg.preSetup(func)
+- reg.setup(selString, func, firstTimeOnly)
+- reg.postSetup(func)
+
+!!! WARNING !!!
+On browsers *without* native querySelector() support
+reg.setup makes page load time O(MN)
+where M is the number of calls to reg.setup()
+and N is the number of elements on the page
+*/
+
+// these contain lists of things to do
+var preSetupQueue=[];
+var setupQueue=[];
+var setupQueueByTag={};
+var postSetupQueue=[];
+
+// traverse and act onload
+reg.setup=function(selector, setup, firstTimeOnly){
+	firstTimeOnly=!!firstTimeOnly;
+	var sqt=setupQueueByTag;
+	var parsedSel = new reg.Selector(selector);
+	var tagNames=getTagNames(parsedSel);
+	var regObj={
+		selector:parsedSel,
+		setup:setup,
+		ran:false,
+		firstTimeOnly:firstTimeOnly
+	};
+	setupQueue.push(regObj);
+	for(var a=0;a<tagNames.length;a++){
+		var tagName = tagNames[a];
+		if(!sqt[tagName]){sqt[tagName]=[regObj];}
+		else{sqt[tagName].push(regObj);}
+	}
+};
+// do this before setup
+reg.preSetup=function(fn){preSetupQueue.push(fn);};
+// do this after setup
+reg.postSetup=function(fn){postSetupQueue.push(fn);};
+
+// (re)run setup functions
+var runSetupFunctions = reg.rerun = function(el, noClobber){
+	function runIt(el, regObj){
+		regObj.setup.call(el);
+		regObj.ran=true;
+	}
+	var start = new Date().getTime();
+	if (typeof el.clobberable != 'undefined' && el.clobberable && noClobber) { return; }
+	var doc=(el)?el:document;
+	var sqt=setupQueueByTag;
+	var sqtIsEmpty=true;
+	for (var tagName in sqt) {
+		if(!sqt.hasOwnProperty(tagName)) { continue; }
+		sqtIsEmpty = false;
+		break;
+	}
+
+	if (el.querySelector) {
+
+		//####################################
+		//querySelector() branch
+
+		var qSelResults = [];
+		for (var i=0; i<setupQueue.length; i++) {
+			var regObj = setupQueue[i];
+			if (regObj.firstTimeOnly) {
+				if (regObj.ran) { continue; }
+				try {
+					var elmt = el.querySelector(toQuerySelectorString(regObj.selector));
+					if (elmt) { qSelResults.push({el:elmt,regObj:regObj}); }
+				} catch (ex) {
+					console.log("querySelector('"+toQuerySelectorString(regObj.selector)+"') threw "+ex);
+					continue;
+				}
+			} else {
+				try {
+					var elmts = el.querySelectorAll(toQuerySelectorString(regObj.selector));
+					for (var j=0; j<elmts.length; j++) {
+						qSelResults.push({el:elmts[j],regObj:regObj});
+					}
+				} catch (ex) {
+					console.log("querySelectorAll('"+toQuerySelectorString(regObj.selector)+"') threw "+ex);
+					continue;
+				}
+			}
+		}
+		for (var i=0; i<qSelResults.length; i++) {
+			runIt(qSelResults[i].el, qSelResults[i].regObj);
+		}
+	} else if (!sqtIsEmpty) {
+
+		//####################################
+		//old branch
+
+		var elsList=getElementsByTagName('*',doc);
+
+		//dump live list to static list
+		for (var i=elsList.length-1, els=[]; i>=0; i--) {
+			els[i] = elsList[i];
+		}
+
+		var qSelResults = [];
+
+		// crawl the dom
+		for(var a=0,elmt;elmt=els[a++];){
+			if (elmt.nodeType!=1){continue;}//for ie7
+			var lcNodeName=elmt.nodeName.toLowerCase();
+			var regObjArrayAll=sqt['*'];
+			var regObjArrayTag=sqt[lcNodeName];
+
+			// any wildcards?
+			if(regObjArrayAll){
+				for(var b=0;b<regObjArrayAll.length;b++){
+					var regObj=regObjArrayAll[b];
+					if(regObj.firstTimeOnly && regObj.ran){continue;}
+					var matches = regObj.selector.matches(elmt);
+					if(matches){
+						qSelResults.push({el:elmt,regObj:regObj});
+						regObj.ran = true;
+					}
+				}
+			}
+
+			// any items match this specific tag?
+			if(regObjArrayTag){
+				for(var b=0;b<regObjArrayTag.length;b++){
+					var regObj=regObjArrayTag[b];
+					if(regObj.firstTimeOnly && regObj.ran){continue;}
+					var matches = regObj.selector.matches(elmt);
+					if(matches){
+						qSelResults.push({el:elmt,regObj:regObj});
+						regObj.ran = true;
+					}
+				}
+			}
+		}
+		for (var i=0; i<qSelResults.length; i++) {
+			runIt(qSelResults[i].el, qSelResults[i].regObj);
+		}
+
+	}
+	el.clobberable = true;
+	var runtime = new Date().getTime() - start;
+	if(!reg.setupTime){ reg.setupTime=runtime; }
+	reg.lastSetupTime=runtime;
+}
+
+var ie6 = navigator.appVersion.indexOf('MSIE 6.0') != -1;
+if (!ie6) {
+	addClassName(document.documentElement, 'regloading');
+}
+var loadFuncRan = false;
+function loadFunc(e) {
+	if (!loadFuncRan) {
+		loadFuncRan = true;
+		for(var a=0;a<preSetupQueue.length;a++){
+			preSetupQueue[a]();
+		}
+		runSetupFunctions(document, true);
+		for(var a=0;a<postSetupQueue.length;a++){
+			postSetupQueue[a]();
+		}
+		if (!ie6) {
+			// unfortunately this causes hangs and laborious redraws in ie6
+			removeClassName(document.documentElement, 'regloading');
+			addClassName(document.documentElement, 'regloaded');
+		}
+	}
+}
+
+// contents of loadFunc only execute once, this sidesteps user agent sniffing
+addEvent(window, 'load', loadFunc);
+addEvent(window, 'DOMContentLoaded', loadFunc);
+
+// #############################################################################
+// #### EVENT DELEGATION #######################################################
+// #############################################################################
+
+/*
+The main purpose of reglib is event delegation:
+- reg.click(selString, handler, depth)
+- reg.hover(selString, overHandler, outHandler, depth)
+- reg.focus(selString, focusHandler, blurHandler, depth)
+- reg.key(selString, downHandler, pressHandler, upHandler, depth)
+- reg.submit(selString, handler, depth)
+- reg.reset(selString, handler, depth)
+- reg.change(selString, handler, depth)
+- reg.select(selString, handler, depth)
+
+delegated events are active before page load, and remain
+active throughout arbitrary rewrites of the DOM.
+*/
+
+// these contain the event handling functions
+var clickHandlers = {};
+var mDownHandlers = {};
+var mUpHandlers = {};
+var dblClickHandlers = {};
+var mOverHandlers = {};
+var mOutHandlers = {};
+var focusHandlers = {};
+var blurHandlers = {};
+var keyDownHandlers = {};
+var keyPressHandlers = {};
+var keyUpHandlers = {};
+var submitHandlers = {};
+var resetHandlers = {};
+var changeHandlers = {};
+var selectHandlers = {};
+
+// returns first arg that's a number
+function getDepth(fargs){
+	var result = null;
+	for (var i=2; i<fargs.length; i++) {
+		if (!isNaN(parseInt(fargs[i]))) {
+			result = fargs[i];
+			break;
+		}
+	}
+	if(result===null){result=-1;}
+	if(result<-1){throw new Error("bad arg for depth, must be -1 or higher");}
+	return result;
+}
+
+// add a handler function
+function pushFunc(selStr, handlerFunc, depth, handlers, hoverFlag) {
+	if(!handlerFunc || typeof handlerFunc != "function"){return;}
+	var parsedSel = new reg.Selector(selStr);
+	if(!handlers[selStr]) {handlers[selStr]=[];}
+	var selHandler = {
+		selector:parsedSel,
+		handle:handlerFunc,
+		depth:depth,
+		hoverFlag:hoverFlag
+	};
+	handlers[selStr].push(selHandler);
+}
+
+reg.click=function(selStr, clickFunc, downFunc, upFunc, doubleFunc){
+	var depth = getDepth(arguments);
+	pushFunc(selStr, clickFunc,  depth, clickHandlers,    false);
+	pushFunc(selStr, downFunc,   depth, mDownHandlers,    false);
+	pushFunc(selStr, upFunc,     depth, mUpHandlers,      false);
+	pushFunc(selStr, doubleFunc, depth, dblClickHandlers, false);
+};
+reg.hover=function(selStr, overFunc, outFunc){
+	var depth = getDepth(arguments);
+	pushFunc(selStr, overFunc, depth, mOverHandlers, true);
+	pushFunc(selStr, outFunc,  depth, mOutHandlers,  true);
+};
+reg.focus=function(selStr, focusFunc, blurFunc){
+	var depth = getDepth(arguments);
+	pushFunc(selStr, focusFunc, depth, focusHandlers, false);
+	pushFunc(selStr, blurFunc,  depth, blurHandlers,  false);
+};
+reg.key=function(selStr, downFunc, pressFunc, upFunc){
+	var depth = getDepth(arguments);
+	pushFunc(selStr, downFunc,  depth, keyDownHandlers,  false);
+	pushFunc(selStr, pressFunc, depth, keyPressHandlers, false);
+	pushFunc(selStr, upFunc,    depth, keyUpHandlers,    false);
+};
+reg.submit=function(selStr, func) {
+	var depth = getDepth(arguments);
+	pushFunc(selStr, func, depth, submitHandlers, false);
+};
+reg.reset=function(selStr, func) {
+	var depth = getDepth(arguments);
+	pushFunc(selStr, func, depth, resetHandlers, false);
+};
+reg.change=function(selStr, func) {
+	var depth = getDepth(arguments);
+	pushFunc(selStr, func, depth, changeHandlers, false);
+};
+reg.select=function(selStr, func) {
+	var depth = getDepth(arguments);
+	pushFunc(selStr, func, depth, selectHandlers, false);
+};
+
+// workaround for IE's lack of support for bubbling on form events
+// set delegation directly on the element in question by co-opting
+// the focus event which is guaranteed to happen first
+if (document.all && !window.opera) {
+	function ieSubmitDelegate(e) {
+		delegate(submitHandlers,e);
+		cancelBubble(e);
+	}
+	function ieResetDelegate(e) {
+		delegate(resetHandlers,e);
+		cancelBubble(e);
+	}
+	function ieChangeDelegate(e) {
+		delegate(changeHandlers,e);
+		cancelBubble(e);
+	}
+	function ieSelectDelegate(e) {
+		delegate(selectHandlers,e);
+		cancelBubble(e);
+	}
+	reg.focus('form',function(){
+		removeEvent(this._submit_prep);
+		this._submit_prep=addEvent(this,'submit',ieSubmitDelegate,false,true);
+		removeEvent(this._reset_prep);
+		this._reset_prep=addEvent(this,'reset',ieResetDelegate,false,true);
+	},function(){
+		removeEvent(this._submit_prep);
+		removeEvent(this._reset_prep);
+	});
+	reg.focus('select,input,textarea',function(){
+		removeEvent(this._change_prep);
+		this._change_prep=addEvent(this,'change',ieChangeDelegate,false,true);
+	},function(){
+		removeEvent(this._change_prep);
+	});
+	reg.focus('input,textarea',function(){
+		removeEvent(this._select_prep);
+		this._select_prep=addEvent(this,'select',ieSelectDelegate,false,true);
+	},function(){
+		removeEvent(this._select_prep);
+	});
+}
+
+// the delegator
+function delegate(selectionHandlers, event) {
+	if (selectionHandlers) {
+		var execList = [];
+		var targ = getTarget(event);
+		for (var sel in selectionHandlers) {
+			if(!selectionHandlers.hasOwnProperty(sel)) { continue; }
+			for(var a=0; a<selectionHandlers[sel].length; a++) {
+				var selHandler=selectionHandlers[sel][a];
+				var depth = (selHandler.depth==-1) ? 100 : selHandler.depth;
+				var el = targ;
+				for (var b=-1; b<depth && el && el.nodeType == 1; b++, el=el.parentNode) {
+					if (selHandler.selector.matches(el)) {
+						// replicate mouse enter/leave
+						if (selHandler.hoverFlag) {
+							var relTarg = getRelatedTarget(event);
+							if (relTarg && (el.contains(relTarg) || el == relTarg)) {
+								break;
+							}
+						}
+						execList.push({"handle":selHandler.handle,"element":el});
+						break;
+					}
+				}
+			}
+		}
+		for (var i=0; i<execList.length; i++) {
+			var exec = execList[i];
+			var retVal=exec.handle.call(exec.element,event);
+			// if they return false from the handler, cancel default
+			if(retVal!==undefined && !retVal) {
+				cancelDefault(event);
+			}
+		}
+	}
+}
+
+if(typeof document.onactivate == 'object'){
+	var focusEventType = 'activate';
+	var blurEventType = 'deactivate';
+}else{
+	var focusEventType = 'focus';
+	var blurEventType = 'blur';
+}
+
+// attach the events
+var docEl = document.documentElement;
+addEvent(docEl,'click',        function(e){delegate(clickHandlers,   e);});
+addEvent(docEl,'mousedown',    function(e){delegate(mDownHandlers,   e);});
+addEvent(docEl,'mouseup',      function(e){delegate(mUpHandlers,     e);});
+addEvent(docEl,'dblclick',     function(e){delegate(dblClickHandlers,e);});
+addEvent(docEl,'keydown',      function(e){delegate(keyDownHandlers, e);});
+addEvent(docEl,'keypress',     function(e){delegate(keyPressHandlers,e);});
+addEvent(docEl,'keyup',        function(e){delegate(keyUpHandlers,   e);});
+addEvent(docEl,focusEventType, function(e){delegate(focusHandlers,   e);},true);
+addEvent(docEl,blurEventType,  function(e){delegate(blurHandlers,    e);},true);
+addEvent(docEl,'mouseover',    function(e){delegate(mOverHandlers,   e);});
+addEvent(docEl,'mouseout',     function(e){delegate(mOutHandlers,    e);});
+addEvent(docEl,'submit',       function(e){delegate(submitHandlers,  e);});
+addEvent(docEl,'reset',        function(e){delegate(resetHandlers,   e);});
+addEvent(docEl,'change',       function(e){delegate(changeHandlers,  e);});
+addEvent(docEl,'select',       function(e){delegate(selectHandlers,  e);});
+
+// #############################################################################
+// #### CONSOLE.LOG BACKUP #####################################################
+// #############################################################################
+
+/*
+For backwards compatibility.
+Allows console.log() to be called in old clients without errors.
+in which case console.contents() fetches logged messages.
+*/
+
+var logMessages = [];
+var log = function(str) { logMessages.push(str); };
+var contents = function() { return logMessages.join("\n")+"\n"; };
+if (!window.console) { window.console = { log : log, contents : contents }; }
+else {
+	if (!window.console.log) {
+		window.console.log = log;
+		if (!window.console.contents) { window.console.contents = contents; }
+	}
+}
+
+// #############################################################################
+// #### AND... DONE. ###########################################################
+// #############################################################################
+
+addClassName(docEl, 'regenabled');
+return reg;
+
+})();
+
+
+
+// ARRAY COMPATIBILITY FUNCTIONS FOR JavaScript 1.6
+
+(function(){
+
+	var ap = Array.prototype;
+
+	/**
+	// create a new array with some items filtered out
+	foo = [1,2,3,4,5];
+	bar = foo.filter(function(x){return x%2==0;});
+	// bar now equals [2,4]
+	*/
+	if (!ap.filter) {
+		ap.filter = function(fun) {
+			var len = this.length >>> 0;
+			if (typeof fun != "function") { throw new TypeError(); }
+			var res = new Array();
+			var thisp = arguments[1];
+			for (var i=0; i<len; i++) {
+				if (i in this) {
+					var val = this[i]; // in case fun mutates this
+					if (fun.call(thisp, val, i, this)) { res.push(val); }
+				}
+			}
+			return res;
+		};
+	}
+
+	/**
+	// runs a function against each item in array
+	foo = ['potatoes','celery']
+	foo.forEach(function(x){console.log("I like "+x);});
+	// prints:
+	// I like potatoes
+	// I like celery
+	*/
+	if (!ap.forEach) {
+		ap.forEach = function(fun) {
+			var len = this.length >>> 0;
+			if (typeof fun != "function") { throw new TypeError(); }
+			var thisp = arguments[1];
+			for (var i=0; i<len; i++) {
+				if (i in this) { fun.call(thisp, this[i], i, this); }
+			}
+		};
+	}
+
+	/**
+	// does the given function return true for every item in the array?
+	foo = [4,8,6,1]
+	function isEven(x){return x%2==0;}
+	allEven = foo.every(isEven);
+	// allEven is false
+	*/
+	if (!ap.every) {
+		ap.every = function(fun) {
+			var len = this.length >>> 0;
+			if (typeof fun != "function") { throw new TypeError(); }
+			var thisp = arguments[1];
+			for (var i=0; i<len; i++) {
+				if (i in this && !fun.call(thisp, this[i], i, this)) { return false; }
+			}
+			return true;
+		};
+	}
+
+	/**
+	// create a new array based on this array
+	foo = [1,2,3];
+	bar = foo.map(function(x){return x+"";});
+	// bar now equals ["1","2","3"]
+	*/
+	if (!ap.map) {
+		ap.map = function(fun) {
+			var len = this.length >>> 0;
+			if (typeof fun != "function") { throw new TypeError(); }
+			var res = new Array(len);
+			var thisp = arguments[1];
+			for (var i=0; i<len; i++) {
+				if (i in this) { res[i] = fun.call(thisp, this[i], i, this); }
+			}
+			return res;
+	  	};
+	}
+
+	/**
+	// does the given function return true for at least one item in the array?
+	foo = [4,8,6,1]
+	function isOdd(x){return x%2==1;}
+	someOdd = foo.some(isOdd);
+	// someOdd is true
+	*/
+	if (!ap.some) {
+		ap.some = function(fun) {
+			var i = 0, len = this.length >>> 0;
+			if (typeof fun != "function") { throw new TypeError(); }
+			var thisp = arguments[1];
+			for (; i<len; i++) {
+				if (i in this && fun.call(thisp, this[i], i, this)) { return true; }
+			}
+			return false;
+		};
+	}
+
+})();
+
+
+reg.importAll();//this adds things like addClassName() to global namespace
+
+// BROWSER SNIFF
+var is = new ottosniff();
+function ottosniff(){
+	var ua = navigator.userAgent.toLowerCase();
+	var b = navigator.appName;
+	if (b=="Netscape") this.b = "ns";
+	else this.b = b;
+	this.version = navigator.appVersion;
+	this.v = parseInt(this.version);
+	this.gecko = /\bgecko\/(20\d\d)(\d\d)(\d\d)/.test(ua);
+	this.ns = (this.b=="ns" && this.v>=5);
+	this.op = (ua.indexOf('opera')>-1);
+	this.safari = (ua.indexOf('safari')>-1);
+	this.safariAll = (ua.indexOf('safari')>-1);
+	this.op7 = (this.op && this.v>=7 && this.v<8);
+	this.op78 = (this.op && this.v>=7 || this.op && this.v>=8);
+	this.ie5 = (this.version.indexOf('MSIE 5')>-1);
+	this.ie6 = (this.version.indexOf('MSIE 6')>-1);
+	this.ie7 = (this.version.indexOf('MSIE 7')>-1);
+	this.ie8 = (this.version.indexOf('MSIE 8')>-1);
+	this.ie56 = (this.ie5||this.ie6);
+	this.ie567 = (this.ie5||this.ie6||this.ie7);
+	this.ie = (this.ie5||this.ie6||this.ie7||this.ie8);
+	this.iewin = (this.ie56 && ua.indexOf('windows')>-1 || this.ie7 && ua.indexOf('windows')>-1);
+	this.iemac = (this.ie56 && ua.indexOf('mac')>-1);
+	this.moz = (ua.indexOf('mozilla')>-1);
+	this.ff = (ua.indexOf('firefox')>-1);
+	this.moz13 = (ua.indexOf('mozilla')>-1 && ua.indexOf('1.3')>-1);
+	this.oldmoz = (ua.indexOf('sunos')>-1 || this.moz13 && !this.ff || this.moz && ua.indexOf('1.4')>-1 && !this.ff || this.moz && ua.indexOf('1.5')>-1 && !this.ff || this.moz && ua.indexOf('1.6')>-1 && !this.ff);
+	this.anymoz = this.gecko;
+	this.ns6 = (ua.indexOf('netscape6')>-1);
+	this.geckoAtOrAbove=function(vString){
+		var gVer = (this.gecko) ? ua.substring(ua.indexOf("; rv:")+5, ua.indexOf(") gecko")) : '';
+		var t=gVer.split(".");
+		var v=vString.split(".");
+		while(t.length<v.length){t.push("0");}
+		while(v.length<t.length){v.push("0");}
+		for(var i=0;i<v.length;i++){
+			var ti=parseInt(t[i]),vi=parseInt(v[i]);
+			if(ti==vi){continue;}
+			else return (ti>vi);
+		}
+		return true;
+	}
+}
+
+
+
+// RTL SNIFF
+var rtl = (document.documentElement.lang.indexOf('he') > -1 && document.documentElement.lang.indexOf('IL'))? true : false;
+if(rtl){
+	addClassName(document.documentElement, 'rtl');
+}
+
+// ADD BROWSER CLASS TO HTML TAG
+if(is.op){var bclass = "browserOpera";}
+else if(is.safariAll){var bclass = "browserSafari";}
+else if(is.ie56){var bclass = "browserExplorer56 browserExplorer";}
+else if(is.ie7){var bclass = "browserExplorer7 browserExplorer";}
+else if(is.iemac){var bclass = "browserExplorerMac";}
+else if(is.oldmoz){var bclass = "browserOldMoz";}
+else {var bclass = "";}
+if(is.gecko){bclass += " gecko";}
+if(is.safari||is.geckoAtOrAbove("1.9")){bclass += " radius";}else{bclass += " noradius";}
+bclass += " jsenabled";
+addClassName(document.documentElement, bclass);
+
+// SHUTOFF
+if(typeof shutoff=='undefined'){var shutoff={global:false,share:false,pop:false,misc:false};}
+
+// GLOBAL SHUTOFF
+if(!shutoff.global){
+	reg.setup("div.a1r2 span.toolbarlinks > a,div.a1r2 span.siteid > a",sniffA1);
+	reg.setup("div#a5 a",sniffA5);
+	reg.focus("input#searchfield,input.searchfield",function(){addClassName(this, 'sfieldfocused');},function(){removeClassName(this, 'sfieldfocused');});
+	reg.focus("div#a5 > ul li.hasmenu",function(){addClassName(this,'a5show');gebtn('div',this)[0].style.top=((gebtn('div',this)[0].offsetHeight * -1)) + 4 +'px';},function(){removeClassName(this,'a5show');});
+	reg.hover("div#a5 > ul li.hasmenu",function(){addClassName(this,'a5show');gebtn('div',this)[0].style.top=((gebtn('div',this)[0].offsetHeight * -1)) + 4 +'px';},function(){removeClassName(this,'a5show');});
+	reg.hover("div.a5menu",function(){addClassName(this.parentNode,'a5show')},function(){removeClassName(this,'a5show');});
+	reg.setup("td.navlinks > div",sniffA2);
+	reg.hover("ul#mtopics",function(){
+		if(!a2['ent']){
+			reg.setup("ul#mtopics > li",sniffA2);
+			reg.rerun(this);
+		}
+	});
+	reg.focus("ul#mtopics",function(){
+		if(!a2['ent']){
+			reg.setup("ul#mtopics > li",sniffA2);
+			reg.rerun(this);
+		}
+	});
+	if(is.ie56){
+		reg.hover("ul#mtopics > li",function(){addClassName(this, 'a2mshow');},function(){removeClassName(this, 'a2mshow');});
+		reg.hover("td.navlinks",function(){addClassName(this, 'a2mshow');},function(){removeClassName(this, 'a2mshow');}, 5);
+	}
+
+	//  do goto set up for a2v8 if misc is set to false
+	if(shutoff.misc){
+		reg.preSetup(function(){
+			var a2v8 = gebi('a2v8');
+			if (!a2v8) { return; }
+			reg.setup("select.goto, select.showDiv",sniffGoto);
+			reg.setup("ul.goto, ul.showDiv",sniffGotoUL);
+		});
+	}
+}
+
+// POPUP SHUTOFF
+if(!shutoff.pop){
+	reg.click('.k5, .media-popin',k5Click);
+	reg.click('.k5close',k5Close);
+	reg.click('.k5softclose',k5SoftClose);
+	reg.key('html',function(e){if(27==e.keyCode){k5Close();}});
+	reg.setup("@class*='k2ajax-'",sniffK2ajax);
+	reg.setup("@class*='k2over', @class*='k2focus', @class*='k2cl', @class*='k2show', @class*='k2hide'",sniffK2);
+	reg.setup(".modal-launch",sniffModal);
+}
+
+// BLUR OUT
+reg.focus("body",blurOut);
+var blurIt=[];
+function blurOut(ev){
+	var obj = this;
+	t = getTarget(ev);
+	var b = blurIt;
+	blurIt=[];
+	for(var i=0; i<b.length; i++){
+		if(!hasParent(t,b[i][0])){
+			if(b[i][1] == 'hidden'){
+				b[i][0].style.visibility='hidden';
+			}else if(b[i][1]){
+				removeClassName(b[i][0],b[i][1]);
+			}else{
+				b[i][0].style.display='none';
+			}
+		}else{
+		 	blurIt.push(b[i]);
+		}
+	}
+}
+
+// POP UP
+reg.click('a.popup, area.popup, a.media-launch',bubblePop);
+function bubblePop(e){
+	var link = this;
+	if (hasClassName(link, 'media-launch') && !matchClassName(link, '[0-9]+x[0-9]+')){
+		addClassName(link,'662x652');
+	}
+	var popW = '820';
+	var popH = '600';
+	var param = ['no',0,0,0,0,0,0,'',''];
+	var popUrl = link.href;
+	if (link.target) { var popTarget = link.target; }
+	else { var popTarget = "newpopup"; }
+	var cls = link.className.split(' ');
+	for (var v=0;v<cls.length;v++){
+		if (cls[v].search('[0-9]+x[0-9]+') > -1){
+			var f = cls[v].split('x');
+			popW = f[0];
+			popH = f[1];
+		}else if(cls[v].indexOf("name-") == 0){
+			var f = cls[v].split('name-');
+			popTarget = f[1];
+		}else if(cls[v] == "scrolling"){
+			var param = ['yes',1,0,0,0,0,0];
+		}else if(cls[v] == "full"){
+			var param = ['yes',1,1,1,1,1,1];
+		}else if(cls[v].indexOf("yes_") == 0 || cls[v].indexOf("no_") == 0){
+			var f = cls[v].split('_');
+			f[1] = "f"+f[1];
+			var param = f[1].split('');
+			param[0] = f[0];
+		}
+		if(link.className.indexOf("centerpop") > 1){
+			param[7] = screen.availHeight/2 - popH/2;
+			param[8] = screen.availWidth/2 - popW/2;
+		}
+	}
+	openPopup(popUrl,popTarget,popW,popH,param[0],param[1],param[2],param[3],param[4],param[5],param[6],param[7],param[8]);
+	cancelDefault(e);
+}
+function openPopup(url,name,width,height,resizable,scrollbars,menubar,toolbar,location,directories,status,top,left) {
+	var tl = (top && left) ? ',top=' + top +',left=' + left : '';
+	var popup = window.open(url, name, 'width=' + width + ',height=' + height + ',resizable=' + resizable + ',scrollbars=' + scrollbars	+ ',menubar=' + menubar + ',toolbar=' + toolbar + ',location=' + location + ',directories=' + directories + ',status=' + status+tl);
+	popup.focus();
+}
+
+// AUTOCLEAR
+reg.focus("input.autoclear,input#searchfield,input.searchfield",autoclearFocus,autoclearBlur);
+function autoclearFocus(){
+	if(this.value == this.defaultValue) {
+		this.value = '';
+		addClassName(this, 'autocleared');
+	}
+}
+function autoclearBlur(){
+	if(this.value=='') {
+		this.value = this.defaultValue;
+		removeClassName(this, 'autocleared');
+	}
+}
+
+// DISABLE SEACH IF NO SEARCH STRING
+reg.submit("div.a2search form",function(e){
+	i = gebs("input.searchfield,input#searchfield",this);
+	if (i[0].value == '' || i[0].value == i[0].defaultValue){
+		i[0].value = '';
+		cancelDefault(e);
+	}
+});
+
+// A1
+var a1 = [];
+a1['x'] = 1;
+function sniffA1(){
+	var link = this;
+	oldA1Content(); // LEGACY
+	var a1w  = ['<div class="a1menux1"></div>\n<div class="a1menuw2"><div class="a1menuw1">\n','</div><div class="a1menux2"></div></div>'];
+	if(!a1['ent']){
+		for (key in a1) {
+			var d = elem('div');
+			d.innerHTML = key;
+			a1[d.innerHTML] = a1[key];
+		}
+		a1['ent'] = true;
+	}
+	var linkText = link.innerHTML.normalize();
+	var a1id = "a1menu"+a1['x'];
+	a1['x']++;
+	if (hasClassName(link, 'language-select')){
+		link.relativePos = true;
+		var d = elem('div.a1menu');
+		addClassName(link, 'k2over-languageselector y3 x-10');
+		d.id = 'languageselector';
+		d.style.width = "170px"
+		d.innerHTML = a1w[0]+'<h5></h5><div></div>'+a1w[1];
+ 		link.parentNode.insertBefore(d,link.nextSibling);
+		sniffK2.call(link);
+ 		sniffSiteSelector(link.parentNode);
+	}else if(a1[linkText]){
+		link.relativePos = true;
+		var d = elem('div.a1menu');
+		addClassName(link, 'karrow');
+		addClassName(link, 'k2over-'+a1id+' y3 x-6');
+		if (hasClassName(link, "a1cart")){
+			link.innerHTML = '<span class="carticon small">'+link.innerHTML+'</span>';
+			link.style.paddingLeft = "0px";
+		}
+		if(a1[linkText].indexOf('a1-2col') > -1){
+			var wc = 'a1Large';
+		}else if(a1[linkText].indexOf('<p>') > -1){
+			var wc = 'a1Medium';
+		}else{
+			var wc = 'a1Small';
+		}
+		d.id = a1id;
+		addClassName(d,wc);
+		d.innerHTML = a1w[0]+a1[linkText]+a1w[1];
+		link.parentNode.insertBefore(d,link.nextSibling);
+		sniffK2.call(link);
+	}
+}
+
+// A1 LEGACY
+var a1hrefs = [];
+var a1menus = [];
+function oldA1Content(){
+	var k;
+	for (k in a1hrefs){
+		a1[a1hrefs[k][0]] = a1menus[k][1];
+	}
+	a1hrefs = a1menus = [];
+}
+
+// A2
+var a2 = [];
+function sniffA2(){
+	var fobj = this;
+	var sall=(typeof ltxt=='undefined')?seeall:ltxt.seeall;
+	if(navmenu['1.0']) oldA2Content(); // LEGACY
+ 	if(gebi('ip1')) oldA2TableFix(); // LEGACY
+	if(!a2['ent']){
+		for (key in a2) {
+			var d = elem('div');
+			d.innerHTML = key;
+			a2[d.innerHTML.strip()] = a2[key];
+		}
+		a2['ent'] = true;
+	}
+	var firstA = gebtn('a',fobj)[0];
+	var n = firstA.innerHTML.normalize();
+	if(a2[n]){
+		var h = firstA.href;
+		addEvent(firstA, 'focus', function(){
+			if(this.parentNode.nodeName.toLowerCase() == 'li'){
+				addClassName(this.parentNode, 'a2mshow');
+				blurIt.push([this.parentNode,'a2mshow']);
+			}else{
+				addClassName(this.parentNode.parentNode, 'a2mshow');
+				blurIt.push([this.parentNode.parentNode,'a2mshow']);
+			}
+		});
+		var d = elem('div.a2m',{});
+		d.style.marginLeft = (rtl)?'-'+(204 - fobj.offsetWidth)+'px':'-20px';
+		var u = elem('ul',{});
+		var a = elem('a',{'href':h});
+		a.innerHTML = sall+' &#187;';
+		var l =  elem('li',{});
+		if (h.indexOf('#') < 0 && h.split('#')[1] != '' && a2[n].indexOf('<!-- no see all -->') < 0) {
+			l.appendChild(a);
+		}
+		u.innerHTML = a2[n];
+		u.appendChild(l);
+		d.appendChild(u);
+		fobj.appendChild(d);
+		addClassName(gebtn('li',fobj)[0], 'firstchild');
+	}else if(fobj.nodeName.toLowerCase() == 'li'){
+		addClassName(fobj, 'a2nomenu');
+	}else{
+		addClassName(fobj.parentNode, 'a2nomenu');
+	}
+}
+
+// A2 LEGACY
+var navmenu = [];
+var oldmenu = [];
+function popfly(){}
+function closefly(){}
+function prepmenus(){}
+function printmenus(){}
+function oldA2Content(){
+	var x = 1;
+	while(x < 10){
+		if(navmenu[x+'.0'] && !a2[navmenu[x+'.0'].split('|')[0]]){
+			var xx = 1;
+			var li = '';
+			while(navmenu[x+'.'+xx]){
+				li += '<li><a href="'+navmenu[x+'.'+xx].split('|')[1]+'">'+navmenu[x+'.'+xx].split('|')[0]+'</a></li>\n';
+				xx++;
+			}
+			a2[navmenu[x+'.0'].split('|')[0]] = li;
+		}
+		if(oldmenu[x+'.0'] && !a2[oldmenu[x+'.0'].split('|')[0]]){
+			var xx = 1;
+			var li = '';
+			while(oldmenu[x+'.'+xx]){
+				li += '<li><a href="'+oldmenu[x+'.'+xx].split('|')[1]+'">'+oldmenu[x+'.'+xx].split('|')[0]+'</a></li>\n';
+				xx++;
+			}
+			a2[oldmenu[x+'.0'].split('|')[0]] = li;
+		}
+		x++;
+	}
+	navmenu = oldmenu = [];
+}
+function oldA2TableFix(){
+	var x = 1;
+	while (gebi('ip'+x)){
+		var td = gebi('ip'+x).parentNode;
+		td.parentNode.removeChild(td);
+		x++;
+	}
+}
+
+// A5
+var a5 = [];
+function sniffA5(){
+	var a5w  = ['<div class="a5menuw2"><div class="a5menuw1">\n','</div></div><div class="a5menux2"></div>'];
+	if(!a5['ent']){
+		for (key in a5) {
+			var d = elem('div');
+			d.innerHTML = key;
+			a5[d.innerHTML] = a5[key];
+		}
+		a5['ent'] = true;
+	}
+	var linkText = this.innerHTML.normalize();
+	if(a5[linkText]){
+		var d = elem('div.a5menu');
+		d.innerHTML = a5w[0]+a5[linkText]+a5w[1];
+		addClassName(this.parentNode, 'hasmenu');
+		this.parentNode.insertBefore(d,this.nextSibling);
+	}
+}
+
+// K2
+ked = [];
+function sniffK2(shownow){
+	var fobj = this;
+	var pdoc = document;
+	fobj.prp = [0,0,0,"","",""];
+	fobj.className = fobj.className.replace(/(k2over) +/,"$1-");
+	fobj.className = fobj.className.replace(/(k2click) +/,"$1-");
+	fobj.className = fobj.className.replace(/(k2focus) +/,"$1-");
+	fobj.className = fobj.className.replace(/(k2close) +/,"$1-");
+
+	var cls = fobj.className.split(' ');
+
+	if(fobj.className.indexOf("k2ajaxload") > -1 && fobj.href && gebtn('div',document.body)[0] ){
+		for (var v=0;v<cls.length;v++){
+			if (cls[v].indexOf("k2over") > -1 || cls[v].indexOf("k2click") > -1 || cls[v].indexOf("k2focus") > -1){
+				var k2id = cls[v].split('-');
+				if (!k2id[2]){
+					k2id[2] = k2id[1];
+				}
+			}
+		}
+		var link = document.createElement('a');
+		link.className = 'loadUrl';
+		link.href = fobj.href+'#'+k2id[2];
+		if(!gebi(k2id[2])){
+			var div = document.createElement('div');
+			div.className = 'g32auto';
+			div.id = k2id[2];
+			div.appendChild(link);
+			gebtn('div',document.body)[0].appendChild(div);
+		}
+	}
+
+
+	for (var v=0;v<cls.length;v++){
+		if (cls[v].indexOf("k2over") > -1 || cls[v].indexOf("k2click") > -1 || cls[v].indexOf("k2focus") > -1){
+			var p_objs = fobj.aob = cls[v].split('-');
+			if (!p_objs[2]){
+				fobj.aob[2] = p_objs[2] = p_objs[1];
+				fobj.aob[1] = fobj;
+			}
+			kpop = gebi(p_objs[2]);
+			kpop.kp_objs = p_objs[2];
+			kpop.kp_trig = p_objs[1];
+		}else if (cls[v].indexOf("k2close") > -1){
+			fobj.aob = cls[v].split('-');
+		}else if (cls[v].indexOf("x") == 0){
+			fobj.prp[0] = (cls[v].substring(1) * 1) + fobj.prp[0];
+		}else if (cls[v].indexOf("y") == 0){
+			fobj.prp[1] = (cls[v].substring(1) * 1) + fobj.prp[1];
+		}else if (cls[v].indexOf("z") == 0){
+			fobj.prp[2] = (cls[v].substring(1) * 1);
+		}else if (cls[v].indexOf("pAbsolute") == 0){
+			fobj.prp[3] = (cls[v].substring(1));
+		}else if (cls[v].indexOf("vBottom") == 0 || cls[v].indexOf("vTop") == 0 || cls[v].indexOf("vMiddle") == 0 || cls[v].indexOf("vAlignTopBottom") == 0){
+			fobj.prp[4] = cls[v];
+		}else if (cls[v].indexOf("hRight") == 0 || cls[v].indexOf("hMiddleRight") == 0 || cls[v].indexOf("hLeft") == 0 || cls[v].indexOf("hMiddleLeft") == 0 || cls[v].indexOf("hMiddle") == 0 || cls[v].indexOf("hAlignRight") == 0){
+			fobj.prp[5] = cls[v];
+		}
+	}
+	if (fobj.aob[0].indexOf("k2over") > -1){
+		addEvent(fobj,"mouseover",function(){
+			showK2(this.aob[2],this.aob[1],this.prp[0],this.prp[1],this.prp[2],this.prp[3],this.prp[4],this.prp[5]);
+		});
+		if (!hasClassName(fobj, "mOverOff")){
+			addEvent(kpop,"mouseover",function(){
+				showK2(this.kp_objs);
+			});
+		}
+		addEvent(kpop,"mouseout",function(){
+			hideK2(this.kp_objs);
+		});
+		addEvent(fobj,"mouseout",function(){
+			hideK2(this.aob[2]);
+		});
+		addEvent(fobj,"focus",function(){
+			showK2(this.aob[2],this.aob[1],this.prp[0],this.prp[1],this.prp[2],this.prp[3],this.prp[4],this.prp[5]);
+			blurIt.push([gebi(this.aob[2]),'hidden']);
+		});
+
+		if(shownow){
+			showK2(fobj.aob[2],fobj.aob[1],fobj.prp[0],fobj.prp[1],fobj.prp[2],fobj.prp[3],fobj.prp[4],fobj.prp[5]);
+			return false;
+		}
+	}else if (fobj.aob[0] == "k2click"){
+		addEvent(fobj,"click",function(e){
+			showK2(this.aob[2],this.aob[1],this.prp[0],this.prp[1],this.prp[2],this.prp[3],this.prp[4],this.prp[5]);
+			addK2(this.aob[2],this.aob[1],this.prp[0],this.prp[1],this.prp[2],this.prp[3],this.prp[4],this.prp[5]);
+			cancelDefault(e);
+			return false;
+		});
+		if(shownow){
+			showK2(fobj.aob[2],fobj.aob[1],fobj.prp[0],fobj.prp[1],fobj.prp[2],fobj.prp[3],fobj.prp[4],fobj.prp[5]);
+			addK2(fobj.aob[2],fobj.aob[1],fobj.prp[0],fobj.prp[1],fobj.prp[2],fobj.prp[3],fobj.prp[4],fobj.prp[5]);
+			return false;
+		}
+	}else if (fobj.aob[0] == "k2focus"){
+		addEvent(fobj,"focus",function(){
+			showK2(this.aob[2],this.aob[1],this.prp[0],this.prp[1],this.prp[2],this.prp[3],this.prp[4],this.prp[5]);
+			addK2(this.aob[2],this.aob[1],this.prp[0],this.prp[1],this.prp[2],this.prp[3],this.prp[4],this.prp[5]);
+		});
+		addEvent(fobj,"blur",function(){
+			hideK2(this.aob[2],1);
+		});
+	}else if (fobj.aob[0] == "k2close"){
+		addEvent(fobj,"click",function(e){
+			hideK2(this.aob[1],1);
+			cancelDefault(e);
+		});
+	}
+	fobj.className = fobj.className.replace(/(k2over)-|(k2focus)-|(k2cl...)-/,"$1 ");
+}
+function showK2(popupID,callerID,Xoffset,Yoffset,Zindex,posy,btmup,ort,etype){
+	var popupObj = gebi(popupID);
+	if (!popupObj){
+		var popupObj = popupID;
+	}
+	if (callerID){
+		var ptop = plft = 0;
+		var callerObj = gebi(callerID);
+		if (!callerObj){
+			var callerObj = callerID;
+		}
+
+		if (ort == "hLeft"){
+			plft = plft - popupObj.offsetWidth;
+		}else if (ort == "hMiddleLeft"){
+			plft = plft - popupObj.offsetWidth;
+			plft = plft + parseInt(callerObj.offsetWidth / 2);
+		}else if (ort == "hMiddle"){
+			plft = parseInt(callerObj.offsetWidth / 2);
+			plft = plft - parseInt(popupObj.offsetWidth / 2);
+		}else if (ort == "hMiddleRight"){
+			plft = parseInt(callerObj.offsetWidth / 2);
+		}else if (ort == "hRight"){
+			plft = callerObj.offsetWidth;
+		}else if (ort == "hAlignRight"){
+			plft = plft + callerObj.offsetWidth - popupObj.offsetWidth;
+		}
+
+		if (btmup == "vTop"){
+			ptop = ptop - popupObj.offsetHeight;
+		}else if (btmup == "vMiddle"){
+			ptop = ptop + parseInt(callerObj.offsetHeight / 2);
+			ptop = ptop - parseInt(popupObj.offsetHeight / 2);
+		}else if (btmup == "vBottom"){
+			ptop = ptop + callerObj.offsetHeight;
+		}else if (btmup == "vAlignBottom"){
+			ptop = ptop + callerObj.offsetHeight - popupObj.offsetHeight;
+		}else if (btmup == "vAlignTopBottom"){
+			var scrolltop = 0;
+			if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
+				scrolltop = document.body.scrollTop;
+			}else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop)){
+				scrolltop = document.documentElement.scrollTop;
+			}
+			var winheight = 0;
+			if( typeof( window.innerWidth ) == 'number' ) {
+				winheight = window.innerHeight;
+			} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
+				winheight = document.documentElement.clientHeight;
+			}
+			var alignbottom = callerObj.offsetHeight - popupObj.offsetHeight;
+		}
+		if (is.safari && posy == "Absolute"){
+			if (posy != "Absolute"){
+				callerObj.style.position = "relative";
+			}
+			getXY(callerObj.offsetParent);
+		}else{
+			getXY(callerObj);
+		}
+
+		ptop = ptop + callerObj.Y;
+		plft = plft + callerObj.X;
+		if (btmup == "vAlignTopBottom" && ptop > scrolltop + (winheight/2)){
+			ptop = ptop + alignbottom;
+			Yoffset = Yoffset * -1;
+		}
+		plft = plft + Xoffset;
+		ptop = ptop + Yoffset;
+		popupObj.style.top=ptop+'px';
+		popupObj.style.left=plft+'px';
+	}
+	if (Zindex){
+		popupObj.style.zIndex = Zindex;
+	}
+	popupObj.style.visibility = "visible";
+}
+function hideK2(popupID,popcls,fader){
+	var popupObj = gebi(popupID);
+	if (!popupObj){
+		var popupObj = popupID;
+	}
+	popupObj.style.visibility = "hidden";
+	if (popcls){
+		ked[popupID] = "";
+	}
+}
+function addK2(p0,p1,p2,p3,p4,p5,p6,p7){
+	ked[p0] = [p0,p1,p2,p3,p4,p5,p6,p7];
+}
+addEvent(window, 'resize', function(){
+	var kdp;
+	for (kdp in ked){
+		if (ked[kdp][0]){
+			showK2(ked[kdp][0],ked[kdp][1],ked[kdp][2],ked[kdp][3],ked[kdp][4],ked[kdp][5],ked[kdp][6],ked[kdp][7]);
+		}
+	}
+});
+
+// SETUP -> K2 W/ AJAX
+function sniffK2ajax(){
+	var fobj = this;
+	var containerID = fobj.className.split('k2ajax-')[1].split(' ')[0];
+	var fileUrl = gebtn('a',gebi(containerID))[0].href;
+	var mvnt = (fobj.className.indexOf('k2over-') > -1) ? 'mouseover' : 'click';
+	addEvent(fobj,mvnt,function(){
+		if(gebi(containerID).innerHTML.indexOf('getUrl') > -1){
+			var fvars = [containerID,fobj];
+			getfile(fileUrl,function(rdata,fvar){
+				if(rdata.indexOf('contentchunk') > -1){
+					rdata = getRequestObject('contentchunk',rdata).innerHTML;
+				}
+				gebi(fvar[0]).innerHTML = rdata;
+				reg.rerun(gebi(fvar[0]));
+				sniffK2.call(fvar[1],true);
+			},fvars);
+		}
+	});
+}
+
+// SETUP -> K4
+function sniffModal(){
+	var fobj = this;
+	if (hasClassName(fobj, "modal-launch")){
+		var matches = fobj.className.match(/launch\-id\-([a-z0-9_-]+)/);
+		if (!matches) { return; }
+		else { fobj.modalId = matches[1]; }
+		fobj.onclick = function(e){
+			showK4(this.modalId);
+			return false;
+		};
+	}
+}
+function showK4(id){
+	var div = gebi(id);
+	if (!div) { return; }
+	removeClassName(div, "k4hidden");
+	var inputs = gebtn("input",div);
+	for (var a=0;a<inputs.length;a++){
+		if (inputs[a].type == 'text'){
+			inputs[a].focus();
+			break;
+		}
+	}
+	if (is.ie6){
+		var selects = gebtn("select");
+		for (var a=0;a<selects.length;a++){
+			addClassName(selects[a], 'k4in-effect');
+		}
+	}
+}
+function hideK4(id){
+	var div = gebi(id);
+	addClassName(div, "k4hidden");
+	if (is.ie6){
+		var selects = gebtn("select");
+		for (var a=0;a<selects.length;a++){
+			removeClassName(selects[a], 'k4in-effect');
+		}
+	}
+}
+function modalClose(e){
+	var k4 = this.parentNode;
+	while (!hasClassName(k4, 'k4') && k4.parentNode) { k4 = k4.parentNode; }
+	if (hasClassName(k4, 'k4') && k4.id) { hideK4(k4.id); }
+	return false;
+}
+
+// SETUP -> COUNTRY & LANGUAGE SELECTOR
+function sniffSiteSelector(span) {
+	var lnks = gebtn('a',span);
+	for (var a=0; a<lnks.length; a++) {
+		var lnk = lnks[a];
+		if (hasClassName(lnk, 'country-select')) {
+			addClassName(lnk,'modal-launch launch-id-country-selector');
+			sniffModal.call(lnk);
+			var k4 = elem('div',{'class':'k4 k4v1 k4hidden','id':'country-selector'});
+			k4.innerHTML = '<div class="k4w1"><div class="k4w2"><div class="k4w3"><div class="k4w4"><div class="k4title"><h2>'
+				+'</h2><p class="modal-extra"><a href="" class="modal-close">[X]</a></p></div><div class="k4body">'
+				+'</div></div></div></div></div>';
+			k4.setTitle=function(txt){gebtn('h2',this)[0].innerHTML=txt;};
+			k4.setBody=function(txt){gebtn('div',this)[5].innerHTML=txt;};
+			document.body.appendChild(k4);
+			addEvent(lnk, 'click', function(){
+				var thisHref = this.href;
+				try {
+					getfile(this.href, function(rdata,fvar){
+						try {
+							var headingText = elemText(getRequestObject('country-data-title',rdata,'h2'));
+							var bodyText = getRequestObject('country-data',rdata).innerHTML;
+						} catch (ex) { window.location = thisHref; }
+						k4.setTitle(headingText);
+						k4.setBody(bodyText);
+					});
+				} catch (e) { window.location = thisHref; }
+			});
+		} else if (hasClassName(lnk, 'language-select')) {
+			var k2 = gebi('languageselector');
+			k2.setTitle=function(txt){gebtn('h5',this)[0].innerHTML=txt;};
+			k2.setBody=function(txt){gebtn('div',this)[3].innerHTML=txt;};
+			addEvent(lnk, 'mouseover', function(){
+				var thisHref = this.href;
+				try {
+					getfile(this.href, function(rdata,fvar){
+						try {
+							var headingText = elemText(getRequestObject('language-data-title',rdata,'h2'));
+							var bodyText = getRequestObject('language-data',rdata).innerHTML;
+						} catch (ex) {
+							k2.setTitle('no data');
+							return;
+						}
+						k2.setTitle(headingText);
+						k2.setBody(bodyText);
+					});
+				} catch (e) { window.location = thisHref; }
+			});
+		}
+	}
+}
+
+// K5 ONLOAD
+reg.postSetup(function(){
+	var k5onload = gebi('k5onload');
+	if(!k5onload){return;}
+	k5Click.call(k5onload);
+});
+
+// K5 FUNCTIONS
+function pauseAll() {
+	window.paused = true;
+	addClassName(document.body,'paused');
+}
+function resumeAll() {
+	window.paused = false;
+	removeClassName(document.body,'paused');
+}
+
+function k5Click() {
+
+	var thisHref = this.href;
+	if (reg.matches(this,'div.k5')) { return; }
+	k5Close(); // close any open k5s
+
+	// get id ##############################
+	var idMatches = matchClassName(this,/^id-(\S+)$/);
+	if (idMatches) {
+		var id = idMatches[1];
+	} else if (thisHref && thisHref.indexOf('#')!=-1) {
+		var id = thisHref.substring(thisHref.indexOf('#')+1);
+	}else{
+		throw new Error('no id value was specified for k5 object. className "id-someId" or URL anchor reference "...page.html#someId"');
+	}
+
+	// mode ################################
+	var k5DivClass = 'k5 k5empty';
+	var isVid,isInf,isLog,isMed,isInterrupt,interruptParent=getParent(this,'.k5interrupt');
+	if     (hcn(this,'k5interrupt')||interruptParent){k5DivClass+=' k5interrupt';      isInterrupt=true;}
+	if     (hcn(this,'k5vid'))                       {k5DivClass+=' k5vid';            isVid=true;}
+	else if(hcn(this,'k5login'))                     {k5DivClass+=' k5login';          isLog=true;}
+	else if(hcn(this,'k5media'))                     {k5DivClass+=' k5media hijax-'+id;isMed=true;}
+	else if(hcn(this,'k5info'))                      {k5DivClass+=' k5info';           isInf=true;}
+
+	// title string ########################
+	var titleText = (this.title) ? this.title : elemText(this);
+	if (!titleText) { titleText = ' '; }
+
+	// [x] image ###########################
+	if     (isLog){var closeImgAtts={'title':'close','alt':'close','src':imdir+'/k5login_x.gif',         'border':'0','width':'21','height':'21'};}
+	else if(isInf){var closeImgAtts={'title':'close','alt':'close','src':imdir+'/k5info_x.gif',          'border':'0','width':'21','height':'21'};}
+	else          {var closeImgAtts={'title':'close','alt':'close','src':imdir+'/ic_close_win_big_x.gif','border':'0','width':'30','height':'19'};}
+
+	// #####################################
+	if (interruptParent) {
+		this.continueTo = interruptParent.continueTo;
+		this.submitTo = interruptParent.submitTo;
+		this.thankYouHref = interruptParent.thankYouHref;
+	}
+
+	// #####################################
+	var titleEl = elem('h2.k5title',null,titleText);
+	var close = elem('span.'+(isInterrupt?'k5skip':'k5close'),null,elem('img',closeImgAtts));//send them on their way?
+	var closePara = elem('p.k5closer',null,close);
+	var k5w2 = elem('div.k5w2');
+	var k5w1 = elem('div.k5w1',null,[titleEl,closePara,k5w2]);
+	var k5shadow = elem('div.k5shadow');
+	k5shadow.innerHTML = '<table><tr><td class="tl"></td><td class="tc"></td><td class="tr"></td></tr><tr><td class="ml"></td><td class="mc"></td><td class="mr"></td></tr><tr><td class="bl"></td><td class="bc"></td><td class="br"></td></tr></table>';
+	var k5Div = elem('div#k5',{'class':k5DivClass},[k5w1,k5shadow]);
+	if (this.continueTo) { k5Div.continueTo = this.continueTo; }
+	if (this.submitTo) { k5Div.submitTo = this.submitTo; }
+	if (this.thankYouHref) { k5Div.thankYouHref = this.thankYouHref; }
+
+	// #####################################
+	k5shadow.position=function(width,height){
+		width-=33;
+		height-=29;
+		var centerStyle = gebcn('mc',k5shadow)[0].style;
+		centerStyle.width=width+'px';
+		centerStyle.height=height+'px';
+		this.style.top=(-31-height)+'px';
+		this.style.left='8px';
+	};
+
+	// #####################################
+	k5w1.centerOnScreen = function() {
+		var docEl = document.documentElement, w = window;
+		if (!this.vHeight) { this.vHeight = (w.innerHeight) ? w.innerHeight : docEl.clientHeight; }
+		if (!this.vWidth) { this.vWidth = (w.innerWidth) ? w.innerWidth : docEl.clientWidth; }
+		var thisHeight = this.offsetHeight;
+		var thisWidth = this.offsetWidth;
+		var distance = ((this.vHeight / 2) - (thisHeight / 2)) * .666;
+		if (distance < 0) {
+			distance = 0;
+			this.style.height = (this.vHeight - 20)+'px';
+			this.style.overflow = 'auto';
+		}
+		if (thisWidth > this.vWidth) {
+			this.style.width = (this.vWidth - 40) + 'px';
+			this.style.overflow = 'auto';
+		}
+		this.style.marginTop = distance+"px";
+	};
+
+	// #####################################
+	k5w1.setContent = function(contentEl) {
+		contentEl.style.visibility = 'hidden';
+		k5shadow.style.visibility = 'hidden';
+		removeClassName(k5Div, 'k5empty');
+		removeClassName(contentEl, 'hidethis');
+
+		var customTitles = gebcn('k5customtitle',contentEl);
+		if (customTitles && customTitles.length > 0) {
+			var customTitle = customTitles[0];
+			var customTitleText = elemText(customTitle);
+			customTitle.parentNode.removeChild(customTitle);
+			titleEl.firstChild.data = customTitleText;
+		}
+
+		var xyMatches = matchClassName(contentEl,/^(\d+)(x(\d+))?$/);
+		if (xyMatches) {
+			if (!k5w1.style.width) { k5w1.style.width = xyMatches[1] + 'px'; }
+			if (xyMatches.length > 3 && xyMatches[3] && !k5w2.style.height) { k5w2.style.height = xyMatches[3] + 'px'; }
+		}
+
+		k5w2.innerHTML='';
+		k5w2.appendChild(contentEl);
+		var newHeight = k5w2.offsetHeight;
+		this.centerOnScreen();
+		contentEl.style.visibility = '';
+		window.setTimeout(function(){
+			k5shadow.position(k5w1.offsetWidth,k5w1.offsetHeight);
+			k5shadow.style.visibility = '';
+		}, 40);
+	};
+
+	// #####################################
+	k5Div.setError = function(title,error,url) {
+		removeClassName(this,'k5empty');
+		addClassName(this,'k5error');
+		k5w1.style.height = 'auto';
+		k5w1.style.width = '';
+		k5w2.style.height = '';
+		error = error || 'Unspecified error';
+		title = title || 'Error';
+		var titleEl = title ? elem('h5.k5customtitle',{},title) : '';
+		var errorEl = elem('p',{},error);
+		var urlEl = url ? elem('p',{},""+url) : '';
+		k5w1.setContent(elem('div',{'class':'g29 g29v2'},elem('div.g29w1',{},elem('div.g29w2',{},[titleEl,errorEl,urlEl]))));
+	};
+
+	// append the node #####################
+	k5Div.style.visibility = 'hidden';
+	if (is.ie6) {
+		var k5ie6bg = elem('div#k5ie6bg');
+		document.body.appendChild(k5ie6bg);
+	}
+	document.body.appendChild(k5Div);
+	var xyMatches = matchClassName(this,/^(\d+)(x(\d+))?$/);
+	if (xyMatches) {
+		k5w1.style.width = xyMatches[1] + 'px';
+		if (xyMatches.length > 3 && xyMatches[3]) { k5w2.style.height = xyMatches[3] + 'px'; }
+	}
+	k5w1.centerOnScreen();
+	k5Div.style.visibility = '';
+
+	// set content #########################
+	var linkPage = thisHref || location.href;
+	if (linkPage.indexOf('http')!==0) { linkPage = resolveUrl(linkPage); }//in case not fully resolved url
+	if (linkPage.indexOf('#')!=-1) { linkPage = linkPage.substring(0,linkPage.indexOf('#')); }
+	var locPage=location.href;
+	if (locPage.indexOf('#')!=-1) { locPage = locPage.substring(0,locPage.indexOf('#')); }
+	if (locPage === linkPage) {
+		// do local
+		var content = gebi(id);
+		if (!content) { k5Div.setError('Unable to load content', 'id="'+id+'" not found on this page', linkPage); }
+		else { k5w1.setContent(content.cloneNode(true)); }
+	} else {
+		// do ajax
+		try{
+			xhr(linkPage, function(responseText){
+				// success!
+				var content = getElementByIdFromString(responseText, id);
+				if (!content) { k5Div.setError('Unable to load content', 'id="'+id+'" not found on remote page', linkPage); }
+				else { k5w1.setContent(content); }
+			}, function(statusCode, statusText, url){
+				// fail!
+				var err = statusCode+" "+statusText;
+				if (!statusCode) { err = "This could have been caused by attempting to make a cross-domain ajax request. Here's the error message returned by the browser: "+err; }
+				k5Div.setError('Unable to load content', err, url);
+			});
+		} catch (ex) {
+			k5Div.setError('Unable to load content', 'XHR FAIL: '+(ex.message||ex), linkPage);
+		}
+	}
+
+	// set focus ###########################
+	try {
+		this.blur();
+		var fitems = gebs('input@type="text",button,select,textarea', k5Div);
+		if (fitems && fitems.length > 0) {
+			fitems[0].focus();
+		}
+	} catch (ex) {}
+
+	// done ################################
+	pauseAll();
+	return false;
+}
+
+function k5Close(e){
+	k5SoftClose();
+	return false;
+}
+
+function k5SoftClose(e){
+	var k5Div = gebi('k5');
+	if(k5Div){document.body.removeChild(k5Div);}
+	var k5ie6bg = gebi('k5ie6bg');
+	if(k5ie6bg){document.body.removeChild(k5ie6bg);}
+	resumeAll();
+}
+
+(function(){
+	var done=false;
+	window.k5Onload=function(href, id, title, lf, width, height) {
+		if (done) { throw new Error("k5Onload called multiple times"); } else { done = true; }
+		if (!href) { href = location.href; }
+		if (href.indexOf('#') != -1) {
+			if (!id) { id = href.substring(href.indexOf('#')+1); }
+			href = href.substring(0,href.indexOf('#'));
+		}
+		href = href + '#' + id;
+		var className = 'k5';
+		if (width) { className += ' ' + width; }
+		if (height) { className += 'x' + height; }
+		if (lf) { className += ' ' + lf; }
+		var a = elem('a',{'class':className,'href':href},title);
+		reg.postSetup(function(){
+			window.setTimeout(function(){k5Click.call(a);},200);
+		});
+	}
+})();
+
+(function(){
+	var links, done = false;
+	function handleIt(el, continueTo, submitTo, matchUrl) {
+		if (!done && (done = true)) {
+			links = gebs('link@rel="k5interrupt"', gebtn('head')[0]);
+		}
+		for (var i=0; i<links.length; i++) {
+			var link = links[i];
+			var patternAtt = link.getAttribute('match');
+			var selector = link.getAttribute('select');
+			if (!patternAtt && !selector) { continue; }
+			var patternAtt = patternAtt || '.?';
+			var selector = selector || '*';
+			var pattern = new RegExp(patternAtt);
+			if (!patternAtt && !selector) { continue; }
+			if (!pattern.test(matchUrl) || !matches(el,selector)) { continue; }
+			var href = link.href;
+			var title = link.getAttribute('title');
+			var thankYouHref = link.getAttribute('thanks');
+			var dummyLink = elem('a',{'class':link.className+' k5interrupt','href':href},title);
+			dummyLink.continueTo = continueTo;
+			dummyLink.submitTo = submitTo;
+			dummyLink.thankYouHref = thankYouHref;
+			try {
+				return k5Click.call(dummyLink);
+			} catch (ex) {
+				console.log("error while calling k5Click(): "+ex.message);
+				return true;
+			}
+		}
+	}
+	var protocolPatt = /^https?:/;
+	var hostPatt = /^\/\//;
+	var rootPatt = /^\//;
+	var queryPatt = /^\?/;
+	var hashPatt = /^#/;
+	var l = location;
+	var lindex = l.protocol+'//'+l.host+l.pathname;
+	lindex = lindex.substring(0,lindex.lastIndexOf('/')+1);
+	function resolveUrl(frag,paramString) {
+		frag=frag.strip();
+		var result = null;
+		if (protocolPatt.test(frag))   { result = frag; }
+		else if (hostPatt.test(frag))  { result = l.protocol+frag; }
+		else if (rootPatt.test(frag))  { result = l.protocol+'//'+l.host+frag; }
+		else if (queryPatt.test(frag)) { result = l.protocol+'//'+l.host+l.pathname+frag; }
+		else if (hashPatt.test(frag))  { result = l.protocol+'//'+l.host+l.pathname+l.search+frag; }
+		else if (!frag)                { result = l.href; }
+		else                           { result = lindex + frag; }
+		if (paramString) {
+			var qind = result.indexOf('?');
+			var hind = result.indexOf('#');
+			if (qind!=-1) { result=result.substring(0,qind); }
+			if (hind!=-1) { result=result.substring(0,hind); }
+			result+='?'+paramString;
+		}
+		return result;
+	}
+	window.resolveUrl = resolveUrl;
+
+	// interrupt "nag screen" behavior
+	reg.click('@href', function(e){
+		try { var rhref = resolveUrl(this.href); }
+		catch (ex) { console.log(ex.message); return; }
+		return handleIt(this, rhref, null, rhref);
+	});
+	reg.submit('form', function(e){
+		try { var raction = resolveUrl(this.action); }
+		catch (ex) { console.log(ex.message); return; }
+		return handleIt(this, null, this, raction);
+	});
+
+	function getLabel(field) {
+		var labelEl = getParent(field,'label');
+		var id = field.id || field.name;
+		if (!labelEl) {
+			var labels = gebtn('label');
+			for (var i=0;i<labels.length;i++){
+				if (labels[i].htmlFor===id) {
+					labelEl = labels[i];
+					break;
+				}
+			}
+		}
+		return (labelEl) ? elemText(labelEl) : id;
+	}
+
+	// ajaxify the nag screen form behavior
+	reg.submit('.k5interrupt',function(e){
+		cancelDefault(e);
+		if (!this.continueTo && !this.submitTo) {
+			console.log('no continueTo url or submitTo form');
+			return false;
+		}
+		var continueTo = this.continueTo;
+		var submitTo = this.submitTo;
+		var thankYouHref = this.thankYouHref;
+		var classes = this.className;
+		var k5Form = getTarget(e);
+		var fargs = getFormData(k5Form);
+		var url = resolveUrl(k5Form.action);
+		var k5Div = this;
+
+		var valMess = validateForm(k5Form);
+
+		if (valMess) {
+			if (!hcn(k5Form,"failsilent")) {
+				alert(valMess);
+			} else {
+				k5Close();
+				continueTo && (location.href=continueTo);
+				submitTo && submitTo.submit();
+			}
+			return;
+		}
+
+		if (k5Form.whichSubmit) {
+			k5Form.whichSubmit.value = "sending...";
+		}
+		try {
+			//console.log('sending form results: '+url);
+			xhr(url, function(){
+				//success
+				if (thankYouHref) {
+					k5Click.call(elem('a',{'href':thankYouHref,'class':classes},'Thank You'));
+					window.setTimeout(function(){
+						k5Close();
+						continueTo && (location.href=continueTo);
+						submitTo && submitTo.submit();
+					},2700);
+				} else {
+					k5Close();
+					continueTo && (location.href=continueTo);
+					submitTo && submitTo.submit();
+				}
+			}, function(statusCode, statusText){
+				//fail
+				if (continueTo) {
+					var url = continueTo;
+				} else if (submitTo) {
+					var url = resolveUrl(submitTo.action,getFormData(submitTo));
+				}
+				k5Form.appendChild(elem('input',{'type':'hidden','name':'redirect_to','value':url}));
+				k5Form.appendChild(elem('input',{'type':'hidden','name':'goto','value':url}));
+				k5Form.submit();
+				window.setTimeout(function(){k5Close();},100);
+			},null,fargs);
+		} catch (ex) {
+			if (continueTo) {
+				var url = continueTo;
+			} else if (submitTo) {
+				var url = resolveUrl(submitTo.action,getFormData(submitTo));
+			}
+			k5Form.appendChild(elem('input',{'type':'hidden','name':'redirect_to','value':url}));
+			k5Form.appendChild(elem('input',{'type':'hidden','name':'goto','value':url}));
+			k5Form.submit();
+			window.setTimeout(function(){k5Close();},100);
+		}
+	});
+	// they have chosen to skip the nag screen
+	reg.click('.k5skip',function(e){
+		var k5Div = gebi('k5');
+		if (!k5Div || (!k5Div.continueTo && !k5Div.submitTo)) { return; }
+		var continueTo = k5Div.continueTo;
+		var submitTo = k5Div.submitTo;
+		k5Close();
+		continueTo && (location.href=continueTo);
+		submitTo && submitTo.submit();
+		return false;
+	});
+	// for easy access to clicked submit button later
+	reg.click('.k5interrupt form @type="submit"', function(e){
+		if (hcn(this,'k5skip')) { return; }
+		var form = getParent(this,'form');
+		form.whichSubmit = this;
+	});
+})();
+
+(function(){
+	/**
+	get the label string associated with a field element
+	*/
+	function getLabel(field) {
+		var labelEl = getParent(field,'label');
+		var id = field.id || field.name;
+		if (!labelEl) {
+			var labels = gebtn('label');
+			for (var i=0;i<labels.length;i++){
+				if (labels[i].htmlFor===id) {
+					labelEl = labels[i];
+					break;
+				}
+			}
+		}
+		return (labelEl) ? elemText(labelEl) : id;
+	}
+	/**
+	return an error message if there's an error,
+	otherwise an empty string
+	*/
+	function validateForm(form) {
+		var valMess = '';
+		var inpReq = gebs('input.required@type="text", input.required@type="password", textarea.required',form);
+		var chkReq = gebs('input.required@type="checkbox", input.required@type="radio"',form);
+		var selReq = gebs('select.required',form);
+		for (var i=0; i<inpReq.length; i++) { var f=inpReq[i]; if(!f.value){valMess+='missing: '+getLabel(f)+'\n';} }
+		for (var i=0; i<chkReq.length; i++) { var f=chkReq[i]; if(!f.checked){valMess+='must select: '+getLabel(f)+'\n';} }
+		for (var i=0; i<selReq.length; i++) { var f=selReq[i]; if(!f.options[f.selectedIndex].value){valMess+='must select: '+getLabel(f)+'\n';} }
+		valMess && (valMess="This form is not complete. Please provide the\nrequired information in order to proceed.\n\n"+valMess);
+		return valMess;
+	}
+	window.validateForm = validateForm;
+})();
+
+reg.click("@href*='thisURL'",function(e){
+	this.href = this.href.replace(/(thisURL)/,encodeURIComponent(document.location));
+});
+
+
+//////////////////////////////////
+// GLOBAL OMNITURE LINK TRACKER //
+//////////////////////////////////
+
+// GLOBAL COMPONENT HANDLERS
+reg.submit("div.a2search form",function(e){	i = gebs("input.searchfield,input#searchfield",this); if (i[0].value != '' && i[0].value != i[0].defaultValue){	oTrack(this,'A2','Search-'+document.getElementById('searchfield').value); }});
+reg.click('a#sunlogo',function(){oTrack(this,'A2','SunLogo');});
+reg.click('div.a2topiclinks > ul > li > a',function(){oTrack(this,'A2',this.innerHTML);});
+reg.click('div.a2m a',function(){oTrack(this,'A2',this.parentNode.parentNode.parentNode.parentNode.getElementsByTagName('a')[0].innerHTML+'-'+this.innerHTML);});
+reg.click('div.a1menu a',function(){var p = hasParent(this,'div','a1menu');p = prevElem(p);oTrack(this,'A1',elemText(p)+'-'+elemText(this));});
+reg.click('div.a1 span > a',function(){oTrack(this,'A1');});
+reg.click('div#a5 > ul > li > a',function(){oTrack(this,'A5');});
+reg.click('div#a5 li li a',function(){var p = hasParent(this,'li','hasmenu');oTrack(this,'A5',elemText(p.getElementsByTagName('a')[0])+'-'+elemText(this))});
+reg.click('div.k5 a',function(){var type = 'K5';if(hasParent(this,'poweredby')){type = '-poweredby';}else if(hasParent(this,'countries')){type = '-countries';}oTrack(this,type,this.innerHTML)});
+
+reg.click('ul#navigation a',function(){oTrack(this,'oracle hnav');});
+reg.click('div#oraclesunmenu a',function(){oTrack(this,'oraclesun menu');});
+reg.click('div.ra5 a',function(){oTrack(this,'oracle complete footer');});
+
+// OMNITURE WHITELIST
+var omniwhite = {
+	'www':['all'],
+	'star-wip.eng':['all']
+};
+
+// ALL OTHER CUSTOM LINK SETTING FUNCTION
+function oTrack(a,comp,atxt,aud) {
+
+	// if omniture exist
+	if(window.s_account){
+
+		// get subdomain (kills off port if localhost or IP)
+		var l = (typeof document.location.host.split('sun.com')[0].replace(/\.$/gi,"").split(':')[0] == 'undefined') ?  navigator.userAgent.toLowerCase().normalize('_') : document.location.host.split('sun.com')[0].replace(/\.$/gi,"").split(':')[0];
+
+		// check subdomain whitelist for component or all
+		var gowhite = false;
+		if(omniwhite[l]){
+			for (var i=0;i<omniwhite[l].length;i++){
+				if(omniwhite[l][i] == comp || omniwhite[l][i] == "all"){
+					gowhite = true;
+				}
+			}
+		}else if(omniwhite['home']){
+			gowhite = true;
+		}
+
+		// if whitelisted
+		if((gowhite && !a.trackFirst) || (gowhite && a.trackFirst == comp)){
+
+			a.trackFirst = comp;
+
+			if(a.getElementsByTagName('img')[0] && !atxt){
+				if(a.getElementsByTagName('img')[0].alt){
+					atxt = a.getElementsByTagName('img')[0].alt;
+				}else if(a.getElementsByTagName('img')[0].title){
+					atxt = a.getElementsByTagName('img')[0].title;
+				}else{
+					atxt = a.getElementsByTagName('img')[0].src.replace(/.*\/([^\/.]+)\..*$/g,"$1");
+				}
+			}else if(!atxt){
+				atxt = elemText(a);
+			}
+			atxt = atxt.replace(/\.\.\./gi,"");
+			atxt = atxt.normalize();
+
+			s_linkType='o';
+
+			if(!omniwhite['home']){
+				s_linkTrackVars = 'prop13,prop14,prop15,prop16,s_eVar37,s_eVar38';
+			}else if(omniwhite['home'] && aud && l && atxt && comp){
+				s_linkTrackVars = 'prop13,prop14,prop15,prop16,s_eVar37,s_eVar38,eVar30,eVar36';
+				s_eVar30 = l+'-'+ comp+'-'+atxt;
+				s_eVar36 = l +'-'+aud;
+			}else if(omniwhite['home'] && l && atxt && comp){
+				s_linkTrackVars = 'prop13,prop14,prop15,prop16,s_eVar37,s_eVar38,eVar30';
+				s_eVar30 = l+'-'+ comp+'-'+atxt;
+			}
+
+			s_prop13=comp;
+			s_prop14=decodeURIComponent(a.href);
+			s_prop15=s_pageName;
+			s_prop16=atxt;
+			s_eVar37=l+'-'+atxt;
+			s_eVar38=l+'-'+comp;
+			s_linkName=l+':'+comp+':'+atxt;
+			// console for testing
+			if(omniwhite['console']){
+				console.log(
+					  '   s_prop13 = '+comp+
+					'\n   s_prop14 = '+decodeURIComponent(a.href)+
+					'\n   s_prop15 = '+s_pageName+
+					'\n   s_prop16 = '+atxt+
+					'\n   s_eVar37 = '+l+'-'+atxt+
+					'\n   s_eVar38 = '+l+'-'+comp+
+					'\n s_linkName = '+l+':'+ comp+':'+atxt
+				);
+				if(omniwhite['home']){ console.log('\n s_eVar30 = '+l+'-'+ comp+'-'+atxt);}
+				if(aud){ console.log('\n s_eVar36 = '+l+'-'+aud);}
+			}
+			// if any var is null/undefined don't process
+			if(s_prop13 && s_prop14 && s_prop15 && s_prop16 && s_eVar37 && s_eVar38){
+				s_lnk=s_co(a);
+				s_gs(s_account)
+			}
+			s_prop13 = s_prop14 = s_prop15 = s_prop16 = s_linkTrackVars = s_eVar37 = s_eVar38 = s_eVar30 = s_eVar36 = "";
+		}
+	}
+}
+
+(function(){
+
+	/**
+	Pop up a new survey window.
+	@param url          (string) url to pop up
+	@param nProb        (float >0.0 and <=1.0) probability of survey randomly popping up (default 1.0) (can be expressed as 1/N where N means every "Nth" visitor)
+	@param suppressDays (int) don't show again for X days, -1 means never show again, 0 means don't suppress (default 0)
+	@param height       (int) height of popup (default 600)
+	@param width        (int) width of popup (default 548)
+	@param noScrolling  (boolean) suppress scrollbars in popup (default false)
+	*/
+	window.surveyPop = function(url, nProb, suppressDays, height, width, noScrolling) {
+		if (nProb && nProb < Math.random()) { return false; }
+		if (beenThereDoneThat(surveyUrl, suppressDays)) { return false; }
+
+		if (!width) { width = 548; }
+		if (!height) { height = 600; }
+		var args = 'resizable,status,width='+width+',height='+height;
+		if (!noScrolling) { args += ',scrollbars'; }
+		var newWin = window.open(url, '_surveyWin', args);
+		return newWin;
+	}
+
+	/**
+	Opens a modal dialog for surveys.
+	@param dialogUrl    (string) url of survey dialog to pop up (must be same-page or same-domain, with fragment id)
+	@param nProb        (float >0.0 and <=1.0) probability of survey randomly popping up (default 1.0) (can be expressed as 1/N where N means every "Nth" visitor)
+	@param suppressDays (int) don't show again for X days, -1 means never show again, 0 means don't suppress (default 0)
+	*/
+	window.surveyDialog = function(dialogUrl, nProb, suppressDays) {
+		if (nProb && nProb < Math.random()) { return false; }
+		if (beenThereDoneThat(dialogUrl, suppressDays)) { return false; }
+		var dummyLink = elem('a',{'class':'k5 k5info','href':dialogUrl},'');
+		k5Click.call(dummyLink);
+	}
+
+	// private function for cookies
+	function beenThereDoneThat(url, suppressDays) {
+		var patt = new RegExp('^'+ckName+'_'+uHash+'=seen$');
+		var ck = document.cookie;
+		var ckName = 'surveyHash';
+		var ckArr = ck.split('; ');
+		var uHash = url.toLowerCase().replace(/[^a-z0-9_\/]/g,'_');
+		var beenThere = false;
+		for (var i=0; i<ckArr.length; i++) {
+			if (patt.test(ckArr[i])) { return true; }
+		}
+		if (suppressDays) {
+			if (suppressDays < 0) { suppressDays = 9999; }
+			var expires = new Date();
+			expires.setTime(expires.getTime() + suppressDays * 1000 * 60 * 60 * 24);
+			document.cookie = ckName+'_'+uHash+'=seen; expires='+expires.toGMTString();
+		}
+		return false;
+	}
+
+})();
+
+
+/*
+Version 0.9.1: 2009-06-19
+
+Change-log (0.9.1):
+* Removed "comApp" from all function names
+* Updated suncomExtendedCookieWhiteList
+
+*/
+
+function decodeSunSessionCookie() {
+    var lookup = "SASC=";
+    var value = "";
+    var ca = document.cookie.split(';');
+    for(var i=0; i<ca.length;i++) {
+        var c = ca[i];
+        while (c.charAt(0)==' ') c = c.substring(1, c.length);
+        if (c.indexOf(lookup) == 0) value = c.substring(lookup.length, c.length);
+    }
+    return decodeURIComponent(value);
+}
+
+/** Set session cookie by name/value. */
+function setSunSessionCookie(name, value) {
+    var decoded = decodeSunSessionCookie();
+    var newValue = "";
+    var newSubcookie = true;
+    if (decoded != "") {
+        var nvps = decoded.split('&');
+        for(var i=0; i<nvps.length; i++) {
+            var nvp = nvps[i].split('=');
+            if (nvp[0] == name) {
+                nvp[1] = encodeURIComponent(value);
+                newSubcookie = false;
+            }
+            newValue += nvp[0] + "=" + nvp[1] + "&";
+        }
+        newValue = newValue.substring(0, newValue.length - 1);
+    }
+    if (newSubcookie) {
+        if (newValue != "") newValue += "&";
+        newValue += name + "=" + encodeURIComponent(value);
+    }
+    if (newValue.length > 4080) {
+        throw "Out of application session cookie space";
+    }
+    document.cookie = "SASC="+encodeURIComponent(newValue)+"; path=/";
+}
+
+/** Get session cookie by name. */
+function getSunSessionCookie(name) {
+    var decoded = decodeSunSessionCookie();
+    if (decoded != "") {
+        var nvps = decoded.split('&');
+        for(var i=0; i<nvps.length; i++) {
+            var nvp = nvps[i].split('=');
+            if (nvp[0] == name) {
+                return decodeURIComponent(nvp[1]);
+            }
+        }
+    }
+    return null;
+}
+
+/** Remove session cookie by name. */
+function removeSunSessionCookie(name) {
+    var decoded = decodeSunSessionCookie();
+    var newValue = "";
+    if (decoded != "") {
+        var nvps = decoded.split('&');
+        for(var i=0; i<nvps.length; i++) {
+            var nvp = nvps[i].split('=');
+            if (nvp[0] == name) {
+                continue; // Skip
+            }
+            newValue += nvp[0] + "=" + nvp[1] + "&";
+        }
+        newValue = newValue.substring(0, newValue.length - 1);
+    }
+    document.cookie = "SASC="+encodeURIComponent(newValue)+"; path=/";
+}
+
+function deriveExpirationForAppExtendedCookie() {
+    var date = new Date();
+    date.setTime(date.getTime()+(365*24*60*60*1000));
+    return "; expires="+date.toGMTString();
+}
+
+function decodeSunExtendedCookie() {
+    var lookup = "SAEC=";
+    var value = "";
+    var ca = document.cookie.split(';');
+    for(var i=0; i<ca.length;i++) {
+        var c = ca[i];
+        while (c.charAt(0)==' ') c = c.substring(1, c.length);
+        if (c.indexOf(lookup) == 0) value = c.substring(lookup.length, c.length);
+    }
+    return decodeURIComponent(value);
+}
+
+/** Set extended cookie by name/value, with an optional expiration in days. */
+function setSunExtendedCookie(name, value, days) {
+    if (suncomExtendedCookieWhiteList[name]) {
+        // allowed
+    } else if (name.length > 4 &&
+        name.substring(name.length-4, name.length) == "_exp" &&
+        suncomExtendedCookieWhiteList[name.substring(0, name.length - 4)]) {
+        // allowed
+    } else {
+        throw "This cookie name is not supported - " + name;
+    }
+    var decoded = decodeSunExtendedCookie();
+    var newValue = "";
+    var newSubcookie = true;
+    if (decoded != "") {
+        var nvps = decoded.split('&');
+        for(var i=0; i<nvps.length; i++) {
+            var nvp = nvps[i].split('=');
+            if (nvp[0] == name) {
+                nvp[1] = encodeURIComponent(value);
+                newSubcookie = false;
+            }
+            newValue += nvp[0] + "=" + nvp[1] + "&";
+        }
+        newValue = newValue.substring(0, newValue.length - 1);
+    }
+    if (newSubcookie) {
+        if (newValue != "") newValue += "&";
+        newValue += name + "=" + encodeURIComponent(value);
+    }
+    if (newValue.length > 4080) {
+        throw "Out of application session cookie space";
+    }
+    var expires = deriveExpirationForAppExtendedCookie();
+    document.cookie = "SAEC="+encodeURIComponent(newValue)+expires+"; path=/";
+    if (days) {
+        var date = new Date();
+        var expiresAt = days + Math.ceil(date.getTime() / 24 / 60 / 60 / 1000);
+        setSunExtendedCookie(name + "_exp", expiresAt, null);
+    }
+}
+
+/** Get extended cookie by name. */
+function getSunExtendedCookie(name) {
+    var expiresAt = null;
+    if (!(name.length > 4 && name.substring(name.length-4, name.length) == "_exp")) {
+        expiresAt = getSunExtendedCookie(name+"_exp");
+    }
+    if (expiresAt != null) {
+        var today = Math.ceil(new Date().getTime() / 24 / 60 / 60 / 1000);
+        if (today > expiresAt) {
+            removeSunExtendedCookie(name);
+            return null;
+        }
+    }
+    var decoded = decodeSunExtendedCookie();
+    if (decoded != "") {
+        var nvps = decoded.split('&');
+        for(var i=0; i<nvps.length; i++) {
+            var nvp = nvps[i].split('=');
+            if (nvp[0] == name) {
+                return decodeURIComponent(nvp[1]);
+            }
+        }
+    }
+    return null;
+}
+
+/** Remove extended cookie by name. */
+function removeSunExtendedCookie(name) {
+    if (!(name.length > 4 && name.substring(name.length-4, name.length) == "_exp")) {
+        removeSunExtendedCookie(name + "_exp");
+    }
+    var decoded = decodeSunExtendedCookie();
+    var newValue = "";
+    if (decoded != "") {
+        var nvps = decoded.split('&');
+        for(var i=0; i<nvps.length; i++) {
+            var nvp = nvps[i].split('=');
+            if (nvp[0] == name) {
+                continue; // Skip
+            }
+            newValue += nvp[0] + "=" + nvp[1] + "&";
+        }
+        newValue = newValue.substring(0, newValue.length - 1);
+    }
+    var expires = deriveExpirationForAppExtendedCookie();
+    document.cookie = "SAEC="+encodeURIComponent(newValue)+expires+"; path=/";
+}
+
+var suncomExtendedCookieWhiteList = {
+//    placeholder1 : true,
+//    placeholder2 : true
+};
+
+
+
+
+// IMG POSTLOAD
+var imgpostload = [];
+reg.postSetup(function(){
+	if(typeof imgpostload=='undefined'){return;}
+	for (var imp=0;imp<imgpostload.length;imp++){
+		if(imgpostload[imp].title){
+			imgpostload[imp].src = imgpostload[imp].title;
+			imgpostload[imp].title = "";
+		}
+	}
+});
+
+if(!shutoff.global){
+	if(is.ie56){
+		reg.setup('div.g15v5 > table',function(){addClassName(this,'tickle');});
+	}
+}
+
+if(!shutoff.share){reg.setup("div.pagetitle, div.smallpagetitle",sniffSharePage,true);}
+
+if(!shutoff.misc){
+	reg.setup("@class*='cTool-'",sniffClassTool);
+	reg.setup("img@src*='_off.'",sniffRollover);
+	reg.setup("div.g23",sniffG23);
+	reg.setup("div.g27w2",sniffG27);
+	reg.click('div.g27w2 > h3 > span.g27targ',toggleG27);
+	reg.click("a@href*='#'.g27v1 > span",toggleG27v1);
+	reg.setup("div.imgbox",sniffImgbox);
+	reg.setup("select.goto, select.showDiv",sniffGoto);
+	reg.setup("ul.goto, ul.showDiv",sniffGotoUL);
+	reg.setup(".xfadefirst",sniffXfade);
+	reg.setup("ul.listfade",sniffListfade);
+	reg.setup("a.loadUrl@href",sniffLoadUrl);
+	reg.setup('a.imgswap, area.imgswap, img.imgswap, span.imgswap', sniffImgswap);
+	reg.setup('img@class*="mswap"', sniffMultiswap);
+	reg.setup('img.postload', function(){imgpostload.push(this);});
+	reg.setup('a.toggleObj, area.toggleObj', sniffToggler);
+	reg.setup('a.toggle-all-table-checkboxes', sniffToggleAllCheckboxesInTable);
+	reg.setup('div.pc1collapsible', sniffExpandCollapsePc1);
+	reg.setup("select.platformDetect",platformDetect);
+	reg.setup("select.langDetect",langDetect);
+	reg.setup('form@class*="wgform-",form@class*="rgform-"', sniffFormHijax);
+	reg.setup('.pn0 > .pn0v5 a.big,.pn0 > .pn0v3 a.big,.pn0 > .pn0v2 a.big,.pn0 > .pn0v1 a.big', sniffpn00links);
+	reg.setup('div.g15v5 > table.details tr.main-row > th',function(){this.appendChild(elem('div.after',{},[elem('div.show',{},ltxt.showDetails),elem('div.hide',{},ltxt.hideDetails)]));});
+	if (location.hash) {
+		try {
+			reg.setup('div.g15v5 table tbody'+location.hash,function(){removeClassName(this, 'collapsed');addClassName(this, 'uncollapsed');});
+		} catch (ex) {
+			console.log(ex.message);
+		}
+	}
+	if(is.ie56){
+		reg.setup('div.g15v5 > table',function(){ addClassName(this, 'tickle'); });
+		reg.setup('div.pngimg',function(){
+			this.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.getElementsByTagName('img')[0].src+"')";
+		});
+	}
+	if (typeof widgets != 'undefined'){reg.setup('.wg1', sniffWg1);}// can this go away?
+}
+
+
+function sniffpn00links(){
+	if(this.href){
+		var pn0 = hasParent(this,'div','pn0');
+		if (!hasClassName(pn0, "hasimglink")){
+			addClassName(pn0,'hasimglink');
+			pn0.appendChild(elem('a.pn0linkimg',{'href':this.href},[]));
+		}
+	}
+}
+
+
+// setup download page action
+reg.preSetup(function(){
+	var pc10 = gebi('pc10');
+	if (!pc10) { return; }
+	var imgs = gebs("p.pc10img img.pc10img");
+	if (!imgs || imgs.length==0) { return; }
+
+	// now i know i'm on the right page
+	for (var a=0; a<imgs.length; a++){
+		var img = imgs[a];
+
+		// need src for hovered and non-hovered versions
+		var src = img.src;
+		var src_over = src.replace(/(\.[a-z]+$)/,"_hvr$1");//x.png > x_hvr.png
+
+		// append hovered image
+		var img_over = img.cloneNode(true);
+		img_over.src = src_over;
+		img_over.className = 'pc10img_over';
+		img.parentNode.appendChild(img_over);
+	}
+
+	// init the hover action
+	if (!window.pc10active) {
+		window.pc10active = true;
+		reg.hover("div.pc10item",function(e){
+			addClassName(this,'pc10itemover');
+		},function(e){
+			removeClassName(this,'pc10itemover');
+		});
+	}
+});
+
+// SETUP PRODUCT FINDER
+reg.preSetup(function(){
+	var fn1 = gebi('productFinder');
+	if(!fn1){return;}
+	reg.setup('td.fnCmp input@type="checkbox"',function(){
+		if(this.checked == true){
+			addClassName(this.parentNode.parentNode, "checked");
+		}
+	});
+
+	reg.setup('ul#fn1Filters',function(){
+		// set up toggle links
+		var ems = gebtn('em',this);
+		for (var i=0;i<ems.length;i++){
+			if(ems[i].parentNode.nodeName.toLowerCase() == "li"){
+				var a = elem('a',{'href':'#toggleView'});
+				a.onclick = function(){
+					toggleClassName(this.parentNode.parentNode, "collapsed");
+					return false;
+				};
+				innerWrap(ems[i],a)
+			}
+		}
+
+		// collapse all but first 4 LIs, unless var showLIs exist
+		var li = gebtn('li',this);
+		var n = 0;
+		for (var i=0;i<li.length;i++){
+			var firstLi = gebtn('li',li[i])[0];
+			if(li[i].parentNode == this && n > 3 && firstLi && firstLi.className.indexOf('selection') > -1){
+				addClassName(li[i], "collapsed");
+			}else if(li[i].parentNode == this && gebtn('em',li[i])[0]){
+				n++;
+			}
+		}
+	});
+
+	reg.setup('fieldset.fieldset-collapsed,fieldset.fieldset-uncollapsed',function(){
+		if(gebtn('h6',this)[0]){
+			var a = elem('a.fieldsettoggle',{'href':'#toggleView'});
+			innerWrap(gebtn('h6',this)[0], a);
+			addClassName(gebtn('h6',this)[0], "fieldsettoggle");		}
+	});
+
+	reg.click('td.fnCmp input@type="checkbox"',function(){
+		var parent = this;
+		while (parent = parent.parentNode) {
+			if (parent.nodeName.toLowerCase() == 'form'){
+				var form = parent;
+				break;
+			}
+		}
+		var maxcheck = form.className.split('maxchecked-')[1].split(' ')[0];
+		if(maxcheck){
+			var n = 0;
+			var ck = gebtn('input',form);
+			for (var i=0;i<ck.length;i++){
+				if(ck[i].type == "checkbox" && ck[i].checked == true){
+					n++;
+				}
+			}
+			if(n > maxcheck){
+				this.checked = false;
+				alert(ltxt['maxCheckedPart1']+' '+maxcheck+' '+ltxt['maxCheckedPart2']);
+			}
+		}
+
+		if(this.checked == true){
+			addClassName(this.parentNode.parentNode, "checked");
+		}else if(this.checked == false){
+			removeClassName(this.parentNode.parentNode, "checked");
+		}
+	});
+});
+
+// SETUP RESELLER FINDER WIDGET
+reg.preSetup(function() {
+	var frw = gebi("findresellerwidget");
+	if (!frw) { return; }
+	frw.onsubmit = function(e) {
+		var k = this.keywords;
+		var l = this.location;
+		if (hasClassName(k, 'autoclear') && k.value == k.defaultValue) { k.value = ''; }
+		if (hasClassName(l, 'autoclear') && l.value == l.defaultValue) { l.value = ''; }
+		return true;
+	};
+});
+
+// SETUP FLOATING SIDEBAR
+reg.postSetup(function(){
+	var fixme = gebi("floating-sidebar");
+	if (!fixme) { return; }
+	getXY(fixme);
+	var distFromTop = fixme.Y;
+	addEvent(window,"scroll",function(){
+		var docEl = document.documentElement, w = window;
+		var vHeight = (w.innerHeight) ? w.innerHeight : docEl.clientHeight;
+		var height = fixme.offsetHeight;
+		var scrlAmt = getScrollTop();
+		var distFromViewport = distFromTop - scrlAmt;
+		if (distFromViewport < 10 && height+10 < vHeight) { acn(fixme,"floating-sidebar"); }
+		else { rcn(fixme,"floating-sidebar"); }
+	});
+});
+
+// BUBBLING EVENTS
+reg.click('a@class*="hijax-",@class*="hijax-" a,.fn1 .g8pages a', hijaxLink);
+reg.click('div.g15v5 tr.main-row > th@scope="row"',function(ev){switchClassName(this.parentNode.parentNode, 'collapsed', 'uncollapsed');});
+reg.hover("img.spriteswap",spriteOver,spriteOut, 0);
+reg.click('.modal-close',modalClose);
+reg.click('a@class*="mswap", area@class*="mswap", span@class*="mswap"', clickMultiswap);
+reg.click('a.fieldsettoggle', function(ev){switchClassName(this.parentNode.parentNode, 'fieldset-collapsed', 'fieldset-uncollapsed');return false;});
+reg.click("a#sr2Adv,a.sr2Adv",function(){addClassName(document.getElementById('sr2'),'sr2showOptions');document.getElementById('searchtermsAll').focus();return false})
+reg.click("a#sr2Simple,a.sr2Simple",function(){removeClassName(document.getElementById('sr2'),'sr2showOptions');document.getElementById('simpleSearch').focus();return false})
+reg.click('span.disabled a',function(){return false});
+
+// SETUP -> G27
+function sniffG27() {
+
+	var h3 = gebtn('h3',this);
+	if (!h3 || h3.length < 1) { return; }
+	h3 = h3[0];
+	var h3Text = elemText(h3).strip();
+	var targSpan = elem('span.g27targ');
+	acn(h3,'g27head');
+	innerWrap(h3,targSpan);
+	if (!h3Text) {
+		var im = elem('img.g27targimg',{'src':imdir+'/a.gif','alt':''});
+		targSpan.appendChild(im);
+	}
+
+	var block = gebcn('g27block',this);
+	if (!block || block.length < 1) { return; }
+	block = block[0];
+
+	if (hcn(block,'hidethis')) {
+		acn(this,'g27collapsed');
+		rcn(this,'g27expanded');
+	} else {
+		rcn(this,'g27collapsed');
+		acn(this,'g27expanded');
+	}
+
+	if (location.hash && location.hash.length > 1) {
+		var lh = location.hash.substring(1);
+		var targ = gebi(lh);
+		if (!targ) { return; }
+		var pG27 = getParent(this, '.g27');
+		if (pG27.contains(targ) || pG27.id == lh) {
+			rcn(block,'hidethis');
+			rcn(this,'g27collapsed');
+			acn(this,'g27expanded');
+		}
+	}
+}
+
+function toggleG27(e) {
+	var h3 = this.parentNode;
+	var g27w2 = h3.parentNode;
+	var block = gebcn("g27block", g27w2);
+	if (!block || block.length < 1) { return; }
+	block = block[0];
+	var isToggleText = false;
+	var showSpan = gebcn('showtext',this);
+	var hideSpan = gebcn('hidetext',this);
+	if (showSpan.length && hideSpan.length) {
+		isToggleText = true;
+		showSpan = showSpan[0];
+		hideSpan = hideSpan[0];
+	}
+	if (hcn(block, 'hidethis')) {
+		rcn(block,'hidethis');
+		rcn(g27w2,'g27collapsed');
+		acn(g27w2,'g27expanded');
+		if (isToggleText) {
+			acn(showSpan,'hidethis');
+			rcn(hideSpan,'hidethis');
+		}
+	} else {
+		acn(block,'hidethis');
+		acn(g27w2,'g27collapsed');
+		rcn(g27w2,'g27expanded');
+		if (isToggleText) {
+			rcn(showSpan,'hidethis');
+			acn(hideSpan,'hidethis');
+		}
+	}
+
+	var idElChain = [], idEl = this;
+	while (idEl = getParent(idEl,'@id')) {
+		idElChain.push(idEl);
+	}
+	idElChain.forEach(function(idEl){
+		var g27w2s = gebcn('g27w2',idEl);
+		var g27v1s = gebcn('g27v1').filter(function(g27v1){
+			return g27v1.hash==='#'+idEl.id;
+		});
+		if(g27w2s.every(function(g27w2){
+			return hcn(g27w2,'g27expanded');
+		})){
+			g27v1s.forEach(function(g27v1){
+				acn(gebs('span.showtext',g27v1)[0],'hidethis');
+				rcn(gebs('span.hidetext',g27v1)[0],'hidethis');
+			});
+		} else if(g27w2s.every(function(g27w2){
+			return hcn(g27w2,'g27collapsed');
+		})){
+			g27v1s.forEach(function(g27v1){
+				rcn(gebs('span.showtext',g27v1)[0],'hidethis');
+				acn(gebs('span.hidetext',g27v1)[0],'hidethis');
+			});
+		}
+	});
+}
+
+function toggleG27v1(){
+	var id=this.parentNode.hash.substring(1);
+	var show = gebcn('showtext', this.parentNode)[0];
+	var hide = gebcn('hidetext', this.parentNode)[0];
+	acn(this,'hidethis');
+	if (this===show) {
+		rcn(hide,'hidethis');
+		gebs('div.g27w2.g27collapsed > h3 > span.g27targ',gebi(id)).forEach(function(g27targ){
+			toggleG27.call(g27targ);
+		});
+	} else {
+		rcn(show,'hidethis');
+		gebs('div.g27w2.g27expanded > h3 > span.g27targ',gebi(id)).forEach(function(g27targ){
+			toggleG27.call(g27targ);
+		});
+	}
+	return false;
+}
+
+// SETUP -> G23
+(function(){
+
+	function expand(li) {
+		if (gebtn('ul',li).length===0) { return; }
+		rcn(li, 'collapsed');
+		if (is.ie6 && li.isLast && li.isBranch){
+			rcn(li, 'ie-collapsed-last');
+			acn(li, 'ie-expanded-last');
+		}
+	}
+
+	function collapse(li) {
+		if (gebtn('ul',li).length===0) { return; }
+		acn(li, 'collapsed');
+		if (is.ie6 && li.isLast && li.isBranch){
+			acn(li, 'ie-collapsed-last');
+			rcn(li, 'ie-expanded-last');
+		}
+	}
+
+	function expandCollapse(){
+		// takes a.g23toggler as 'this'
+		var parent = getParent(this,'li');
+		if (!hcn(parent, 'collapsed')){
+			collapse(parent);
+		} else {
+			expand(parent);
+		}
+	}
+
+	function checkUncheck(){
+		var parent = getParent(this, 'li');
+		var subinputs = gebtn('input',parent);
+		for (var c=0;c<subinputs.length;c++){
+			if(!subinputs[c].disabled){
+				subinputs[c].checked = this.checked;
+			}
+		}
+		var subitems = gebtn('li',parent);
+		for (var c=0;c<subitems.length;c++){
+			if (typeof subitems[c].updateCount == 'function') { subitems[c].updateCount(); }
+		}
+		var ancestor = getParent(parent,'li');
+		if (!this.checked){
+			parent = this;
+			while (parent.parentNode){
+				parent = parent.parentNode;
+				if (parent.checkBox) { parent.checkBox.checked = false; }
+			}
+		}else if (ancestor && ancestor.checkBox){
+			subinputs = gebtn('input',ancestor);
+			var allChecked = true;
+			for (var c=0;c<subinputs.length;c++){
+				if (subinputs[c].type != 'checkbox') { continue; }
+				if (subinputs[c] != parent.parentNode.parentNode.checkBox && !subinputs[c].checked) { allChecked = false; }
+			}
+			parent.parentNode.parentNode.checkBox.checked = allChecked;
+		}
+		parent = this;
+		while (parent.parentNode){
+			parent = parent.parentNode;
+			if (typeof parent.updateCount == 'function') { parent.updateCount(); }
+		}
+		parent = null;
+	}
+
+	reg.click("a.g23toggler",expandCollapse);
+
+	reg.click("div.g23 p.exp-coll a.expand-all",function(){
+		var parent = getParent(this, "div.g23");
+		var lis = gebs("ul.g23tree li", parent);
+		for (var i=0; i<lis.length; i++) {
+			expand(lis[i]);
+		}
+		return false;
+	});
+
+	reg.click("div.g23 p.exp-coll a.collapse-all",function(){
+		var parent = getParent(this, "div.g23");
+		var lis = gebs("ul.g23tree li", parent);
+		for (var i=0; i<lis.length; i++) {
+			collapse(lis[i]);
+		}
+		return false;
+	});
+
+	reg.click(".g23check-tree input@type='checkbox'", checkUncheck);
+})();
+
+function sniffG23(){
+	if (hcn(this,'multi')) {
+		var p = elem('p',{'class':'multi exp-coll'});
+		var ex = ltxt.expandAll || "expand all";
+		var cl = ltxt.collapseAll || "collapse all";
+		p.innerHTML = '<a class="expand-all" href="#expand">'+ex+'</a> <a class="collapse-all" href="#collapse">'+cl+'</a>';
+		var g23w4 = gebcn("g23w4",this)[0];
+		g23w4.insertBefore(p, g23w4.firstChild);
+	}
+	var fobj = this;
+	if (hcn(this,'static')){
+		// for static trees
+		var uls = gebcn("g23tree",fobj,'ul');
+		for (var a=0;a<uls.length;a++){
+			var tree = uls[a];
+			var lis = gebtn('li',tree);
+			for (var b=0,li;li=lis[b++];){
+				var isLast = !nextElem(li);
+				if (isLast) { acn(li, 'last'); }
+				if (is.ie6 && isLast) { acn(li, 'ie-'+(hcn(li,'collapsed')?'collapsed':'expanded')+'-last'); }
+				var nodeLink = li.firstChild;
+				if (nodeLink.nodeType != 1) { nodeLink = nextElem(nodeLink); }
+				if (hcn(li,'branch') && nodeLink && nodeLink.href){
+					// build the expand/collapse button
+					var link = elem('a.g23toggler',{'href':nodeLink.href},elem('img',{'src':'/im/a.gif','height':'10','width':'20','alt':'expand / collapse '}));
+					li.insertBefore(link, li.firstChild);
+				}
+			}
+		}
+		return;
+	}
+	var uls = gebcn("g23tree",fobj,'ul');
+	for (var a=0;a<uls.length;a++){
+		var tree = uls[a];
+		var lis = gebtn('li',tree);
+		for (var b=0,li;li=lis[b++];){
+			var isDefaultExpanded = hcn(li, 'default-expanded');
+			var isBranch = false;
+			if (gebtn('ul',li).length>0){
+				// it's a branch if there's a nested <ul>
+				if (isDefaultExpanded) { acn(li, 'branch'); }
+				else { acn(li, 'collapsed branch'); }
+				isBranch = true;
+				var subUl = gebtn('ul',li)[0];
+				subUl.parentNode.removeChild(subUl);
+				li.innerWrap = elem('div.g23x');
+				innerWrap(li, li.innerWrap);
+				li.appendChild(subUl);
+			}
+			var isLast = !nextElem(li);
+			if (isLast) { acn(li, 'last'); }
+			if (is.ie6) { li.isLast = isLast; li.isBranch = isBranch; }
+			if (is.ie6 && li.isLast && li.isBranch && isDefaultExpanded) { acn(li, 'ie-expanded-last'); }
+			else if (is.ie6 && li.isLast && li.isBranch && !isDefaultExpanded) { acn(li, 'ie-collapsed-last'); }
+			if (isBranch){
+				// build the expand/collapse button
+				var link = elem('a.g23toggler',{},elem('img',{'src':'/im/a.gif','height':'10','width':'20','alt':'expand / collapse '}));
+				gebtn('div',li)[0].insertBefore(link, gebtn('div',li)[0].firstChild);
+				if (hcn(tree, 'g23check-tree')){
+					// build the indicator of how many children are checked
+					var countSpan = document.createElement('span');
+					countSpan.className = 'g23checked-count';
+					for (var c=0;c<li.childNodes.length;c++){
+						if (li.childNodes[c].nodeName.toLowerCase()=='ul') { li.sublist = li.childNodes[c]; }
+						if (hcn(li.childNodes[c], 'g23item-extra-info')) { li.extraInfo = li.childNodes[c]; }
+					}
+					li.innerWrap.appendChild(countSpan);
+					li.countSpan = countSpan;
+					countSpan.appendChild(document.createTextNode(' ')); // space, rather than empty string, for safari
+					if (window.opera) { countSpan.innerHTML = '&nbsp;'; } // tickle opera
+					li.updateCount = function(){
+						var count = 0;
+						var inputs = gebs('input@type="checkbox"', this.sublist);
+						for (var b=0; b<inputs.length; b++){ if (inputs[b].checked) { count++; } }
+						inputs = null;
+						if (this.countSpan){
+							if (count  < 1) { this.countSpan.firstChild.data = ' '; if (window.opera) { this.countSpan.innerHTML = '&nbsp;'; } } // safari space, tickle opera
+							if (count == 1) { this.countSpan.firstChild.data = '(1 checked item not shown)'; }
+							if (count  > 1) { this.countSpan.firstChild.data = '('+count+' checked items not shown)'; }
+						}
+					}
+				}
+			}
+			li = null;
+		}
+		if (location.hash) {
+			var target = gebi(location.hash.substring(1));
+			if (target && matches(target, 'ul.g23tree li')) {
+				do {
+					rcn(target,'collapsed');
+					target = getParent(target,'ul.g23tree li');
+				} while (target);
+			}
+		}
+		if (hcn(tree, 'g23check-tree')){
+			var inputs = gebs('input@type="checkbox"', tree);
+			for (var b=0; b<inputs.length; b++){
+				var parent = getParent(inputs[b], 'li');
+				parent.checkBox = inputs[b];
+			}
+			if (location.hash){
+				var target = location.hash.substring(1);
+				for (var b=0;b<lis.length;b++){
+					var li = lis[b];
+					if (li.id == target){
+						var inputs = gebtn('input',li);
+						for (var c=0; c<inputs.length; c++){
+							if (inputs[c].type != 'checkbox') { continue; }
+							inputs[c].checked = true;
+						}
+						var el = li;
+						while (el.parentNode && !hcn(el, 'g23tree')){
+							if (el.nodeName.toLowerCase() == 'li' && hcn(el, 'branch')){
+								rcn(el, 'collapsed');
+								if (is.ie6 && el.isLast && el.isBranch){
+									rcn(el, 'ie-collapsed-last');
+									acn(el, 'ie-expanded-last');
+								}
+							}
+							el = el.parentNode;
+						}
+						var subitems = gebtn('li',li);
+						for (var c=0,subitem;subitem=subitems[c++];){
+							if (hcn(subitem, 'branch')){
+								rcn(subitem, 'collapsed');
+								if (is.ie6 && subitem.isLast && subitem.isBranch){
+									rcn(subitem, 'ie-collapsed-last');
+									acn(subitem, 'ie-expanded-last');
+								}
+							}
+						}
+						inputs = null;
+						el = null;
+					}
+				}
+			}
+			for (var b=0;b<lis.length;b++){
+				var li = lis[b];
+				if (typeof li.updateCount == 'function') { li.updateCount(); }
+				li = null;
+			}
+		}
+		tree = null;
+	}
+
+}
+
+// SETUP -> ROLLOVERS
+var preloaderOn = [];
+var preloaderOff = [];
+var preloaderActive = [];
+var activeImg = [];
+function sniffRollover(){
+	var fobj = this;
+	fobj.rsrc = fobj.src;
+	preloaderOff[fobj.rsrc] = new Image();
+	preloaderOff[fobj.rsrc].src = fobj.rsrc;
+	if (hasClassName(fobj, "rollover")){
+	  preloaderOn[fobj.rsrc] = new Image();
+	  preloaderOn[fobj.rsrc].src = fobj.src.replace(/_off\./,"_on.");
+	  fobj.onmouseout = function(){
+		  if (activeImg[this.imgGroup] != this){
+			  this.src = preloaderOff[this.rsrc].src
+		  }
+	  };
+		fobj.onmouseover = function(){
+			if (activeImg[this.imgGroup] != this){
+				this.src = preloaderOn[this.rsrc].src
+			}
+		};
+	}
+	if (fobj.className.indexOf("active-") > -1){
+	  fobj.imgGroup = fobj.className;
+	  fobj.imgGroup = fobj.imgGroup.replace(/.*active-(.*).*/,"$1");
+	  preloaderActive[fobj.rsrc] = new Image();
+	  preloaderActive[fobj.rsrc].src = fobj.src.replace(/_off\./,"_active.");
+	  if (fobj.className.indexOf("setactive-") > -1){
+		  activeImg[fobj.imgGroup] = fobj;
+		  fobj.src = preloaderActive[fobj.rsrc].src;
+	  }
+	  fobj.onclick = function(){
+			if (this.src != preloaderActive[this.rsrc].src){
+				this.src = preloaderActive[this.rsrc].src;
+				if (activeImg[this.imgGroup]){
+					activeImg[this.imgGroup].src = preloaderOff[activeImg[this.imgGroup].rsrc].src;
+				}
+				activeImg[this.imgGroup] = this;
+			}
+		};
+	}
+}
+
+// SETUP -> GOTO MENU
+function sniffGoto(){
+	var fobj = this;
+	if(hasClassName(fobj, 'showDiv')){
+		addEvent(fobj,"change",function(){
+				var divID = this.options[this.selectedIndex].value.split('#')[1];
+				if (this.currentItem){
+						addClassName(this.currentItem,'hidethis');
+				}
+				if(gebi(divID)){
+					this.currentItem = gebi(divID);
+					removeClassName(this.currentItem,'hidethis');
+				}else{
+					this.currentItem = null;
+				}
+		});
+	}else if(this.className.indexOf('hijax-') > -1){
+		addEvent(fobj,"change",function(){
+			var link = this.options[this.selectedIndex];
+			try{
+				var id = matchClassName(this,/^hijax-(\S*)/)[1];
+				var targetDiv = gebi(id);
+				var h = targetDiv.offsetHeight;
+				targetDiv.innerHTML = '';
+				targetDiv.style.height=h+'px';
+				addClassName(targetDiv, 'hijaxLoading');
+			} catch (ex) {
+				return;
+			}
+
+			if (targetDiv.className.indexOf('hijaxTrue') > -1){
+				var delim = (link.value.indexOf('?') > -1) ? '&' : '?';
+				var linkHref = link.value+delim+"hijax=true";
+			}else{
+				var linkHref = link.value;
+			}
+
+			if(link.value != "" && link.getAttribute("value")){
+				xhr(linkHref, function(rdata,obj){
+					// succeed
+					var el = getElementByIdFromString(rdata, id);
+					if (!el) { window.location=link.href; }
+					rdata = el.innerHTML;
+					hijaxCache[linkHref+' '] = rdata;
+					removeClassName(targetDiv, 'hijaxLoading');
+					targetDiv.style.height='auto';
+					targetDiv.innerHTML = rdata;
+					reg.rerun(targetDiv);
+					if(gebi('linkToPage') && !hasClassName(targetDiv, 'noPermalink')){
+						gebi('linkToPage').href = link.value;
+					}
+				},function(){
+					// fail
+					window.location=link.value;
+				});
+			}
+		});
+	}else{
+		addEvent(fobj,"change",function(){
+			if(this.options[this.selectedIndex].value != "" && this.options[this.selectedIndex].getAttribute("value")){
+				document.location = this.options[this.selectedIndex].value;
+			}
+		});
+	}
+}
+
+// SETUP -> GOTO UL MENU
+function sniffGotoUL(){
+	var fobj = this;
+	var li = getChildNodesByTagName(fobj,'li');
+	var options = "";
+	var heading = prevElem(fobj);
+	if(heading && hasClassName(heading, 'listTitle') && gebtn('a',heading)[0]){
+		options = options+'<option value="'+gebtn('a',heading)[0].href+'" class="gotoHeading">'+heading.innerHTML+'</option>\n';
+	}else if(heading && hasClassName(heading, 'listTitle')){
+		options = options+'<option value="" class="gotoHeading">'+heading.innerHTML+'</option>\n';
+	}
+	var ulclass = "goto";
+	var hi = (this.className.indexOf('hijax-') > -1) ? ' '+matchClassName(this,/^(hijax-\S*)/)[1] : '';
+	var form = elem('form',{'action':''});
+	fobj.parentNode.insertBefore(form, fobj);
+	if(hasClassName(fobj, 'showDiv')){
+		ulclass = "showDiv";
+		var exdiv = document.createElement('div');
+		fobj.parentNode.insertBefore(exdiv, fobj);
+	}
+	for (var n=0;n<li.length;n++){
+		var sel = (hasClassName(li[n], 'selected'))? ' selected="selected"' : '';
+		if (gebtn('a',li[n])[0]){
+			options = options+'<option'+sel+' value="'+gebtn('a',li[n])[0].href+'">'+gebtn('a',li[n])[0].innerHTML+'</option>';
+		}else if (li[n].innerHTML){
+			options = options+'<option'+sel+' value="">'+li[n].innerHTML+'</option>';
+		}
+		if (hasClassName(fobj, 'showDiv') && gebtn('div',li[n])[0]){
+			exdiv.appendChild(gebtn('div',li[n])[0]);
+		}
+	}
+	var listID = (this.id) ? ' id="'+this.id+'"' : '';
+	form.innerHTML = '<select class="'+ulclass+hi+'"'+listID+'>'+options+'</select>';
+	fobj.parentNode.removeChild(fobj);
+	reg.rerun(form);
+}
+
+// SETUP -> IMG BOX & IMG ZOOM
+var zimg = 1;
+function sniffImgbox(){
+	var imgdiv = this;
+	var img = gebtn('img',imgdiv)[0];
+	imgdiv.style.background  = 'url('+img.src+') no-repeat';
+	imgdiv.style.width = img.width+'px';
+	imgdiv.style.height = img.height+'px';
+	img.style.visibility = 'hidden';
+
+	if (is.ie56 && hasParent(imgdiv,'div','g20w1')){
+		var wrapdiv = hasParent(imgdiv,'div','g20w1');
+		wrapdiv.style.width = ((img.width * 1) + 12) + 'px';
+		addClassName(wrapdiv, 'showcorners');
+	}
+
+	if (hasClassName(imgdiv,'imgcorners')){
+		imgdiv.innerHTML = '<div class="imgw1"><div class="imgw2"><div class="imgw3"><div class="imgw4" style="width:'+img.width+'px;height:'+img.height+'px">'+imgdiv.innerHTML+'</div></div></div></div>';
+	}
+	if (hasClassName(imgdiv,'imgzoom')){
+		var lgimg = gebtn('a',imgdiv)[0].href;
+		var lgDiv = document.createElement('div');
+		lgDiv.className = 'zoomimg k2';
+		lgDiv.id = 'zoomimg'+zimg;
+		var lgblur = document.createElement('a');
+		lgblur.style.backgroundImage = 'none';
+		lgblur.onclick = function(){return false;}
+		var lgImg = document.createElement('img');
+		lgImg.src = lgimg;
+		lgblur.appendChild(lgImg);
+		lgDiv.appendChild(lgblur);
+		imgdiv.appendChild(lgDiv);
+		if (hasClassName(imgdiv,'imgright')){
+			imgdiv.className = imgdiv.className+' hAlignRight x10';
+		}else{
+			imgdiv.className = imgdiv.className+' x-10';
+		}
+		imgdiv.className = imgdiv.className+' vAlignTopBottom y-10 k2over-zoomimg'+zimg;
+		sniffK2.call(imgdiv);
+		var firstA = gebtn('a',imgdiv)[0];
+		firstA.onclick = function(){return false;}
+		firstA.style.width = img.width+'px';
+		firstA.style.height = img.height+'px';
+		zimg++;
+	}
+}
+
+// KILL INTCMP FROM SOCIAL E10 PRINT LINKS
+reg.click('div.e10 a',function(){
+	this.href = this.href.replace(/(intcmp=[^&]+)/,"").replace(/\&+/g,"%26").replace(/%3F%26/g,"%3F");
+});
+
+
+// SETUP -> SHARE THIS PAGE
+function sniffSharePage() {
+	var titleDiv = this;
+	if(typeof sharetxt!='undefined'){
+		var share_url = getSafelyEncodedString(location.href).replace(/%26/g,"&").replace(/intcmp%3D[^&]+/g,"").replace(/\&+/g,"%26").replace(/%3F%26/g,"%3F");
+		var share_title = getSafelyEncodedString(document.title);
+		var shareThisPage = '\
+		<div class="sharepagew1 share-mailto">\
+		<table summary="layout" cellpadding="0" cellspacing="0"><tr>\
+		<td id="share-mailto"><a href="mailto:?subject='+sharetxt[0]+'{pagetitle}&body='+sharetxt[1]+'%0A%0A'+share_url+'" class="sharelink mailto" title="'+sharetxt[2]+'"></a></td>\
+		<td id="share-technorati"><a href="http://technorati.com/search/'+share_url+'" class="sharelink technorati" title="'+sharetxt[3]+'"></a></td>\
+		<td id="share-delicious"><a href="http://del.icio.us/post?v=4;url='+share_url+';title='+share_title+'" class="sharelink delicious" title="'+sharetxt[4]+'"></a></td>\
+		<td id="share-digg"><a href="http://digg.com/submit?phase=2&amp;url='+share_url+'&amp;title='+share_title+'" class="sharelink digg" title="'+sharetxt[5]+'"></a></td>\
+		<td id="share-slashdot"><a href="http://slashdot.org/bookmark.pl?title='+share_title+'&amp;url='+share_url+'" class="sharelink slashdot" title="'+sharetxt[6]+'"></a></td>\
+		';
+		var links = gebtn('link');
+		var feed_url = null;
+		var feed_title = null;
+		var numFeeds = 0;
+		for (var a=0; a<links.length; a++) {
+			if (''+links[a].rel.toLowerCase() == 'alternate') {
+				numFeeds++;
+				if (!feed_url) {
+					feed_url = links[a].href;
+					feed_title = links[a].title;
+				}
+			}
+		}
+		if (numFeeds > 1) {
+			shareThisPage += '<td id="share-multiple-feeds"><a href="#" title="'+sharetxt[7]+'"></a></td>';
+		} else if (numFeeds == 1) {
+			shareThisPage += '<td id="share-feed"><a href="'+feed_url+'" class="sharelink feed" title="'+feed_title+'"></a></td>';
+		} else {
+			shareThisPage += '<td id="share-blank"> </td>';
+		}
+		shareThisPage += '</tr></table></div>';
+
+		if(hasClassName(document.body,'a0v3')){return;}// not on media shells
+		titleDiv.id='sharepage';
+		if (is.ie5) { return; }
+		if (typeof shareThisPage == 'undefined') { return; }
+		share_title = (gebtn('h1',titleDiv)[0]) ? elemText(gebtn('h1',titleDiv)[0]) : share_title;
+		share_title = share_title.normalize();
+		shareThisPage = shareThisPage.replace(/{pagetitle}/,share_title);
+		var metas = gebtn('meta');
+		for (var a=0;a<metas.length;a++) {
+			if (""+metas[a].name.toLowerCase()=='share-this-page' && ""+metas[a].content.toLowerCase()=='no') { return; }
+		}
+		var shareDiv = document.createElement('div');
+		shareDiv.className = 'sharepage';
+		titleDiv.appendChild(shareDiv);
+		shareDiv.innerHTML = shareThisPage;
+		var mult = gebi("share-multiple-feeds");
+		if (mult) {
+			var lnk = gebtn('a',mult)[0];
+			lnk.titleDiv = titleDiv;
+			lnk.mult = mult;
+			addEvent(lnk,'click',function(e){
+				if (!this.feedListDiv) {
+					var links = gebtn('link');
+					var feedLinks = [];
+					var feedListStr = '<ul>';
+					for (var a=0; a<links.length; a++) {
+						if (''+links[a].rel.toLowerCase() == 'alternate') {
+							feedLinks[feedLinks.length] = links[a];
+						}
+					}
+					for (var a=0; a<feedLinks.length; a++) {
+						feedListStr += '<li';
+						if (a==0) { feedListStr += ' class="first-child"'; }
+						else if (a==feedLinks.length - 1) { feedListStr += ' class="last-child"'; }
+						feedListStr += '><div><a class="sharelink feed" href="'+feedLinks[a].href+'">'+feedLinks[a].title+'</a></div></li>';
+					}
+					feedListStr += '</ul><span class="x1"></span><span class="x2"></span>';
+					var feedListDiv = elem('div',{'id':'share-feed-list'});
+					feedListDiv.innerHTML = feedListStr;
+					this.titleDiv.appendChild(feedListDiv);
+					this.feedListDiv = feedListDiv;
+					addClassName(this.mult,'showing');
+					tagOmnitureCustomLinksForSharePage(this.feedListDiv);
+				} else {
+					if (hasClassName(this.feedListDiv,'hidethis')) {
+						removeClassName(this.feedListDiv,'hidethis');
+						addClassName(this.mult,'showing');
+					} else {
+						addClassName(this.feedListDiv,'hidethis');
+						removeClassName(this.mult,'showing');
+					}
+				}
+				cancelDefault(e);
+			});
+		}
+		tagOmnitureCustomLinksForSharePage(shareDiv);
+	}
+}
+function tagOmnitureCustomLinksForSharePage(el){
+	if (typeof window.s_co!='undefined') {
+		var custLink = function(e) {
+			var prepend = this.className.replace(/sharelink /,"")+": ";
+			s_linkType='o';
+			s_linkName=prepend+this.href;
+			s_lnk=s_co(this);
+			s_gs(s_account);
+		}
+		var links = gebtn('a',el);
+		for (var a=0; a<links.length; a++) {
+			if (!hasClassName(links[a], 'sharelink')) { continue; }
+			addEvent(links[a], 'click', custLink);
+		}
+	}
+}
+
+// SETUP -> IMG SWAP
+var imgpreload = [];
+function sniffImgswap() {
+	var link = this;
+	if (link.src){
+		imgpreload[link.id] = new Image();
+		imgpreload[link.id].src = link.src;
+	}else{
+		link.imgref = link.className.replace(/[^ ]* ?([^ ]+_\d).*/,"$1").split('_');
+		link.src = gebi(link.imgref[0]).src.replace(/_\d+\./,"_"+link.imgref[1]+".");
+		imgpreload[link.src] = new Image();
+		imgpreload[link.src].src = link.src;
+		if (!hasClassName(link,'swapOnclick')){
+			link.onmouseover = function(){
+				gebi(this.imgref[0]).src = imgpreload[this.src].src;
+			}
+			link.onmouseout = function(){
+				gebi(this.imgref[0]).src = imgpreload[this.imgref[0]].src;
+			}
+			if (!hasClassName(link,'followLink')){
+				link.onclick = function(){return false;}
+			}
+		}else{
+			link.onclick = function(){
+				imgpreload[this.imgref[0]].src = gebi(this.imgref[0]).src = imgpreload[this.src].src;
+				return false;
+			}
+		}
+	}
+}
+
+// SETUP -> IMG MULTI SWAP
+function sniffMultiswap(){
+	var fobj = this;
+	if(fobj.src){
+		imgpreload[fobj.id] = new Image();
+		imgpreload[fobj.id].src = fobj.src;
+		if(fobj.className.indexOf('mswap-') > -1){
+			var aimg = fobj.className.split('mswap-')[1].split('-')[0].split(' ')[0];
+			fobj.src = fobj.src.replace(/[^\/]+(\.....?)$/,aimg+'$1');
+		}
+	}
+}
+
+// CLICK -> IMG MULTI SWAP
+function clickMultiswap(){
+	this.targetid = this.className.split('mswap-')[1].split('-')[0].split(' ')[0];
+	var prefixid = this.targetid.replace(/(.*)\d+?/,'$1');
+	this.pre = prefixid;
+	if(this.className.indexOf('mswap-'+this.targetid+'-') > -1){
+		var imgfile = this.className.split('mswap-'+this.targetid+'-')[1].split(' ')[0];
+	}else{
+		var imgfile = this.href.replace(/.*\/([^\/]+)?/,'$1').split('.')[0];
+	}
+	this.src = gebi(this.targetid).src.replace(/[^\/]+(\.....?)$/,imgfile+'$1');
+	imgpreload[this] = new Image();
+	imgpreload[this].src = this.src;
+
+	var n = 1;
+	while(gebi(this.pre+n)){
+		gebi(this.pre+n).src = imgpreload[this.pre+n].src;
+		n++;
+	}
+	gebi(this.targetid).src = this.src;
+	if (hasClassName(this,'followLink') || this.target != ''){
+	}else{
+		cancelDefault(e);
+	}
+}
+
+// SETUP -> TOGGLE ALL CHECKBOXES IN A TABLE
+function sniffToggleAllCheckboxesInTable(){
+	var lnk = this;
+	var pTab = lnk.parentNode;
+	while(pTab.nodeName.toLowerCase()!='table'){pTab=pTab.parentNode;}
+	lnk.checkStatus=true;
+	lnk.titleSelect='Select All';
+	lnk.titleUnselect='Unselect All';
+	lnk.title=lnk.titleSelect;
+	lnk.img=gebtn('img',lnk)[0];
+	lnk.img.alt=lnk.titleSelect;
+	var inputs=gebtn('input',pTab);
+	lnk.checkboxes=[];
+	for(var b=0;b<inputs.length;b++){
+		if('checkbox'==inputs[b].type){lnk.checkboxes.push(inputs[b]);}
+	}
+	lnk.onclick=function(){
+		for(var c=0;c<this.checkboxes.length;c++){
+			this.checkboxes[c].checked=this.checkStatus;
+		}
+		this.title=(this.checkStatus)?this.titleUnselect:this.titleSelect;
+		this.img.alt=(this.checkStatus)?this.titleUnselect:this.titleSelect;
+		this.checkStatus=!this.checkStatus;
+		return false;
+	}
+}
+
+// SETUP -> EXPANDIBLE / COLLAPSIBLE PC1
+function sniffExpandCollapsePc1(){
+	addClassName(this,'pc1collapsed');
+	removeClassName(this,'pc1collapsible');
+	var h=gebtn('h2',this)[0];
+	var lnk=elem('a.pc1toggler',{'href':'#'},' '+elemText(h));
+	var im=elem('img',{'src':imdir+'/pc1-expand.gif','alt':'','class':'pc1expand-collapse-icon','border':'0'});
+	im.srcCollapse=imdir+'/pc1-collapse.gif';
+	im.srcExpand=im.src;
+	lnk.titleCollapse='Collapse this section';
+	lnk.titleExpand='Expand this section';
+	lnk.title=lnk.titleExpand;
+	lnk.insertBefore(im,lnk.firstChild);
+	lnk.im=im;
+	lnk.div=this;
+	h.innerHTML='';
+	h.appendChild(lnk);
+	var outerContainer=gebcn('cornerBR',this)[0];
+	var p=elem('p',{'class':'pc1expand-note'},' Click the plus icon to expand this section.');
+	var innerContainer = elem('div.pc1container');
+	innerWrap(outerContainer,innerContainer);
+	outerContainer.appendChild(p);
+}
+
+reg.click('a.pc1toggler',function(){
+	if(hasClassName(this.div,'pc1expanded')){
+		addClassName(this.div,'pc1collapsed');
+		removeClassName(this.div,'pc1expanded');
+		this.title=this.titleExpand;
+		this.im.src=this.im.srcExpand;
+	}else{
+		addClassName(this.div,'pc1expanded');
+		removeClassName(this.div,'pc1collapsed');
+		this.title=this.titleCollapse;
+		this.im.src=this.im.srcCollapse;
+	}
+	return false;
+});
+
+// SETUP -> CLASS TOGGLE
+function sniffClassTool(){
+	var fobj = this;
+	var cls = fobj.className.split(' ');
+	for (var v=0;v<cls.length;v++){
+		if (cls[v].indexOf('cTool-') == 0){
+			var objs = cls[v].split('cTool-')[1].split('-');
+			if(objs[objs.length - 1].indexOf('RMV') > -1 || objs[objs.length - 1].indexOf('TGL') > -1 || objs[objs.length - 1].indexOf('ADD') > -1){
+				var action = "click";
+			}else{
+				var action = objs[objs.length - 1];
+				objs.pop();
+			}
+			fobj.objs = objs;
+			fobj.tid = objs.shift();
+			var thistest = fobj.tid;
+			if(fobj.tid == "this"){
+				fobj.tid = fobj;
+			}
+			if (action == 'hover' && !is.ie56 && thistest == "this"){
+				// then do this hover in the css!
+			}else if(action == 'hover'){
+				addEvent(fobj,"mouseout",function(e){
+					classomatic(this.tid,this.objs);
+				});
+				var action = "mouseover";
+				addEvent(fobj,action,function(e){
+					classomatic(this.tid,this.objs);
+					if (action == 'click'){
+						cancelDefault(e);
+					}
+				});
+			}else{
+				addEvent(fobj,action,function(e){
+					classomatic(this.tid,this.objs);
+					if (action == 'click'){
+						cancelDefault(e);
+					}
+				});
+			}
+		}
+	}
+}
+function classomatic(id,todo){
+	if(!gebi(id)){
+		var tobj = id;
+	}else{
+		var tobj = gebi(id);
+	}
+	for (var v=0;v<todo.length;v++){
+		if(todo[v].indexOf('RMV') == 0){
+			removeClassName(tobj, todo[v].substring(3,todo[v].length));
+		}else if(todo[v].indexOf('ADD') == 0){
+			addClassName(tobj, todo[v].substring(3,todo[v].length));
+		}else if(todo[v].indexOf('TGL') == 0){
+			if (hasClassName(tobj, todo[v].substring(3,todo[v].length))){
+				removeClassName(tobj, todo[v].substring(3,todo[v].length));
+			}else if (!hasClassName(tobj, todo[v].substring(3,todo[v].length))){
+				addClassName(tobj, todo[v].substring(3,todo[v].length));
+			}
+		}
+	}
+}
+
+// SETUP -> GENERIC TOGGLER
+function sniffToggler(){
+	var fobj = this;
+	if (fobj.toggler) { return; }
+	if(hasClassName(fobj, 'showThis')){
+			fobj.toggler = fobj.href.split('#')[1];
+			addEvent(fobj,"click",function(e){
+				var objRoot = this.toggler.replace(/\d+?/,"");
+				var n = 1;
+				while(gebi(objRoot+n)){
+					if(this.toggler == objRoot+n){
+						removeClassName(gebi(this.toggler), 'hidethis');
+					}else{
+						addClassName(gebi(objRoot+n), 'hidethis');
+					}
+					n++;
+				}
+				cancelDefault(e);
+			});
+	}else{
+		var cls = fobj.className.split(' ');
+		for (var v=0;v<cls.length;v++){
+			if (cls[v].indexOf('objects-') == 0){
+				fobj.toggler = cls[v].replace(/objects-/,"");
+			}
+		}
+		addEvent(fobj,"click",function(e){
+			var tid = this.toggler.split('-');
+			for (var i=0; i<tid.length; i++){
+				if (tid[i].indexOf('ALL') > -1){
+					var tAll = [];
+					var x = 1;
+					while (gebi(tid[i].split('ALL')[0]+x)){
+						tAll.push(tid[i].split('ALL')[0]+x);
+						x++;
+					}
+					for (var j=0; j<tAll.length; j++){
+						toggler(this,tAll[j]);
+					}
+				}else{
+					toggler(this,tid[i]);
+				}
+			}
+			cancelDefault(e);
+		});
+	}
+}
+function toggler(fobj,id){
+	if (hasClassName(gebi(id), 'hidethis') && !hasClassName(fobj, 'hideall') || hasClassName(fobj, 'showall')){
+		removeClassName(gebi(id), 'hidethis');
+	}else if (!hasClassName(gebi(id), 'hidethis') || hasClassName(fobj, 'hideall')){
+		addClassName(gebi(id), 'hidethis');
+	}
+}
+
+// SETUP -> UL.LISTFADE
+var ulid = 0;
+function sniffListfade(){
+	var fobj = this;
+	ulid++;
+	var li = gebtn('li',fobj);
+	var x = 0;
+	while (li[x]){
+		li[x].id = 'ulfade'+ulid+(x+1);
+		if (x==0){
+			addClassName(li[x], 'xfadefirst');
+			var p = 'pause5';
+			if (fobj.className.indexOf('pause') > -1){
+				p = getClassContains(fobj,'pause');
+			}
+			addClassName(li[x], p);
+		}else{
+			addClassName(li[x], 'xfade');
+		}
+		x++;
+	}
+	sniffXfade.call(li[0]);
+}
+
+// SETUP -> AJAX INCLUDE
+function sniffLoadUrl(){
+	var fobj = this;
+	if(fobj.href.indexOf('#') > -1){
+		var thehref = fobj.href.split('#')[0];
+		var id = fobj.href.split('#')[1];
+		getfile(thehref,function(rdata,objs){
+			if(objs[0]){
+				rdata = getRequestObject(objs[0],rdata);
+				var wclass = rdata.className;
+				rdata = rdata.innerHTML;
+			}
+			if(objs[1].parentNode.className.indexOf('g32auto') > -1 && objs[0]){
+				objs[1].parentNode.className = wclass;
+				objs[1].parentNode.innerHTML = rdata;
+			}else{
+				var insertDIV = elem('div');
+				objs[1].parentNode.insertBefore(insertDIV, objs[1]);
+				insertDIV.innerHTML = rdata;
+				reg.rerun(insertDIV);
+				objs[1].parentNode.removeChild(objs[1]);
+			}
+		},[id,fobj]);
+	}
+}
+
+// SETUP -> FORM AJAXER
+function sniffFormHijax(){
+	var fobj = this;
+	addEvent(fobj,"submit",function(e){
+		var targetDiv = getClassContains(this, "gform-").split('gform-')[1];
+		var tDivObj = gebi(targetDiv);
+		var hjx = (tDivObj.className.indexOf('hijaxTrue') > -1) ? '&hijax=true' : '';
+		var h = tDivObj.offsetHeight;
+		tDivObj.innerHTML = '';
+		tDivObj.style.height=h+'px';
+		addClassName(tDivObj, 'hijaxLoading');
+
+		if(hasParent(this,targetDiv)){
+			var findSubmits = gebtn('input',this);
+			var foundSubmits = [];
+			for (i=0; i<findSubmits.length; i++){
+				if(findSubmits[i].type == 'submit'){
+					foundSubmits.push(findSubmits[i]);
+				}
+			}
+			for (i=0; i<foundSubmits.length; i++){
+				addClassName(foundSubmits[i], 'disabled');
+			}
+		}
+		getfile(this.action+'?'+getFormData(this)+hjx, function(rdata,fvar){
+			if(rdata.indexOf(targetDiv) > -1){
+				rdata = getRequestObject(targetDiv,rdata).innerHTML;
+			}
+			var tDivObj = gebi(targetDiv);
+			removeClassName(tDivObj, 'hijaxLoading');
+			tDivObj.style.height='auto';
+			tDivObj.innerHTML = rdata;
+			reg.rerun(tDivObj);
+		},false,false,true);
+		cancelDefault(e);
+	});
+}
+
+// SETUP -> XFADE
+var xfade = [];
+var xfadeObj = [];
+var xfadeLoop = [];
+var xfadeStop = [];
+function sniffXfade(){
+	var fobj = this;
+	if ((fobj.id.substring((fobj.id.length - 1),fobj.id.length) * 1) == 1){
+		var transparent = false;
+		var bgforie;
+		var pause = 10000;
+		var id =  fobj.id.substring(0,(fobj.id.length - 1));
+		var cls = fobj.className.split(' ');
+		for (var v=0;v<cls.length;v++){
+			if (cls[v].indexOf("pause") == 0){
+				pause = cls[v].replace(/pause(.*)$/,"$1");
+				pause = pause * 1000;
+			}else if (cls[v].indexOf("transparent") == 0){
+				transparent = true;
+			}else if (cls[v].indexOf(".jpg") == 0 || cls[v].indexOf(".gif") == 0){
+				bgforie = cls[v];
+			}
+		}
+		var xf = 1;
+		while (gebi(id+xf)){
+			xfadeObj[id+xf] = [gebi(id+xf),0];
+			xfadeObj[id+xf][0].onmouseover = function(){if(xfadeStop[id][0] != -1){xfadeStop[id][0] = 0;}}
+			xfadeObj[id+xf][0].onmouseout  = function(){if(xfadeStop[id][0] != -1){xfadeStop[id][0] = 1;}}
+			// transparent obj
+			if (transparent){
+				if (is.oldmoz){
+					setopacity(xfadeObj[id+xf][0],1);
+					xfadeObj[id+xf][0].style.visibility = "hidden";
+				}
+				if (bgforie && is.iewin){
+					xfadeObj[id+xf][0].style.backgroundImage = 'url('+bgforie+')';
+				}
+				if (is.oldmoz && xf == 1){
+					xfadeObj[id+xf][0].style.visibility = "visible";
+				}
+			}
+			xf++;
+		}
+		xf--;
+		xfade[id] = [xf,1,pause];
+		if (gebi(id+'Total')){
+			gebi(id+'Total').innerHTML = xf;
+		}
+		if (gebi(id+'Back')){
+			gebi(id+'Back').onclick = function(){
+				xfadeStop[id] = [-1,-1];
+				clearTimeout(xfadeLoop[id]);
+				xfader(id);
+				return false;
+			};
+		}
+		if (gebi(id+'Next')){
+			gebi(id+'Next').onclick = function(){
+				xfadeStop[id] = [-1,1];
+				clearTimeout(xfadeLoop[id]);
+				xfader(id);
+				return false;
+			};
+		}
+		xfadeStop[id] = [1,1];
+		xfadeLoop[id] = setTimeout('xfader(\''+id+'\')',pause);
+	}
+}
+function xfader(id){
+	// define this/next frame
+	var nx = xfade[id][1] + xfadeStop[id][1];
+	if(nx > xfade[id][0]){
+		nx = 1;
+	}
+	if(nx < 1){
+		nx = xfade[id][0];
+	}
+	var stillfading = false;
+	if (xfadeStop[id][0] == 0 && xfadeObj[id+nx][1] != 0){
+		var stillfading = true;
+	}
+	var ox = xfade[id][1];
+	if (xfadeObj[id+ox][1] == 0){
+		xfadeObj[id+ox][1] = 1;
+	}
+	if (xfadeStop[id][0] != 0 || stillfading){
+		// set up objects
+		if (xfadeObj[id+nx][1] == 0){
+			if (!is.oldmoz){
+				setopacity(xfadeObj[id+nx][0],.1);
+			}
+			xfadeObj[id+nx][0].style.visibility = "visible";
+			xfadeObj[id+ox][0].style.zIndex = 2;
+			xfadeObj[id+nx][0].style.zIndex = 10;
+		}
+		// if skip to next
+		if (xfadeStop[id][0] == -1){
+			xfadeObj[id+nx][1] = 1;
+		}else{
+			if (is.safari || is.oldmoz || is.ns6 || is.iemac){
+				xfadeObj[id+nx][1] = 1;
+			}else{
+				xfadeObj[id+nx][1] = xfadeObj[id+nx][1] + .2;
+			}
+		}
+
+		// set opac
+		if (is.anymoz && xfadeObj[id+nx][1] == 1){
+			if (!is.oldmoz){
+				setopacity(xfadeObj[id+nx][0],.99);
+			}
+		}else{
+			setopacity(xfadeObj[id+nx][0],xfadeObj[id+nx][1]);
+		}
+		// if fading else, complete and pause
+		if (xfadeObj[id+nx][1] < 1){
+			setTimeout('xfader(\''+id+'\')',120);
+		}else{
+			xfade[id][1] = nx;
+			xfadeObj[id+ox][0].style.visibility = "hidden";
+			xfadeObj[id+ox][1] = 0;
+			if (gebi(id+'This')){
+				gebi(id+'This').innerHTML = nx;
+			}
+			if (xfadeStop[id][0] != 0){
+				xfadeStop[id] = [1,1];
+				xfadeLoop[id] = setTimeout('xfader(\''+id+'\')',xfade[id][2]);
+			}
+		}
+	}
+	// if paused
+	if(xfadeStop[id][0] == 0){
+		clearTimeout(xfadeLoop[id]);
+		xfadeLoop[id] = setTimeout('xfader(\''+id+'\')',200);
+	}
+}
+
+// BUBBLE -> LINK AJAXER
+var hijaxCache = {};
+function hijaxLink(ev){
+var link = this;
+	if (hasClassName(link, 'noHijax')) { return true; }
+	if (this.target) { return true; }
+	try{
+		if (link.className.indexOf('hijax-') > -1){
+			var hijaxEl = this;
+		}else{
+			var hijaxEl = getParent(link, "@class*='hijax-'");
+		}
+		var id = matchClassName(hijaxEl,/^hijax-(\S*)/)[1];
+		var targetDiv = gebi(id);
+		if (targetDiv.className.indexOf('hijaxTrue') > -1){
+			var delim = (link.href.indexOf('?') > -1) ? '&' : '?';
+			var linkHref = link.href+delim+"hijax=true";
+		}else{
+			var linkHref = link.href;
+		}
+		var h = targetDiv.offsetHeight;
+		targetDiv.innerHTML = '';
+		targetDiv.style.height=h+'px';
+		addClassName(targetDiv, 'hijaxLoading');
+	} catch (ex) {
+		return true;
+	}
+
+	var hstring = linkHref+' ';
+	if (!hijaxCache[hstring]){
+		xhr(linkHref, function(rdata,obj){
+			// succeed
+			var el = getElementByIdFromString(rdata, id);
+			if (!el) { window.location=link.href; }
+			rdata = el.innerHTML;
+			hijaxCache[hstring] = rdata;
+			removeClassName(targetDiv, 'hijaxLoading');
+			targetDiv.style.height='auto';
+			targetDiv.innerHTML = rdata;
+			reg.rerun(targetDiv);
+			if(gebi('linkToPage') && !hasClassName(targetDiv, 'noPermalink')){
+				gebi('linkToPage').href = link.href;
+			}
+		},function(){
+			// fail
+			window.location=link.href;
+		});
+		return false;
+	}else{
+		targetDiv.innerHTML = hijaxCache[hstring];
+		removeClassName(targetDiv, 'hijaxLoading');
+		reg.rerun(targetDiv);
+		if(gebi('linkToPage') && !hasClassName(targetDiv, 'noPermalink')){
+			gebi('linkToPage').href = link.href;
+		}
+		return false;
+	}
+}
+
+// BUBBLE -> SPRITE SWAP
+function spriteOver(){
+	this.style.left = (this.width)/2 * -1 +'px';
+}
+function spriteOut(){
+	this.style.left = 0+'px';
+}
+
+// event handler funcs for .jscal
+(function(){
+	var calendarEls = [];
+	function launchCal(e) {
+		var id = this.id;
+		if (!id) { throw 'date field missing id attribute'; }
+		if (calendarEls[id] && calendarEls[id].parentNode) { return; }
+		for (var oid in calendarEls) {
+			if (id == oid){continue;}
+			if (calendarEls[oid] && calendarEls[oid].parentNode) {
+				calendarEls[oid].parentNode.removeChild(calendarEls[oid]);
+				calendarEls[oid] = null;
+			}
+		}
+		var parentInputBox = getParent(this,'div.labeled-input');
+		if(parentInputBox){addClassName(parentInputBox,'has-jscal');}
+		if (this.value) { var time = Date.parse(this.value); var inpDate = (!isNaN(time)) ? new Date(time) : new Date(); }
+		else { var inpDate = new Date(); }
+
+		var rangeId = matchClassName(this,/^range-(.+)/);
+		if (rangeId) {
+			var rangeEl = gebi(rangeId[1]);
+			if(!rangeEl){throw 'no element found with id="'+rangeId[1]+'"';}
+			var startDate,endDate;
+			var startArr = gebcn('jscal-start', rangeEl);
+			var endArr = gebcn('jscal-end', rangeEl);
+			if (startArr.length) {
+				var time = Date.parse(elemText(startArr[0]));
+				if (isNaN(time)) { throw 'Date.parse("'+elemText(startArr[0])+'") returns NaN'; }
+				startDate=new Date(time);
+			}
+			if (endArr.length) {
+				var time = Date.parse(elemText(endArr[0]));
+				if (isNaN(time)) { throw 'Date.parse("'+elemText(endArr[0])+'") returns NaN'; }
+				endDate=new Date(time);
+			}
+			if (startDate && startDate.getTime() > inpDate.getTime()) { inpDate = startDate.diffDay(0); }
+			if (endDate && endDate.getTime() < inpDate.getTime()) { inpDate = endDate.diffDay(0); }
+			if (startDate && endDate && startDate.getTime() > endDate.getTime()) { throw 'whoops! start date is less than end date'; }
+		}
+		var myFormat = defaultDateFormat;
+		var formatId = matchClassName(this,/^format-(.+)/);
+		if (formatId) {
+			var formatEl = gebi(formatId[1]);
+			if(!formatEl){throw 'no element found with id="'+formatId[1]+'"';}
+			myFormat = elemText(formatEl);
+		}
+
+		calendarEls[id] = (new Calendar(inpDate, startDate, endDate)).getCalendarTable();
+		calendarEls[id].inp = this;
+		this.parentNode.appendChild(calendarEls[id]);
+		addEvent(calendarEls[id],'click',function(e){
+			var targ = getTarget(e);
+			if (targ.date && getParent(targ, '.jscal-inrange')) {
+				this.inp.value = targ.date.format(myFormat);
+				calendarEls[id].parentNode.removeChild(calendarEls[id]);
+			}
+		});
+	}
+	function closeCal(e){
+		var targ = getTarget(e);
+		var parJscalTable = getParent(targ, 'div.jscal-x1');
+		if (parJscalTable || matches(targ, 'input.jscal@type="text", table.jscal, div.jscal-x1')) { return; }
+		for (var id in calendarEls) {
+			if (calendarEls[id] && calendarEls[id].parentNode) {
+				calendarEls[id].parentNode.removeChild(calendarEls[id]);
+				calendarEls[id] = null;
+			}
+		}
+	}
+	reg.focus('input.jscal@type="text"', launchCal);
+	reg.focus('body', closeCal);
+	reg.click('body', closeCal);
+
+})();
+
+(function(){
+	function animate(collapsing, expanding) {
+		removeClassName(collapsing, 'g39exp');
+		removeClassName(expanding, 'g39coll');
+		addClassName(collapsing, 'g39t1');
+		addClassName(expanding, 'g39t6');
+		var inc = 20;//ms
+		window.setTimeout(function() { collapsing.className = collapsing.className.replace(/g39t1/, "g39t2");   expanding.className = expanding.className.replace(/g39t6/, "g39t5");  }, inc*1);
+		window.setTimeout(function() { collapsing.className = collapsing.className.replace(/g39t2/, "g39t3");   expanding.className = expanding.className.replace(/g39t5/, "g39t4");  }, inc*2);
+		window.setTimeout(function() { collapsing.className = collapsing.className.replace(/g39t3/, "g39t4");   expanding.className = expanding.className.replace(/g39t4/, "g39t3");  }, inc*3);
+		window.setTimeout(function() { collapsing.className = collapsing.className.replace(/g39t4/, "g39t5");   expanding.className = expanding.className.replace(/g39t3/, "g39t2");  }, inc*4);
+		window.setTimeout(function() { collapsing.className = collapsing.className.replace(/g39t5/, "g39t6");   expanding.className = expanding.className.replace(/g39t2/, "g39t1");  }, inc*5);
+		window.setTimeout(function() { collapsing.className = collapsing.className.replace(/g39t6/, "g39coll"); expanding.className = expanding.className.replace(/g39t1/, "g39exp"); }, inc*6);
+	}
+	reg.click('div.g39sect',function(e){
+		var allSects = gebs('div.g39sect',this.parentNode);
+		for(var i=0;i<allSects.length;i++){
+			var aSect = allSects[i];
+			if (hasClassName(aSect, 'g39exp') && aSect != this) {
+				animate(aSect, this);
+				break;
+			}
+		}
+	});
+})();
+
+// ONLOAD -> platform detection for select menu
+function platformDetect(){
+	/*
+	for this script to work the select menu needs to have the class "platformDetect"
+	then the string in the OPTION object needs to match one of the strings below...
+
+	Solaris
+	Solaris SPARC
+	Solaris x86
+	Linux
+	Linux x86
+	Linux x64
+	Windows
+	Windows 2000
+	Windows XP
+	Windows Vista
+	Mac OS X
+	Mac OS X (Intel)
+	Mac OS X (PowerPC)
+	*/
+
+    var thisMajor = "";
+    var thisMinor = "";
+    var agent = navigator.userAgent.toUpperCase();
+    if(agent.indexOf("SUNOS") > -1){
+        thisMajor = "Solaris";
+	}else if(agent.indexOf("MAC OS") > -1){
+        thisMajor = "Mac OS X";
+	}else if(agent.indexOf("LINUX") > -1){
+        thisMajor = "Linux";
+	}else if(agent.indexOf("WINDOWS") > -1){
+        thisMajor = "Windows";
+    }
+    if(agent.indexOf("SUNOS SUN4") > -1){
+        thisMinor = "Solaris SPARC";
+	}
+    if(agent.indexOf("SUNOS I86PC") > -1){
+        thisMinor = "Solaris x86";
+    }
+    if(agent.indexOf("LINUX") > -1 && agent.indexOf("86;") > -1){
+        thisMinor = "Linux x86";
+    }
+    if(agent.indexOf("LINUX") > -1 && agent.indexOf("X86_64") > -1){
+        thisMinor = "Linux x64";
+    }
+    if(agent.indexOf("WINDOWS NT 5.0") > -1){
+        thisMinor = "Windows 2000";
+    }
+    if(agent.indexOf("WINDOWS NT 5.1") > -1){
+        thisMinor = "Windows XP";
+    }
+    if(agent.indexOf("WINDOWS NT 6.0") > -1){
+        thisMinor = "Windows Vista";
+    }
+    if(agent.indexOf("INTEL MAC OS") > -1){
+        thisMinor = "Mac OS X (Intel)";
+    }
+    if(agent.indexOf("PPC MAC OS") > -1){
+        thisMinor = "Mac OS X (PowerPC)";
+    }
+
+	var minor = false;
+	var option = gebtn('option',this);
+	for (var n=0;n<option.length;n++){
+		if(option[n].innerHTML.toUpperCase() == thisMinor.toUpperCase()){
+			option[n].selected = true;
+			minor = true;
+			break;
+		}
+	}
+	if(!minor){
+		for (var n=0;n<option.length;n++){
+			if(option[n].innerHTML.toUpperCase() == thisMajor.toUpperCase()){
+				option[n].selected = true;
+				break;
+			}
+		}
+	}
+}
+
+// ONLOAD -> language detection for select menu
+function langDetect(){
+	/*
+	for this script to work the select menu needs to have the class "langDetect"
+	then the string in the OPTION object needs to match one of the strings below...
+
+	Danish
+	English
+	Dutch
+	French
+	German
+	Hindi
+	Indian
+	Italian
+	Japanese
+	Korean
+	Polish
+	Portuguese
+	Russian
+	Simplified Chinese
+	Traditional Chinese
+	Spanish
+	Swedish
+	Turkish
+
+	alternatively, if the menu text is not in english, class names may be used on each
+	OPTION tag to identify which language each OPTION represents this is done using iso
+	language id's in the format <option class="lang_en" ...> where _en represents english.
+	supported language codes are show below...
+
+	en = English
+	da = Danish
+	nl = Dutch
+	fr = French
+	de = German
+	hi = Hindi
+	it = Italian
+	ja = Japanese
+	ko = Korean
+	pl = Polish
+	pt = Portuguese
+	ru = Russian
+	es = Spanish
+	sv = Swedish
+	tr = Turkish
+	zh-cn = Simplified Chinese
+	zh-tw = Traditional Chinese
+
+	*/
+
+	var lang = null;
+
+	if (navigator.language){
+		lang = navigator.language.toUpperCase();
+	}else if (navigator.browserLanguage){
+		lang = navigator.browserLanguage.toUpperCase();
+	}else if (document.documentElement.lang){
+		lang = document.documentElement.lang.toUpperCase();
+	}
+
+	if(lang.indexOf("DA") > -1){
+        lang = "da_Danish";
+    }else if(lang.indexOf("NL") > -1){
+        lang = "nl_Dutch";
+    }else if(lang.indexOf("FR") > -1){
+        lang = "fr_French";
+    }else if(lang.indexOf("DE") > -1){
+        lang = "de_German";
+    }else if(lang.indexOf("HI") > -1){
+        lang = "hi_Hindi";
+    }else if(lang.indexOf("IT") > -1){
+        lang = "it_Italian";
+    }else if(lang.indexOf("JA") > -1){
+        lang = "ja_Japanese";
+    }else if(lang.indexOf("KO") > -1){
+        lang = "ko_Korean";
+    }else if(lang.indexOf("PL") > -1){
+        lang = "pl_Polish";
+    }else if(lang.indexOf("PT") > -1){
+        lang = "pt_Portuguese";
+    }else if(lang.indexOf("RU") > -1){
+        lang = "ru_Russian";
+    }else if(lang.indexOf("ZH-CN") > -1 || lang.indexOf("ZH-HANS") > -1){
+        lang = "zh-cn_Simplified Chinese";
+    }else if(lang.indexOf("ZH-TW") > -1 || lang.indexOf("ZH-HANT") > -1){
+        lang = "zh-tw_Traditional Chinese";
+    }else if(lang.indexOf("ES") > -1){
+        lang = "es_Spanish";
+    }else if(lang.indexOf("SV") > -1){
+        lang = "sv_Swedish";
+    }else if(lang.indexOf("TR") > -1){
+        lang = "tr_Turkish";
+    }else{
+        lang = "en_English";
+    }
+
+	var option = gebtn('option',this);
+	for (var n=0;n<option.length;n++){
+		if(option[n].innerHTML.toUpperCase() == lang.split('_')[1].toUpperCase() || option[n].className.indexOf("lang_"+lang.split('_')[0]) > -1){
+			option[n].selected = true;
+			break;
+		}
+	}
+}
+
+// L6
+var l6 = (function(s){
+
+	// Event Handlers
+	function openBox(e){
+		reg.addClassName(reg.getParent(this, s.box), s.classOpen);
+		reg.cancelDefault(e);
+	};
+
+	function closeBox(e){
+		reg.removeClassName(reg.getParent(this, s.box), s.classOpen);
+		reg.cancelDefault(e);
+	};
+
+	// Init
+	function l6(){
+		reg.click(s.open, openBox);
+		reg.click(s.close, closeBox);
+		return l6;
+	};
+	return l6();
+})({
+	bg:'div.l6bg',
+	box:'div.l6box',
+	classOpen:'l6box-open',
+	open:'div.l6box a.l6box-open',
+	close:'div.l6 a.l6box-close'
+});
+
+// imgMaxWidth
+// This makes CSS resized images into k5's so that the user can click to see the larger image
+// does not function in IE 5 or 6 since it relies on max-width
+reg.click("@class*='pc11' img",function(){
+	if(this.parentNode.nodeName.toLowerCase() != "a" && !hasClassName(this, 'fullsized') && !is.ie56){
+		var pdiv = getParent(this, '.pc11');
+		this.style.border="0px";
+		var x = 0;
+		while(getElementById('imgMax'+x)){
+			x++;
+		}
+		pdiv.appendChild(elem('div',{'id':'imgMax'+x,'class':'maximagek5'},[elem('div',{'style':'text-align:center'},[elem('img',{'src':this.src})])]));
+		var a = elem('a.k5 '+ ((getElementById('imgMax'+x).getElementsByTagName('img')[0].offsetWidth)),{'href':'#imgMax'+x});
+		outerWrap(this, a);
+		k5Click.call(this.parentNode);
+	}
+});
+
+reg.hover("@class*='imgMax-' img",function(){
+	var imgw = this.offsetWidth;
+	var maxw = getParent(this, '.pc11');
+	maxw = maxw.className.split('imgMax-')[1].split(' ')[0];
+	if(imgw < maxw){
+		addClassName(this, 'fullsized')
+	}else{
+		removeClassName(this, 'fullsized')
+	}
+});
+
+
+////////////////////////////
+// OMNITURE LINK TRACKING //
+////////////////////////////
+
+// links are only tracked for the first click listed
+// below that matches the selector
+
+// this custom track must stay first in the order
+reg.click('.overwriteTrack a',function(){
+	var cnm = getParent(this, "@class*='track-'");
+	if (cnm){
+		cnm = cnm.className.split('track-')[1].split(' ')[0];
+		oTrack(this,cnm);
+	}
+});
+reg.click('div#breadcrumb a',function(){oTrack(this,'A4')});
+reg.click('div.gwpadding1 a,td.sectiontitle2 a',function(){oTrack(this,'D1/2')});
+reg.click('td.suntab a',function(){oTrack(this,'D7-Tab')});
+reg.click('div.suntabsubrow a',function(){oTrack(this,'D7-SubTab')});
+reg.click('div.d7v10 a',function(){oTrack(this,'D7-TertiaryTab')});
+reg.click('div.d8 a',function(){oTrack(this,'D8')});
+reg.click('div.e14 a',function(){oTrack(this,'E14')});
+reg.click('div.e15 a',function(){oTrack(this,'E15')});
+reg.click('div.e19 a',function(){oTrack(this,'E19')});
+reg.click('div.g23x a',function(){if(!hasClassName(this,'g23toggler')){oTrack(this,'G23')}});
+reg.click('div.g28 a',function(){oTrack(this,'G28')});
+reg.click('div.vidtext a,div.vidbox a',function(){oTrack(this,'G37')});
+reg.click('div.hb1w1 a,div.hb1v1 a,div.hb1v2 a',function(){oTrack(this,'HB1')});
+reg.click('div.i03 a',function(){oTrack(this,'I3')});
+reg.click('div.l0v0 a,div.l0v1 area,div.l0v2 area,div.l0v3 a',function(){oTrack(this,'L0')});
+reg.click('div.l1 a',function(){oTrack(this,'L1')});
+reg.click('div.l2 a',function(){oTrack(this,'L2')});
+reg.click('div.l3 a',function(){oTrack(this,'L3')});
+reg.click('div.l5 a',function(){oTrack(this,'L5')});
+reg.click('div.l6v1 a,div.l6v2 a',function(){oTrack(this,'L6')});
+reg.click('div.l6v0 a.l6box-open',function(){
+	// add panel position info to omniture link tracking
+	var l6v0 = getParent(this,'.l6v0'),thisBtn = this;
+	gebs('a.l6box-open',l6v0).forEach(function(thatBtn,index){
+		var txt = "opening L6 panel "+(index+1);
+		if(thisBtn===thatBtn){oTrack(this,'L6',txt);}
+	});
+});
+reg.click('div.pm1 a',function(){oTrack(this,'PM1')});
+reg.click('div.pc9 a',function(){oTrack(this,'PC9')}); // do not move below the PC0!
+reg.click('div.pc0 a',function(){oTrack(this,'PC0')});
+reg.click('div.pc3 a',function(){oTrack(this,'PC3')});
+reg.click('div.pc4 a',function(){oTrack(this,'PC4')});
+reg.click('div.pn0 a',function(){oTrack(this,'PN0')});
+reg.click('div.pn4 a',function(){oTrack(this,'PN4')});
+reg.click('div.pn5 a',function(){oTrack(this,'PN5')});
+reg.click('div.e4v0 a',function(){oTrack(this,'E4v0')});
+reg.click('div.e4v2 a',function(){oTrack(this,'E4v2')});
+reg.click('div.e4v3 a',function(){oTrack(this,'E4v3')});
+reg.click('div.pn6xnav a,div.pn6 a',function(){oTrack(this,'PN6')});
+reg.click('div.hb1w2 a',function(){oTrack(this,'HB1-Content')});
+// always leave this as the last omniture track function
+reg.click("@class*='track-' a",function(){
+	var cnm = getParent(this, "@class*='track-'");
+	cnm = cnm.className.split('track-')[1].split(' ')[0];
+	oTrack(this,cnm);
+});
+
+// hb1 auto selector, looks for ID in ULR foo.html#bar and opens #bar if exist
+// setup only happens if URL contains #
+(function(){
+var loco = document.location+'';
+	if(loco.indexOf('#') > 1){
+		reg.setup('div.hb1w1 a',function(){
+			if(loco.split('#')[1] == this.href.split('#')[1]){
+				hb1select(this);
+			}
+		});
+	}
+})();
+
+// hb1 click
+reg.click('div.hb1w1 a,a.hb1trigger',function(){
+	hb1select(this);
+	return false;
+});
+
+// hb1 selector function
+function hb1select(a,st){
+	if(a.href.split('#')[1] && !hasClassName(a,'hb1trigger')){
+		if(!hasClassName(a.parentNode,'hb1selected') || hasClassName(a.parentNode,'hb1selected') && st){
+			// hide all
+			var li = a.parentNode.parentNode.getElementsByTagName('li');
+			for (var i=0;i<li.length;i++){
+				if(!st){ removeClassName(li[i],'hb1selected');}
+				removeClassName(gebi(li[i].getElementsByTagName('a')[0].href.split('#')[1]),'hb1selectedpanel');
+			}
+			addClassName(gebi(a.href.split('#')[1]),'hb1selectedpanel');
+
+			// fade in new div
+			gebi(a.href.split('#')[1]).sfade = null;
+			setopacity(gebi(a.href.split('#')[1]),0);
+			sfadein(gebi(a.href.split('#')[1]),.025);
+
+			// highlight current li
+			addClassName(a.parentNode,'hb1selected');
+		}
+	}else if(a.href.split('#')[1] && hasClassName(a,'hb1trigger')){
+		var subtoggle = (hasClassName(a,'subtoggle'))? true : false;
+		hb1s = gebs("div.hb1w1 a");
+		for (var i=0;i<hb1s.length;i++){
+			if(hb1s[i].href.split('#')[1] == a.href.split('#')[1]){
+				hb1select(hb1s[i],subtoggle);
+			}
+		}
+	}else{
+		return;
+	}
+}
+
+reg.setup('div.g41',function(){
+
+	// get pre object
+	var pre = this.getElementsByTagName('pre')[0];
+
+	// if fixed height, add adjusters, set height
+	if(this.className.indexOf('fixed-') > -1){
+		if(this.getElementsByTagName('h5')[0]){addClassName(this,'hasttl')}
+		var ex = elem('a.g41expand',{'href':'#increase'});
+		var co = elem('a.g41collapse',{'href':'#decrease'});
+		ex.onclick = function(){ resizeObjectHeight(this.parentNode.getElementsByTagName('div')[0],80,-20);return false;};
+		co.onclick = function(){ resizeObjectHeight(this.parentNode.getElementsByTagName('div')[0],-80,20);return false;};
+		this.appendChild(ex);
+		this.appendChild(co);
+		this.getElementsByTagName('div')[0].style.height = this.className.split('fixed-')[1].split(' ')[0]+'px';
+	}
+
+	// clean up leading and trailing whitespace on top/bottom only (not in IE)
+	var wspace = (is.ie) ? false : true;
+	while(wspace){
+		pre.innerHTML = pre.innerHTML.replace(/^[ 	]*\n/,"\n");
+		if(pre.innerHTML.indexOf('\n') == 0){
+			pre.innerHTML = pre.innerHTML.replace(/^\n/,"");
+		}else{
+			wspace = false;
+			pre.innerHTML = pre.innerHTML.replace(/[ 	\n]*$/,"\n");
+		}
+	}
+
+	// install g41_codeprettify if needed
+	if(typeof prettyPrint == 'undefined' && hasClassName(pre, 'prettyprint')){
+		document.getElementsByTagName('head')[0].appendChild(elem('script',{'src':'/js/g41_codeprettify.js','type':'text/javascript'}));
+	}
+});
+
+function resizeObjectHeight(obj,incr,paddingDiff){
+	var currh = obj.offsetHeight;
+	if(obj.rsize){
+		if((currh + incr) <= obj.rsize){
+			obj.style.height = obj.rsize + 'px';
+		}else{
+			obj.style.height = obj.offsetHeight + incr + paddingDiff + 'px';
+		}
+	}else if(incr < 0){
+		obj.rsize = obj.offsetHeight;
+	}else{
+		obj.rsize = obj.offsetHeight;
+		obj.style.height = obj.offsetHeight + incr + paddingDiff + 'px';
+	}
+
+}
+
+// G25 SELECTORS SHOW/HIDE PORTIONS OF FORM
+reg.change(".g25 select.showhide", function(){
+	var selected = this.options[this.options.selectedIndex];
+	var showHideAll = {};
+	gebs('option',this).forEach(function(option){
+		option.showHide = {};
+		var matches = option.className.match(/(^|\s)(#.+(\s+#.+)*)/);
+		if (!matches) { return; }
+		var hashIds = matches[2].split(/\s+/);
+		hashIds.forEach(function(hashId){
+			var id = hashId.substring(1);
+			var showHideEl = gebi(id);
+			if (!showHideEl) { return; }
+			showHideAll[id] = option.showHide[id] = showHideEl;
+		});
+	});
+	for (id in showHideAll) { acn(showHideAll[id], 'hidethis'); }
+	gebs('option',this).forEach(function(option){
+		if (option === selected) {
+			for (id in option.showHide) {
+				rcn(option.showHide[id], 'hidethis');
+			}
+		}
+	});
+});
+
+// LEARNING PATH PACKAGE EDITION TOGGLE
+(function(){
+	var links = null;//a list of all package edition links
+	reg.click("div.lppkged li > a@href",function(){
+		if (!links) {
+			//populate list
+			links = gebs("div.lppkged li > a@href");
+			for (var i=0; i<links.length; i++) {
+				//on the link, store a ref to the corresponding
+				//set of package edition items
+				var link = links[i];
+				var hashInd = link.href.indexOf("#");
+				if (hashInd === -1) { continue; }
+				var item = gebi(link.href.substring(hashInd+1));
+				if (!item) { continue; }
+				link.item = item;
+			}
+		}
+		//unexpect situation, bail now
+		if (!this.item) { return false; }
+		if (hcn(this.parentNode, "current")) { return false; }
+		var pkg = getParent(this, ".lppkg");
+		for (var i=0; i<links.length; i++) {
+			//take away "current" status on all
+			var link = links[i];
+			if (!pkg.contains(link)) { continue; }
+			rcn(link.parentNode, "current");
+			rcn(link.item, "current");
+		}
+		//add "current" status to this link and item set
+		acn(this.parentNode, "current");
+		acn(this.item, "current");
+
+		// renumber all visible items
+		num();
+
+		// prevent default action
+		return false;
+	});
+
+	//#############################################################
+
+	// number a single item
+	function setText(el, txt) {
+		for (var i=0; i<el.childNodes.length; i++) {
+			if (el.childNodes[i].nodeType == 1) {
+				setText(el.childNodes[i], txt);
+				return;
+			}
+		}
+		el.innerHTML = txt;
+	}
+	// item numbering subroutine
+	var allINums;
+	reg.preSetup(function(){
+		// figure out which items are numbered "1"
+		if (!gebi("lp")) { return; }
+		allINums = gebcn("lpitemid");
+		for (var i=0; i<allINums.length; i++) {
+			var thisIsFirst = true;
+			var lpitem = getParent(allINums[i], ".lpitem");
+			if (gebs(".lpfollow", lpitem).length > 0) {
+				thisIsFirst = false;
+			} else {
+				var pkg = getParent(allINums[i], ".lppkg");
+				if (pkg && gebs(".lppkg > .lpfollow", pkg).length > 0) {
+					thisIsFirst = false;
+				}
+			}
+			if (thisIsFirst) {
+				setText(allINums[i], 1);
+			}
+		}
+		// number the visible items
+		num();
+	});
+	function num(el) {
+		var n = 2;
+		for (var i=0; i<allINums.length; i++) {
+			var iNum = allINums[i];
+			var num = parseInt(elemText(iNum));
+			var par = getParent(iNum, ".lppkgitems");
+			if (num === 1) { n = 2; }
+			else {
+				if (!par || hcn(par, "current")) {
+					setText(iNum, n++);
+				}
+			}
+		}
+	}
+})();
+
+
+
+// PC9 CAROUSEL SETUP
+reg.postSetup(function(){
+
+	// if true, setup the dumb, non-animating version
+	var dumb = is.ie6 || (is.gecko && !is.geckoAtOrAbove('1.8'));
+
+	var pc9v1 = gebi("pc9v1");
+	if (!pc9v1) { return; }
+	var count = 0;//for unique ids
+
+	gebcn("pc9carousel",pc9v1).forEach(function(csl){
+
+		//set some vars
+		var head = gebcn('pc9carousel-numbering',csl.parentNode);
+		head = head.length > 0 ? head[0] : null;
+		var panes = gebs('div.pc9carousel > div.pane',csl);
+		if (panes.length < 2) { return; }
+		dumb || acn(csl,'pc9carousel-animating');
+
+		//add ids to each pane
+		panes.forEach(function(pane, i){
+			if (!pane.id) { pane.id = 'pc9carousel_pane_'+(count++); }
+			var nextI = i+1;
+			var prevI = i-1;
+			if (prevI < 0) { prevI += panes.length; }
+			if (nextI >= panes.length) { nextI -= panes.length; }
+			pane.prev = panes[prevI];
+			pane.next = panes[nextI];
+			if (i>0) { acn(pane,'hidethis'); }
+		});
+		//add arrow links to interlink panes
+		panes.forEach(function(pane){
+			gebs('p.thumb > img',pane).forEach(function(img){
+				var pdot = elem('img',{'src':imdir+'/a.gif','alt':'previous'});
+				var ndot = pdot.cloneNode(false);
+				ndot.alt = 'next';
+				var prev = elem('a.pc9prev',{'href':'#'+pane.prev.id},pdot);
+				var next = elem('a.pc9next',{'href':'#'+pane.next.id},ndot);
+				img.parentNode.insertBefore(prev, img);
+				insertAfter(next, img);
+			});
+		});
+		//set the 1/n message
+		if (head){
+			var numHolder = elem('span.number',null,'1');
+			var marker = elem('span.marker',null,[' ',numHolder,'/'+panes.length+' ']);
+			panes.forEach(function(pane,i){
+				pane.numHolder = numHolder;
+				pane.num = i+1;
+			});
+			head.insertBefore(marker, head.firstChild);
+		}
+	});
+
+	// animation by percentages
+	function setPhase(pane, phase) {
+		pane.style.left = (phase * 10) + "%";
+		pane.style.right = (phase * -10) + "%";
+	}
+
+	var interval = 20;//animation interval in ms
+
+	// handle events on carousel arrow links
+	reg.click("a.pc9prev,a.pc9next",function(){
+		var pane = getParent(this, ".pane");
+		var otherId = this.href.substring(this.href.indexOf("#")+1);
+		var otherPane = gebi(otherId);
+
+		if (dumb) {
+			//don't animate
+			acn(pane,'hidethis');
+			rcn(otherPane,'hidethis');
+		} else {
+			//animate
+			var neg = hcn(this,'pc9prev') ? 1 : -1;
+			setPhase(pane,1*neg);
+			setPhase(otherPane,-9*neg);
+			rcn(otherPane,'hidethis');
+			for (var i=2,phase=2,mult=1; i<10; i++) {
+				window.setTimeout(function(){
+					setPhase(pane,neg*phase);
+					setPhase(otherPane,-neg*(10-(phase++)));
+				},(mult++)*interval);
+			}
+			window.setTimeout(function(){
+				acn(pane,'hidethis');
+				setPhase(pane,0);
+				setPhase(otherPane,0);
+			},9*interval);
+		}
+
+		if (otherPane.numHolder) {
+			otherPane.numHolder.firstChild.data = otherPane.num+'';
+		}
+		return false;
+	});
+});
+
+
+
+// ########################### LEGACY / DEPRECATED ###########################
+
+// in case this is still called from somewhere
+function domCrawl(domObject,tagList){reg.rerun(domObject);}
+
+// this needs to go away
+function catchBodyClicks() {
+	if (document.body) {
+		addEvent(document.body,'click',function(e){
+			if (!e) var e = window.event;
+			if (e.target) { var targ = e.target; }
+			else if (e.srcElement) { var targ = e.srcElement; }
+			if (targ.nodeType == 3) { targ = targ.parentNode; } // we don't need no stinkin' text nodes
+			var sel;
+			if (typeof bodyClickHandlers != 'undefined') {
+				selectors:for (sel in bodyClickHandlers) {
+					var el = targ;
+					var tries = 0;
+					while (el.nodeType == 1) {
+						try { if (matches(el, sel)) { bodyClickHandlers[sel](el, e); break; } }
+						catch (e) { continue selectors; }
+						if (!el.parentNode || tries > 20) { break; }
+						el = el.parentNode;
+						tries++;
+					}
+				}
+			}
+		});
+	}else{
+		window.setTimeout('catchBodyClicks()',100);
+	}
+}
+catchBodyClicks();
+window.bodyClickHandlers = {};
+
+// TODO: DELETE THIS
+function sniffLinkHijax(fobj){
+	if (fobj.nodeName.toLowerCase() == 'a'){
+		var links = new Array(fobj);
+	}else if(gebtn('a',fobj)[0]){
+		var links = gebtn('a',fobj);
+	}
+	for (i=0; i<links.length; i++){
+		links[i].targetDiv = fobj.className.split('hijax-')[1];
+		addEvent(links[i],"click",function(e){
+			var targetDiv = this.targetDiv;
+			var hstring = this.href+' ';
+			if (!hijaxCache[hstring]){
+				getfile(this.href, function(rdata,fvar){
+					if(rdata.indexOf('id="'+targetDiv+'"') > -1){
+						rdata = getRequestObject(targetDiv,rdata).innerHTML;
+						hijaxCache[hstring] = rdata;
+						gebi(targetDiv).innerHTML = rdata;
+						reg.rerun(gebi(targetDiv));
+					}
+				});
+				cancelDefault(e);
+			}else{
+				gebi(targetDiv).innerHTML = hijaxCache[hstring];
+				reg.rerun(gebi(targetDiv));
+				cancelDefault(e);
+			}
+		});
+	}
+};
+
+// this needs to go away
+function addOnresizeEvent(func){addEvent(window, 'resize', func);}
+
+
+
+
+
+
+// ################################ OBJECT HELPERS ###########################
+
+// " foo  " -> "foo"
+if(!String.prototype.strip){
+	String.prototype.strip=function(){return this.replace(/^\s+|\s+$/g, "");};
+}
+
+// " foo   bar  " -> "foo bar"
+if(!String.prototype.normalize){
+	String.prototype.normalize=function(sp){
+		sp=(!sp && sp!=='')?' ':sp;
+		return this.strip().replace(/\s+/g,sp);
+	};
+}
+
+// ###########################################################################
+// END REG LIB, BEGIN XMLHTTPREQUEST FUNCTIONS
+// ###########################################################################
+
+// GENERIC HTTP REQUEST
+function getfile(filepath,ftodo,fvar,ferr,forceText){
+	var http_request = false;
+	if (window.XMLHttpRequest) {
+		http_request = new XMLHttpRequest();
+		if (http_request.overrideMimeType && filepath.indexOf('.xml') > -1){
+			http_request.overrideMimeType('text/xml');
+		}
+	}else if (window.ActiveXObject) { // IE
+		try { http_request = new ActiveXObject("Msxml2.XMLHTTP");
+		}catch(ex1){
+			try{
+				http_request = new ActiveXObject("Microsoft.XMLHTTP");
+			}catch(ex2){}
+		}
+	}
+	if (!http_request) {
+		return false;
+	}
+	http_request.onreadystatechange = function() {
+		if (http_request.readyState == 4) {
+			if (http_request.status == 200) {
+				if (filepath.indexOf('.xml') > -1 && !forceText){
+					var rdata = http_request.responseXML.documentElement;
+				}else{
+					var rdata = http_request.responseText;
+				}
+				ftodo(rdata,fvar); // SUCCESS
+			}else{
+				if (ferr) { ferr(fvar,filepath,http_request.status,http_request.statusText); } // FAIL
+			}
+		}
+	};
+	http_request.open('GET', filepath, true);
+	http_request.send(null);
+}
+
+// RETURN OBJECT FROM STRING
+function getRequestObject(elementID,rdata,elementTag) {
+	if (!elementTag){ elementTag = 'div'; } // elementTag optional, defaults to DIV
+	var sudocont = document.createElement(elementTag);
+	sudocont.innerHTML = rdata;
+	var x = gebtn(elementTag,sudocont);
+	var chunk;
+	for (var i=0;i<x.length;i++) {
+		if (x[i].id == elementID) {
+			chunk = x[i];
+			break;
+		}
+	}
+	return chunk;
+}
+
+// BUILD AN ELEMENT FROM TEXT PULLED FROM XHR
+function getElementByIdFromString(textBlob, id) {
+	var container = document.createElement('div');
+	container.innerHTML = textBlob;
+	var tags = gebtn("*",container);
+	for (var a=0,tag;tag=tags[a++];){
+		if (tag.id == id) { return tag; }
+	}
+	return null;
+}
+
+// GENERIC XML HTTP REQUEST
+function xhr(url, successFunc, failFunc, obj, postData){
+	/*
+	successFunc(responseText, obj)
+	failFunc(statusCode, statusText, url, obj)
+	*/
+	//check whether this is same-domain
+	var parts=resolveUrl(url).split(/\/+/g);
+	if(parts[0]!==location.protocol||parts[1]!==location.host){
+		throw new Error("cross-domain requests not allowed");
+	}
+	var http_request = false;
+	if (window.XMLHttpRequest) {
+		http_request = new XMLHttpRequest();
+	}else if (window.ActiveXObject) { // IE
+		try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); }
+		catch(e){
+			try{ http_request = new ActiveXObject("Msxml3.XMLHTTP"); }
+			catch(ex1){
+				try{ http_request = new ActiveXObject("Microsoft.XMLHTTP"); }
+				catch(ex2){}
+			}
+		}
+	}
+	if (!http_request) { return false; }
+	if (!postData) { postData = null; }
+	var method = (postData) ? "POST" : "GET";
+	http_request.open(method, url, true);
+	if (postData) {
+		http_request.setRequestHeader('Content-type','application/x-www-form-urlencoded');
+		http_request.setRequestHeader("Content-length", postData.length);
+		http_request.setRequestHeader("Connection", "close");
+	}
+	http_request.onreadystatechange = function() {
+		if (http_request.readyState == 4) {
+			if (http_request.status == 200) {
+				successFunc(http_request.responseText, obj);
+			}else{
+				try { failFunc(http_request.status, http_request.statusText, url, obj); }
+				catch (ex) { failFunc('', ex, url, obj); }
+			}
+		}
+	};
+	http_request.send(postData);
+}
+
+// GET DATA FROM A FORM FOR XHR
+function getFormData(thisform) {
+	var fargs = [];
+	var inps = reg.getElementsBySelector("input, select, textarea",thisform);
+	for (var a=0; a<inps.length; a++){
+		var inp = inps[a];
+		if (matches(inp,'@type="text",@type="hidden",@type="password"')){
+			fargs.push(encodeURIComponent(inp.name) + "=" + encodeURIComponent(inp.value));
+		}
+		if (inp.type == "checkbox"  && inp.checked || inp.type == "radio" && inp.checked){
+			fargs.push(encodeURIComponent(inp.name) + "=" + encodeURIComponent(inp.value));
+		}
+		if (inp.nodeName.toLowerCase()=='select'){
+			var selVal = inp.options[inp.selectedIndex].value;
+			fargs.push(encodeURIComponent(inp.name) + "=" + encodeURIComponent(selVal));
+		}
+		if (inp.nodeName.toLowerCase()=='textarea'){
+			fargs.push(encodeURIComponent(inp.name) + "=" + encodeURIComponent(inp.value));
+		}
+	}
+	return fargs.join('&');
+}
+
+// ###########################################################################
+// END XMLHTTPREQUEST FUNCTIONS, BEGIN SUN FUNCTIONS
+// ###########################################################################
+
+// HAS PARENT
+function hasParent(obj,tag,classname){
+	var parent = obj;
+	if(classname){
+		while (parent = parent.parentNode) {
+			if (parent.nodeName.toLowerCase() == tag && hasClassName(parent,classname) || tag == "*" && hasClassName(parent,classname)){
+				return parent;
+			}
+		}
+	}else if (typeof tag == 'string') {
+		while (parent = parent.parentNode) {
+			if (parent.id == tag){
+				return parent;
+			}
+		}
+	}else{
+		while (parent = parent.parentNode) {
+			if (parent == tag){
+				return parent;
+			}
+		}
+	}
+}
+
+// GET XY OF OBJ
+function getXY(obj){
+ 	var o = obj;
+ 	obj.X = obj.Y = 0;
+ 	while(o){
+		if (obj.relativePos){
+			if (getStyle(o, 'position') != 'relative' && getStyle(o, 'position') != 'absolute'){
+				obj.X = obj.X + o.offsetLeft;
+				obj.Y = obj.Y + o.offsetTop;
+			}
+		}else{
+			obj.X = obj.X + o.offsetLeft;
+			obj.Y = obj.Y + o.offsetTop;
+		}
+ 		o = o.offsetParent;
+ 	}
+}
+
+// RETURNS THE SPECIFIED COMPUTED STYLE ON AN OBJECT
+function getStyle(obj, styleProp){
+	if (obj.currentStyle){
+		return obj.currentStyle[styleProp];
+	}else if (window.getComputedStyle){
+		return document.defaultView.getComputedStyle(obj,null).getPropertyValue(styleProp);
+	}
+}
+
+// GET FULL CLASS NAME FROM PARTIAL STRING
+function getClassContains(obj,subst){
+	var rcl = false;
+	var cls = obj.className.split(' ');
+	for (var v=0;v<cls.length;v++){
+		if (cls[v].indexOf(subst) > -1){
+			rcl = cls[v];
+		}
+	}
+	return rcl;
+}
+
+// GET CHILD NODES VIA TAG NAME
+function getChildNodesByTagName(el, tagName){
+	var cn = el.childNodes;
+	var nd = [];
+	for (var n=0;n<cn.length;n++){
+		if(tagName == cn[n].nodeName.toLowerCase()){
+			nd.push(cn[n]);
+		}
+	}
+	return nd;
+}
+
+// SET OPACITY
+function setopacity(id_or_obj,opac){
+	if (gebi(id_or_obj)){
+		var oobj = gebi(id_or_obj);
+	}else if(id_or_obj){
+		var oobj = id_or_obj;
+	}
+	if (oobj){
+		if (oobj.filters && oobj.filters.alpha){
+			oobj.filters.alpha.opacity = opac * 100;
+		}else{
+			oobj.style.MozOpacity = opac;
+			oobj.style.opacity = opac;
+		}
+	}
+}
+
+// FADEIN
+function sfadein(obj,n){
+	if(!obj.sfade){ obj.sfade = 0; }
+	if(obj.sfade< 1){
+		if(is.safariAll){
+			obj.sfade = obj.sfade + (n * 5);
+		}else{
+			obj.sfade = obj.sfade + n;
+		}
+		setopacity(obj,obj.sfade);
+ 		setTimeout(function(){sfadein(obj,obj.sfade);},75);
+	}else{
+		setopacity(obj,1);
+		obj.sfade = null;
+	}
+}
+
+
+// takes an integer, returns a new month
+// if someDate = jan 11 2004 11:04:27 am
+// then someDate.diffDay(-9) = jan 2 2004 11:04:27 am
+Date.prototype.diffDay = function(days){
+	var r = new Date(this.getTime());
+	r.setDate(r.getDate()+days);
+	return r;
+}
+
+// takes an integer, returns a new month
+// if someDate = jan 11 2004 11:04:27 am
+// then someDate.diffMonth(3) = apr 11 2004 11:04:27 am
+Date.prototype.diffMonth = function(months){
+	var r=new Date(this.getTime());
+	var num = r.getMonth()+months;
+	var yearInc = 0;
+	// because safari messes up on date.setMonth(-1)
+	if (num < 0) { while(num < 0) { num += 12; yearInc--; } }
+	else if (num > 11) { while(num > 11) { num -= 12; yearInc++; } }
+	r.setMonth(num);
+	r.setFullYear(r.getFullYear() + yearInc)
+	return r;
+}
+
+// pad a string on the left up to a given amount
+// foo = "3"
+// foo = foo.padLeft("0", 3)
+// foo now is "003"
+String.prototype.padLeft = function(ch,amount){
+	var r=this;
+	while(r.length<amount){r=ch+r;}
+	return r;
+}
+
+/*
+takes a format mask and returns a string representation of this date.
+enclose escape sequences in single quotes.
+new Date().format("DD/MM/YYYY")   // evaluates to "25/11/2008"
+new Date().format("'DD'/MM/YYYY") // evaluates to "DD/11/2008"
+format flags:
+	D		1-31 (day of month)
+	DD		01-31 (day of month)
+	Dth		1st, 2nd, 3rd... (day of month)
+	M		1-12 (month of year)
+	MM		01-12 (month of year)
+	mon		jan-dec
+	month	january-december
+	Mon		Jan-Dec
+	Month	January-December
+	MON		JAN-DEC
+	MONTH	JANUARY-DECEMBER
+	w		s, m, t, w, t, f, s (weekday)
+	we		su-sa (weekday)
+	wee		sun-sat (weekday)
+	weekday	sunday-saturday
+	W		S, M, T, W, T, F, S (weekday)
+	We		Su-Sa (weekday)
+	Wee		Sun-Sat (weekday)
+	Weekday	Sunday-Saturday
+	WE		SU-SA (weekday)
+	WEE		SUN-SAT (weekday)
+	WEEKDAY	SUNDAY-SATURDAY
+	YY		2-digit year
+	YYYY		4-digit year
+	ss		00-59 (seconds)
+	mm		00-59 (minutes)
+	h		1-12 (hours)
+	hh		01-12 (hours)
+	H		0-23 (hours)
+	HH		00-23 (hours)
+	a		am, pm
+	A		AM, PM
+	X		timezone offset
+*/
+Date.prototype.format = (function(){
+	var pattern =       /(WEEKDAY)|(Weekday)|(weekday)|(WEE)|(Wee)|(wee)|(WE)|(We)|(we)|(W)|(w)|(MONTH)|(Month)|(month)|(MON)|(Mon)|(mon)|(MM)|(M)|(DD)|(Dth)|(D)|(YYYY)|(YY)|(HH)|(hh)|(H)|(h)|(mm)|(ss)|(A)|(a)|(X)/g;
+	var dobj;
+	function parser(str,  WEEKDAY,  Weekday,  weekday,  WEE,  Wee,  wee,  WE,  We,  we,  W,  w,  MONTH,  Month,  month,  MON,  Mon,  mon,  MM,  M,  DD,  Dth,  D,  YYYY,  YY,  HH,  hh,  H,  h,  mm,  ss,  A,  a,  X){
+		var result;
+		if (ss)      { return (''+dobj.getSeconds()).padLeft('0',2); }
+		if (mm)      { return (''+dobj.getMinutes()).padLeft('0',2); }
+		if (H)       { return dobj.getHours()+''; }
+		if (HH)      { return (dobj.getHours()+'').padLeft('0',2); }
+		if (h)       {
+			result=(dobj.getHours()%12)+'';
+			if(result=='0'){result='12';}
+			return result;
+		}
+		if (hh)      {
+			result=(dobj.getHours()%12)+'';
+			if(result=='0'){result='12';}
+			result=result.padLeft('0',2);
+			return result;
+		}
+		if (Weekday) { return dayNamesFull[dobj.getDay()]; }
+		if (W)       { return dayNames1[dobj.getDay()]; }
+		if (We)      { return dayNames2[dobj.getDay()]; }
+		if (Wee)     { return dayNames3[dobj.getDay()]; }
+		if (WEEKDAY) { return dayNamesFull[dobj.getDay()].toUpperCase(); }
+		if (WE)      { return dayNames2[dobj.getDay()].toUpperCase(); }
+		if (WEE)     { return dayNames3[dobj.getDay()].toUpperCase(); }
+		if (weekday) { return dayNamesFull[dobj.getDay()].toLowerCase(); }
+		if (w)       { return dayNames1[dobj.getDay()].toLowerCase(); }
+		if (we)      { return dayNames2[dobj.getDay()].toLowerCase(); }
+		if (wee)     { return dayNames3[dobj.getDay()].toLowerCase(); }
+		if (D)       { return dobj.getDate()+''; }
+		if (DD)      { return (dobj.getDate()+'').padLeft('0',2); }
+		if (Dth)     {
+			result=dobj.getDate()+'';
+			if(result.match(/^1\d$/)){result+='th';}
+			else if(result.match(/1$/)){result+='st';}
+			else if(result.match(/2$/)){result+='nd';}
+			else if(result.match(/3$/)){result+='rd';}
+			else{result+='th';}
+			return result;
+		}
+		if (YYYY)    { return dobj.getFullYear()+''; }
+		if (YY)      { return (dobj.getFullYear()+'').substring(2,4); }
+		if (M)       { return (dobj.getMonth()+1)+''; }
+		if (MM)      { return ((dobj.getMonth()+1)+'').padLeft('0',2); }
+		if (Month)   { return monthNamesFull[dobj.getMonth()]; }
+		if (Mon)     { return monthNames3[dobj.getMonth()]; }
+		if (MONTH)   { return monthNamesFull[dobj.getMonth()].toUpperCase(); }
+		if (MON)     { return monthNames3[dobj.getMonth()].toUpperCase(); }
+		if (month)   { return monthNamesFull[dobj.getMonth()].toLowerCase(); }
+		if (mon)     { return monthNames3[dobj.getMonth()].toLowerCase(); }
+		if (X)       { return (dobj.getTimezoneOffset()/60)+''; }
+		if (A)       { return (dobj.getHours()<12)?'AM':'PM'; }
+		if (a)       { return (dobj.getHours()<12)?'am':'pm'; }
+	}
+	return function(fmt) {
+		dobj = this;
+		var parts = fmt.split("'");
+		if (parts.length % 2 == 0) { throw "missing closing single quote in date format \""+fmt+"\"";}
+		for (var i=0;i<parts.length;i+=2){
+			parts[i]=parts[i].replace(pattern, parser);
+		}
+		return parts.join('');
+	};
+})();
+
+// for displaying and manipulating a calendar
+// encapsulates a 2d array
+// only cares about days, not times
+function Calendar(date, startDate, endDate, origDate) {
+	this.origDate = (origDate) ? origDate : date.diffDay(0);
+	this.startDate = startDate;
+	this.endDate = endDate;
+	date.setDate(1);
+	this.canonicalMonth = date.diffDay(0);
+
+	// init the date 2d array
+	this.g = [];
+	this.g[0] = [];
+
+	// populate the pre days
+	var numPreDays = date.getDay();
+	var row = this.g[0];
+	for (var a=0;a<numPreDays;a++){
+		row[a] = date.diffDay(a-numPreDays);
+		row[a].dayClass = 'jscal-before';
+		if (startDate && row[a].getTime() < startDate) { row[a].dayClass += ' jscal-outofrange'; }
+		else if (endDate && row[a].getTime() > endDate) { row[a].dayClass += ' jscal-outofrange'; }
+		else { row[a].dayClass += ' jscal-inrange'; }
+	}
+
+	// populate the days
+	var todayDateStr = new Date().format("DD/MM/YYYY");
+	var curDateStr = this.origDate.format("DD/MM/YYYY");
+	while (date.getMonth() == this.canonicalMonth.getMonth()) {
+		var curDate = this.g[this.g.length-1][date.getDay()];
+		this.g[this.g.length-1][date.getDay()] = date;
+		this.g[this.g.length-1][date.getDay()].dayClass = 'jscal-during';
+		var dateStr = date.format("DD/MM/YYYY");
+		if (dateStr == todayDateStr) {date.dayClass += ' jscal-today';}
+		if (dateStr == curDateStr) {date.dayClass += ' jscal-current';}
+		if (startDate && date.getTime() < startDate) { date.dayClass += ' jscal-outofrange'; }
+		else if (endDate && date.getTime() > endDate) { date.dayClass += ' jscal-outofrange'; }
+		else { date.dayClass += ' jscal-inrange'; }
+		date = date.diffDay(1);
+		if (date.getDay() == 0 && date.getMonth() == this.canonicalMonth.getMonth()) { this.g[this.g.length] = []; }
+	}
+
+	// populate the post days
+	var row = this.g[this.g.length-1];
+	var numPostDays = row.length;
+	for (var a=row.length;a<7;a++){
+		row[a] = date.diffDay(a-numPostDays);
+		row[a].dayClass = 'jscal-after';
+		if (startDate && row[a].getTime() < startDate) { row[a].dayClass += ' jscal-outofrange'; }
+		else if (endDate && row[a].getTime() > endDate) { row[a].dayClass += ' jscal-outofrange'; }
+		else { row[a].dayClass += ' jscal-inrange'; }
+	}
+}
+
+// how many weeks (i.e. rows) actually exist in this calendar grid?
+Calendar.prototype.weeks = function(){
+	return this.g.length;
+}
+
+// return a date object by coordinates
+// getDayAt(0,0) will probably return a day from the month previous
+// getDayAt(0,7) is an index out of bounds error since weekday indices are 0-6
+Calendar.prototype.getDayAt = function(weekOfMonth,dayOfWeek){
+	return this.g[weekOfMonth][dayOfWeek];
+}
+
+// return a clone of this calendar but representing a different month
+Calendar.prototype.diffMonth = function(months){
+	return new Calendar(this.canonicalMonth.diffMonth(months), this.startDate, this.endDate, this.origDate);
+}
+
+// return a DOM tree showing a calendar
+Calendar.prototype.getCalendarTable=function() {
+	var t = elem('table.jscal',{'cellSpacing':'0'});
+	var div = elem('div.jscal-x1',{},elem('div.jscal-x2',{},t));
+
+	t.createTHead().insertRow(0);
+	t.tHead.rows[0].className = "jscal-mname";
+	t.tHead.rows[0].appendChild(elem('th')).colSpan = '7';
+	t.tHead.insertRow(1).className = "jscal-dname";
+	t.tHead.rows[1].appendChild(elem('th')).appendChild(document.createTextNode(dayNames1[0]));
+	t.tHead.rows[1].appendChild(elem('th')).appendChild(document.createTextNode(dayNames1[1]));
+	t.tHead.rows[1].appendChild(elem('th')).appendChild(document.createTextNode(dayNames1[2]));
+	t.tHead.rows[1].appendChild(elem('th')).appendChild(document.createTextNode(dayNames1[3]));
+	t.tHead.rows[1].appendChild(elem('th')).appendChild(document.createTextNode(dayNames1[4]));
+	t.tHead.rows[1].appendChild(elem('th')).appendChild(document.createTextNode(dayNames1[5]));
+	t.tHead.rows[1].appendChild(elem('th')).appendChild(document.createTextNode(dayNames1[6]));
+
+	t.appendChild(elem('tbody'));
+	var m = t.tHead.rows[0].cells[0];
+	var closer = elem('span.jscal-closer',{'href':'#','border':'0'},elem('img',{'alt':'[x]','src':imdir+'/ic_close_win_light.gif','title':'close'}));
+	var pMonth = elem('a.jscal-mselect',{'title':'previous month'},'\u00AB ');
+	var monthYear = elem('span.jscal-monthyear',{},this.canonicalMonth.format('Mon')+' '+this.canonicalMonth.format('YYYY'))
+	var nMonth = elem('a.jscal-mselect',{'title':'next month'},' \u00BB');
+	pMonth.calendar = nMonth.calendar = div.calendar = this;
+	closer.div = pMonth.div = nMonth.div = div;
+	m.appendChild(closer);
+	m.appendChild(pMonth);
+	m.appendChild(monthYear);
+	m.appendChild(nMonth);
+	addEvent(pMonth,'click',function(e){
+		getParent(this,'div.jscal-x1').setCalendar(this.calendar.diffMonth(-1));
+		cancelDefault(e);
+	});
+	addEvent(nMonth,'click',function(e){
+		getParent(this,'div.jscal-x1').setCalendar(this.calendar.diffMonth(1));
+		cancelDefault(e);
+	});
+	addEvent(closer,'click',function(e){
+		var parentDiv = getParent(this,'div.jscal-x1');
+		parentDiv.parentNode.removeChild(parentDiv);
+		cancelDefault(e);
+	});
+
+	for (var a=0;a<this.weeks();a++){
+		t.tBodies[0].insertRow(a);
+		for (var b=0;b<7;b++){
+			t.tBodies[0].rows[a].insertCell(b);
+			var dt = this.getDayAt(a,b);
+			if(!dt){throw "empty month date at "+a+","+b;}
+			t.tBodies[0].rows[a].cells[b].className = dt.dayClass;
+			var lnk = elem('span',{},''+dt.getDate());
+			lnk.date = dt;
+			t.tBodies[0].rows[a].cells[b].appendChild(lnk);
+		}
+	}
+
+	div.setCalendar = function(cal) {
+		var newDiv = cal.getCalendarTable();
+		this.appendChild(newDiv.firstChild);
+		this.removeChild(this.firstChild);
+	}
+	return div;
+};
+
+
+// GET SAFELY ENCODED STRINGS
+function getSafelyEncodedString(s) {
+	s = encodeURIComponent(s);
+	s = s.replace(/&/,"&amp;").replace(/"/,"&quot;").replace(/</,"&lt;").replace(/>/,"&gt;");
+	return s;
+}
+
+// GETS AMOUNT SCROLLED FROM TOP
+function getScrollTop(){
+	if(window.pageYOffset !== undefined){
+		return window.pageYOffset;
+	} else {
+		var db = document.body; //IE 'quirks'
+		var dd = document.documentElement; //IE with doctype
+		var d = (dd.clientHeight)? dd: db;
+		return d.scrollTop;
+	}
+}
+
+
+
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/sr.css b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/sr.css
new file mode 100644
index 0000000000000000000000000000000000000000..74c10e7e5f71716a6c8e4076d9549e415c0483d1
--- /dev/null
+++ b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/sr.css	
@@ -0,0 +1 @@
+/* THIS FILE IS EOL, PLEASE DELETE ALL REFERENCES TO THIS FILE */
\ No newline at end of file
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/style.css b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/style.css
new file mode 100644
index 0000000000000000000000000000000000000000..b757e20e94cfa15d0e83cb9c17e56991c8d5e221
--- /dev/null
+++ b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card-Dateien/style.css	
@@ -0,0 +1,1378 @@
+/* This is a cleaned up version of the default style.jsp file */
+
+/*  Styles for HTML elements */
+BODY {
+    background-color : #fff;
+    font-size : 100%;
+}
+BODY, DIV, P, TD, TH {
+    font-family : arial,helvetica,sans-serif;
+    font-size : 10pt;
+    color : #000;
+}
+PRE {
+    font-size : 10pt;
+    font-family : courier new, monospaced;
+    margin : 0px;
+}
+FIELDSET LEGEND {
+    color : #000;
+}
+A {}
+A:link {
+    color : #039;
+}
+A:visited {
+    color : #039;
+}
+A:hover {
+    color : #9cf;
+    text-decoration : none;
+}
+A:active {
+    color : #9cf;
+}
+
+/*  Custom styles - used in many pages */
+.jive-page-title {
+    font-size : 12pt;
+    font-weight : bold;
+}
+.jive-guest {
+    font-style : italic !important;
+}
+.nobreak {
+    white-space: nowrap;
+}
+
+/*  Buttons */
+.jive-buttons .jive-icon {
+    padding : 3px;
+}
+.jive-buttons .jive-icon-label {
+    padding : 3px;
+    white-space : nowrap;
+    padding-right : 1em;
+    font-size : 8pt;
+    font-family : verdana, arial, helvetica, sans-serif;
+}
+#jive-categorypage .jive-buttons {
+    padding-bottom : 3px;
+}
+
+/*  Search Forms */
+.jive-search-form TR {
+    vertical-align : top;
+}
+.jive-search-form .jive-search-label {
+    padding-top : 4px;
+}
+.jive-search-form LABEL, .jive-search-form INPUT, .jive-search-form SELECT {
+    font-size : 8pt;
+    font-family : verdana, arial, helvetica, sans-serif;
+}
+.jive-search-form TD {
+    padding : 3px;
+}
+#jive-searchpage .jive-search-form TD {
+    padding : 5px;
+}
+.jive-search-results .jive-table THEAD TH {
+    text-align : left;
+}
+.jive-search-results {
+    margin-bottom : 3px;
+}
+.jive-search-results .jive-search-noresults {
+    padding : 1em;
+    font-style : italic;
+}
+#jive-searchpage OL {
+    padding-left : 2em;
+    margin-left : 0px;
+}
+#jive-searchpage .jive-result-info {
+    font-size : 8pt;
+    font-family : verdana, arial, helvetica, sans-serif;
+    color : #666;
+}
+#jive-searchpage .jive-body {
+    padding : 0em 0em 0em 0.5em;
+    margin-bottom : 1.5em;
+}
+#jive-searchpage .jive-result-link {
+    font-weight : bold;
+}
+.jive-search-results .jive-table SELECT {
+    font-size : 8pt;
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-weight : normal;
+}
+
+/*  Error styles */
+.jive-error-message {
+    display: block;
+    color: #900;
+    font-weight: bold;
+}
+.jive-error-message .jive-icon {
+    padding-right : 6px;
+}
+.jive-error-message .jive-icon-label, .jive-error-text {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+    color : #f00;
+}
+.jive-error-message .jive-icon-label {
+    padding-top : 1px;
+}
+
+/*  Info styles */
+.jive-infobox TABLE {
+    border : 1px #ccc solid;
+    background-color : #eee;
+}
+.jive-infobox LI {
+    list-style-image : url('/images/arrow-bullet-10x10.gif');
+    margin-left : 2em;
+}
+.jive-infobox TD, .jive-infobox TH {
+    font-size : 8pt;
+    font-family : verdana, arial, helvetica, sans-serif;
+    padding : 3px;
+}
+.jive-infobox UL {
+    padding : 0px;
+    margin : 0px;
+    padding-top : 0.2em;
+}
+.jive-infobox .unans, .jive-infobox .callout, .unans {
+    font-weight : bold;
+    color : #f00;
+}
+.jive-infobox .ans, .ans {
+    font-weight : bold;
+    color : #060;
+}
+
+/*  Footer */
+#jive-footer TD {
+    font-size : 0.7em;
+    font-weight : bold;
+    text-align : center;
+    border-top : 1px #ccc solid;
+    padding-top : 5px;
+}
+#jive-footer TD A {
+    color : #666;
+    text-decoration : none;
+}
+#jive-footer TD A:hover {
+    text-decoration : underline;
+}
+
+/*  Header */
+#jive-header {
+	padding: 15px 0 0 15px;
+	background: url(../images/header-right.png) 100% 0 no-repeat;
+}
+#jive-header H1 {
+	display: block;
+	margin: -15px 0 0 -15px;
+	padding: 15px 15px 0;
+	font: bold 1.5em Arial, sans-serif;
+	color: #fff;
+	text-decoration: none;
+	background: url(../images/header-left.png) 0 0 no-repeat;
+}
+#jive-header P {
+	display: block;
+	margin: 0 0 0 -15px;
+	padding: 0 0 0 15px;
+	background: url(../images/header-left.png) 0 100% no-repeat;
+}
+#jive-header EM {
+	display: block;
+	padding: 4px 15px 15px 0;
+	font-style: normal;
+	background: url(../images/header-right.png) 100% 100% no-repeat;
+}
+
+/*  Breadcrumbs */
+#jive-breadcrumbs EM {
+    font-style : normal;
+}
+#jive-breadcrumbs {
+    font-size: .86em;
+    color : #CAD4E0;
+    direction : ltr;
+}
+#jive-header #jive-breadcrumbs {
+	padding-top: 4px;
+}
+#jive-header #jive-breadcrumbs A {
+    color : #CAD4E0;
+	text-decoration: none;
+}
+#jive-header #jive-breadcrumbs A:hover {
+    color : #CCC;
+}
+#jive-header #jive-breadcrumbs IMG {
+	margin: 0.25em;
+}
+
+/*  Paginators */
+.jive-paginator {
+    direction : ltr;
+}
+.jive-paginator, .jive-paginator A {
+    font-family : arial,helvetica,sans-serif;
+    font-size : 10pt;
+}
+.jive-paginator, .jive-paginator A {
+    font-weight : bold;
+}
+.jive-message-list .jive-paginator, .jive-message-list .jive-paginator A {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+    font-weight : bold;
+}
+.jive-paginator A {
+    text-decoration : none;
+    border : 1px #fff solid;
+}
+.jive-paginator A:hover {
+    border : 1px #ccc solid;
+    color : #000;
+    background-color : #ffc;
+    text-decoration : none;
+}
+.jive-paginator .jive-current {
+    color : #000;
+    background-color : #eee;
+    border : 1px #ccc solid;
+    text-decoration : none;
+}
+.jive-message-list-footer, .jive-message-list-footer TD, .jive-message-list-footer A,
+.jive-message-list-footer .jive-paginator-bottom, .jive-message-list-footer .jive-paginator-bottom A
+{
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+    font-weight : normal;
+}
+.jive-thread-row-paginator, .jive-thread-row-paginator A {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+    font-weight : normal;
+}
+.jive-thread-row-paginator {
+    padding-left : 1em;
+    direction : ltr;
+}
+
+/*  Descriptions, legends */
+.jive-description, .jive-legend .jive-icon-label {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+}
+.jive-legend .jive-icon-label {
+    padding-left : 5px;
+}
+.jive-legend .jive-icon {
+    padding-top : 2px;
+    padding-bottom : 2px;
+}
+
+/*  Tables */
+.jive-table {
+    width : 100%;
+}
+.jive-table TD, .jive-table TH {
+    padding : 3px;
+}
+.jive-table TD {
+    padding : 3px;
+    border-width : 0px 1px 1px 0px;
+    border-style : solid;
+    border-color : #ccc;
+}
+.jive-table TABLE TABLE, .jive-table TABLE TABLE TD, .jive-table TABLE TABLE TH {
+    border-width : 0px;
+}
+.jive-table THEAD TH {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+    font-weight : bold;
+    text-align : center;
+    background-color : #69c;
+    color : #fff;
+    border-top : 1px #369 solid;
+    border-bottom : 1px #369 solid;
+}
+.jive-table THEAD .jive-first {
+    border-left : 1px #666 solid;
+}
+.jive-table THEAD .jive-last {
+    border-right : 1px #666 solid;
+}
+.jive-table THEAD .jive-first {
+    border-left : 1px #666 solid;
+}
+.jive-table THEAD .jive-last {
+    border-right : 1px #666 solid;
+}
+.jive-table THEAD .jive-first-last {
+    border-left : 1px #666 solid;
+    border-right : 1px #666 solid;
+}
+.jive-table TBODY .jive-first-last, .jive-table TFOOT .jive-first-last {
+    border-left : 1px #ccc solid;
+    border-right : 1px #ccc solid;
+}
+.jive-table TBODY .jive-first, .jive-table TBODY .jive-category-name, .jive-table TFOOT .jive-first,
+#jive-usersettingspage .jive-table TBODY .jive-label,
+#jive-guestsettingspage .jive-table TBODY .jive-label,
+#jive-profilepage .jive-table TBODY .jive-label,
+.jive-watchlist .jive-watch-message {
+    border-left : 1px #ccc solid;
+}
+.jive-table TFOOT TD {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+    background-color : #ddd;
+    border-top : 1px #aaa solid;
+}
+.jive-table .jive-odd {
+    background-color : #fff;
+}
+.jive-table .jive-even {
+    background-color : #eee;
+}
+.jive-table TFOOT INPUT, .jive-table TFOOT SELECT {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+}
+.jive-table .jive-active {
+    background-color : #ffc;
+}
+.jive-table .jive-active TD, .jive-table .jive-active TH {
+    border-bottom : 1px #999 solid;
+}
+.jive-form-table TH, .jive-form-table TD {
+    padding : 3px;
+}
+.jive-table .jive-messagebox {
+    border-top : 1px #ccc solid;
+}
+.jive-messagebox-this {
+    background-color: #ffe;
+}
+.jive-messagebox-parent {
+    background-color: #fee;
+}
+.jive-messagebox-child {
+    background-color: #efe;
+}
+#jive-reply-tree .jive-table .jive-current TD {
+    background-color : #ffc;
+    vertical-align : middle;
+}
+#jive-reply-tree .jive-table .jive-current A {
+    font-weight : bold;
+}
+.jive-message-body {
+    border-top: 1px #ccc solid;
+    padding-top : 1em;
+    padding-bottom : 2em;
+    overflow : auto;
+}
+
+/*  Portlet Boxes */
+.jive-portlet-box {
+    border : 1px #ccc solid;
+    margin-bottom : 1em;
+}
+.jive-portlet-box THEAD {
+    padding : 0px;
+}
+.jive-portlet-box THEAD TH, .jive-portlet-box TBODY TD {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+    padding : 3px;
+}
+.jive-portlet-box THEAD TH {
+    text-align : left;
+    font-weight : bold;
+    background-color : #eee;
+    color : #000;
+    border-bottom : 1px #ccc solid;
+}
+.jive-portlet-box TBODY TD {
+    vertical-align : top;
+}
+.jive-portlet-box LABEL {
+    padding-top : 2px;
+}
+.jive-portlet-box .jive-status-legend-groups .jive-first-row,
+.jive-portlet-box .jive-status-legend-points .jive-first-row {
+    border-top : 1px #ccc solid;
+}
+
+/*  Category, Forum and Thread lists */
+.jive-category-name .jive-description {
+    font-weight : normal;
+}
+.jive-author {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+}
+.jive-author-pageuser {
+    font-weight : bold;
+}
+.jive-author-fullname {
+    color : #666;
+}
+.jive-thread-list THEAD .jive-forum-name, .jive-thread-list THEAD .jive-date {
+    color : #fff;
+}
+
+/*  Message list */
+.jive-message-list {
+    margin-bottom : 0.5em;
+}
+.jive-message-list .jive-table THEAD TH {
+    text-align : left;
+    font-weight : normal;
+}
+.jive-message-list .jive-table THEAD TH A {
+    color : #fff;
+    font-weight : normal;
+}
+.jive-message-list .jive-table .jive-paginator A {
+    border : 1px #69c solid;
+}
+.jive-message-list .jive-table .jive-paginator A:hover {
+    background-color : #ffc;
+    border : 1px #369 solid;
+    color : #000;
+}
+.jive-message-list .jive-table .jive-paginator .jive-current {
+    border : 1px #369 solid;
+    background-color : #eee;
+    color : #000;
+}
+.jive-message-list .jive-table .jive-subject {
+    font-weight : bold;
+}
+.jive-status-level-image {
+    padding : 1px;
+}
+
+/*  Info and errors */
+.jive-info-message {
+    margin-bottom : 1em;
+}
+.jive-info-message TBODY TD {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+}
+.jive-info-message TBODY TD A {
+    font-weight : normal;
+}
+.jive-info-message .jive-icon {
+    padding-right : 6px;
+}
+#jive-info-message {
+    border : 1px #D9B04C solid;
+    background-color : #FFE9B2;
+    margin-top: 5px;
+    margin-bottom: 5px;
+    -moz-border-radius : 3px;
+}
+
+/*  Profiles */
+.jive-profile .jive-table THEAD TH {
+    text-align : left;
+}
+
+/*  Page styles - these are styles for specific pages which extend the ones defined above. */
+
+/*  Extra front page styles */
+#jive-frontpage .jive-search-form TR {
+    vertical-align : middle;
+}
+
+/*  Extra post page styles */
+#jive-postpage .jive-fieldset DIV {
+    padding : 0.5em;
+    margin : 0px;
+}
+.jive-fieldset {
+    border : 1px #ccc solid;
+    -moz-border-radius : 3px;
+    padding : 3px;
+}
+#jive-postpage .jive-rating-buttons {
+    white-space : nowrap;
+}
+#jive-post-bodybox {
+    border : 1px #ccc solid;
+    -moz-border-radius : 3px;
+    padding : 3px;
+    background-color : #E0E5E9;
+}
+#editor-tabs {
+    background-color: #e8f1f8;
+}
+
+/* jive tags */
+.jive-content-snip-tags {
+	padding-left: 16px;
+	font-size: 8pt;
+	color: #666;
+	margin-right: 12px;
+	background: transparent url(../images/jive-icon-tag-12x12.gif) no-repeat left;
+	}
+	
+.jive-content-tags {
+	clear: both;
+	padding-left: 16px;
+	font-size: 8pt;
+	color: #666;
+	background: transparent url(../images/jive-icon-tag-12x12.gif) no-repeat left;
+	}
+.jive-tags-edit {
+    padding-left: 10px;
+}
+
+/* jive compose - tags */
+.jive-compose-tags {
+	clear: both;
+	width: 100%;
+	margin: 0px 0px 15px 0px;
+	/*padding-top: 5px; */
+	border: 1px solid #d5e5f1;
+	background-color: #e8f1f8;
+	}
+
+.jive-compose-tags .jive-compose-tags-container {
+	display: block;
+	padding: 5px;
+}
+
+.jive-compose-tags .tag_directions {
+    padding:5px;
+    color: gray;
+}
+
+.jive-compose-tags h4 {
+	margin: 0px 5px 5px 0px;
+	padding: 0px;
+	display: inline;
+}
+
+.jive-compose-tags input {
+	width: 95%;
+	clear: both;
+	font-size: 9pt;
+	margin: 5px 0px 0px 0px;
+    /* NOTE: bottom margin must be 0px for autocomplete tag UI */
+    }
+.jive-compose-tags strong {
+	clear: both;
+	padding: 10px 0px 3px 1px;
+	margin: 0px;
+	font-size: 8pt;
+	}
+
+.jive-tag-selected {
+	background-color: #d5e5f1;
+    }
+
+
+
+.jive-messagebox .jive-compose-tags {
+	margin-top: 5px;
+	}
+
+
+/* tagset (tag) cloud styles for pretty display */
+/* default colors here, each doctype css has their respective colors */
+.jive-tagset-popularity0 a {
+	color: #8398c4;
+	font-size: 8pt;
+    }
+.jive-tagset-popularity1 a {
+	color: #6e87ba;
+	font-size: 9pt;
+	}
+.jive-tagset-popularity2 a {
+	color: #5e78ad;
+	font-size: 10pt;
+	}
+.jive-tagset-popularity3 a {
+	color: #4d6aa3;
+	font-size: 11pt;
+	}
+.jive-tagset-popularity4 a {
+	color: #3c5993;
+	font-size: 12pt;
+	}
+.jive-tagset-popularity5 a {
+	color: #34518a;
+	font-size: 14pt;
+	}
+.jive-tagset-popularity6 a {
+	color: #2a4882;
+	font-size: 15pt;
+	}
+.jive-tagset-popularity7 a {
+	color: #23427d;
+	font-size: 16pt;
+	}
+.jive-tagset-popularity8 a {
+	color: #17346c;
+	font-size: 17pt;
+	}
+.jive-tagset-popularity9 a {
+	color: #152f61;
+	font-size: 18pt;
+	}
+
+/* 'popular tags' sidebar */
+.jive-sidebar-populartags {
+	padding: 0;
+	color: #333;
+	}
+.jive-sidebar-populartags ul {
+	float: left;
+	padding: 0;
+	margin: 6px 0 0 0;
+	list-style-type: none;
+	}
+.jive-sidebar-populartags ul li {
+	display: inline !important;
+    float: none !important;
+    height: 22px;
+	padding: 0;
+	margin: 0;
+    text-decoration: none;
+    float: left;
+    }
+.jive-sidebar-populartags ul li a {
+    margin-left: 3px;
+    text-decoration: none;
+    }
+.jive-sidebar-populartags ul li a:hover {
+    text-decoration: underline;
+    }
+.jive-sidebar-populartags span {
+    float: right;
+    font-size: 8pt; 
+    }
+.jive-tagset-popularity0 a,
+.jive-tagset-popularity1 a,
+.jive-tagset-popularity2 a,
+.jive-tagset-popularity3 a,
+.jive-tagset-popularity4 a,
+.jive-tagset-popularity5 a,
+.jive-tagset-popularity6 a,
+.jive-tagset-popularity7 a,
+.jive-tagset-popularity8 a,
+.jive-tagset-popularity9 a {
+	line-height: 16pt;
+    }
+
+
+#jive-postpage TEXTAREA {
+    font-family : arial,helvetica,sans-serif;
+    font-size : 10pt;
+}
+#jive-file-list {
+    width : 100%;
+    padding : 5px 0 7px 0;
+    margin: 0px;
+    display: none;
+    background : transparent;
+}
+#jive-file-list, #jive-file-list DIV {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+    font-weight : bold;
+}
+#jive-add-attachment {
+    padding: 3px;
+}
+
+.jive-post-form TABLE {
+    width: 100%;
+}
+.jive-post-form TABLE TD.jive-label {
+    width: 1%;
+}
+.jive-post-form .jive-post-form-help {
+    padding: 2px 0 2px 18px;
+    background: url(../images/help-16x16.gif) 0 0 no-repeat;
+}
+#jive-edit-by-box {
+    width : 100%;
+}
+.jive-post-form .jive-attach-text {
+    padding : 4px;
+    padding-left : 12px;
+    background-image : url(../images/attach-7x11.gif);
+    background-repeat : no-repeat;
+    background-position : left;
+}
+
+/*  Text area resizing styles */
+#textEditorResize {
+    border-left: 1px #ccc solid;
+    border-bottom: 1px #ccc solid;
+    border-right: 1px #ccc solid;
+    white-space: nowrap;
+    margin: 0px;
+    height: 21px;
+}
+
+.textareaResize {
+	float: right;
+	background-image: url('/images/resize-grabber.gif');
+	background-repeat: no-repeat;
+	width: 11px;
+	height: 20px;
+	cursor: se-resize;
+	border: 0px;
+}
+#textEditorResize {
+	border-top : 1px #ccc solid;
+}
+
+.textareaResizeBox {
+	width: 1px;
+	height: 1px;
+	display: none;
+	border: 1px dotted gray;
+	margin: 0px;
+	padding: 0px;
+}
+
+#jive-markup-help {
+    width : 225px;
+    margin-left : 10px;
+    border : 1px #ccc solid;
+    -moz-border-radius : 3px;
+}
+#jive-markup-help TH, #jive-markup-help TD {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+}
+#jive-markup-help TH {
+    background-color : #eee;
+    border-bottom : 1px #ccc solid;
+    padding : 4px;
+}
+#jive-markup-help TD {
+    padding : 4px;
+}
+#jive-markup-help .jive-inner-table TH {
+    text-align : left;
+    background-color : #fff;
+    border-bottom : 1px #ccc solid;
+}
+#jive-markup-help H1,
+#jive-markup-help H2,
+#jive-markup-help H3,
+#jive-markup-help H4,
+#jive-markup-help H5,
+#jive-markup-help H6 {
+    padding : -6px;
+    margin : -7px 0 -7px 0;
+    color : #999;
+}
+#jive-markup-help HR {
+    margin : 0;
+    padding : 0;
+}
+
+/*  Ratings (correct/helpful) */
+.jive-rate-button {
+    font-size : 8pt;
+    font-family : verdana;
+    border : 1px #aaa solid;
+    font-weight : normal;
+    padding : 1px;
+    margin : 1px;
+    -moz-border-radius : 3px;
+}
+.jive-helpful-rating TD {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+}
+
+/*  Extra portlet styles */
+#jive-frontpage .jive-portlet-box,
+#jive-categorypage .jive-portlet-box,
+#jive-forumpage .jive-portlet-box,
+#jive-flatpage .jive-portlet-box,
+#jive-threadedpage .jive-portlet-box,
+#jive-treepage .jive-portlet-box,
+#jive-rsspage .jive-portlet-box,
+.jive-portlet-info-box
+{
+    margin-left : 1em;
+}
+
+/*  Extra thread list styles */
+#jive-categorypage .jive-thread-list .jive-table TR {
+    vertical-align : middle;
+}
+
+/*  Spell checking styles */
+.jive-spell-error-current, .jive-spell-error {
+    color : #f00;
+    border-bottom : #f00 2px dotted;
+}
+.jive-spell-error-current {
+    background-color : #eee;
+    font-weight : bold;
+}
+#jive-spellpage .jive-table .jive-spell-button {
+    background-color : #eee;
+    font-size : 8pt;
+    font-family : verdana,arial,helvetica,sans-serif;
+    padding : 2px 6px 2px 6px;
+}
+#jive-spell-markup-div {
+    padding : 1em;
+}
+  
+/* Styles for code macro */
+CODE.jive-xml {
+    font-family: monospace;
+    }
+CODE.jive-xml .jive-xml-tag {
+    color: navy;
+    font-weight: bold;
+    }
+CODE.jive-xml .jive-xml-comment {
+    color: darkgreen;
+    }
+CODE.jive-xml .jive-xml-quote {
+    color: red;
+    }
+CODE.jive-xml .jive-xml-keyword {
+    color: navy;  
+    font-weight: bold;
+    }
+
+CODE.jive-sql {
+    font-family: monospace;
+    }
+CODE.jive-sql .jive-sql-object {
+    color: navy;
+    font-weight: bold;
+    }
+CODE.jive-sql .jive-sql-comment {
+    color: darkgreen;
+    }
+CODE.jive-sql .jive-sql-quote {
+    color: red;
+    }
+CODE.jive-sql .jive-sql-keyword {
+    font-weight: bold;
+    color: navy;
+    }
+    
+/*  Quote original styles */
+.jive-quote, .jive-pre {
+    overflow : auto;
+}
+
+.jive-pre {
+    overflow : auto;
+    width : 650px;
+    padding : 10px;
+    padding-left : 1em;
+    background-color : #eee;
+    margin : 1em 2em 0.5em 2em;
+}
+
+.jive-quote {
+    padding : 10px;
+    padding-left : 1em;
+    background-color : #eee;
+    margin : 1em 2em 0.5em 2em;
+    color : #333;
+    font-style : italic;
+}
+
+.jive-quote, .jive-pre {
+    border : 1px #eee solid;
+    border-left : 2px #ccc solid;
+    background : url(../images/quote-background-1.gif);
+}
+.jive-quote .jive-quote {
+    border : 1px #eef solid;
+    border-left : 2px #ccf solid;
+    background : url(../images/quote-background-2.gif);
+}
+.jive-quote .jive-quote .jive-quote {
+    border : 1px #efe solid;
+    border-left : 2px #cfc solid;
+    background : url(../images/quote-background-3.gif);
+}
+.jive-quote .jive-quote .jive-quote .jive-quote {
+    border : 1px #fee solid;
+    border-left : 2px #fcc solid;
+    background : url(../images/quote-background-4.gif);
+}
+
+/*  Extra settings and watch page styles */
+.jive-settings .jive-table TH, .jive-watchlist .jive-table TH {
+    text-align : left;
+}
+.jive-settings .jive-table .jive-label {
+    width : 30%;
+}
+.jive-watchlist .jive-watchlist-internal {
+    /*
+    margin : 10px;
+    margin-bottom : 20px;
+    */
+    width : 100%;
+}
+.jive-watchlist .jive-watchlist-internal TH {
+    background-color : #eee;
+    border-width : 1px 0px 1px 1px;
+    border-color : #ccc;
+    border-style : solid;
+    color : #000;
+}
+.jive-watchlist .jive-watchlist-internal .cn {
+    border-right : 1px  #ccc solid;
+}
+.jive-watchlist .jive-watchlist-internal .c1
+{
+    border-left : 1px #ccc solid;
+}
+.jive-watchlist .jive-watchlist-internal TBODY TR {
+    background-color : #eee;
+    border-width : 0px 1px 0px 1px;
+    border-color : #ccc;
+    border-style : solid;
+}
+.jive-watchlist .jive-watchlist-internal .jive-odd,
+.jive-watchlist .jive-watchlist-internal .jive-even
+{
+    background-color : #fff;
+}
+.jive-watchlist .jive-watchlist-internal TBODY TD {
+    border-bottom : 1px #ccc solid;
+}
+.jive-watchlist .jive-watchlist-internal TFOOT TD {
+    background-color : #fff;
+}
+.jive-watchlist .jive-watch-message {
+    padding : 10px;
+}
+
+/*  Announcements */
+.jive-announce-description {
+    color : #666;
+}
+.jive-announce .jive-announce-edit {
+    float : right;
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+}
+
+/*  Timer (not enabled by default) */
+.jive-timer {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+    color : #999;
+    text-align : center;
+}
+
+/*  Webwork styles */
+.errorLabel {
+    color : #F00;
+    font-weight:bold;
+}
+.errorMessage {
+    color : #F00;
+    font-weight:bold;
+}
+.checkboxErrorLabel {
+    color : #F00;
+}
+.required {
+    color : #F00;
+}
+
+/*  public profile styles */
+.jive-profile-box {
+    border : 1px #cccccc solid;
+    background-color : #eeeeee;
+    /*-moz-border-radius : 8px;*/
+    /*padding: 7px;*/
+}
+
+.jive-profile-box THEAD TH {
+    background-color: #cccccc;
+    font-size: 14pt;
+    font-weight: bold;
+    text-align: left;
+}
+
+.jive-profile-box THEAD TR {
+    background-color: #cccccc;
+}
+
+.jive-profile-table {
+    border : 0px #fff none;
+    margin-bottom : 1em;
+}
+.jive-profile-table THEAD {
+    padding : 0px;
+}
+.jive-profile-table THEAD TH, .jive-profile-table TBODY TD {
+    font-family : verdana, arial, helvetica, sans-serif;
+    font-size : 8pt;
+    padding : 3px;
+}
+.jive-profile-table THEAD TH {
+    text-align : left;
+    font-weight : bold;
+    background-color : #eee;
+    border-bottom : 1px #ccc solid;
+}
+.jive-profile-table TBODY TD {
+    vertical-align : top;
+}
+
+.jive-profile-table-title {
+    font-size: 14pt;
+    font-weight: bold;
+    text-align: left;
+}
+
+tr.selectedControlPanel {
+    color : #ffffff;
+    background-color : #eeeeee;
+}
+
+/*  Moderation Messages */
+#jive-modpage .jive-info-message {
+    padding: 3px;
+}
+
+#jive-modpage .jive-mark-buttons INPUT, #jive-modpage .jive-mark-buttons SELECT, #jive-modpage .jive-jump-box SELECT {
+    font-size: 8pt;
+    font-family: verdana, arial, helvetica, sans-serif;
+}
+
+#jive-modpage .jive-mod-msg-row TD {
+    border-bottom: 1px #ccc solid;
+}
+
+#jive-modpage .jive-mod-msg-row-app TD {
+    border-bottom: 1px #999 solid;
+    background-color: #cfc;
+}
+
+#jive-modpage .jive-mod-msg-row-rej TD {
+    border-bottom: 1px #999 solid;
+    background-color: #fcc;
+}
+
+#jive-mod-forum-box TH, #jive-mod-forum-box TD {
+    font-size: 8pt;
+    font-family: verdana;
+}
+
+#jive-mod-forum-box {
+    margin-right: 8px;
+}
+
+#jive-mod-forum-box TABLE {
+    border: 1px #ccc solid;
+}
+
+#jive-mod-forum-box TH {
+    text-align: left;
+    font-weight: bold;
+    background-color: #eee;
+    border-bottom: 1px #ccc solid;
+}
+
+#jive-mod-forum-box .jive-mod-forum-all TD {
+    border-top: 1px #ccc solid;
+}
+
+#jive-mod-forum-box LABEL, #jive-mod-forum-box INPUT, #jive-mod-forum-box SELECT {
+    font-size: 8pt;
+    font-family: verdana, arial, helvetica, sans-serif;
+}
+
+/*  Styles for tabs                              */
+.jivetabs {
+	float: left;
+	width: 100%;
+	line-height: normal;
+	background-color : #eee;
+	background-image: url('/images/tabs/tabs_bg.gif');
+	white-space : nowrap;
+	border-left: 1px #ccc solid;
+	border-top: 1px #ccc solid;
+	border-right: 1px #ccc solid;
+	padding: 0px;
+	padding-top : 5px;
+}
+.jivetabs ul {
+    border: 0px;
+	margin: 0px;
+	padding: 0px 10px 0px 10px;
+	list-style: none;
+}
+.jivetabs li {
+	float: left;
+	background: url('/images/tabs/tab_bg.gif') no-repeat left top;
+	margin: 0px;
+	margin-left: 0px;
+	margin-right: 2px;
+	padding: 0px 0px 0px 10px;
+	line-height: 18px;
+	list-style-image: none;
+}
+.jivetabs li.current {
+	background: url('/images/tabs/tab_sel_bg.gif') no-repeat left top;
+	margin-right: 2px;
+	list-style-image: none;
+}
+.jivetabs span {
+	float: left;
+	display: block;
+	background: url('/images/tabs/tab_end.gif') no-repeat right top;
+	padding: 0px 10px 0px 0px;
+}
+.jivetabs div.jive-preferredlink {
+    float: right;
+    display: inline;
+	white-space : nowrap;
+	visibility: hidden;
+	padding-right : 6px;
+}
+.jivetabs .current span {
+	background: url('/images/tabs/tab_sel_end.gif') no-repeat right top;
+}
+.jivetabs a.jive-editor-tab {
+	text-decoration: none;
+	font-family: Verdana, Arial;
+	font-size: 10px;
+}
+.jivetabs a:link, .jivetabs a:visited, .jivetabs a:hover {
+	color: black;
+}
+.jivetabs a:hover {
+}
+.jivetabs .current {
+}
+.jivetabs .current a, .jivetabs .current a:link, .jivetabs .current a:visited {
+}
+
+div#autosave {
+    float: none;
+    display: inline;
+    font-size: 10px;
+    padding-left: 15px;
+    visibility: visible;
+    white-space : nowrap;
+}
+
+/*  Upload progress bar styles */
+#progressBar {
+    padding-top: 5px;
+}
+#progressBarBox {
+    width: 350px;
+    height: 20px;
+    border: 1px inset;
+    background: #eee;
+}
+#progressBarBoxContent {
+    width: 0px;
+    height: 20px;
+    border-right: 1px solid #444;
+    background: #69c;
+}
+
+/*  Editor and inline spellchecker styles */
+.jive-spellchecker-menu {
+	border: 1px solid;
+	border-color: threedlightshadow threeddarkshadow threeddarkshadow threedlightshadow;
+	position: absolute;
+}
+
+.jive-spellchecker-menu .inner {
+	border: 1px solid;
+	border-color: threedhighlight threedshadow threedshadow threedhighlight;
+	background: threedface;
+	padding: 2px;
+}
+
+.jive-spellchecker-menu a {
+	display: block;
+	font: menu;
+	color: menutext;
+	padding: 1px 5ex 1px 3ex;
+	text-decoration: none;
+}
+
+.jive-spellchecker-menu a:hover {
+	background: highlight;
+	color: highlighttext;
+}
+
+.jive-spellchecker-menu .separator {
+	border-top: 1px solid threedshadow;
+	border-bottom: 1px solid threedhighlight;
+	overflow: hidden;
+	margin: 2px;
+}
+
+#textEditor {
+    border: 0px;
+	width: 100%;
+	height: 250px;
+	color: windowtext;
+	line-height: expression('1.2em');
+	padding-left: 1em;
+}
+
+.jive-spell-markupbox {
+    border: 0px;
+	position: absolute;
+	overflow: auto;
+	line-height: expression('1.2em');
+	padding: 1px;
+	background: white;
+	color: windowtext;
+	display: none;
+	white-space: pre-wrap;
+}
+
+.jive-editor-panel {
+    padding : 0px;
+    width: 100%;
+}
+#editor-tabs {
+    display: none;
+    width: 100%;
+    margin-right: 2px;
+}
+.jive-panel-wrapper div.panel {
+	display: none;
+}
+
+.jive-panel-wrapper div.current {
+    border: 1px #ccc solid;
+    border-top: 0px;
+    display: block;
+	width: 100%;
+    overflow: visible; /* Should be auto but that breaks Safari */
+}
+
+.jive-panel-wrapper {
+    width: 100%;
+    margin: 0px;
+	border: 0px;
+    padding: 0px;
+    clear: both;
+	background-color: #eee;
+}
+
+.jive-panel-wrapper #text-panel {
+    border: 0px;
+    border-left: 1px #ccc solid;
+    border-right: 1px #ccc solid;
+    margin: 0px;
+}
+
+.jive-panel-wrapper #text-panel .text-links {
+    padding: 5px;
+    background-color: #eee;
+    font-family: Verdana, Arial;
+	font-size: 10px;
+	border-bottom : 1px #ccc solid;
+}
+
+.jive-panel-wrapper #preview-panel {
+    background-color: #fff;
+    overflow: visible; /* Should be auto but that breaks Safari */
+}
+.jive-panel-wrapper #preview-panel .inner-panel {
+    padding : 1em;
+}
+
+.jive-selbox {
+    font-size:8pt;
+    font-family:verdana;
+}
+
+/* safari hack - safari will ignore this block - http://www.ibloomstudios.com/article1/ */
+.jive-panel-wrapper #preview-panel {overflow: auto;#}
+
+TD.link_label, .error_label  {
+    padding:5px;
+    text-align:left;
+}
+TD.link_label {
+    color:#000;
+}
+.error_label {
+    color:#f00;
+    text-align:center;
+}
+
+/*  Text area resizing styles */
+.textareaResize {
+	float: right;
+	background-image: url('<%= request.getContextPath() %>/images/resize-grabber.gif');
+	background-repeat: no-repeat;
+	width: 11px;
+	height: 20px;
+	cursor: se-resize;
+}
+
+.textareaResizeBox {
+	width: 10px;
+	height: 10px;
+	display: none;
+	border: 1px dotted gray;
+	margin: 0;
+	padding: 0;
+}
+
+/*  RSS alignment styles */
+.jive-rss-cell {
+    float: right;
+}
+
+
+/* P.I.E. FLOAT CLEARING - See http://www.positioniseverything.net/easyclearing.html */
+.jive-clearfix:after {
+  content: ".";
+  clear: both;
+  height: 0;
+  visibility: hidden;
+  display: block;
+}
+.jive-clearfix {
+  display: inline-block; /* Fixes IE/Mac */
+}
+/* Hides from IE-mac \*/
+* html .jive-clearfix {height: 1%;}
+.jive-clearfix {display: block;}
+/* End hide from IE-mac */
diff --git a/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card.htm b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card.htm
new file mode 100644
index 0000000000000000000000000000000000000000..e9ceb920500534b53b3d34b9b81203362d782223
--- /dev/null
+++ b/Lesenswertes/rsa-nach-Karte/Sending RSA public key modulus to card.htm	
@@ -0,0 +1,2632 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html class="regenabled gecko jsenabled gecko jsenabled  gecko radius jsenabled regloaded" xmlns="http://www.w3.org/1999/xhtml"><head>
+ 
+
+ 
+
+
+
+
+
+
+
+
+
+
+<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
+<title>Java Card - Sending RSA public key modulus to card</title>
+<link rel="stylesheet" type="text/css" href="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/style.css">
+<link rel="stylesheet" type="text/css" href="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/default.css">
+<link rel="stylesheet" href="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/default_developer.css">
+<link href="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/sr.css" rel="stylesheet" type="text/css">
+<script language="javascript1.2" type="text/javascript" src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/sniff.js"></script>
+
+
+</head><body>
+
+<table width="100%">
+<tbody><tr>
+<td>
+<!-- BEGIN A2 COMPONENT V.8 -->
+<div id="a2v8" class="a2v8forums">
+<div class="a2v8w1"><div class="a2v8w2"><div class="a2v8w3">
+
+<ul class="a2v8links">
+<li class="a2v8sunlogo"><a href="http://www.sun.com/" title="www.sun.com"><span>Sun.com</span></a></li>
+<li><a href="http://forums.sun.com/" title="forums.sun.com"><span>forums.sun.com</span></a></li>
+</ul>
+
+<h3 class="listTitle">participate</h3>
+<form action=""><select class="goto"><option selected="selected" value="" class="gotoHeading">participate</option>
+
+<option value="http://wikis.sun.com/">wikis</option><option value="http://blogs.sun.com/">blogs</option><option value="http://planets.sun.com/">planets</option><option value="http://forums.sun.com/">forums</option><option value="http://mediacast.sun.com/">mediacast</option></select></form>
+
+<div class="a2v8x1"></div>
+</div></div></div>
+</div>
+<!-- END A2 COMPONENT V.8 -->
+
+</td>
+</tr>
+</tbody></table>
+
+<!-- BEGIN breadcrumbs -->
+           <div class="breadcrumb">
+            
+                    <nobr><a href="http://forums.sun.com/">Oracle Forums</a> &gt;</nobr>
+
+            
+                                    <nobr><a href="http://192.9.162.102/category.jspa?categoryID=22">Java Mobility Forums</a> &gt;</nobr>
+            
+                                    <nobr><a href="http://192.9.162.102/category.jspa?categoryID=24">Consumer and Commerce</a> &gt;</nobr>
+            
+                                    <nobr><a href="http://192.9.162.102/forum.jspa?forumID=23&amp;start=0">Java Card</a> &gt;</nobr>
+            
+            </div>
+
+<!-- END breadcrumbs -->
+    
+<br>
+ <div class="pagetitle">Java Card - Sending RSA public key modulus to card</div>
+
+
+
+
+
+
+<table cellpadding="0" cellspacing="0" width="100%"> <!-- CONTENT & NAV TABLE --> 
+<tbody><tr>
+
+<td valign="top"> <!-- MAIN CONTENT -->
+<!--startindex-->
+<!-- BEGIN WRAPPER TABLE, 1 COLUMN, MAIN -->
+<table border="0" cellpadding="0" cellspacing="10" width="100%">
+<tbody><tr><td valign="top" width="100%">
+
+<link rel="alternate" type="application/rss+xml" title="RSS Summary Feed" href="http://forums.sun.com/rss/rssmessages.jspa?threadID=5418701">
+
+    <link rel="alternate" type="application/rss+xml" title="RSS Full Feed" href="http://forums.sun.com/rss/rssmessages.jspa?threadID=5418701&amp;full=true">
+
+
+
+
+
+
+<!-- BEGIN MAIN CONTENT -->
+
+<table class="vtop" border="0" cellpadding="4" cellspacing="0" width="100%">
+<tbody><tr>
+<td>
+
+
+
+
+
+    <div id="jive-question-box" class="jive-infobox">
+    <table border="0" cellpadding="2" cellspacing="0">
+    <tbody>
+	
+
+        <tr valign="top">
+            <td><img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/question-open-24x24.gif" alt="" border="0"></td>
+            <td>
+                
+
+                    
+
+                        
+
+                        
+                            
+                            This question is <span class="unans">not answered</span>.
+
+                        
+
+                        
+			
+<!--
+                        

+                            

+                            Helpful answers available: <b>0</b>.

+

+                            

+                            Correct answers available: <b>1</b>.

+                        

+

+-->
+                    
+
+                
+            </td>
+       </tr>
+    </tbody>
+    </table>
+    </div><br>
+
+
+ 
+</td>
+</tr>
+
+<tr>
+<td>
+
+</td>
+</tr>
+
+<tr>
+<td>
+<a href="http://192.9.162.102/forum.jspa?forumID=23">&lt;&lt; &nbsp; Back to Forum</a>
+&nbsp;| &nbsp; <a href="http://developers.sun.com/contact/feedback.jsp?referer=http://forums.sun.com?forumID=23&amp;category=sdn&amp;mailsubject=Forums%20or%20Community">Give us Feedback </a>
+</td>
+
+<td align="right">
+ <!--  BEGIN VTI2 PAGINATION COMPONENT, variation 2 without number links -->
+
+            
+
+    <!--  END VTI2 PAGINATION COMPONENT, variation 2 without number links -->
+
+</td>
+
+</tr>
+</tbody></table>
+
+<!-- BEGIN G15 GENERIC CONTENT TABLE -->
+<table class="vtop" bgcolor="#666666" border="0" cellpadding="4" cellspacing="0" width="100%"><tbody><tr><td>
+<div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><div class="jive-message-list">
+
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div><table class="vtop" border="0" cellpadding="2" cellspacing="0" width="100%">
+
+<tbody><tr bgcolor="#666666">
+
+<!-- BEGIN DUKE DOLLARS -->
+<td colspan="2">
+<table border="0" width="100%">
+<tbody><tr>
+<td><div class="pad5x10"><span style="color: rgb(255, 255, 255);">
+        
+</span></div>
+</td>
+
+<td align="right"><div class="pad5x10"><span style="color: rgb(255, 255, 255);">
+ 
+                This topic has
+                30
+                replies
+                on
+                3
+                pages.
+
+            
+
+            
+
+                &nbsp;&nbsp;
+
+                
+
+                
+                    
+
+                        <a href="http://192.9.162.102/thread.jspa?threadID=5418701&amp;start=0&amp;tstart=0" class="jive-current"><font color="#ffffff">1</font></a>
+                        |
+
+                     
+
+                
+                    
+
+                        <a href="http://192.9.162.102/thread.jspa?threadID=5418701&amp;start=15&amp;tstart=0" class=""><font color="#ffffff">2</font></a>
+                        |
+
+                     
+
+                
+                    
+
+                        <a href="http://192.9.162.102/thread.jspa?threadID=5418701&amp;start=30&amp;tstart=0" class=""><font color="#ffffff">3</font></a>
+                        |
+
+                     
+
+                
+
+                
+
+                    
+                    <a href="http://192.9.162.102/thread.jspa?threadID=5418701&amp;start=15&amp;tstart=0"><font color="#ffffff">Next »</font></a>
+
+                
+
+
+            
+</span></div></td>
+
+</tr>
+</tbody></table>
+</td>
+</tr>
+
+
+<tr bgcolor="#666666">
+<td colspan="2" align="right"><div class="pad5x10"><span style="color: rgb(255, 255, 255);">
+
+	<!-- BEGIN  Move Ability for moderators -->
+
+           
+	<!-- END move ability for moderators -->
+
+   	<img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt=" " border="0" height="12" hspace="4" vspace="1" width="14"><a href="http://192.9.162.102/emailfriend%21default.jspa?threadID=5418701"><font color="#ffffff">E-mail this Topic</font></a> &nbsp;
+        
+	<img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_eye.gif" alt=" " border="0" hspace="4">
+
+      <a href="http://192.9.162.102/watches%21add.jspa?forumID=23&amp;threadID=5418701"><font color="#ffffff">Watch this topic</font></a>
+      &nbsp;
+
+</span></div></td>
+
+</tr>
+
+
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 0">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1183025">A_nl</a>
+
+	   <br>
+	 Posts:46
+	<br>
+	Registered: 11/28/09
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878319"></a>  Sending RSA public key modulus to card
+	  &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878319#10878319">
+	03.12.2009 12:40 </a> 
+
+
+	 </b> 
+
+		
+
+		
+
+    &nbsp;
+
+    
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878319" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878319" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878319', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 Hello,<br>
+<br>
+I'm trying to send a public key from a java program to the javacard. I 
+do this by sending both the exponent and the modulus of the public key 
+to the card. However, I have some trouble sending the (large) modulus:<br>
+<br>
+In the Java file:<br>
+<br>
+<pre class="jive-pre"><code class="jive-code jive-java">publicKey  = (RSAPublicKey) keyPair.getPublic();
+&nbsp;
+<font color="navy"><b>public</b></font> <font color="navy"><b>byte</b></font>[] getModulus() <font color="navy">{</font>
+	<font color="navy"><b>return</b></font> publicKey.getModulus().toByteArray();
+<font color="navy">}</font>
+</code></pre><br>
+<br>
+I then send an APDU to the card:  new CommandAPDU(CLA, INS, (byte) 0x00, (byte) 0x00, getModulus()));<br>
+<br>
+<pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>private</b></font> <font color="navy"><b>void</b></font> setModulus(APDU apdu) <font color="navy">{</font>
+	<font color="navy"><b>byte</b></font> buf[] = apdu.getBuffer();
+	<font color="navy"><b>short</b></font> len = (<font color="navy"><b>short</b></font>)((<font color="navy"><b>short</b></font>) buf[(<font color="navy"><b>short</b></font>)ISO7816.OFFSET_LC] &amp; (<font color="navy"><b>short</b></font>)0x00FF);
+	<font color="navy"><b>short</b></font> numBytes = apdu.setIncomingAndReceive();
+&nbsp;
+	<font color="navy"><b>while</b></font> (numBytes &lt; len)
+		numBytes += apdu.receiveBytes((<font color="navy"><b>short</b></font>)((<font color="navy"><b>short</b></font>)ISO7816.OFFSET_CDATA+numBytes)); <font color="darkgreen">// APS- copy more incoming bytes to APDU buffer starting at specific buffer offset </font>
+&nbsp;
+	   Util.arrayCopy(buf, ISO7816.OFFSET_CDATA, MYMODULUS, (<font color="navy"><b>short</b></font>)(MYMODULUS.length-numBytes), numBytes);
+		
+	<font color="darkgreen">// Send results</font>
+	apdu.setOutgoing();
+	apdu.setOutgoingLength((<font color="navy"><b>short</b></font>)numBytes );
+	apdu.sendBytesLong(buf, (<font color="navy"><b>short</b></font>) ISO7816.OFFSET_CDATA, (<font color="navy"><b>short</b></font>)numBytes );
+<font color="navy">}</font>
+</code></pre><br>
+<br>
+This seems to go okay (the above '//send results' part shows the correct
+ modulus when I print it), however when I try to set the publickey right
+ after that it seems not to be possible:<br>
+<br>
+<pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>private</b></font> <font color="navy"><b>void</b></font> setKey(APDU apdu) <font color="navy">{</font>
+	publicKey.clearKey();
+	publicKey.setExponent(MYEXPONENT, (<font color="navy"><b>short</b></font>)0, (<font color="navy"><b>short</b></font>)MYEXPONENT.length);
+	<font color="navy"><b>try</b></font> <font color="navy">{</font> publicKey.setModulus( MYMODULUS, (<font color="navy"><b>short</b></font>)0, (<font color="navy"><b>short</b></font>)MYMODULUS.length); <font color="navy">}</font>
+	<font color="navy"><b>catch</b></font> (CryptoException e) <font color="navy">{</font> <font color="darkgreen">/*This error seems to be thrown?..*/</font> <font color="navy">}</font>
+<font color="navy">}</font>
+</code></pre><br>
+The exception is thrown. I'm not quite sure what's wrong here. Any help in the good direction would be appreciated. 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 0">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1183025">A_nl</a>
+
+	   <br>
+	 Posts:46
+	<br>
+	Registered: 11/28/09
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878554"></a>  Re: Sending RSA public key modulus to card
+	  &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878554#10878554">
+	03.12.2009 17:26 </a> 
+
+
+	 (reply 1
+	of 30) &nbsp;(In reply to <a href="http://192.9.162.102/thread.jspa?messageID=10878319#10878319">
+	
+	original post</a> )   </b> 
+
+		
+
+		
+
+    &nbsp;
+
+    
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878554" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878554" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878554', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 Also, why won't this work?<br>
+<br>
+<pre class="jive-pre"><code class="jive-code jive-java">	<font color="navy"><b>private</b></font> <font color="navy"><b>void</b></font> setKey(APDU apdu) <font color="navy">{</font>
+		<font color="navy"><b>byte</b></font> buf[] = apdu.getBuffer();
+		<font color="navy"><b>short</b></font> len = (<font color="navy"><b>short</b></font>)((<font color="navy"><b>short</b></font>) buf[(<font color="navy"><b>short</b></font>)ISO7816.OFFSET_LC] &amp; (<font color="navy"><b>short</b></font>)0x00FF);
+		<font color="navy"><b>short</b></font> numBytes = apdu.setIncomingAndReceive();
+		
+		<font color="navy"><b>while</b></font> (numBytes &lt; len)
+			numBytes += apdu.receiveBytes((<font color="navy"><b>short</b></font>)((<font color="navy"><b>short</b></font>)ISO7816.OFFSET_CDATA+numBytes));
+&nbsp;
+		<font color="navy"><b>switch</b></font>(buf[ISO7816.OFFSET_P1]) <font color="navy">{</font>
+		<font color="navy"><b>case</b></font> MODULUS:
+			publicKeyOther.setModulus(buf, ISO7816.OFFSET_CDATA, len);
+			<font color="navy"><b>break</b></font>;
+		<font color="navy"><b>case</b></font> EXPONENT:
+			publicKeyOther.setExponent(buf, ISO7816.OFFSET_CDATA, len);
+			<font color="navy"><b>break</b></font>;
+		<font color="navy"><b>case</b></font> RESET:
+			publicKeyOther.clearKey();
+			<font color="navy"><b>break</b></font>;
+		<font color="navy"><b>default</b></font>:
+			ISOException.throwIt(ISO7816.SW_WRONG_P1P2);
+		<font color="navy">}</font>
+	<font color="navy">}</font>
+</code></pre> 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 73">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1019771">safarmer</a>
+
+	   <br>
+	 Posts:961
+	<br>
+	Registered: 4/6/08
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878555"></a>  Re: Sending RSA public key modulus to card
+	  &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878555#10878555">
+	03.12.2009 17:32 </a> 
+
+
+	 (reply 2
+	of 30) &nbsp;(In reply to <a href="http://192.9.162.102/thread.jspa?messageID=10878554#10878554">
+	 #1 </a> )   </b> 
+
+		
+
+		
+
+    &nbsp;
+
+    
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878555" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878555" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878555', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 Hi,<br>
+<br>
+Can you include the APDU's traffic to and from the card?<br>
+<br>
+Also, try moving short numBytes = apdu.setIncomingAndReceive(); to the 
+start of the method before accessing the buffer. This method starts the 
+transfer process and calls getBytes to get the first lot of data from 
+the buffer. Make sure this method is only called once. A good place to 
+do this is in the applet process method.<br>
+<br>
+Cheers,<br>
+Shane 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 0">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1183025">A_nl</a>
+
+	   <br>
+	 Posts:46
+	<br>
+	Registered: 11/28/09
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878558"></a>  Re: Sending RSA public key modulus to card
+	  &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878558#10878558">
+	03.12.2009 17:45 </a> 
+
+
+	 (reply 3
+	of 30) &nbsp;(In reply to <a href="http://192.9.162.102/thread.jspa?messageID=10878555#10878555">
+	 #2 </a> )   </b> 
+
+		
+
+		
+
+    &nbsp;
+
+    
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878558" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878558" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878558', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 I'm not exactly sure what you mean. The APDU when loading the applet 
+to the card? I have no trouble installing. I can't see the APDU's when 
+running from the Java program.<br>
+<br>
+What I want to do is transfer a RSA public key from a Java application 
+to a card. My initial code is to large to post here (could mail it if 
+you wish), but I'm quite stuck. I've tried sending the exponent and the 
+modulus to the card. The exponent is short and works okay, the modulus 
+doesn't. I need two store in fact 2 public keys on the card. If I store 2
+ keys, 2 exponents, and 2 modulo, then the memory will be full right?.. 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 73">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1019771">safarmer</a>
+
+	   <br>
+	 Posts:961
+	<br>
+	Registered: 4/6/08
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878575"></a>  Re: Sending RSA public key modulus to card
+	  &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878575#10878575">
+	03.12.2009 17:54 </a> 
+
+
+	 (reply 4
+	of 30) &nbsp;(In reply to <a href="http://192.9.162.102/thread.jspa?messageID=10878558#10878558">
+	 #3 </a> )   </b> 
+
+		
+
+		
+
+    &nbsp;
+
+    
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878575" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878575" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878575', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 Hi,<br>
+<br>
+What I was looking for was the APDU's that your Java application is sending, not the install APDU's.<br>
+<br>
+What is the RSA key size you are using? If you are using RSA 2048 bit 
+keys, the modulus will be 256 bytes that you have to send to the card. 
+Also if the modulus works out to be a negative number, Java will pad it 
+with a 0x00 byte automatically making 257 bytes. This will cause you 
+problems since you can only send 255 bytes in a single standard length 
+APDU. You may need to implement APDU chaining.<br>
+<br>
+Cheers,<br>
+Shane 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 0">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1183025">A_nl</a>
+
+	   <br>
+	 Posts:46
+	<br>
+	Registered: 11/28/09
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878576"></a>  Re: Sending RSA public key modulus to card
+	  &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878576#10878576">
+	03.12.2009 17:58 </a> 
+
+
+	 (reply 5
+	of 30) &nbsp;(In reply to <a href="http://192.9.162.102/thread.jspa?messageID=10878575#10878575">
+	 #4 </a> )   </b> 
+
+		
+
+		
+
+    &nbsp;
+
+    
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878576" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878576" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878576', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 1024 bit keys. I don't know if I need chaining, it's a 128 bytes 
+modulus then right? Is sending the modulus/exponent to the card the way 
+to go? Can't I just sent the key in one step? If yes, how? 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 73">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1019771">safarmer</a>
+
+	   <br>
+	 Posts:961
+	<br>
+	Registered: 4/6/08
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878584"></a>  Re: Sending RSA public key modulus to card
+	  &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878584#10878584">
+	03.12.2009 18:40 </a> 
+
+
+	 (reply 6
+	of 30) &nbsp;(In reply to <a href="http://192.9.162.102/thread.jspa?messageID=10878576#10878576">
+	 #5 </a> )   </b> 
+
+		
+
+		
+
+    &nbsp;
+
+    
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878584" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878584" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878584', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 That should be fine.<br>
+<br>
+You can indeed send the key in one go. You would simply send the DER 
+encoded key object (PKCS#1 defines the ASN.1 structure of the key). Once
+ you send the key to the card, you will have to parse the DER-TLV. Since
+ the key is a SEQUENCE of INTEGERS, you can extract the modulus and 
+exponent from the stream. You still need to call setModulus and 
+setExponent on the key object but you can do this in one APDU so it 
+simplifies the communication with the card. You would then have some 
+code like the following:<br>
+<br>
+<pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>case</b></font> SET_KEY:
+    key.clearKey();
+    key.setModulus(buf, modOff, modLen);
+    key.setExponent(buf, expOff, expLen);
+</code></pre><br>
+<br>
+There are a few things to be aware of with RSA keys. If the modulus is 
+negative and Java has padded the key object for you, you will need to 
+remove the padding byte before setting the key component on card.<br>
+<br>
+<pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>if</b></font>(modLen % 8 != 0) <font color="navy">{</font>
+    modLen--;
+    modOff++;
+<font color="navy">}</font>
+</code></pre><br>
+<br>
+If you are unfamiliar with ASN.1 and DER encoding, a good reference is <a class="jive-link-external" href="http://homepages.dcc.ufmg.br/%7Ecoelho/nm/asn.1.intro.pdf">A laymans guide to a subset of asn1</a><br>
+<br>
+With your previous error, it would seem that either the modulus length 
+does not match the key size of the key you created or your card does not
+ support the algorithm. As a guess, I would say that the former is more 
+likely (padded modulus?).<br>
+<br>
+Cheers,<br>
+Shane 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 0">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1183025">A_nl</a>
+
+	   <br>
+	 Posts:46
+	<br>
+	Registered: 11/28/09
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878587"></a>  Re: Sending RSA public key modulus to card
+	  &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878587#10878587">
+	03.12.2009 18:49 </a> 
+
+
+	 (reply 7
+	of 30) &nbsp;(In reply to <a href="http://192.9.162.102/thread.jspa?messageID=10878584#10878584">
+	 #6 </a> )   </b> 
+
+		
+
+		
+
+    &nbsp;
+
+    
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878587" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878587" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878587', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 'You would simply send the DER encoded key object (PKCS#1 defines the 
+ASN.1 structure of the key). Once you send the key to the card, you will
+ have to parse the DER-TLV.'<br>
+Uff, this is all waaay too technical for me my friend. Surely someone 
+has done this before right, and surely there's a simple way of doing 
+this. I just want an example on how to do this, not an understanding of 
+all the details.. I hope that isn't necessary to get it to work. RSA on a
+ smartcard,... it must be possible in a non-super-technical way. 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 73">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1019771">safarmer</a>
+
+	   <br>
+	 Posts:961
+	<br>
+	Registered: 4/6/08
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878588"></a>  Re: Sending RSA public key modulus to card
+	  &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878588#10878588">
+	03.12.2009 18:55 </a> 
+
+
+	 (reply 8
+	of 30) &nbsp;(In reply to <a href="http://192.9.162.102/thread.jspa?messageID=10878587#10878587">
+	 #7 </a> )   </b> 
+
+		
+
+		
+
+		<img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/answer-helpful-16x16.gif" title="" alt="" border="0">
+		
+		Helpful
+
+		
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878588" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878588" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878588', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 To get the DER encoded key you just have to do the following: 
+pubKey.getEncoded(); assuming that pubKey is an instance of an 
+RSAPublicKey. This would be what you send as you data in the APDU.<br>
+<br>
+Cheers,<br>
+Shane 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 0">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1183025">A_nl</a>
+
+	   <br>
+	 Posts:46
+	<br>
+	Registered: 11/28/09
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878591"></a>  Re: Sending RSA public key modulus to card
+	  &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878591#10878591">
+	03.12.2009 19:03 </a> 
+
+
+	 (reply 9
+	of 30) &nbsp;(In reply to <a href="http://192.9.162.102/thread.jspa?messageID=10878588#10878588">
+	 #8 </a> )   </b> 
+
+		
+
+		
+
+    &nbsp;
+
+    
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878591" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878591" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878591', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 I understand.<br>
+<br>
+Meanwhile I've been playing around (while waiting for your help ;)) and made a little something:<br>
+<br>
+JavaCard<br>
+<pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>package</b></font> meter;
+&nbsp;
+<font color="navy"><b>import</b></font> javacard.framework.APDU;
+<font color="navy"><b>import</b></font> javacard.framework.Applet;
+<font color="navy"><b>import</b></font> javacard.framework.ISO7816;
+<font color="navy"><b>import</b></font> javacard.framework.ISOException;
+<font color="navy"><b>import</b></font> javacard.security.KeyPair;
+<font color="navy"><b>import</b></font> javacard.security.RSAPublicKey;
+&nbsp;
+<font color="navy"><b>public</b></font> <font color="navy"><b>class</b></font> Meter <font color="navy"><b>extends</b></font> Applet <font color="navy">{</font>
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>short</b></font> RSA_SIZE = (<font color="navy"><b>short</b></font>)1024;
+	
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>final</b></font> <font color="navy"><b>byte</b></font> METER_CLA = (<font color="navy"><b>byte</b></font>)0xB0;
+	
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>final</b></font> <font color="navy"><b>byte</b></font> INS_CHANCEPUBKEY = (<font color="navy"><b>byte</b></font>)0x01;
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>final</b></font> <font color="navy"><b>byte</b></font> INS_GETPUBKEY    = (<font color="navy"><b>byte</b></font>)0x02;
+	
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>final</b></font> <font color="navy"><b>byte</b></font> P1_MODULUS  = (<font color="navy"><b>byte</b></font>)0x01;
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>final</b></font> <font color="navy"><b>byte</b></font> P1_EXPONENT = (<font color="navy"><b>byte</b></font>)0x02;
+&nbsp;
+&nbsp;
+	RSAPublicKey publicKey;
+	
+	<font color="navy"><b>private</b></font> Meter(<font color="navy"><b>byte</b></font> bArray[], <font color="navy"><b>short</b></font> bOffset, <font color="navy"><b>byte</b></font> bLength) <font color="navy">{</font>
+		KeyPair keyPair = <font color="navy"><b>new</b></font> KeyPair(KeyPair.ALG_RSA_CRT, RSA_SIZE);
+		publicKey = (RSAPublicKey) keyPair.getPublic();
+		publicKey.clearKey();
+&nbsp;
+		register(bArray, (<font color="navy"><b>short</b></font>) (bOffset + 1), bArray[bOffset]);
+	<font color="navy">}</font>
+&nbsp;
+	<font color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> process(APDU apdu) <font color="navy">{</font>
+		<font color="navy"><b>if</b></font> (selectingApplet()) <font color="darkgreen">//Return 9000 on SELECT</font>
+			<font color="navy"><b>return</b></font>;
+&nbsp;
+		<font color="navy"><b>short</b></font> numBytes = apdu.setIncomingAndReceive();
+		<font color="navy"><b>byte</b></font>[] buf = apdu.getBuffer();
+		
+		<font color="navy"><b>if</b></font> (buf[ISO7816.OFFSET_CLA] != (<font color="navy"><b>byte</b></font>) METER_CLA)
+			ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
+		
+		<font color="navy"><b>switch</b></font> (buf[ISO7816.OFFSET_INS]) <font color="navy">{</font>
+		<font color="navy"><b>case</b></font> INS_CHANCEPUBKEY:
+			<font color="navy"><b>switch</b></font> (buf[ISO7816.OFFSET_P1])<font color="navy">{</font>
+			<font color="navy"><b>case</b></font> P1_MODULUS:
+				publicKey.setModulus(buf, ISO7816.OFFSET_CDATA, numBytes);
+				<font color="navy"><b>return</b></font>;
+			<font color="navy"><b>case</b></font> P1_EXPONENT:
+				publicKey.setExponent(buf, ISO7816.OFFSET_CDATA, numBytes);
+				<font color="navy"><b>return</b></font>;
+			<font color="navy">}</font>
+			<font color="navy"><b>return</b></font>;
+		<font color="navy"><b>case</b></font> INS_GETPUBKEY:
+			<font color="navy"><b>switch</b></font> (buf[ISO7816.OFFSET_P1])<font color="navy">{</font>
+			<font color="navy"><b>case</b></font> P1_MODULUS:
+				publicKey.getModulus(buf, ISO7816.OFFSET_CDATA);
+				apdu.setOutgoing();
+				apdu.setOutgoingLength((<font color="navy"><b>short</b></font>) 128);
+				apdu.sendBytesLong(buf, (<font color="navy"><b>short</b></font>) ISO7816.OFFSET_CDATA, (<font color="navy"><b>short</b></font>) 128);
+				<font color="navy"><b>return</b></font>;
+			<font color="navy"><b>case</b></font> P1_EXPONENT:
+				publicKey.getExponent(buf, ISO7816.OFFSET_CDATA);
+				apdu.setOutgoing();
+				apdu.setOutgoingLength((<font color="navy"><b>short</b></font>) 4);
+				apdu.sendBytesLong(buf, (<font color="navy"><b>short</b></font>) ISO7816.OFFSET_CDATA, (<font color="navy"><b>short</b></font>) 4);
+				<font color="navy"><b>return</b></font>;
+			<font color="navy">}</font>
+			<font color="navy"><b>return</b></font>;
+		<font color="navy"><b>default</b></font>: ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED); <font color="navy"><b>break</b></font>; <font color="darkgreen">//Unknown instruction</font>
+		<font color="navy">}</font>
+	<font color="navy">}</font>
+	
+	<font color="navy"><b>public</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>void</b></font> install(<font color="navy"><b>byte</b></font>[] bArray, <font color="navy"><b>short</b></font> bOffset, <font color="navy"><b>byte</b></font> bLength) <font color="navy">{</font>
+		<font color="navy"><b>new</b></font> Meter(bArray, bOffset, bLength);
+	<font color="navy">}</font>
+<font color="navy">}</font>
+</code></pre> 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 0">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1183025">A_nl</a>
+
+	   <br>
+	 Posts:46
+	<br>
+	Registered: 11/28/09
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878592"></a>  Re: Sending RSA public key modulus to card
+	  &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878592#10878592">
+	03.12.2009 19:06 </a> 
+
+
+	 (reply 10
+	of 30) &nbsp;(In reply to <a href="http://192.9.162.102/thread.jspa?messageID=10878591#10878591">
+	 #9 </a> )   </b> 
+
+		
+
+		
+
+    &nbsp;
+
+    
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878592" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878592" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878592', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 Continue from last post:<br>
+<br>
+Java:<br>
+<pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>package</b></font> terminal;
+&nbsp;
+<font color="navy"><b>import</b></font> java.security.InvalidKeyException;
+<font color="navy"><b>import</b></font> java.security.Key;
+<font color="navy"><b>import</b></font> java.security.KeyPair;
+<font color="navy"><b>import</b></font> java.security.KeyPairGenerator;
+<font color="navy"><b>import</b></font> java.security.NoSuchAlgorithmException;
+<font color="navy"><b>import</b></font> java.security.NoSuchProviderException;
+<font color="navy"><b>import</b></font> java.security.PublicKey;
+<font color="navy"><b>import</b></font> java.security.SecureRandom;
+<font color="navy"><b>import</b></font> java.security.Security;
+<font color="navy"><b>import</b></font> java.security.interfaces.RSAPublicKey;
+&nbsp;
+<font color="navy"><b>import</b></font> javax.crypto.BadPaddingException;
+<font color="navy"><b>import</b></font> javax.crypto.Cipher;
+<font color="navy"><b>import</b></font> javax.crypto.IllegalBlockSizeException;
+<font color="navy"><b>import</b></font> javax.crypto.NoSuchPaddingException;
+<font color="navy"><b>import</b></font> javax.smartcardio.Card;
+<font color="navy"><b>import</b></font> javax.smartcardio.CardChannel;
+<font color="navy"><b>import</b></font> javax.smartcardio.CardException;
+<font color="navy"><b>import</b></font> javax.smartcardio.CardTerminal;
+<font color="navy"><b>import</b></font> javax.smartcardio.CardTerminals;
+<font color="navy"><b>import</b></font> javax.smartcardio.CommandAPDU;
+<font color="navy"><b>import</b></font> javax.smartcardio.ResponseAPDU;
+<font color="navy"><b>import</b></font> javax.smartcardio.TerminalFactory;
+&nbsp;
+@SuppressWarnings(<font color="red">"restriction"</font>)
+<font color="navy"><b>public</b></font> <font color="navy"><b>class</b></font> Consumer <font color="navy">{</font>
+	<font color="navy"><b>private</b></font> <font color="navy"><b>final</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>byte</b></font>[] AID	= <font color="navy">{</font> (<font color="navy"><b>byte</b></font>) 0x01, (<font color="navy"><b>byte</b></font>) 0x02, (<font color="navy"><b>byte</b></font>) 0x03, (<font color="navy"><b>byte</b></font>) 0x04, (<font color="navy"><b>byte</b></font>) 0x05 <font color="navy">}</font>;
+&nbsp;
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>short</b></font> RSA_SIZE = (<font color="navy"><b>short</b></font>)1024;
+&nbsp;
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>final</b></font> <font color="navy"><b>byte</b></font> METER_CLA = (<font color="navy"><b>byte</b></font>)0xB0;
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>final</b></font> <font color="navy"><b>byte</b></font> INS_CHANCEPUBKEY = (<font color="navy"><b>byte</b></font>)0x01;
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>final</b></font> <font color="navy"><b>byte</b></font> INS_GETPUBKEY    = (<font color="navy"><b>byte</b></font>)0x02;
+	
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>final</b></font> <font color="navy"><b>byte</b></font> P1_MODULUS  = (<font color="navy"><b>byte</b></font>)0x01;
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>final</b></font> <font color="navy"><b>byte</b></font> P1_EXPONENT = (<font color="navy"><b>byte</b></font>)0x02;
+	
+	<font color="navy"><b>private</b></font> CardTerminal cardTerminal = <font color="navy"><b>null</b></font>;
+	<font color="navy"><b>private</b></font> CardChannel ch = <font color="navy"><b>null</b></font>;
+	
+	RSAPublicKey publicKey;
+	
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>void</b></font> arrayPrint(<font color="navy"><b>byte</b></font>[] data) <font color="navy">{</font>
+		System.out.print(<font color="red">"{"</font>); arrayPrintBytes(data); System.out.print(<font color="red">"} ("</font>); arrayPrintHex(data); System.out.print(<font color="red">")"</font>);
+	<font color="navy">}</font>
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>void</b></font> arrayPrintBytes(<font color="navy"><b>byte</b></font>[] data) <font color="navy">{</font>
+		<font color="navy"><b>for</b></font> (<font color="navy"><b>int</b></font> i = 0; i &lt; data.length; i++)
+			System.out.print(data[i] + <font color="red">" "</font>);
+	<font color="navy">}</font>
+	<font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>void</b></font> arrayPrintHex(<font color="navy"><b>byte</b></font>[] data) <font color="navy">{</font>
+		StringBuffer sb = <font color="navy"><b>new</b></font> StringBuffer();
+&nbsp;
+		<font color="navy"><b>for</b></font> (<font color="navy"><b>int</b></font> i = 0; i &lt; data.length; i++) <font color="navy">{</font>
+			String bs = Integer.toHexString(data[i] &amp; 0xFF);
+			<font color="navy"><b>if</b></font> (bs.length() == 1)
+				sb.append(0);
+			sb.append(bs);
+		<font color="navy">}</font>
+		System.out.print(sb.toString());
+	<font color="navy">}</font>
+	
+	<font color="navy"><b>public</b></font> Consumer() <font color="navy">{</font>
+		<font color="navy"><b>try</b></font> <font color="navy">{</font> createKeys();<font color="navy">}</font>
+		<font color="navy"><b>catch</b></font> (NoSuchAlgorithmException e) <font color="navy">{</font> System.out.println(<font color="red">"No RSA available."</font>); e.printStackTrace();<font color="navy">}</font>
+		
+		TerminalFactory tf = TerminalFactory.getDefault();
+		CardTerminals ct = tf.terminals();
+&nbsp;
+		cardTerminal = ct.getTerminal(<font color="red">"SCM Microsystems Inc. SDI010 Smart Card Reader 0"</font>);
+		System.out.println(<font color="red">"Selected terminal"</font>);
+	<font color="navy">}</font>
+	
+	<font color="navy"><b>private</b></font> <font color="navy"><b>void</b></font> createKeys() <font color="navy"><b>throws</b></font> NoSuchAlgorithmException<font color="navy">{</font>
+		KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(<font color="red">"RSA"</font>);
+	    keyPairGenerator.initialize(1024);
+	    KeyPair keyPair = keyPairGenerator.genKeyPair();
+	    publicKey = (RSAPublicKey) keyPair.getPublic();
+	<font color="navy">}</font>
+&nbsp;
+	<font color="navy"><b>public</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>boolean</b></font> validResponse(ResponseAPDU ra) <font color="navy">{</font>
+		<font color="navy"><b>byte</b></font>[] response = ra.getBytes();
+		<font color="darkgreen">// Check if response (last 2 bytes) is 0x9000 (code for success)</font>
+		<font color="navy"><b>return</b></font> (response[response.length - 2] == (<font color="navy"><b>byte</b></font>)0x90 &amp;&amp; response[response.length - 1] == (<font color="navy"><b>byte</b></font>)0x00);
+	<font color="navy">}</font>
+&nbsp;
+	<font color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> communicate() <font color="navy"><b>throws</b></font> Exception<font color="navy">{</font>
+		<font color="navy"><b>if</b></font> (cardTerminal == <font color="navy"><b>null</b></font>)
+			<font color="navy"><b>throw</b></font> <font color="navy"><b>new</b></font> Exception(
+					<font color="red">"ERROR: No cardterminal available to communicate."</font>);
+		<font color="navy"><b>try</b></font> <font color="navy">{</font>
+			<font color="navy"><b>while</b></font> (cardTerminal.isCardPresent()) <font color="navy">{</font>
+				Card card = <font color="navy"><b>null</b></font>;
+				<font color="navy"><b>if</b></font> ((card = cardTerminal.connect(<font color="red">"*"</font>)) != <font color="navy"><b>null</b></font>)
+					System.out.println(<font color="red">"Connected to card."</font>);
+				<font color="navy"><b>else</b></font> <font color="navy">{</font>
+					System.out.println(<font color="red">"ERROR: Failed to connect to card!"</font>);
+					<font color="navy"><b>return</b></font>;
+				<font color="navy">}</font>
+&nbsp;
+				(card.getATR()).getBytes();
+&nbsp;
+				ch = card.getBasicChannel();
+&nbsp;
+				<font color="darkgreen">/* Start sending APDUs */</font>
+				<font color="darkgreen">// Select the applet</font>
+				System.out.println(<font color="red">"\nSelect applet:"</font>);
+				actionSelect();
+				
+				actionSetPubKey();
+				actionGetPubKey();
+				
+				card.disconnect(<font color="navy"><b>true</b></font>);
+				<font color="navy"><b>return</b></font>;
+			<font color="navy">}</font>
+		<font color="navy">}</font> <font color="navy"><b>catch</b></font> (CardException e) <font color="navy">{</font>
+			System.out.println(<font color="red">"Error isCardPresent()"</font> + e.toString());
+		<font color="navy">}</font>
+	<font color="navy">}</font>
+	
+	<font color="navy"><b>private</b></font> <font color="navy"><b>boolean</b></font> actionSelect() <font color="navy">{</font>
+		ResponseAPDU ra = <font color="navy"><b>null</b></font>;
+		<font color="navy"><b>try</b></font> <font color="navy">{</font>
+			ra = ch.transmit(<font color="navy"><b>new</b></font> CommandAPDU((<font color="navy"><b>byte</b></font>) 0x00, (<font color="navy"><b>byte</b></font>) 0xA4, (<font color="navy"><b>byte</b></font>) 0x04, (<font color="navy"><b>byte</b></font>) 0x00, AID));
+		<font color="navy">}</font> <font color="navy"><b>catch</b></font> (CardException e) <font color="navy">{</font>
+			e.printStackTrace();
+		<font color="navy">}</font>
+&nbsp;
+		<font color="navy"><b>if</b></font> (validResponse(ra)) <font color="navy">{</font>
+			System.out.println(<font color="red">"Applet selection success!"</font>);
+			<font color="navy"><b>return</b></font> <font color="navy"><b>true</b></font>;
+		<font color="navy">}</font> <font color="navy"><b>else</b></font> <font color="navy">{</font>
+			System.out.println(<font color="red">"ERROR: Applet selection failed!"</font>);
+			<font color="navy"><b>return</b></font> <font color="navy"><b>false</b></font>;
+		<font color="navy">}</font>
+	<font color="navy">}</font>
+	
+	<font color="navy"><b>private</b></font> <font color="navy"><b>void</b></font> actionSetPubKey() <font color="navy"><b>throws</b></font> CardException <font color="navy">{</font>
+		ResponseAPDU ra = <font color="navy"><b>null</b></font>;
+		<font color="navy"><b>byte</b></font>[] newmod = <font color="navy">{</font>
+		(<font color="navy"><b>byte</b></font>)0x01, (<font color="navy"><b>byte</b></font>)0x02, (<font color="navy"><b>byte</b></font>)0x03,	(<font color="navy"><b>byte</b></font>)0x04, (<font color="navy"><b>byte</b></font>)0x05, (<font color="navy"><b>byte</b></font>)0x06, (<font color="navy"><b>byte</b></font>)0x07, (<font color="navy"><b>byte</b></font>)0x08,
+		(<font color="navy"><b>byte</b></font>)0x09, (<font color="navy"><b>byte</b></font>)0x10, (<font color="navy"><b>byte</b></font>)0x11,	(<font color="navy"><b>byte</b></font>)0x12, (<font color="navy"><b>byte</b></font>)0x13, (<font color="navy"><b>byte</b></font>)0x14, (<font color="navy"><b>byte</b></font>)0x15, (<font color="navy"><b>byte</b></font>)0x16,
+		(<font color="navy"><b>byte</b></font>)0x17, (<font color="navy"><b>byte</b></font>)0x18, (<font color="navy"><b>byte</b></font>)0x19, (<font color="navy"><b>byte</b></font>)0x20, (<font color="navy"><b>byte</b></font>)0x21, (<font color="navy"><b>byte</b></font>)0x22, (<font color="navy"><b>byte</b></font>)0x23, (<font color="navy"><b>byte</b></font>)0x24,
+		(<font color="navy"><b>byte</b></font>)0x7D, (<font color="navy"><b>byte</b></font>)0x5B, (<font color="navy"><b>byte</b></font>)0x6D, (<font color="navy"><b>byte</b></font>)0x03, (<font color="navy"><b>byte</b></font>)0x7B, (<font color="navy"><b>byte</b></font>)0xAD, (<font color="navy"><b>byte</b></font>)0x9A, (<font color="navy"><b>byte</b></font>)0xB4,
+		(<font color="navy"><b>byte</b></font>)0x58, (<font color="navy"><b>byte</b></font>)0xFE, (<font color="navy"><b>byte</b></font>)0x80, (<font color="navy"><b>byte</b></font>)0x22, (<font color="navy"><b>byte</b></font>)0xEC, (<font color="navy"><b>byte</b></font>)0xF0, (<font color="navy"><b>byte</b></font>)0xAB, (<font color="navy"><b>byte</b></font>)0x84,
+		(<font color="navy"><b>byte</b></font>)0xF9, (<font color="navy"><b>byte</b></font>)0x07, (<font color="navy"><b>byte</b></font>)0x84, (<font color="navy"><b>byte</b></font>)0x91, (<font color="navy"><b>byte</b></font>)0xE2, (<font color="navy"><b>byte</b></font>)0x08, (<font color="navy"><b>byte</b></font>)0xA6, (<font color="navy"><b>byte</b></font>)0x9B,
+		(<font color="navy"><b>byte</b></font>)0xED, (<font color="navy"><b>byte</b></font>)0xD7, (<font color="navy"><b>byte</b></font>)0x45, (<font color="navy"><b>byte</b></font>)0xC9, (<font color="navy"><b>byte</b></font>)0xDD, (<font color="navy"><b>byte</b></font>)0xBF, (<font color="navy"><b>byte</b></font>)0xF8, (<font color="navy"><b>byte</b></font>)0x7A,
+		(<font color="navy"><b>byte</b></font>)0x8B, (<font color="navy"><b>byte</b></font>)0xE1, (<font color="navy"><b>byte</b></font>)0x17, (<font color="navy"><b>byte</b></font>)0xCD, (<font color="navy"><b>byte</b></font>)0x3D, (<font color="navy"><b>byte</b></font>)0xD3, (<font color="navy"><b>byte</b></font>)0x6F, (<font color="navy"><b>byte</b></font>)0xB2,
+		(<font color="navy"><b>byte</b></font>)0x59, (<font color="navy"><b>byte</b></font>)0x0C, (<font color="navy"><b>byte</b></font>)0x0E, (<font color="navy"><b>byte</b></font>)0x47, (<font color="navy"><b>byte</b></font>)0x0B, (<font color="navy"><b>byte</b></font>)0x8E, (<font color="navy"><b>byte</b></font>)0x83, (<font color="navy"><b>byte</b></font>)0xC5,
+		(<font color="navy"><b>byte</b></font>)0x0F, (<font color="navy"><b>byte</b></font>)0xAF, (<font color="navy"><b>byte</b></font>)0xD8, (<font color="navy"><b>byte</b></font>)0x21, (<font color="navy"><b>byte</b></font>)0x0C, (<font color="navy"><b>byte</b></font>)0xD1, (<font color="navy"><b>byte</b></font>)0x0B, (<font color="navy"><b>byte</b></font>)0xB4,
+		(<font color="navy"><b>byte</b></font>)0x24, (<font color="navy"><b>byte</b></font>)0x8D, (<font color="navy"><b>byte</b></font>)0x66, (<font color="navy"><b>byte</b></font>)0xAC, (<font color="navy"><b>byte</b></font>)0x93, (<font color="navy"><b>byte</b></font>)0xA3, (<font color="navy"><b>byte</b></font>)0xE4, (<font color="navy"><b>byte</b></font>)0x61,
+		(<font color="navy"><b>byte</b></font>)0xEF, (<font color="navy"><b>byte</b></font>)0x26, (<font color="navy"><b>byte</b></font>)0x50, (<font color="navy"><b>byte</b></font>)0x1C, (<font color="navy"><b>byte</b></font>)0x30, (<font color="navy"><b>byte</b></font>)0xED, (<font color="navy"><b>byte</b></font>)0x73, (<font color="navy"><b>byte</b></font>)0xF1,
+		(<font color="navy"><b>byte</b></font>)0x92, (<font color="navy"><b>byte</b></font>)0xD8, (<font color="navy"><b>byte</b></font>)0x2C, (<font color="navy"><b>byte</b></font>)0xC6, (<font color="navy"><b>byte</b></font>)0x38, (<font color="navy"><b>byte</b></font>)0xD4, (<font color="navy"><b>byte</b></font>)0x6D, (<font color="navy"><b>byte</b></font>)0x81,
+		(<font color="navy"><b>byte</b></font>)0x48, (<font color="navy"><b>byte</b></font>)0x2B, (<font color="navy"><b>byte</b></font>)0xCC, (<font color="navy"><b>byte</b></font>)0x42, (<font color="navy"><b>byte</b></font>)0xF8, (<font color="navy"><b>byte</b></font>)0x60, (<font color="navy"><b>byte</b></font>)0x61, (<font color="navy"><b>byte</b></font>)0xAD,
+		(<font color="navy"><b>byte</b></font>)0x8D, (<font color="navy"><b>byte</b></font>)0x7F, (<font color="navy"><b>byte</b></font>)0x8D, (<font color="navy"><b>byte</b></font>)0x6D, (<font color="navy"><b>byte</b></font>)0x87, (<font color="navy"><b>byte</b></font>)0xBF, (<font color="navy"><b>byte</b></font>)0x7D, (<font color="navy"><b>byte</b></font>)0x1C,
+		(<font color="navy"><b>byte</b></font>)0x61, (<font color="navy"><b>byte</b></font>)0x2B, (<font color="navy"><b>byte</b></font>)0xC0, (<font color="navy"><b>byte</b></font>)0x42, (<font color="navy"><b>byte</b></font>)0x47, (<font color="navy"><b>byte</b></font>)0xDB, (<font color="navy"><b>byte</b></font>)0xDD, (<font color="navy"><b>byte</b></font>)0xC9,
+		<font color="navy">}</font>;
+		
+		<font color="navy"><b>byte</b></font>[] newexp = <font color="navy">{</font> (<font color="navy"><b>byte</b></font>)0x01, (<font color="navy"><b>byte</b></font>)0x02 <font color="navy">}</font>;
+		ra = ch.transmit(<font color="navy"><b>new</b></font> CommandAPDU(METER_CLA, INS_CHANCEPUBKEY, P1_MODULUS,  (<font color="navy"><b>byte</b></font>) 0x00, newmod));
+		ra = ch.transmit(<font color="navy"><b>new</b></font> CommandAPDU(METER_CLA, INS_CHANCEPUBKEY, P1_EXPONENT, (<font color="navy"><b>byte</b></font>) 0x00, newexp));
+&nbsp;
+		<font color="navy"><b>if</b></font> (validResponse(ra))
+			System.out.print(<font color="red">"Succesful key set."</font>);
+		<font color="navy"><b>else</b></font>
+			System.out.println(<font color="red">"ERROR: Unable to set key."</font>);
+	<font color="navy">}</font>
+	
+	
+	<font color="navy"><b>private</b></font> <font color="navy"><b>void</b></font> actionGetPubKey() <font color="navy"><b>throws</b></font> CardException <font color="navy">{</font>
+		ResponseAPDU ra = <font color="navy"><b>null</b></font>;
+		ra = ch.transmit(<font color="navy"><b>new</b></font> CommandAPDU(METER_CLA, INS_GETPUBKEY, P1_MODULUS,  (<font color="navy"><b>byte</b></font>) 0x00));
+		arrayPrint(ra.getData());
+		System.out.println();
+		ra = ch.transmit(<font color="navy"><b>new</b></font> CommandAPDU(METER_CLA, INS_GETPUBKEY, P1_EXPONENT, (<font color="navy"><b>byte</b></font>) 0x00));
+		arrayPrint(ra.getData());
+	<font color="navy">}</font>
+	
+<font color="navy">}</font>
+</code></pre><br>
+<br>
+Output:<br>
+<pre class="jive-pre"><code class="jive-code jive-java">Selected terminal
+Connected to card.
+&nbsp;
+Select applet:
+Applet selection success!
+Succesful key set.<font color="navy">{</font>1 2 3 4 5 6 7 ...more <font color="navy">}</font> (01020304050607 ...more)
+<font color="navy">{</font>1 2 0 0 <font color="navy">}</font> (01020000)
+</code></pre><br>
+<br>
+Any obvious flaws (besides the fast 'n messy coding style ;)) 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 73">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1019771">safarmer</a>
+
+	   <br>
+	 Posts:961
+	<br>
+	Registered: 4/6/08
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878595"></a>  Re: Sending RSA public key modulus to card
+	 &nbsp;&nbsp;<img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/duke.gif" title="1 Duke Stars rewarded" border="0" height="12" width="15">   &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878595#10878595">
+	03.12.2009 19:14 </a> 
+
+
+	 (reply 11
+	of 30) &nbsp;(In reply to <a href="http://192.9.162.102/thread.jspa?messageID=10878591#10878591">
+	 #9 </a> )   </b> 
+
+		
+
+		
+
+    &nbsp;
+
+    
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878595" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878595" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878595', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 You might want to change the following code in the constructor from<br>
+<br>
+<pre class="jive-pre"><code class="jive-code jive-java">KeyPair keyPair = <font color="navy"><b>new</b></font> KeyPair(KeyPair.ALG_RSA_CRT, RSA_SIZE);
+publicKey = (RSAPublicKey) keyPair.getPublic();
+publicKey.clearKey();
+</code></pre><br>
+<br>
+to<br>
+<br>
+<pre class="jive-pre"><code class="jive-code jive-java">publicKey = (RSAPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_RSA_PUBLIC, KeyBuilder.LENGTH_RSA_1024, <font color="navy"><b>false</b></font>);
+</code></pre><br>
+<br>
+Cheers,<br>
+Shane 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 0">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1183025">A_nl</a>
+
+	   <br>
+	 Posts:46
+	<br>
+	Registered: 11/28/09
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878598"></a>  Re: Sending RSA public key modulus to card
+	  &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878598#10878598">
+	03.12.2009 19:23 </a> 
+
+
+	 (reply 12
+	of 30) &nbsp;(In reply to <a href="http://192.9.162.102/thread.jspa?messageID=10878595#10878595">
+	 #11 </a> )   </b> 
+
+		
+
+		
+
+    &nbsp;
+
+    
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878598" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878598" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878598', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 Thanks, you're a great help (especially since it's 4:22 at night..)<br>
+<br>
+Now, for enc/decryption I will follow the RunTest8 and 9 from 
+http://forums.sun.com/thread.jspa?messageID=1737235#1737235. That seems 
+appropriate? 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 73">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1019771">safarmer</a>
+
+	   <br>
+	 Posts:961
+	<br>
+	Registered: 4/6/08
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878600"></a>  Re: Sending RSA public key modulus to card
+	  &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878600#10878600">
+	03.12.2009 19:33 </a> 
+
+
+	 (reply 13
+	of 30) &nbsp;(In reply to <a href="http://192.9.162.102/thread.jspa?messageID=10878598#10878598">
+	 #12 </a> )   </b> 
+
+		
+
+		
+
+    &nbsp;
+
+    
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878600" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878600" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878600', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 That is a good place to start. Just remember that you applet will only
+ do encryption. The host application (J2SE) will do the decryption with 
+the private key.<br>
+<br>
+Cheers,<br>
+Shane 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+    <tr bgcolor="#eeeeee">
+	<td nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	   <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/bronze-star.gif" title="Dukes Earned 0">  
+	  
+	 
+	
+
+	<a href="http://192.9.162.102/profile.jspa?userID=1183025">A_nl</a>
+
+	   <br>
+	 Posts:46
+	<br>
+	Registered: 11/28/09
+	
+	</div>
+	</td>
+
+	<!-- END Author Name or Guest -->
+
+	<td width="60%">
+	<div class="pad5x10"><b><a name="10878603"></a>  Re: Sending RSA public key modulus to card
+	  &nbsp;&nbsp;  <br>
+
+	  <a href="http://192.9.162.102/thread.jspa?messageID=10878603#10878603">
+	03.12.2009 19:47 </a> 
+
+
+	 (reply 14
+	of 30) &nbsp;(In reply to <a href="http://192.9.162.102/thread.jspa?messageID=10878600#10878600">
+	 #13 </a> )   </b> 
+
+		
+
+		
+
+    &nbsp;
+
+    
+
+	 <br>
+
+
+	<!-- start tags stuff -->  
+	</div>
+	</td>
+	<!-- END Subject -->
+
+
+	<td align="right" nowrap="nowrap" width="20%">
+	<div class="pad5x10">
+	 <a href="http://192.9.162.102/emailmessage%21default.jspa?messageID=10878603" title="Click to email this message"> <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"></a> 
+	   <br>
+	<br>
+	 
+	
+	<form action="post!reply.jspa"><input name="messageID" value="10878603" type="hidden"> <input class="buttonblue" value="Reply »" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" type="submit"></form>
+	   <br>
+	<br>
+	<!--
+    <a href="javascript:void(0)" onclick="window.open('unfiltered.jspa?messageID=10878603', 'Welcome', 'width=500, height=500, menubar=yes, scrollbars=yes')">View Unfiltered</a>
+--></div>
+	</td>
+	<!-- END REPLY Button -->
+
+</tr>
+<!-- END Heading Row -->
+
+<!-- Begin message row -->
+<tr class="white">
+
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+	<td>
+	<div class="pad5x10">
+	 Right. I'm having my card communicate with a host application (host1),
+ and also another application (host2). I want secure connections between
+ the card and host1, and between host1 and host2 (card and host2 do not 
+directly communicate).<br>
+<br>
+I'm not sure why the applet should only do encryption? 
+	</div>
+	</td>
+	<td>
+	<div class="pad5x10">&nbsp;</div>
+	</td>
+</tr>
+
+
+
+    
+
+
+
+</tbody></table>
+</td></tr></tbody></table>
+
+<table class="vtop" bgcolor="#666666" border="0" cellpadding="4" cellspacing="0" width="100%"><tbody><tr><td>
+<table class="vtop" border="0" cellpadding="2" cellspacing="0" width="100%">
+
+<tbody><tr bgcolor="#666666">
+
+<td align="right"><div class="pad5x10"><span style="color: rgb(255, 255, 255);">
+ 
+                This topic has
+                30
+                replies
+                on
+                3
+                pages.
+
+            
+
+            
+
+                &nbsp;&nbsp;
+
+                
+
+                
+                    
+
+                        <a href="http://192.9.162.102/thread.jspa?threadID=5418701&amp;start=0&amp;tstart=0" class="jive-current"><font color="#ffffff">1</font></a>
+                        |
+
+                     
+
+                
+                    
+
+                        <a href="http://192.9.162.102/thread.jspa?threadID=5418701&amp;start=15&amp;tstart=0" class=""><font color="#ffffff">2</font></a>
+                        |
+
+                     
+
+                
+                    
+
+                        <a href="http://192.9.162.102/thread.jspa?threadID=5418701&amp;start=30&amp;tstart=0" class=""><font color="#ffffff">3</font></a>
+                        |
+
+                     
+
+                
+
+                
+
+                    
+                    <a href="http://192.9.162.102/thread.jspa?threadID=5418701&amp;start=15&amp;tstart=0"><font color="#ffffff">Next »</font></a>
+
+                
+
+
+            
+</span></div></td>
+
+</tr>
+</tbody></table>
+
+</td></tr></tbody></table>
+
+<a href="http://192.9.162.102/forum.jspa?forumID=23">Back to Forum</a>
+<br>
+<span class="sp10">&nbsp;</span><br>
+<a href="http://wikis.sun.com/display/SunForums/Sun+Forums+Code+of+Conduct">Read the Developer Forums Code of Conduct </a><br><br>
+<img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_email.gif" alt="Click to email this message" border="0" height="12" hspace="4" vspace="1" width="14"> Email this Topic
+<br>
+<br>
+<img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/edit-16x16.gif" border="0" height="16" width="16"> Edit this Topic
+<!-- END G15 GENERIC CONTENT TABLE -->
+
+</td></tr></tbody></table>
+
+<!--stopindex-->
+
+</td>  <!-- END MAIN CONTENT --> 
+ <!-- END MAIN CONTENT -->
+ 
+<td align="right" valign="top" width="170"> <!-- RIGHT NAV -->
+
+
+
+
+
+
+
+<!-- BEGIN AD PORTION -->
+
+<!-- END AD PORTION -->
+
+<table border="0" cellpadding="6" cellspacing="0">
+	<tbody><tr>
+		<td valign="top" width="170"><!-- BEGIN USER ALERT -->  <!-- END USER ALERT --> <!-- BEGIN E15 COMPONENT V.0 -->
+		<div class="e15 e15v2">
+		<div class="e15w1">
+		<div class="e15w2">
+		
+		<h3>
+		 Sun
+		Forums 
+		</h3>
+
+		
+		<h5>Welcome</h5>
+		<ul>
+			
+			<li><a href="http://forums.sun.com/login%21withRedirect.jspa?referrer=http%3A%2F%2F192.9.162.102%2Fthread.jspa%3FthreadID%3D5418701">Login</a></li>
+			
+			<li><a href="http://forums.sun.com/editwatches%21default.jspa">Watch
+			List</a></li>
+			
+				<li><a href="http://wikis.sun.com/display/SunForums/Tips">Beginners
+				Quick Start</a></li>
+				<li><a href="http://forums.sun.com/myforums.jspa">My
+				Forums</a></li>
+				<li><a href="http://developers.sun.com/contact/feedback.jsp?referer=http://forums.sun.com&amp;category=sdn&amp;mailsubject=Forums%20or%20Community">
+				Feedback </a></li>
+				<li><a href="http://wikis.sun.com/display/SunForums/Forums.sun.com+FAQ">FAQ</a></li>
+				<li width="100%"><a href="http://wikis.sun.com/display/SunForums/Sun+Forums+Code+of+Conduct">Code
+				of Conduct</a></li>
+				
+			</ul>
+
+			<!-- END E15 COMPONENT -->
+		</div>
+		</div>
+		</div>
+
+		<!-- BEGIN SEARCH BOX --> <!-- DISPLAYS NOT FOR MAIN PAGE --> 
+		<div class="e5">
+		<table class="blue1" border="0" cellpadding="0" cellspacing="0" width="100%">
+			<tbody><tr>
+				<td>
+
+				<table class="white1" border="0" cellpadding="0" cellspacing="0" width="100%">
+				<form action="http://search.oracle.com/search/search" id="searchform" method="GET"></form>
+
+					<tbody><tr>
+						<td>
+						<div class="pad6"><label for="f7text1"><b>Search
+						Forums</b></label></div>
+						</td>
+					</tr>
+					<tr>
+						<td>
+						<div class="cellpadbottom">
+
+						<table border="0" cellpadding="0" cellspacing="0">
+							<tbody><tr>
+								<td valign="top">
+
+<input name="group" value="Discussion Forums" type="hidden">
+<input name="site" value="forums.sun.com" type="hidden">
+<input id="simpleSearch" name="q" class="medium" size="6" onfocus="if( this.value==this.defaultValue ) this.value='';" value="Search" align="top" type="text"></td>
+								<td>&nbsp;&nbsp;</td>
+								
+
+
+								<td valign="top"><input class="hotbutton" value="&nbsp;»&nbsp;" onmouseover="this.style.color='#fbe249';" onmouseout="this.style.color='#FFF';" border="0" type="submit"></td>
+							</tr>
+						</tbody></table>
+
+						</div>
+						</td>
+					</tr>
+					
+				</tbody></table>
+
+				</td>
+			</tr>
+		</tbody></table>
+		<span class="sp10">&nbsp;</span><br>
+		</div>
+		 <!-- END SEARCH BOX --> <!-- Ad Box -->  <script type="text/javascript"><!--//<![CDATA[
+   var m3_u = (location.protocol=='https:'?'https://ads.sun.com/ads/www/delivery/ajs.php':'http://ads.sun.com/ads/www/delivery/ajs.php');
+   var m3_r = Math.floor(Math.random()*99999999999);
+   if (!document.MAX_used) document.MAX_used = ',';
+   document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
+   document.write ("?zoneid=585");
+   document.write ('&amp;cb=' + m3_r);
+   if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
+   document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
+   document.write ("&amp;loc=" + escape(window.location));
+   if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
+   if (document.context) document.write ("&context=" + escape(document.context));
+   if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
+   document.write ("'><\/scr"+"ipt>");
+//]]>--></script><script type="text/javascript" src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ajs.gif"></script><noscript><a href='http://ads.sun.com/ads/www/delivery/ck.php?n=a4223322&amp;cb=555' target='_blank'><img src='http://ads.sun.com/ads/www/delivery/avw.php?zoneid=585&amp;cb=555&amp;n=a4223322' border='0' alt='' /></a></noscript>  <!-- End Ad Box --> <!-- BEGIN SPOTLIGHT ALERT --> 
+		<div class="e2">
+		<table class="navblue" border="0" cellpadding="8" cellspacing="0" width="100%">
+			<tbody><tr>
+				<td>
+
+				<table class="vatop" border="0" cellpadding="0" cellspacing="0" width="100%">
+					<tbody><tr>
+						<td colspan="2"><div style="font-weight: bold; color: rgb(255, 0, 0);">
+Oracle Forums - On Friday November 5th, the Sun Forums will be redirected to Oracle Forums. Please use the new forums at 
+<a href="http://forums.oracle.com/">http://forums.oracle.com</a>. For more information on the migration, read the <a href="http://wikis.sun.com/display/Forums/Forums+FAQ">Forums Migration FAQ</a>
+</div>
+						</td>
+					</tr>
+				</tbody></table>
+
+				</td>
+			</tr>
+		</tbody></table>
+		<span class="sp10">&nbsp;</span><br>
+		</div>
+		 <!-- END SPOTLIGHT ALERT --> <!-- BEGIN E15 COMPONENT V.0 -->
+		<div class="e15 e15v2">
+		<div class="e15w1">
+		<div class="e15w2"><!-- BEGIN STATISTICS LINKS -->
+		<h5>Forums Statistics</h5>
+		<ul></ul>
+		<!-- END STATISTICS --> <!-- END E15 COMPONENT --></div>
+		</div>
+		</div>
+
+		<br>
+
+		<!-- BEGIN E15 COMPONENT V.0 -->
+		<div class="e15 e15v2">
+		<div class="e15w1">
+		<div class="e15w2"><!-- BEGIN ABOUT SUN FORUMS -->
+		<h5>About Sun forums</h5>
+		<ul>
+			<li>
+
+			<p>Sun Forums is a large collection of user generated
+			discussions. It is here to help you ask questions, find answers, and
+			participate in discussions.</p>
+			<p>Check out our guide on <a href="http://wikis.sun.com/display/SunForums/Tips">Getting
+			started with Sun Forums</a> for a full walkthrough of how to best
+			leverage the benefits of this community.</p>
+			</li>
+		</ul>
+		<!-- END ABOUT SUN FORUMS --></div>
+		</div>
+		</div>
+		<!-- END e15 components --></td>
+	</tr>
+</tbody></table>
+
+
+
+</td> <!-- END RIGHT NAV-->
+
+</tr>
+</tbody>
+</table> <!-- END CONTENT & NAV TABLE -->
+
+
+<script language="JavaScript" src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/s_code_remote.js"></script><script type="text/javascript" src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/metrics_group1.js"></script>
+
+<table> 
+<tbody><tr> <td> 
+    
+
+    </td>
+</tr>
+<tr>
+    <td valign="bottom">
+        <a href="http://www.jivesoftware.com/poweredby/" target="_new">
+            <img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/ic_jive_forums.gif" alt="Powered by Jive Forums" border="0" height="24" width="74">
+        </a>
+    </td>
+</tr>
+</tbody></table>
+
+
+    
+    <!-- END RIGHT COLUMN COMPONENTS -->
+<br><img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/a.gif" alt=" " border="0" height="1" width="170">
+<img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/a.gif" alt=" " border="0" height="1" width="170"><br>
+<!--  BEGIN CELL FOR OPTIONAL MASTHEAD CAPTION -->
+<!--  END CELL FOR OPTIONAL MASTHEAD CAPTION -->
+<!-- END SPACER ROW -->
+
+<!-- END WRAPPER TABLE, 3 COLUMN, LEFT/MAIN/RIGHT -->
+    <!-- BEGIN VNV5 FOOTER  --><table border="0" cellpadding="0" cellspacing="10" width="100%">
+<tbody><tr>
+<td>
+<table class="vatop" border="0" cellpadding="0" cellspacing="0" width="100%">
+<tbody><tr>
+<td colspan="4" class="grey3" valign="top"><img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/a.gif" alt="" border="0" height="2" width="1"></td></tr>
+<tr>
+<td><img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/a.gif" alt="" border="0" height="1" width="190"><br>
+<a href="http://www.oracle.com/"><img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/logo_oracle_footer.gif" height="29" width="93"> </a> </td>
+<td valign="top" width="100%"><img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/a.gif" alt="" border="0" height="1" width="350"><br>
+<div class="footer">
+<a href="http://www.sun.com/communities/guidelines.jsp">Oracle Social Media Participation Policy</a> &nbsp;|&nbsp;
+<a href="http://developers.sun.com/global/aboutsun.html">About Sun</a> &nbsp;|&nbsp;
+<a href="http://developers.sun.com/global/aboutsdn.html">About This Site</a> &nbsp;|&nbsp;
+<a href="http://developers.sun.com/global/newsletters.html">Newsletters</a> &nbsp;|&nbsp;
+<a href="http://developers.sun.com/global/contact.html">Contact Us</a> &nbsp;|&nbsp;
+<a href="http://developers.sun.com/global/employment.html">Employment</a><br>
+<a href="http://developers.sun.com/global/howtobuy.html">How to Buy</a> &nbsp;|&nbsp;
+<a href="http://developers.sun.com/global/licensing.html">Licensing</a> &nbsp;|&nbsp;
+<a href="http://developers.sun.com/global/termsofuse.html">Terms of Use</a> &nbsp;|&nbsp;
+<a href="http://developers.sun.com/global/privacy.html">Privacy</a> &nbsp;|&nbsp;
+<a href="http://developers.sun.com/global/trademarks.html">Trademarks</a>
+<br><span class="sp10">&nbsp;</span><br>
+<br><span class="sp10">&nbsp;</span><br>
+<span style="display: block; float: right; text-align: right;" class="footercopy">
+            © 2009, Oracle Corporation and/or its affiliates<br>
+
+</span></div></td>
+<td><img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/a.gif" alt="" border="0" height="1" width="40"></td>
+<td valign="top"><div class="footer"><b><a href="http://developers.sun.com/global/aboutsdn.html">A Sun Developer Network Site</a></b></div>
+<div class="footer">
+<img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/a.gif" alt="" border="0" height="1" width="170"><br>
+Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this <a href="http://developers.sun.com/global/berkeley_license.html">License</a>.
+<br><span class="sp5">&nbsp;</span><br>
+<a href="http://developers.sun.com/global/rss_sdn.html"><img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/button_xml.gif" alt="XML" align="top" border="0" height="14" width="36"></a>&nbsp;<a href="http://developers.sun.com/global/content_feeds.html">Content Feeds</a>
+</div></td></tr>
+<tr><td colspan="4" class="grey3" valign="top"><img src="Sending%20RSA%20public%20key%20modulus%20to%20card-Dateien/a.gif" alt="" border="0" height="2" width="1"></td></tr>
+</tbody></table>
+</td></tr>
+</tbody></table>
+<!-- END VNV5 FOOTER -->
+  <!-- end of "a0 a0v1" div -->
+
+
+
+</body></html>
\ No newline at end of file