From: <Saved by Microsoft Internet Explorer 5>
Subject: Tex2Me Offers Free Messaging at MobHappy
Date: Sat, 6 May 2006 07:37:31 +0100
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0022_01C670DF.EECDCB00"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869

This is a multi-part message in MIME format.

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mobhappy.com/blog1/2006/04/24/tex2me-offers-free-messaging/

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD=20
profile=3Dhttp://gmpg.org/xfn/11><TITLE>Tex2Me Offers Free Messaging at =
MobHappy</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3DUTF-8">
<META content=3D"MSHTML 6.00.2900.2873" name=3DGENERATOR>
<META content=3D"K2 Beta Two r156" name=3Dtemplate>
<META content=3D"Russell Buckley and Carlo Longino on mobile =
technology."=20
name=3Ddescription><LINK media=3Dscreen=20
href=3D"http://mobhappy.com/blog1/wp-content/themes/k2/style.css" =
type=3Dtext/css=20
rel=3Dstylesheet><LINK media=3Dscreen=20
href=3D"http://mobhappy.com/blog1/wp-content/themes/k2/styles/MIna2.css" =

type=3Dtext/css rel=3Dstylesheet><LINK title=3D"RSS 2.0"=20
href=3D"http://feeds.feedburner.com/Mobhappy" type=3Dapplication/rss+xml =

rel=3Dalternate><LINK title=3D"RSS .92" =
href=3D"http://feeds.feedburner.com/Mobhappy"=20
type=3Dtext/xml rel=3Dalternate><LINK title=3D"Atom 0.3"=20
href=3D"http://feeds.feedburner.com/Mobhappy" =
type=3Dapplication/atom+xml=20
rel=3Dalternate><LINK href=3D"http://mobhappy.com/blog1/xmlrpc.php" =
rel=3Dpingback>
<SCRIPT =
src=3D"http://mobhappy.com/blog1/wp-content/themes/k2/js/prototype.js.php=
"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://mobhappy.com/blog1/wp-content/themes/k2/js/effects.js.php" =

type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://mobhappy.com/blog1/wp-content/themes/k2/js/ajax_comments.js=
"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://mobhappy.com/blog1/wp-content/themes/k2/js/k2functions.js" =

type=3Dtext/javascript></SCRIPT>

<SCRIPT type=3Dtext/javascript>//<![CDATA[=0A=
		//  Copyright (c) 2004 Bitflux GmbH                                    =
  =0A=
=0A=
//  Licensed under the Apache License, Version 2.0 (the "License");      =0A=
//  you may not use this file except in compliance with the License.     =0A=
//  You may obtain a copy of the License at                              =0A=
//  http://www.apache.org/licenses/LICENSE-2.0                           =0A=
//  Unless required by applicable law or agreed to in writing, software  =0A=
//  distributed under the License is distributed on an "AS IS" BASIS,    =0A=
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or      =0A=
//  implied. See the License for the specific language governing         =0A=
//  permissions and limitations under the License.                       =0A=
=0A=
//  Author: Bitflux GmbH                             =0A=
=0A=
=0A=
=0A=
var liveSearchReq =3D false;=0A=
var t =3D null;=0A=
var liveSearchLast =3D "";=0A=
var isIE =3D false;=0A=
// on !IE we only have to initialize it once=0A=
if (window.XMLHttpRequest) {=0A=
	liveSearchReq =3D new XMLHttpRequest();=0A=
}=0A=
=0A=
function liveSearchInit() {=0A=
	=0A=
	if (navigator.userAgent.indexOf("Safari") > 0) {=0A=
		$('livesearch').addEventListener("keydown",liveSearchKeyPress,false);=0A=
		$('livesearch').setAttribute("autocomplete","off");=0A=
	} else if (navigator.product =3D=3D "Gecko") {=0A=
		$('livesearch').addEventListener("keypress",liveSearchKeyPress,false);=0A=
		$('livesearch').setAttribute("autocomplete","off");=0A=
	} else {=0A=
		$('livesearch').attachEvent('onkeydown',liveSearchKeyPress);=0A=
		isIE =3D true;=0A=
		$('livesearch').setAttribute("autocomplete","off");=0A=
	}=0A=
}=0A=
=0A=
function liveSearchKeyPress(event) {=0A=
	if (event.keyCode =3D=3D 40 )=0A=
	//KEY DOWN=0A=
	{=0A=
		highlight =3D $("LSHighlight");=0A=
		if (!highlight) {=0A=
			highlight =3D =
$("LSResult").firstChild.firstChild.nextSibling.firstChild;=0A=
		} else {=0A=
			highlight.removeAttribute("id");=0A=
			highlight =3D highlight.nextSibling;=0A=
		}=0A=
		if (highlight) {=0A=
			highlight.setAttribute("id","LSHighlight");=0A=
		} =0A=
		if (!isIE) { event.preventDefault(); }=0A=
	} =0A=
	//KEY UP=0A=
	else if (event.keyCode =3D=3D 38 ) {=0A=
		highlight =3D $("LSHighlight");=0A=
		if (!highlight) {=0A=
			highlight =3D =
$("LSResult").firstChild.firstChild.nextSibling.nextSibling.lastChild;=0A=
		} =0A=
		else {=0A=
			highlight.removeAttribute("id");=0A=
			highlight =3D highlight.previousSibling;=0A=
		}=0A=
		if (highlight) {=0A=
				highlight.setAttribute("id","LSHighlight");=0A=
		}=0A=
		if (!isIE) { event.preventDefault(); }=0A=
	} =0A=
	//ESC=0A=
	else if (event.keyCode =3D=3D 27) {=0A=
		highlight =3D $("LSHighlight");=0A=
		if (highlight) {=0A=
			highlight.removeAttribute("id");=0A=
		}=0A=
		$("LSResult").style.display =3D "none";=0A=
		document.forms.searchform.s.value =3D '';=0A=
	} =0A=
}=0A=
function liveSearchStart() {=0A=
	if (t) {=0A=
		window.clearTimeout(t);=0A=
	}=0A=
	t =3D window.setTimeout("liveSearchDoSearch()",200);=0A=
}=0A=
=0A=
function liveSearchDoSearch() {=0A=
	if (liveSearchLast !=3D document.forms.searchform.s.value) {=0A=
	if (liveSearchReq && liveSearchReq.readyState < 4) {=0A=
		liveSearchReq.abort();=0A=
		// Fade the background of the results box=0A=
	}=0A=
	if ( document.forms.searchform.s.value =3D=3D "") {=0A=
		$("LSResult").style.display =3D "none";=0A=
		highlight =3D $("LSHighlight");=0A=
		if (highlight) {=0A=
			highlight.removeAttribute("id");=0A=
		}=0A=
		return false;=0A=
	}=0A=
	if (window.XMLHttpRequest) {=0A=
	// branch for IE/Windows ActiveX version=0A=
	} else if (window.ActiveXObject) {=0A=
		liveSearchReq =3D new ActiveXObject("Microsoft.XMLHTTP");=0A=
	}=0A=
	liveSearchReq.onreadystatechange=3D liveSearchProcessReqChange;=0A=
	liveSearchReq.open("GET", =
"http://mobhappy.com/blog1/wp-content/themes/k2/livesearch.php?s=3D" + =
document.forms.searchform.s.value);=0A=
	liveSearchLast =3D document.forms.searchform.s.value;=0A=
	liveSearchReq.send(null);=0A=
	}=0A=
}=0A=
=0A=
function liveSearchProcessReqChange() {=0A=
	=0A=
	if (liveSearchReq.readyState =3D=3D 4) {=0A=
		var  res =3D $("LSResult");=0A=
		res.style.display =3D "block";=0A=
		/* res.firstChild.innerHTML =3D liveSearchReq.responseText; */=0A=
		res.firstChild.innerHTML =3D '<div id=3D"searchcontrols"><small>Arrow =
keys, enter & <a href=3D"javascript://" title=3D"Close results" =
onclick=3D"closeResults()">escape</a></small><br =
/></div>'+liveSearchReq.responseText;=0A=
	}=0A=
	=0A=
	//getDDSize();=0A=
	//setListenLinks();=0A=
}=0A=
=0A=
function liveSearchSubmit() {=0A=
	var highlight =3D $("LSHighlight");=0A=
	if (highlight && highlight.firstChild) {=0A=
		window.location =3D highlight.firstChild.getAttribute("href");=0A=
		return false;=0A=
	} =0A=
	else {=0A=
		return true;=0A=
	}=0A=
}=0A=
=0A=
function closeResults() {=0A=
    $("LSResult").style.display =3D "none";=0A=
}=0A=
		window.onload =3D liveSearchInit;=0A=
	//]]></SCRIPT>
<RDF:RDF =
xmlns:trackback=3D"http://madskills.com/public/xml/rss/module/trackback/"=
=20
xmlns:dc=3D"http://purl.org/dc/elements/1.1/"=20
xmlns:rdf=3D"http://www.w3.org/1999/02/22-rdf-syntax-ns#"><RDF:DESCRIPTIO=
N=20
trackback:ping=3D"http://mobhappy.com/blog1/2006/04/24/tex2me-offers-free=
-messaging/trackback/"=20
dc:title=3D"Tex2Me Offers Free Messaging"=20
dc:identifier=3D"http://mobhappy.com/blog1/2006/04/24/tex2me-offers-free-=
messaging/"=20
rdf:about=3D"http://mobhappy.com/blog1/2006/04/24/tex2me-offers-free-mess=
aging/"=20
/></RDF:RDF><LINK title=3D"May 2006" =
href=3D"http://mobhappy.com/blog1/2006/05/"=20
rel=3Darchives><LINK title=3D"April 2006" =
href=3D"http://mobhappy.com/blog1/2006/04/"=20
rel=3Darchives><LINK title=3D"March 2006" =
href=3D"http://mobhappy.com/blog1/2006/03/"=20
rel=3Darchives><LINK title=3D"February 2006"=20
href=3D"http://mobhappy.com/blog1/2006/02/" rel=3Darchives><LINK=20
title=3D"January 2006" href=3D"http://mobhappy.com/blog1/2006/01/"=20
rel=3Darchives><LINK title=3D"December 2005"=20
href=3D"http://mobhappy.com/blog1/2005/12/" rel=3Darchives><LINK=20
title=3D"November 2005" href=3D"http://mobhappy.com/blog1/2005/11/"=20
rel=3Darchives><LINK title=3D"October 2005"=20
href=3D"http://mobhappy.com/blog1/2005/10/" rel=3Darchives><LINK=20
title=3D"September 2005" href=3D"http://mobhappy.com/blog1/2005/09/"=20
rel=3Darchives><LINK title=3D"August 2005" =
href=3D"http://mobhappy.com/blog1/2005/08/"=20
rel=3Darchives><LINK title=3D"July 2005" =
href=3D"http://mobhappy.com/blog1/2005/07/"=20
rel=3Darchives><LINK title=3D"June 2005" =
href=3D"http://mobhappy.com/blog1/2005/06/"=20
rel=3Darchives><LINK title=3D"May 2005" =
href=3D"http://mobhappy.com/blog1/2005/05/"=20
rel=3Darchives><LINK title=3D"April 2005" =
href=3D"http://mobhappy.com/blog1/2005/04/"=20
rel=3Darchives><LINK title=3D"March 2005" =
href=3D"http://mobhappy.com/blog1/2005/03/"=20
rel=3Darchives><LINK title=3D"February 2005"=20
href=3D"http://mobhappy.com/blog1/2005/02/" rel=3Darchives><LINK=20
title=3D"January 2005" href=3D"http://mobhappy.com/blog1/2005/01/"=20
rel=3Darchives><LINK title=3D"December 2004"=20
href=3D"http://mobhappy.com/blog1/2004/12/" rel=3Darchives><LINK=20
title=3D"November 2004" href=3D"http://mobhappy.com/blog1/2004/11/"=20
rel=3Darchives><LINK title=3D"October 2004"=20
href=3D"http://mobhappy.com/blog1/2004/10/" rel=3Darchives><LINK=20
title=3D"September 2004" href=3D"http://mobhappy.com/blog1/2004/09/"=20
rel=3Darchives><LINK title=3D"August 2004" =
href=3D"http://mobhappy.com/blog1/2004/08/"=20
rel=3Darchives><LINK title=3D"July 2004" =
href=3D"http://mobhappy.com/blog1/2004/07/"=20
rel=3Darchives><LINK title=3D"June 2004" =
href=3D"http://mobhappy.com/blog1/2004/06/"=20
rel=3Darchives><LINK title=3D"May 2004" =
href=3D"http://mobhappy.com/blog1/2004/05/"=20
rel=3Darchives><LINK title=3D"April 2004" =
href=3D"http://mobhappy.com/blog1/2004/04/"=20
rel=3Darchives><LINK title=3DRSD =
href=3D"http://mobhappy.com/blog1/xmlrpc.php?rsd"=20
type=3Dapplication/rsd+xml rel=3DEditURI></HEAD>
<BODY class=3D" permalink">
<DIV id=3Dpage>
<DIV id=3Dheader>
<H1><A href=3D"http://mobhappy.com/blog1">MobHappy</A></H1>
<P class=3Ddescription>Russell Buckley and Carlo Longino on mobile =
technology.</P>
<UL class=3Dmenu>
  <LI class=3Dcurrent_page_item><A =
href=3D"http://mobhappy.com/blog1">Blog</A>=20
  <LI class=3Dpage_item><A title=3DAbout=20
  href=3D"http://mobhappy.com/blog1/about/">About</A>=20
  <LI class=3Dpage_item><A title=3DArchives=20
  href=3D"http://mobhappy.com/blog1/archives/">Archives</A>=20
  <LI class=3Dpage_item><A title=3DBlogroll=20
  href=3D"http://mobhappy.com/blog1/blogroll/">Blogroll</A> =
</LI></UL></DIV>
<HR>

<DIV class=3Dprimary>
<P>
<SCRIPT language=3DJavaScript>=0A=
<!--=0A=
ctxt_ad_partner =3D "5104772830";=0A=
ctxt_ad_section =3D "17313";=0A=
ctxt_ad_bg =3D "";=0A=
ctxt_ad_width =3D 468;=0A=
ctxt_ad_height =3D 60;=0A=
ctxt_ad_bc =3D "FFFFFF";=0A=
ctxt_ad_cc =3D "FFFFFF";=0A=
ctxt_ad_lc =3D "666666";=0A=
ctxt_ad_tc =3D "666666";=0A=
ctxt_ad_uc =3D "666666";=0A=
// -->=0A=
</SCRIPT>

<SCRIPT language=3DJavaScript=20
src=3D"http://ypn-js.overture.com/partner/js/ypn.js">=0A=
</SCRIPT>
</P>
<HR>

<DIV class=3Dnavigation>
<DIV class=3Dleft>=C2=AB <A=20
href=3D"http://mobhappy.com/blog1/2006/04/24/is-hotxt-hot/">Is Hotxt=20
Hot?</A></DIV>
<DIV class=3Dright><A=20
href=3D"http://mobhappy.com/blog1/2006/04/24/links-for-april-24/">Links =
for April=20
24</A> =C2=BB</DIV>
<DIV class=3Dclear></DIV></DIV>
<HR>

<DIV class=3D"item entry" id=3Dpost-1705>
<DIV class=3Ditemhead>
<H3><A title=3D'Permanent Link to "Tex2Me Offers Free Messaging"'=20
href=3D"http://mobhappy.com/blog1/2006/04/24/tex2me-offers-free-messaging=
/"=20
rel=3Dbookmark>Tex2Me Offers Free Messaging</A></H3><!-- The following =
two sections are for a noteworthy plugin currently in alpha. They'll get =
cleaned up and integrated better --><SMALL=20
class=3Dmetadata><SPAN class=3Dchronodata>by<STRONG> <A=20
title=3D"Posts by Russell Buckley"=20
href=3D"http://mobhappy.com/blog1/author/russell/">Russell Buckley</A> =
</STRONG>on=20
April 24th, 2006 in <A title=3D"View all posts in Analysis"=20
href=3D"http://mobhappy.com/blog1/category/analysis/"=20
rel=3D"category tag">Analysis</A>, <A title=3D"View all posts in New =
launches"=20
href=3D"http://mobhappy.com/blog1/category/new-launches/" =
rel=3D"category tag">New=20
launches</A></SPAN> </SMALL></DIV>
<DIV class=3Ditemtext>
<P><IMG src=3D"http://www.tex2me.com/images/Tex2logo.gif" =
align=3Dright></P>
<P>Earlier today, I wrote about <A=20
href=3D"http://mobhappy.com/blog1/2006/04/24/is-hotxt-hot/">Hotxt</A>, =
which=20
offers cheap messaging via a Java application over GPRS. I concluded =
that I was=20
a little luke warm about it, despite their high profile investor, and =
that it=20
had usability issues and would be more ballsy if it were free.</P>
<P><A href=3D"http://feeds.feedburner.com/SmsTextNews?m=3D661">SMS Text =
News</A>=20
linked to the story and MobHappy reader (and Tex2me founder), Stuart =
McWilliam=20
left a comment, both pointing in the direction of <A=20
href=3D"http://www.tex2me.com/">Tex2Me</A>. </P>
<P>Tex2Me has been launched on a shoe stringn in December 2005. It =
actually=20
overcomes all my criticisms of Hotxt, in that it offers a free service =
(apart=20
from operator data charges, of course) and it=E2=80=99s very clear and =
simply explained.=20
They don=E2=80=99t have an equivalent to Hotxt=E2=80=99s Out service, =
which means it=E2=80=99s easy to=20
understand - both parties need to install the app and then they get free =

messaging. End of story.</P>
<P>I spoke to Phil Jones, one of the founders of Tex2Me and he says that =
the=20
basic service will always be free and that they plan on introducing =
premium=20
services in the future. This was the formulae that worked for Skype and =
I think=20
it stands a good chance of succeeding here too.</P>
<P>Bearing in mind that Tex2Me have (unwittingly) overcome all my issues =
with=20
their richer rival, I think it=E2=80=99s only fair to give them the red =
hot accolade I=20
was withholding from Hotxt. I expect they=E2=80=99ll be getting a few =
calls from some=20
likely investors pretty soon. </P></DIV><!--=0A=
				<rdf:RDF xmlns:rdf=3D"http://www.w3.org/1999/02/22-rdf-syntax-ns#" =0A=
	    xmlns:dc=3D"http://purl.org/dc/elements/1.1/"=0A=
	    =
xmlns:trackback=3D"http://madskills.com/public/xml/rss/module/trackback/"=
>=0A=
		<rdf:Description =
rdf:about=3D"http://mobhappy.com/blog1/2006/04/24/tex2me-offers-free-mess=
aging/"=0A=
    =
dc:identifier=3D"http://mobhappy.com/blog1/2006/04/24/tex2me-offers-free-=
messaging/"=0A=
    dc:title=3D"Tex2Me Offers Free Messaging"=0A=
    =
trackback:ping=3D"http://mobhappy.com/blog1/2006/04/24/tex2me-offers-free=
-messaging/trackback/" />=0A=
</rdf:RDF>				--></DIV><!-- You can start editing here. -->
<HR>

<DIV class=3Dcomments id=3Dcomments>
<H4><A name=3Dcomments></A><A=20
href=3D"http://mobhappy.com/blog1/2006/04/24/tex2me-offers-free-messaging=
/#comments">7=20
Responses to =E2=80=9CTex2Me Offers Free Messaging=E2=80=9D =
&nbsp;</A></H4>
<DIV class=3Dmetalinks><SPAN class=3Dcommentsrsslink><A=20
href=3D"http://mobhappy.com/blog1/2006/04/24/tex2me-offers-free-messaging=
/feed/">Feed=20
for this Entry</A></SPAN> <SPAN class=3Dtrackbacklink><A=20
title=3D"Copy this URI to trackback this entry."=20
href=3D"http://mobhappy.com/blog1/2006/04/24/tex2me-offers-free-messaging=
/trackback/">Trackback=20
Address</A></SPAN> </DIV>
<OL class=3Dcommentlist id=3Dcommentlist>
  <LI class=3D" item" id=3Dcomment-3543><A name=3Dcomment-3543></A><A =
class=3Dcounter=20
  title=3D"Permanent Link to this Comment"=20
  =
href=3D"http://mobhappy.com/blog1/2006/04/24/tex2me-offers-free-messaging=
  </P></DIV></LI></OL><!-- Reply Form -->
<DIV id=3Dloading style=3D"DISPLAY: none">Posting Your Comment<BR>Please =
Wait </DIV>
<H4>Leave a Reply</H4>
<FORM id=3Dcommentform=20
onsubmit=3D"new Ajax.Updater({success: 'commentlist'}, =
'http://mobhappy.com/blog1/wp-content/themes/k2/comments-ajax.php', =
{asynchronous: true, evalScripts: true, insertion: Insertion.Bottom, =
onComplete: function(request){complete(request)}, onFailure: =
function(request){failure(request)}, onLoading: =
function(request){loading()}, parameters: Form.serialize(this)}); return =
false;"=20
action=3Dhttp://mobhappy.com/blog1/wp-comments-post.php method=3Dpost>
<DIV id=3Derror style=3D"DISPLAY: none">There was an error with your =
comment, please=20
try again. </DIV>
<DIV id=3Dauthorinfo>
<P><INPUT id=3Dauthor tabIndex=3D1 size=3D22 name=3Dauthor> <LABEL=20
for=3Dauthor><SMALL><STRONG>Name</STRONG> (required)</SMALL></LABEL></P>
<P><INPUT id=3Demail tabIndex=3D2 size=3D22 name=3Demail> <LABEL=20
for=3Demail><SMALL><STRONG>Mail</STRONG> (will not be published)=20
(required)</SMALL></LABEL></P>
<P><INPUT id=3Durl tabIndex=3D3 size=3D22 name=3Durl> <LABEL=20
for=3Durl><SMALL><STRONG>Website</STRONG></SMALL></LABEL></P></DIV><!--<p=
><small><strong>XHTML:</strong> You can use these tags: &lt;a =
href=3D&quot;&quot; title=3D&quot;&quot;&gt; &lt;abbr =
title=3D&quot;&quot;&gt; &lt;acronym title=3D&quot;&quot;&gt; &lt;b&gt; =
&lt;blockquote cite=3D&quot;&quot;&gt; &lt;code&gt; &lt;em&gt; &lt;i&gt; =
&lt;strike&gt; &lt;strong&gt; </small></p>-->
<P><TEXTAREA id=3Dcomment tabIndex=3D4 name=3Dcomment rows=3D10 =
cols=3D100></TEXTAREA></P>
<P><INPUT id=3Dsubmit tabIndex=3D5 type=3Dsubmit value=3DSubmit =
name=3Dsubmit> <INPUT=20
type=3Dhidden value=3D1705 name=3Dcomment_post_ID> <BR =
class=3Dclear></P></FORM></DIV><!-- Close .comments container -->
<SCRIPT language=3DJavaScript>=0A=
<!--=0A=
ctxt_ad_partner =3D "5104772830";=0A=
ctxt_ad_section =3D "17314";=0A=
ctxt_ad_bg =3D "";=0A=
ctxt_ad_width =3D 336;=0A=
ctxt_ad_height =3D 280;=0A=
ctxt_ad_bc =3D "FFFFFF";=0A=
ctxt_ad_cc =3D "FFFFFF";=0A=
ctxt_ad_lc =3D "666666";=0A=
ctxt_ad_tc =3D "666666";=0A=
ctxt_ad_uc =3D "666666";=0A=
// -->=0A=
</SCRIPT>

<SCRIPT language=3DJavaScript=20
src=3D"http://ypn-js.overture.com/partner/js/ypn.js">=0A=
</SCRIPT>
</DIV>
<HR>

<DIV class=3Dsecondary>
<DIV class=3Dsb-search>
<H2>Search</H2>
<DIV class=3Dlivesearchform>
<FORM id=3Dsearchform name=3Dsearchform onsubmit=3D"return =
liveSearchSubmit()"=20
action=3D/blog1/index.php method=3Dget><INPUT =
onkeypress=3DliveSearchStart()=20
id=3Dlivesearch=20
onblur=3D"setTimeout('closeResults()',2000); if (this.value =3D=3D '') =
{this.value =3D 'search blog archives';}"=20
onfocus=3D"if (this.value =3D=3D 'search blog archives') {this.value =3D =
'';}"=20
value=3D"search blog archives" name=3Ds> <INPUT id=3Dsearchsubmit =
style=3D"DISPLAY: none" type=3Dsubmit value=3DSearch><!--[if IE]>=20

<DIV><![endif]-->
<DIV id=3DLSResult style=3D"DISPLAY: none">
<DIV=20
id=3DLSShadow></DIV></DIV><!--[if =
IE]></DIV><BR><![endif]--></FORM></DIV></DIV>
<P><A title=3D"Subscribe to my feed, MobHappy"=20
href=3D"http://feeds.feedburner.com/Mobhappy" type=3Dapplication/rss+xml =

rel=3Dalternate><IMG=20
style=3D"BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; =
BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px"=20
alt=3D"" =
src=3D"http://www.feedburner.com/fb/images/pub/feed-icon16x16.png">=20
Subscribe to RSS</A></P><A=20
href=3D"http://www.bloglines.com/sub/http://feeds.feedburner.com/Mobhappy=
"><IMG=20
alt=3D"Subscribe with Bloglines"=20
src=3D"http://www.bloglines.com/images/sub_modern8.gif" border=3D0> =
</A><BR><A=20
href=3D"http://add.my.yahoo.com/content?.intl=3Dus&amp;url=3Dhttp%3A//fee=
ds.feedburner.com/Mobhappy"><IMG=20
height=3D17 alt=3D"Add to My Yahoo!"=20
src=3D"http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif" =
width=3D91=20
align=3Dmiddle border=3D0></A>=20
<P>
<FORM action=3Dhttp://www.feedblitz.com/feedblitz.exe?AddNewUserDirect=20
method=3Dpost>Enter your address here to subscribe via e-mail:<BR><INPUT =

style=3D"WIDTH: 95px" maxLength=3D255 name=3DEMAIL><BR><INPUT =
type=3Dhidden value=3D499=20
name=3DFEEDID> <INPUT type=3Dsubmit value=3DSubmit> <BR>Powered by <A=20
href=3D"http://www.feedblitz.com/">FeedBlitz</A></FORM></P>
<P><A href=3D"http://mobhappy.com/blog1/?p=3D163"><IMG=20
src=3D"http://mobhappy.com/images/carnival.gif" border=3D0></A></P><A=20
href=3D"mailto:mobhappy@mobhappy.com">Email Us</A> for a copy of =
Russell's free=20
white paper on mobile marketing<BR><A =
href=3D"mailto:carlo@mobhappy.com">Email=20
Carlo</A><BR><A href=3D"mailto:russell@mobhappy.com">Email =
Russell</A><BR>
<P>
<SCRIPT language=3Djavascript=20
src=3D"http://proxy.blogads.com/svttfmmcvdlmfzhnbjmdpn/mobhappy/feed.js">=
</SCRIPT>
</P>
<SCRIPT language=3DJavaScript>=0A=
<!--=0A=
ctxt_ad_partner =3D "5104772830";=0A=
ctxt_ad_section =3D "17294";=0A=
ctxt_ad_bg =3D "";=0A=
ctxt_ad_width =3D 120;=0A=
ctxt_ad_height =3D 240;=0A=
ctxt_ad_bc =3D "FFFFFF";=0A=
ctxt_ad_cc =3D "FFFFFF";=0A=
ctxt_ad_lc =3D "666666";=0A=
ctxt_ad_tc =3D "666666";=0A=
ctxt_ad_uc =3D "666666";=0A=
// -->=0A=
</SCRIPT>

<SCRIPT language=3DJavaScript=20
src=3D"http://ypn-js.overture.com/partner/js/ypn.js">=0A=
</SCRIPT>

<DIV class=3Dsb-comments>
<H2>Comments</H2><A class=3Dfeedlink title=3D"RSS Feed for all Comments" =

href=3D"http://mobhappy.com/blog1/comments/feed/"><IMG alt=3DRSS=20
src=3D"http://mobhappy.com/blog1/wp-content/themes/k2/images/feed.png"></=
A>=20
<UL>
  <LI class=3Dalternate><A class=3Dactivityentry=20
  href=3D"http://mobhappy.com/blog1/2006/05/03/java-magazines/">Java=20
  Magazines</A>&nbsp;&nbsp;<A title=3D"Go to the comments of this entry" =

  =
href=3D"http://mobhappy.com/blog1/2006/05/03/java-magazines/#comments">4<=
/A><BR><SMALL><A=20
  style=3D"COLOR: #4a4a4a"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/03/java-magazines/#comment-4626=
">Anders=20
  Borg</A>, <A style=3D"COLOR: #595959"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/03/java-magazines/#comment-4587=
">C.=20
  Enrique Ortiz</A>, <A style=3D"COLOR: #5d5d5d"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/03/java-magazines/#comment-4582=
">Russell=20
  Buckley</A> <A title=3D"Go to the comments of this entry"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/03/java-magazines/#comments">[.=
..]</A></SMALL>=20

  <LI class=3Dalternate><A class=3Dactivityentry=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/04/soonr-adds-mobile-browser-ba=
sed-skype-support-with-voice/">SoonR=20
  Adds Mobile Browser-Based Skype Support -- With =
Voice</A>&nbsp;&nbsp;<A=20
  title=3D"Go to the comments of this entry"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/04/soonr-adds-mobile-browser-ba=
sed-skype-support-with-voice/#comments">9</A><BR><SMALL><A=20
  style=3D"COLOR: #4b4b4b"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/04/soonr-adds-mobile-browser-ba=
sed-skype-support-with-voice/#comment-4625">Carlo=20
  Longino</A>, <A style=3D"COLOR: #4b4b4b"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/04/soonr-adds-mobile-browser-ba=
sed-skype-support-with-voice/#comment-4624">Tomi=20
  T Ahonen</A>, <A style=3D"COLOR: #515151"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/04/soonr-adds-mobile-browser-ba=
sed-skype-support-with-voice/#comment-4604">Song=20
  Huang</A> <A title=3D"Go to the comments of this entry"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/04/soonr-adds-mobile-browser-ba=
sed-skype-support-with-voice/#comments">[...]</A></SMALL>=20

  <LI class=3Dalternate><A class=3Dactivityentry=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/04/telia-offers-all-you-can-eat=
-sms-price/">Telia=20
  Offers All You Can Eat SMS Price</A>&nbsp;&nbsp;<A=20
  title=3D"Go to the comments of this entry"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/04/telia-offers-all-you-can-eat=
-sms-price/#comments">1</A><BR><SMALL><A=20
  style=3D"COLOR: #4b4b4b"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/04/telia-offers-all-you-can-eat=
-sms-price/#comment-4623">Tomi=20
  T Ahonen</A></SMALL>=20
  <LI class=3Dalternate><A class=3Dactivityentry=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/02/sexual-predator-zones/">Sexu=
al=20
  Predator Zones</A>&nbsp;&nbsp;<A title=3D"Go to the comments of this =
entry"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/02/sexual-predator-zones/#comme=
nts">4</A><BR><SMALL><A=20
  style=3D"COLOR: #515151"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/02/sexual-predator-zones/#comme=
nt-4606">Laurel=20
  Papworth</A>, <A style=3D"COLOR: #737373"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/02/sexual-predator-zones/#comme=
nt-4538">C.=20
  Enrique Ortiz</A>, <A style=3D"COLOR: #747474"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/02/sexual-predator-zones/#comme=
nt-4535">Tim=20
  Hibbard</A> <A title=3D"Go to the comments of this entry"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/02/sexual-predator-zones/#comme=
nts">[...]</A></SMALL>=20

  <LI class=3Dalternate><A class=3Dactivityentry=20
  =
href=3D"http://mobhappy.com/blog1/2006/04/26/the-frustrations-of-java/">T=
he=20
  Frustrations of Java</A>&nbsp;&nbsp;<A=20
  title=3D"Go to the comments of this entry"=20
  =
href=3D"http://mobhappy.com/blog1/2006/04/26/the-frustrations-of-java/#co=
mments">20</A><BR><SMALL><A=20
  style=3D"COLOR: #636363"=20
  =
href=3D"http://mobhappy.com/blog1/2006/04/26/the-frustrations-of-java/#co=
mment-4575">Allen=20
  Lau</A>, <A style=3D"COLOR: #717171"=20
  =
href=3D"http://mobhappy.com/blog1/2006/04/26/the-frustrations-of-java/#co=
mment-4541">Charlie=20
  Sierra</A>, <A style=3D"COLOR: #717171"=20
  =
href=3D"http://mobhappy.com/blog1/2006/04/26/the-frustrations-of-java/#co=
mment-4540">Matt=20
  Volpi</A> <A title=3D"Go to the comments of this entry"=20
  =
href=3D"http://mobhappy.com/blog1/2006/04/26/the-frustrations-of-java/#co=
mments">[...]</A></SMALL>=20

  <LI class=3Dalternate><A class=3Dactivityentry=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/03/opera-mini-goes-20/">Opera =
Mini=20
  Goes 2.0</A>&nbsp;&nbsp;<A title=3D"Go to the comments of this entry"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/03/opera-mini-goes-20/#comments=
">2</A><BR><SMALL><A=20
  style=3D"COLOR: #646464"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/03/opera-mini-goes-20/#comment-=
4572">Carlo=20
  Longino</A>, <A style=3D"COLOR: #646464"=20
  =
href=3D"http://mobhappy.com/blog1/2006/05/03/opera-mini-goes-20/#comment-=
4571">Gideon=20
  Marken</A></SMALL> </LI></UL></DIV>
<DIV class=3Dsb-categories>
<H2>Categories</H2>
<UL>
  <LI><A title=3D"View all posts filed under 3GSM"=20
  href=3D"http://mobhappy.com/blog1/category/3gsm/">3GSM</A> (13)=20
  <LI><A title=3D"View all posts filed under Advice to Operators"=20
  =
href=3D"http://mobhappy.com/blog1/category/advice-to-operators/">Advice =
to=20
  Operators</A> (34)=20
  <LI><A title=3D"View all posts filed under Analysis"=20
  href=3D"http://mobhappy.com/blog1/category/analysis/">Analysis</A> =
(418)=20
  <LI><A title=3D"View all posts filed under Announcements"=20
  =
href=3D"http://mobhappy.com/blog1/category/announcements/">Announcements<=
/A>=20
  (370)=20
  <LI><A title=3D"View all posts filed under Art"=20
  href=3D"http://mobhappy.com/blog1/category/art/">Art</A> (1)=20
  <LI><A title=3D"View all posts filed under Blogging"=20
  href=3D"http://mobhappy.com/blog1/category/blogging/">Blogging</A> =
(11)=20
  <LI><A title=3D"View all posts filed under Bluetooth"=20
  href=3D"http://mobhappy.com/blog1/category/bluetooth/">Bluetooth</A> =
(6)=20
  <LI><A title=3D"View all posts filed under Carnival of the =
Capitalists"=20
  =
href=3D"http://mobhappy.com/blog1/category/carnival-of-the-capitalists/">=
Carnival=20
  of the Capitalists</A> (2)=20
  <LI><A title=3D"View all posts filed under Carnival of the Mobilists"=20
  =
href=3D"http://mobhappy.com/blog1/category/carnival-of-the-mobilists/">Ca=
rnival=20
  of the Mobilists</A> (31)=20
  <LI><A title=3D"View all posts filed under Comment of the Week"=20
  =
href=3D"http://mobhappy.com/blog1/category/comment-of-the-week/">Comment =
of the=20
  Week</A> (5)=20
  <LI><A title=3D"View all posts filed under Community Power"=20
  href=3D"http://mobhappy.com/blog1/category/community-power/">Community =
Power</A>=20
  (22)=20
  <LI><A title=3D"View all posts filed under Content Providers"=20
  href=3D"http://mobhappy.com/blog1/category/content-providers/">Content =

  Providers</A> (12)=20
  <LI><A title=3D"View all posts filed under CTIA"=20
  href=3D"http://mobhappy.com/blog1/category/ctia/">CTIA</A> (10)=20
  <LI><A title=3D"View all posts filed under Devices"=20
  href=3D"http://mobhappy.com/blog1/category/devices/">Devices</A> (47)=20
  <LI><A title=3D"View all posts filed under DRM"=20
  href=3D"http://mobhappy.com/blog1/category/drm/">DRM</A> (9)=20
  <LI><A title=3D"View all posts filed under Fun"=20
  href=3D"http://mobhappy.com/blog1/category/fun/">Fun</A> (38)=20
  <LI><A title=3D"View all posts filed under Gaming"=20
  href=3D"http://mobhappy.com/blog1/category/gaming/">Gaming</A> (13)=20
  <LI><A title=3D"View all posts filed under Gizmondo"=20
  href=3D"http://mobhappy.com/blog1/category/gizmondo/">Gizmondo</A> (1) =

  <LI><A title=3D"View all posts filed under Links"=20
  href=3D"http://mobhappy.com/blog1/category/links/">Links</A> (83)=20
  <LI><A title=3D"View all posts filed under Location Based Services"=20
  =
href=3D"http://mobhappy.com/blog1/category/location-based-services/">Loca=
tion=20
  Based Services</A> (45)=20
  <LI><A title=3D"View all posts filed under Marketing"=20
  href=3D"http://mobhappy.com/blog1/category/marketing/">Marketing</A> =
(45)=20
  <LI><A title=3D"View all posts filed under Mobile Content"=20
  href=3D"http://mobhappy.com/blog1/category/mobile-content/">Mobile =
Content</A>=20
  (5)=20
  <LI><A title=3D"View all posts filed under Mobile Operators"=20
  href=3D"http://mobhappy.com/blog1/category/mobile-operators/">Mobile=20
  Operators</A> (32)=20
  <LI><A title=3D"View all posts filed under Mobile Payments"=20
  href=3D"http://mobhappy.com/blog1/category/mobile-payments/">Mobile =
Payments</A>=20
  (7)=20
  <LI><A title=3D"View all posts filed under Mobile Phone Evolution"=20
  =
href=3D"http://mobhappy.com/blog1/category/mobile-phone-evolution/">Mobil=
e Phone=20
  Evolution</A> (43)=20
  <LI><A title=3D"View all posts filed under Mobile Society"=20
  href=3D"http://mobhappy.com/blog1/category/mobile-society/">Mobile =
Society</A>=20
  (169)=20
  <LI><A title=3D"View all posts filed under Mobile techie stuff"=20
  =
href=3D"http://mobhappy.com/blog1/category/mobile-techie-stuff/">Mobile =
techie=20
  stuff</A> (33)=20
  <LI><A title=3D"View all posts filed under Music"=20
  href=3D"http://mobhappy.com/blog1/category/music/">Music</A> (7)=20
  <LI><A title=3D"View all posts filed under New Journalism"=20
  href=3D"http://mobhappy.com/blog1/category/new-journalism/">New =
Journalism</A>=20
  (8)=20
  <LI><A title=3D"View all posts filed under New launches"=20
  href=3D"http://mobhappy.com/blog1/category/new-launches/">New =
launches</A> (73)=20
  <LI><A title=3D"View all posts filed under P2P"=20
  href=3D"http://mobhappy.com/blog1/category/p2p/">P2P</A> (2)=20
  <LI><A title=3D"View all posts filed under Personal"=20
  href=3D"http://mobhappy.com/blog1/category/personal/">Personal</A> =
(24)=20
  <LI><A title=3D"View all posts filed under Predictions"=20
  =
href=3D"http://mobhappy.com/blog1/category/predictions/">Predictions</A> =
(32)=20
  <LI><A title=3D"View all posts filed under Reading List"=20
  href=3D"http://mobhappy.com/blog1/category/reading-list/">Reading =
List</A> (2)=20
  <LI><A title=3D"View all posts filed under Ringtones"=20
  href=3D"http://mobhappy.com/blog1/category/ringtones/">Ringtones</A> =
(9)=20
  <LI><A title=3D"View all posts filed under Services"=20
  href=3D"http://mobhappy.com/blog1/category/services/">Services</A> =
(27)=20
  <LI><A title=3D"View all posts filed under Stats"=20
  href=3D"http://mobhappy.com/blog1/category/stats/">Stats</A> (18)=20
  <LI><A title=3D"View all posts filed under Uncategorized"=20
  =
href=3D"http://mobhappy.com/blog1/category/uncategorized/">Uncategorized<=
/A>=20
  (30) </LI></UL></DIV>
<CENTER>
<P><A href=3D"http://mobhappy.com/blog1/?p=3D478"><IMG=20
src=3D"http://mobhappy.com/images/amber.gif" =
border=3D0></A></P></CENTER><!--- start gadget network --->
<CENTER><A =
href=3D"http://www.blogads.com/advertise/blogads_gadget__network/order"=20
target=3D_blank><IMG alt=3D"BlogAds.com Gadget Network" hspace=3D0=20
src=3D"http://mobhappy.typepad.com/russell_buckleys_mobhappy//gadgetnetlo=
go.jpg"=20
border=3D0></A> </CENTER><!--- end gadget network ---><!--WEBBOT =
bot=3D"Script" startspan PREVIEW=3D"Site Meter" -->
<SCRIPT language=3DJavaScript type=3Dtext/javascript>var =
site=3D"s16mobhappy"</SCRIPT>

<SCRIPT language=3DJavaScript1.2=20
src=3D"http://s16.sitemeter.com/js/counter.js?site=3Ds16mobhappy"=20
type=3Dtext/javascript></SCRIPT>
<NOSCRIPT><A =
href=3D"http://s16.sitemeter.com/stats.asp?site=3Ds16mobhappy"=20
target=3D_top><IMG alt=3D"Site Meter"=20
src=3D"http://s16.sitemeter.com/meter.asp?site=3Ds16mobhappy"=20
border=3D0></A></NOSCRIPT><!-- Copyright (c)2005 Site Meter =
--><!--WEBBOT bot=3D"Script" Endspan -->=20
</DIV><BR class=3Dclear></DIV><!-- Close Page -->
<HR>

<P id=3Dfooter><SMALL>MobHappy is powered by <A=20
title=3D"Where children sing songs of binary bliss"=20
href=3D"http://wordpress.org/">WordPress 2.0.2</A> and <A=20
title=3D"Is to WordPress what math is to reality; hard to understand."=20
href=3D"http://binarybonsai.com/wordpress/k2/">K2 Beta Two r156</A> by =
<A=20
title=3D"Michael Heilemann" =
href=3D"http://binarybonsai.com/">Michael</A> and <A=20
title=3D"Chris J Davis" href=3D"http://chrisjdavis.org/">Chris</A><BR><A =

href=3D"http://feeds.feedburner.com/Mobhappy">RSS Entries</A> and <A=20
href=3D"http://mobhappy.com/blog1/comments/feed/">RSS Comments</A> This =
is the new=20
site. <!-- 34 queries. 0.531 seconds. --></SMALL></P><!-- Dynamic Page =
Served (once) in 0.531 seconds --></BODY></HTML>

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.tex2me.com/images/Tex2logo.gif

R0lGODlhZQB4APcAAP///zQAaDEAYjIAaDKZmf7+8v7+6v7+2TWYnf/+4mRAgP///8zAtP7+1jQA
YtDE3DOcmDWXlmpEj8Gx0JqAsFowgfHp9NC92Zl+sc3AuDByiYFeoMu+2EAQbZBzq6mUu9rO4k4j
ffHw9bCawTIJaTQmc9nQ4TYwdmg/jcrA2TFWgjUvd0ITc/jz+TsLbjoRbTJLgTSQlTZ0jTQmdejc
8EEOcTVhiOrk8jGRkzRMgerk7jJhglkugcvA0DJNfTImckgbdnFQlDV8kEAObsGuznBOljE6dWg8
kTMwc3BKlb6qzbejyDMdcJuEuMzAsjRVhJ2CtzETbTJqiFkwfDOGkcjAvUwdeWRAiv/+znZSjzSO
laiMvD8QcKSQuzaGkfTu2d7T5DEdbzWXmIlrp0sgetnOyGZAfTRfiTQdb4pqqbalyOPb6LKexWI7
isy+uYxwqTJCepN7rjQIasSz1cu/182/v8G0zubg1PHv2NvX5ufd1KaPu6+auZyEtKKLuezl7cq/
uruqsLSjx1crgDOGll0zhT4OcjR9jjF9kH5foXNUmDY5fDI6eGQ7h3tbnHZSmFYsfj4OajFYgzGQ
mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAABlAHgA
QAj/AAEIHEiwoMGDCBMqXMiwocOHECM2rDFgAISLGDNqxHhCQAAgLSSKHCkRhYABJ5AEGCAgxByC
LYAECCBEo4qTFEjq3KnzpICNKwYEeNCQZQCPSGcm9Xi06VKnUJ9KjUp1qtKZGjYamblBYpUqDMKK
HUuWbIawTsJOaToTatsAaRlkyBBX7lg3YecGGjKzxEYIaCpW4ElYoIKrTJledYihIqO/aBRPlTyh
MMTDbhMrdehBgIAnf0P/pSLY8kPMSdkyHWDwg+eKQp0OyElQjc8BLywc3HDyqAfTDmcgvqpaYA+2
ShWv1Ez04AWjngOYAC4StWriAQiCMHpUqAAJVlhW/zxKkAaL3h1EEDTx+uh06gyta0YOv/5O+cQV
299fffj1mfwFeNpymS0m4IEIEjRCeKlh95oLSySIYFt/7bDICisYIcNfNlTkiIQgGkSBUDBolMNM
tC00xUmweQSbeD7FyJKMr9VI440z5mijjiyu1B1SJWoUxkwgOARdgQ6k5lGSATDp5JJQNhnlk1JW
SSWVTfnwFwlCKRFiQY3M1+BKED3g4gl/nbASCzd8mRB+yDXlkEkDZCXanRghBSKcYropoXAFFidQ
F0yxoFtrTIVg0AQrCZUeAJ01FeGXfA43EFICpBiRBSHERkYHbXVAg5+VOiWAnwmWqh+qB6raFqut
Dv8nZnaw1mrrrSRZMMIGFXgnAA8bjIArdYwuFwWeEMjAxHKaDisShchuJAVLhjg7ko8YSeGCYrEJ
JcVGXLCkg7USNRFbAH0ghMFMKtjEUrPkFpaGZ6BllINH8Ma7Ew8V2aCRBkK14VB0BSpZ1cGTIayw
wbEJ4K9GSAiFwUPRPUXVwhgnrHFUq73wF6C/QfSCZkxeN+t/J6ec38ptaWZnRk+I1xyqCijn1kys
RUSBUhv+u5yXtipwrn+bcXYSCVRspAFTUDxwAQcPcMBBClGPSunFktHKEJ0vR/vXSUPseSTKWi9k
UgBde62Ri3sSeHLZC0nQW2K9vWV3y2yB0fbY88H/XZAJVHNwwaH6vuk2y2UTwV0AG3zwwBa8KTXA
uANZUIFTUBCkQwdMkaEeiMLxnd+lFQmwxNRRXxB11DWweMFBFSAlnlASoBq6wYL24FMAFwTee+8P
0OF07wmNIF53IZN6uMlaC0JwBYQXRAMKYRe0bnQfCBSEYl1dLTpUBoEgga8+HnVSCFsM1JmL+QJg
ElNJ7I17YoUXdtj39NfP0/3zF62/TvwjG3n+B8Dl9YmAJDmMxeaDwAQeTFANFMmKsBaADkTwghjM
YK3YUISKtYxFAsDAHzSokAkMYkYzQcIZkoYRIdhgBiwaQPJIOJAkHIUEZ1DbVoRSGRoKxChqywgX
/47iBx8CoClBzAgTWCIsGkbHJiQwn3d2sBFCnMQKPgQiBHwAIx6MoAcPKMRMwrCRjgyghxpUwlMe
EZKCzEsAktAIDFYyMR9aYAITiJ71VtIuewmlfUbcYwCChBEfHCVzgTSbRw6hkROwhAiJVAgfZoIm
jZjvIZcrnWdqVLpOzg6EngTlJ0NJylGaMoYCcAFLSLAROHgkDgNDjnKEMp7ydQtnuLRlLm+py17y
ki3HO4rHfCYAIDxkaNjB292WycxmOvOZb3ERE/5ivjY5pHzRvJvNoMnNbjZTMXBQmlJm1pBtximZ
3kxnOismAERsxJCptOZDmNk3AarMniyblWZY4v+Cv6zAM5AYSSSU2TekOAAxB3VKQg2K0IYqdGV9
IyRGvMClAWQPVmYgmqlOJZEsHKWfG7nJUchJM4tFJWcPsUNTcvCXKBxFEbhSYDJlx1GHXE4Axwop
U9AYNKIlhSUOWQNSqKgRikrxk406CRB4iiDMENRUDhmfAHqWkR2U4AcrKMEMSsBVrc4Aqz/4wQuO
UoS2ZRMqQG2IBGZC1SRiJDYgyihBD+qimsbNIzVxa0aWY9Z88lWtWNHrXk/SV7J5xiFE4FbdaHox
nBllDIVFWVodoga5HUUOWTunaiowhjyEyKmGtWskCQJayYpWIDRIBKhuE4AgkBQAFDiCBK4gAab/
DqQFQbiCbLuXKruJabIC2QAyZymAiw4kciupXUEmAELlSqi0v62pBc5zlAqsoSAgYEHpeCsQE3DO
fDPr1VFqUKQQAeqpUhzITWeDkBbUlXIE8UBTBtCGCXhnAG/w03kNm7Me3JemMOLW6wwiAlB9MAR6
BN1ZNUNYADzgSJiaL3QGMOCDrLUtPIAVdPNTkYG0rLwiAUOcPGLb5/rWQTXtVW9AjBB5EmStSDFB
FyRXgc99dsFXAW4IXDSAGnyAcCKYQBL0RBDmjqesAhFBCJYzgCZGtm/ABcAIqOujTRJogAAQgXhP
UuGBfMApCH6yg1CK3Tes1Ts1OEIT3jMQNmCgbQkY2ENCWkABDNTZuE09sWqiPFrD6DkxHe5zQTa8
59P2GbT6NPRoCQ1oRUcS0RB1dCIZLTlJBxLSJrO0ESn9I0EPGsdQ9fRAOO0TUY9am/nRtA9LG2lT
+xnV81U1DbNQUMcKwIKuzrWud32QgAAAOw==

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://mobhappy.com/blog1/wp-includes/images/smilies/icon_smile.gif

R0lGODlhDwAPALMOAP/qAEVFRQAAAP/OAP/JAP+0AP6dAP/+k//9E///////xzMzM///6//lAAAA
AAAAACH5BAEAAA4ALAAAAAAPAA8AAARb0EkZap3YVabOGRcWcAgCnIMRTEEnCCfwpqt2mHEOagoO
nz+CKnADxoKFyiHHBBCSAdOiCVg8KwPZa7sVrgJZQWI8FhB2msGgwTXTWGqCXP4WBQr4wjDDstQm
EQA7

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.feedburner.com/fb/images/pub/feed-icon16x16.png

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKOSURBVHjadJNNSFRRGIbfc+6dO6OOOplD
ykSZaRCtnKRc+ANRUBFEm0gicxG0bGoVhERRYIvIjRAtW+UmW5QQQS6qRWQSWJRaUcjkT0LiVWfm
/pzTd869M5LShe+eufC973m+n2Fj55KJymTt9ZgVy3AGMHoxvvEs/qZgDL4AlhbsAfv34g1TiRPx
RMZbWwU3GQzO9clNhGcYBpkY4UlGiWRd5scnMvx5tUWano9IMoXy1pOUBPgz4xC/xv8r1hSexNKi
B1Nhq6RIbQoVhy6i+MiCDffDEPyJITBvZZPYLwiQFFzVZ0Q45Moc8q8fwP34FGJ5FixaCevgBZT1
DMNs7Nok9iikL8GyfWkZ3VgvhbljP6yOy2BbmzWR/+o2vM/PSmLfkchTaAIlsHa1ourSS5Sfvg8r
3Q38mYb7+DzE9Ig2MDquAan2kth3AgKu0JSBapLCNranEWnPIHp2GDzZDEE3+1OBiXW4D4LHtViZ
CB/rBHJuHPmHp+CO3oK0Zyk7DvP4IGR1EwrPb673JX0mELslgvVRYW0O8usIvCe9AboyOdIPn1Ug
9+Kupihr69ZiZSJFsYRwztbRO4icGARv6IT3ZkCTsKp68J2dyE2MQuZtsFgllbZHTyMsAVqsaldC
Vt8CtvsYPHsZzvtH+tZIc5e+sfBtLOhFYytRFAlYuGGED2clGNn8lO62m53U37y6XmM7M8E3onEI
IpCSLp/vPyC31Bp6SUSsjmIbnO9jpVEZqbROzn15F5RDZs5CFs58FmaNBTZ5Ze+9hn11Genl/1mS
0qjChumaCVvo2iViNXHkuD1g9Daxt7lVEQPMNpcSdah1pQb5kqho4yVXQc2iacHiMMpNFPia/jv/
FWAAUTVTOunExzkAAAAASUVORK5CYII=

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.bloglines.com/images/sub_modern8.gif

R0lGODlhTAARAPcAAOXl5fONAPGFAP6oAOmya/qaAP2XAPmVAPyWAP78+PKSDuhyAeNhCONiAv3/
/+ViCfiPAPCAC/aQAPaTAPygAOh0C/WUDvWXDfGOHe+hS/KMGPTHgP6nAPnZrPOXC/iiCuh1DOyr
Qvv37v/77/ny4vv07N5cDfC5cPqWAP+oAPGoQveqMO+UFuujOvOqRu+HCOhtAOaQGt99Gfrz5+t+
DPXhwPmbFP2jAOt6AO/GfvefEPCYFvaDAPjv2vueGPGeSf79+O2eIuuPA/CNDvqbAP2nAPCFAPvJ
Z/aVDPvbqPr7/P2mAPz7+fOUBvexL/369/6kAO+ZDel3A/747O+0S+RxCfCiY/O2ZPqlJuBfDe6G
DPqoCvfkx+yoZeqFDO17APyjAOp9Be6uR/3v0eWZO/mmE/vJaPC3bOp1CPidFOugQ+pzAfqmDf/7
9fqIAPSKBvOtRvapLe+OHOd1Gu2CC/6YAPmZAPOTD/mLAPv27PeNAOZtDPudAPWaEOx+B/qOAP7x
2Pn9///99ul1CHp+bMzMzGZmZv///4mOeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAABMABEA
AAj/AA8ZGkiwoMGDCBMqXMgw4SEAhg5JnEixosWLGDNq3GjRUCGIEkEskOJHy5A7fXSUkYiopcuX
MGPKnEmzZkuBHyNWqNIlgxwBeuxQgJJiyyGbSJMqlYkT5CAZSg496bCiwI0lA9gchUnRpURCNr/e
XEqzaUQaYdSc4HIIyBEwRTh82MqVEKGtd8GG1YuIL9mXZg/R8XIGThQqeQ6ZMYBgAl3AYA/plXyT
LsubkbdOBPz4MlePIF/ECHRojJMgM9pgcRPgsdeJkyPbPSo5LyLKt2XfHbs7t92YgRU0cbHBgaA4
IQ4l4WHENebZmHPnpkw9tnTqsMcyBR3RAh4kF8QwqgEkpEYCDTicS78ue3p73NXZ2+WrPjAEFiRG
eMhxSAWBQz/A4FxFv132VWbYRZfgbQbWBhx3h6CwQw9T2NCCCFeQUYIVDag3328tgQhiX7iJ2Jde
Iqa4XU6H8FFHGj788QYGEawxxwNZqEfWgX8lFdghRBwgQQACfIHGHgyY4FmPLo3IZFkQciTllFRW
aVZDWGap5ZYEFSJRIWCGKeaYZJZp5ploplnmIQEBADs=

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif

R0lGODlhWwARANUAAAAAmd/f3/wZIYmJibS0tF5eXkpz7f1aYAAzzFRUVKPP//w8Q/6fov///w0m
mqmpqfx2e/7FyA9C23R0dP/w8fwrMv6NkdTU1Clc5v/l5v7X2P6xs/1uc/1KUczMzJmZmfT09P1/
g2ZmZn5+furq6v9mZhgypf/29v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUACgALAAAAABbABEAAAb/wI9w
SCwaj8ikcslkoj6NqHRKrVqv2Kx2m/2IoIiweEwGcM/oNNcLNrgNmLhkTneY1fh8mt1AGMYOgQ6A
d3olhxAQFhRnJ4yMWBQZk1EZAgIbU3x+gA0Kg2J2UwQJE1EXCSOoBSANHgkPUREclx2MDCUHHQcR
UhkavxkWFQIhURoRERlRFB2XlxWMl8tSm38Igp6CYaJSDwkJBA0TqQ0fCR8gBaZTGpe9FMQLEAwa
Gg0WlxCyAg0UC88EMGhwKVODDMQsdaCyCQO3KqC6RfmWoMC5ciBEJBiQIEAVBtM2CLDg79KBKBAE
WrDQYaGAClJEOjNYaaSAfZq+9HGITYEC7E8+IxZq8I0junKuwEGxEuJZrwYaKlTAmZLDgRILOkQQ
8DSKAIALpRzgWoFmlE0SuAXSFojb0G8XRogAgXRcglZX3kmpcFUAo4RRmubDlAzgCZE3ORDLRJKh
TgRpQ2kjNAUuCQ8N6o5IkIUYM4CZBHCI0KFCiGQhOGzIwGFXy3tQORwKsQxkCcdgIqttG+ptggtS
NHNmSuxlBwYhFm29eQKLI0iRONzrd/axCUHYs0tsQAK4lAskpATwaCWZ+WR68mwCwL69+/fp48vH
Pb++/TVfmujfz7+/fhEoiCDggAQWaOCBCCao4IIMMhgEADs=

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://mobhappy.com/images/carnival.gif

R0lGODlhZAAlAKIAAP/////MzP+Zmf9mZv8zM/8AAAAAAAAAACH5BAAAAAAALAAAAABkACUAAAP/
WLrc/jDKSau9OOvNu/9gqAFCRwCDqHakia5wLJ2pbN/0PQRATxIKgsAHCNQKw4EvUFAOhj3jguRk
nEo7ogBYyMmuC0KAiXwphtxhAHhVts4AbmvMUALH3AK9a47ZGUMKb0FmaAsBAkolYWYtfwp0Xgp/
kjA8GG+BDVWMNS1elXUvoQ9gh3kQlxBZPopwDpyEi297j6xFSXxHEU+TKWsTqg9FgJkAsH18s4t/
tYN6o8lhPCRRJ0RFQj2LkMeiBLGCi5qiu6ZvNF7kk9G7C700zL8pid7AcKho4QXGyOZvg8Y8MvSu
3YNe/BAO+AWkno88J8h0QSRIoph+m8y4Acht/2Mcfj2AEElBqkmJeL4MJZK4iVqPIxejuCrjj902
cYwegsT2UlcpaomYWUPyROcNUc8c6Fwa8qjTgkklGMVAzd1TC264UZh6oepVDVkvcLXgdUNWbTK7
QCmyqygRKTa3rO3D9KNOtyPB8WxlkucAVG5cjhTcs8zeHjYJRxHUtK7ew0YOo/CIjeXGey4x+2A8
KGaKy1w2imxMOg41i3zLHlpMqHCTzVA/to5zzRtULFyhlHC8s3a+nqo5/+4T2ArsKSGLI2WifIHu
3tAfBm8wfTqyZ9dYQovTvDVz1lCZ8H4410ciLtPLb/uLVGt26snBe39NbHn00gRq7/3levb+25/G
1bcad/LxQUx39ImHH3RNLLRQZttZ1aCDEMYVoHbUPKZdcQg+N15TBy1WFhSrgBdWThiGVFsDz23E
Yk8fxsGVi1DUQBhgx504HwMZ7sRNbZ+ZF9toduEnZBBAGcaEfjch2SR97hXYI2VvxbXXLAuSJ9lH
TL6kHhF56GhgirLhlVZcaLGFXJFsAmEmWxCtBdebRqDy1Z145qnnnnxSkAAAOw==

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://mobhappy.com/blog1/wp-content/themes/k2/images/feed.png

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKYSURBVHjaYvz//z8DJQAggFjAZCsjN4Om
rj+DmMVSBlY+Boa/fyCy/35D2P/+QjGQ/fMLA8PLSzMYku9mgpQABBDEAC2jXAaVeFsGaWcGBkZm
BobfP0C6GRhArvvzHWoYlA8ygP90BsNEER6G/DexAAEEMUDYoJ1B3IaB4cNtBoYvLxgYvj8D2vwb
qglo818Q/gdxAYcEA4OQLgMDt1IMUGcsQABBDPjPDFH46gwDg3kj0IC3DAyf7jMwvLnKwPDiPMT5
IK+ADPn5kIGBVwnIBkIgAAggiAG/f0IU/PoJ8QKXGASLmwJpaQaGO9uAGr9CXPKfEagO6K3vEK8B
BBDEgJ9AP397D5QA0keALuBXZGAQ1WFgkDBiYFByB1oA9M6NzUB17yAG/PwM0QMEAAEEMeDXN4jt
IAO+A534+h4Dw+3dDAzKQM3qvkDsAwxMoAtPzwd65z/ENd9+grUCBBDEgO9Ajb+Bgj+BgjaVoEBh
YLi5nYHh8jqgONDZJvHAmPJjYHgGDJN7RxkYfgBd8ANiAEAAQQ34BnEFyABRTUi0gQLsF9DWC2uA
saTCwKBozcAgDfTS9YMQF/z5ywhSBhBATGDFP75DBH/9YmDYVsXAcP8I0P/AMNDwgnjt/kmIoRLa
EK+A1ILCBQgAAgjqgp/QcAAa8PgCRFLRBpqQgF54chligIAUJCZAFv7+BxYCCCCIAZ/fMDB8/QhJ
D39BhlxkYJjkCjEAhN88YGDodYQkLCaglh+gQPwCdj1AAEEMuPJqEYP8TXMGPnF1SLKFpr7//xBJ
GAbevWRgeAQMzHMMs0BcgABihOdGd8a5DCrsiQzsXP/BUQUWBkb6fygbFKggzpevTAzHGbIZbv+f
BlIBEECMlGZngAADAB59HbQpnYoFAAAAAElFTkSuQmCC

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://mobhappy.com/images/amber.gif

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

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://mobhappy.typepad.com/russell_buckleys_mobhappy//gadgetnetlogo.jpg

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

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://s16.sitemeter.com/meter.asp?site=s16mobhappy

R0lGODdhFAAUAPcAAAAAADMAAGYAAJkAAMwAAP8AAAAzADMzAGYzAJkzAMwzAP8zAABmADNmAGZm
AJlmAMxmAP9mAACZADOZAGaZAJmZAMyZAP+ZAADMADPMAGbMAJnMAMzMAP/MAAD/ADP/AGb/AJn/
AMz/AP//AAAAMzMAM2YAM5kAM8wAM/8AMwAzMzMzM2YzM5kzM8wzM/8zMwBmMzNmM2ZmM5lmM8xm
M/9mMwCZMzOZM2aZM5mZM8yZM/+ZMwDMMzPMM2bMM5nMM8zMM//MMwD/MzP/M2b/M5n/M8z/M///
MwAAZjMAZmYAZpkAZswAZv8AZgAzZjMzZmYzZpkzZswzZv8zZgBmZjNmZmZmZplmZsxmZv9mZgCZ
ZjOZZmaZZpmZZsyZZv+ZZgDMZjPMZmbMZpnMZszMZv/MZgD/ZjP/Zmb/Zpn/Zsz/Zv//ZgAAmTMA
mWYAmZkAmcwAmf8AmQAzmTMzmWYzmZkzmcwzmf8zmQBmmTNmmWZmmZlmmcxmmf9mmQCZmTOZmWaZ
mZmZmcyZmf+ZmQDMmTPMmWbMmZnMmczMmf/MmQD/mTP/mWb/mZn/mcz/mf//mQAAzDMAzGYAzJkA
zMwAzP8AzAAzzDMzzGYzzJkzzMwzzP8zzABmzDNmzGZmzJlmzMxmzP9mzACZzDOZzGaZzJmZzMyZ
zP+ZzADMzDPMzGbMzJnMzMzMzP/MzAD/zDP/zGb/zJn/zMz/zP//zAAA/zMA/2YA/5kA/8wA//8A
/wAz/zMz/2Yz/5kz/8wz//8z/wBm/zNm/2Zm/5lm/8xm//9m/wCZ/zOZ/2aZ/5mZ/8yZ//+Z/wDM
/zPM/2bM/5nM/8zM///M/wD//zP//2b//5n//8z//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAUABQA
AAj/AFkJHEiwoEEdOrwo9CJIECKHrASxMoXIFCsArHQA8UKGDCKPiEK2QkRQFkYgKIF05CiITCBE
hwQdehkI4wYKGzRU0EChZ08HQBscMGAAIwgNGnxomOCDwg0cN27EkBojxgqMPXyEEcP1kJhDM8Ee
YoVolSmMYQqJMSQWrKNDsgxiXFSokCFDdg2RMhToEN+wNVmhGozKT2E/iLX4ocKYigoVGEWJ8iPZ
DyfEeDLjYazCCWRWnTqR8kSqdKnTpQKZNSsQY7BOnkh/Qr2qFLRSBTFi2u3pE+nYpfakPh0oNcZJ
yCVNcvPGjXPnSZQkKZEkAEZKmSi9mbS9zps6SporOpFeggRGTXZAqedjCpSp96YkWmzNSoodPnwG
8WkoKP7E3KxMIQUWA2KBHxb8BdKQgoEB4OCDEEYIYUAAOw==

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mobhappy.com/blog1/wp-content/themes/k2/style.css

BODY {
	BACKGROUND: #ededed; MARGIN: 0px 0px 30px; FONT: 62.5% 'Lucida Grande', =
Verdana, Arial, Sans-Serif; COLOR: #444; TEXT-ALIGN: center
}
#page {
	BORDER-RIGHT: #ddd 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px; =
PADDING-LEFT: 0px; BACKGROUND: white; PADDING-BOTTOM: 10px; MARGIN: 0px =
auto; BORDER-LEFT: #ddd 1px solid; WIDTH: 740px; PADDING-TOP: 20px; =
BORDER-BOTTOM: #ddd 1px solid; POSITION: relative; TEXT-ALIGN: left
}
BODY.flex #page {
	WIDTH: 80%; min-width: 780px; max-width: 1000px
}
#header {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #3371a3; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; POSITION: relative; =
HEIGHT: 200px
}
.primary {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: =
10px; MARGIN: 0px 0px 0px 30px; WIDTH: 530px; PADDING-TOP: 20px
}
.secondary {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; MARGIN: =
0px -3% 20px 0%; FONT: 1em/1.5em 'Lucida Grande', Verdana, Arial, =
Sans-Serif; WIDTH: 28%; COLOR: #666; PADDING-TOP: 10px; POSITION: =
relative
}
.comments {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 30px; POSITION: relative; TEXT-ALIGN: left
}
UL.menu {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 20px; PADDING-BOTTOM: 0px; =
MARGIN: 0px; WIDTH: 90%; BOTTOM: 0px; PADDING-TOP: 0px; POSITION: =
absolute
}
UL.menu LI {
	DISPLAY: inline; MARGIN: 0px
}
UL.menu {
	PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 6px; =
PADDING-TOP: 5px
}
UL.menu LI A {
	PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 6px; =
PADDING-TOP: 5px
}
UL.menu LI A {
	MARGIN: 0px; FONT: 1em Verdana, Helvetica, Arial, Sans-Serif; COLOR: =
white
}
UL.menu LI A:hover {
	BACKGROUND: #333; COLOR: #eee! important; TEXT-DECORATION: none
}
UL.menu LI.current_page_item A {
	BACKGROUND: white; COLOR: #333! important; TEXT-DECORATION: none
}
UL.menu LI.current_page_item A:hover {
	BACKGROUND: white; COLOR: #333! important; TEXT-DECORATION: none
}
.admintab {
	RIGHT: 20px; POSITION: absolute
}
.sb-pagemenu UL {
	MARGIN-LEFT: 10px
}
.sb-pagemenu UL UL {
	MARGIN-TOP: 2px
}
.sb-pagemenu UL UL .page_item {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
MARGIN-LEFT: 10px; PADDING-TOP: 0px
}
.sb-pagemenu .current_page_item {
=09
}
H1 {
	FONT-FAMILY: 'Trebuchet MS', Verdana, Sans-Serif
}
H2 {
	FONT-FAMILY: 'Trebuchet MS', Verdana, Sans-Serif
}
H3 {
	FONT-FAMILY: 'Trebuchet MS', Verdana, Sans-Serif
}
H4 {
	FONT-FAMILY: 'Trebuchet MS', Verdana, Sans-Serif
}
H1 {
	FONT-WEIGHT: bold; FONT-SIZE: 3em; MARGIN: 0px 0px 0px 40px; WIDTH: =
100%; PADDING-TOP: 75px; LETTER-SPACING: -1px
}
H1 {
	COLOR: white; TEXT-DECORATION: none
}
H1 A {
	COLOR: white; TEXT-DECORATION: none
}
H1 A:hover {
	COLOR: white; TEXT-DECORATION: none
}
H1 A:visited {
	COLOR: white; TEXT-DECORATION: none
}
#header .description {
	COLOR: white; TEXT-DECORATION: none
}
H1:hover {
	TEXT-DECORATION: underline
}
#header .description {
	DISPLAY: inline; FONT-SIZE: 1em; MARGIN: 0px 0px 0px 40px
}
.pagetitle {
	MARGIN: 15px 0px; TEXT-ALIGN: center
}
.pagetitle H2 {
	DISPLAY: inline; FONT-WEIGHT: bold; FONT-SIZE: 2.4em; LETTER-SPACING: =
-1px; TEXT-ALIGN: center
}
.secondary H2 {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FONT-WEIGHT: =
normal; FONT-SIZE: 1.5em; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.primary H3 {
	DISPLAY: inline; FONT-WEIGHT: normal; FONT-SIZE: 2.2em; LETTER-SPACING: =
-1px
}
.primary H4 {
	DISPLAY: inline; FONT-WEIGHT: normal; FONT-SIZE: 2.2em; LETTER-SPACING: =
-1px
}
.permalink .primary .aside H3 {
	DISPLAY: inline; FONT-WEIGHT: normal; FONT-SIZE: 2.2em; LETTER-SPACING: =
-1px
}
.primary .aside H3 {
	FONT-WEIGHT: normal; FONT-SIZE: 1.6em
}
.itemhead {
	MARGIN-TOP: 10px
}
.itemtext H3 {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-SIZE: =
1.7em; PADDING-BOTTOM: 0px; PADDING-TOP: 15px
}
.itemtext H4 {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-SIZE: =
1.5em; PADDING-BOTTOM: 0px; PADDING-TOP: 15px
}
UNKNOWN {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
20px 0px 0px; PADDING-TOP: 0px
}
.primary .metalink A {
	FONT-WEIGHT: normal; COLOR: #999
}
.primary .metalink A:visited {
	FONT-WEIGHT: normal; COLOR: #999
}
.secondary .metalink A {
	FONT-WEIGHT: normal; COLOR: #999
}
.secondary .metalink A:visited {
	FONT-WEIGHT: normal; COLOR: #999
}
.secondary SPAN A {
	FONT-WEIGHT: normal; COLOR: #999
}
.secondary SPAN A:visited {
	FONT-WEIGHT: normal; COLOR: #999
}
.primary .item .itemhead .metalink {
	FONT-SIZE: 1.8em; MARGIN-LEFT: 15px; TEXT-TRANSFORM: lowercase; =
LETTER-SPACING: -1px
}
.comments .primary .metalink {
	FONT-SIZE: 1.8em; MARGIN-LEFT: 15px; TEXT-TRANSFORM: lowercase; =
LETTER-SPACING: -1px
}
.primary .aside .itemhead .metalink {
	FONT-SIZE: 1.4em
}
.permalink .primary .aside .itemtext {
	FONT-SIZE: 1.4em; COLOR: #999
}
.comments .primary .metalink {
	FLOAT: none; MARGIN: 0px 15px 0px 0px
}
.feedicon {
	BORDER-TOP-WIDTH: 0px! important; PADDING-RIGHT: 0px! important; =
PADDING-LEFT: 0px! important; BORDER-LEFT-WIDTH: 0px! important; =
BORDER-BOTTOM-WIDTH: 0px! important; PADDING-BOTTOM: 0px! important; =
PADDING-TOP: 0px! important; BORDER-RIGHT-WIDTH: 0px! important
}
.feedlink IMG {
	RIGHT: 0px; WIDTH: 16px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: =
none; BORDER-LEFT-STYLE: none; POSITION: absolute; HEIGHT: 16px; =
BORDER-BOTTOM-STYLE: none
}
.primary .aside {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 8px; MARGIN: 0px =
4%; PADDING-TOP: 8px
}
.secondary .aside {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; MARGIN: =
0px; WORD-SPACING: -1px; PADDING-TOP: 0px
}
.secondary .aside .metalink {
	PADDING-LEFT: 0px
}
.secondary SPAN A {
	MARGIN-LEFT: 10px
}
.editlink IMG {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; RIGHT: =
0px; PADDING-BOTTOM: 0px! important; MARGIN: 4px 0px 0px; WIDTH: 16px; =
BORDER-TOP-STYLE: none! important; PADDING-TOP: 0px! important; =
BORDER-RIGHT-STYLE: none! important; BORDER-LEFT-STYLE: none! important; =
POSITION: absolute; HEIGHT: 16px; BORDER-BOTTOM-STYLE: none! important
}
.aside .editlink IMG {
	TOP: 9px
}
.commentseditlink {
	PADDING-RIGHT: 2px; PADDING-LEFT: 10px; PADDING-BOTTOM: 2px; =
PADDING-TOP: 2px
}
.metalink A SPAN {
	DISPLAY: none
}
UNKNOWN {
	DISPLAY: inline
}
H2 {
	COLOR: #444
}
H2 A {
	COLOR: #444
}
H2 A:visited {
	COLOR: #444
}
H3 {
	COLOR: #444
}
H3 A {
	COLOR: #444
}
H3 A:visited {
	COLOR: #444
}
H4 {
	COLOR: #444
}
H4 A {
	COLOR: #444
}
H4 A:visited {
	COLOR: #444
}
H2 {
	TEXT-DECORATION: none
}
H2 A {
	TEXT-DECORATION: none
}
H2 A:hover {
	TEXT-DECORATION: none
}
H2 A:visited {
	TEXT-DECORATION: none
}
H3 {
	TEXT-DECORATION: none
}
H3 A {
	TEXT-DECORATION: none
}
H3 A:hover {
	TEXT-DECORATION: none
}
H3 A:visited {
	TEXT-DECORATION: none
}
H4 {
	TEXT-DECORATION: none
}
H4 A {
	TEXT-DECORATION: none
}
H4 A:hover {
	TEXT-DECORATION: none
}
H4 A:visited {
	TEXT-DECORATION: none
}
.metadata {
	MARGIN-TOP: 2px; DISPLAY: block; FONT-SIZE: 1em; COLOR: #bbb
}
.metadata A {
	COLOR: #777
}
.commentslink {
	PADDING-RIGHT: 0px; PADDING-LEFT: 20px; BACKGROUND: =
url(images/comment.png) no-repeat left center; PADDING-BOTTOM: 2px; =
MARGIN-RIGHT: 10px; PADDING-TOP: 2px
}
.chronodata {
	PADDING-RIGHT: 0px; PADDING-LEFT: 20px; BACKGROUND: =
url(images/time.png) no-repeat left center; PADDING-BOTTOM: 2px; =
PADDING-TOP: 2px
}
.chronodata:unknown {
	content: "."
}
.tagdata {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 20px; BACKGROUND: =
url(images/tag_blue.png) no-repeat left center; PADDING-BOTTOM: 2px; =
PADDING-TOP: 2px
}
.primary .item {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 15px; MARGIN: =
0px; PADDING-TOP: 5px; POSITION: relative
}
.primary .item .itemtext {
	FONT: 1.1em/1.5em 'Lucida Grande', Verdana, Arial, Sans-Serif; COLOR: =
#444; TEXT-ALIGN: justify
}
.primary .item .itemtext P {
	MARGIN: 13px 0px
}
.primary .item .itemtext UL {
	MARGIN: 13px 0px
}
.primary .item .itemtext OL {
	MARGIN: 13px 0px
}
.primary .item .itemtext DIV {
	MARGIN: 13px 0px
}
.primary .item .itemtext BLOCKQUOTE {
	MARGIN: 13px 0px
}
.primary .aside .itemtext P {
	MARGIN: 5px 0px
}
.primary .aside .itemtext UL {
	MARGIN: 5px 0px
}
.primary .aside .itemtext OL {
	MARGIN: 5px 0px
}
.primary .aside .itemtext DIV {
	MARGIN: 5px 0px
}
.primary .aside .itemtext BLOCKQUOTE {
	MARGIN: 5px 0px
}
.permalink .primary .aside .itemtext P {
	MARGIN: 13px 0px
}
.permalink .primary .aside .itemtext UL {
	MARGIN: 13px 0px
}
.permalink .primary .aside .itemtext OL {
	MARGIN: 13px 0px
}
.permalink .primary .aside .itemtext DIV {
	MARGIN: 13px 0px
}
.permalink .primary .aside .itemtext BLOCKQUOTE {
	MARGIN: 13px 0px
}
.metalinks {
	MARGIN-TOP: 3px
}
.commentsrsslink {
	PADDING-RIGHT: 0px; PADDING-LEFT: 20px; BACKGROUND: =
url(images/feed.png) no-repeat left top; PADDING-BOTTOM: 2px; =
MARGIN-RIGHT: 10px; PADDING-TOP: 2px; HEIGHT: 16px
}
.trackbacklink {
	PADDING-RIGHT: 0px; PADDING-LEFT: 20px; BACKGROUND: =
url(images/arrow_refresh.png) no-repeat left top; PADDING-BOTTOM: 2px; =
PADDING-TOP: 2px; HEIGHT: 16px
}
.commentsrsslink A {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; COLOR: =
#999; PADDING-TOP: 2px
}
.trackbacklink A {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; COLOR: =
#999; PADDING-TOP: 2px
}
.comments .commentlist {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 20px; MARGIN: =
0px; WIDTH: 100%; PADDING-TOP: 20px
}
.comments .commentlist LI {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 5px; MARGIN: =
10px 0px; PADDING-TOP: 10px; LIST-STYLE-TYPE: none
}
.comments .commentlist .commentmetadata {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 20px; BACKGROUND: =
url(images/time.png) no-repeat left center; PADDING-BOTTOM: 2px; =
PADDING-TOP: 2px
}
.comments .commentlist LI IMG {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
.comments .commentlist LI IMG.gravatar {
	FLOAT: right; MARGIN: -5px 0px 0px
}
.comments .commentlist LI .commentauthor {
	FONT-WEIGHT: bold; FONT-SIZE: 1.5em; LETTER-SPACING: -1px
}
.comments .commentlist LI .counter {
	DISPLAY: none; FLOAT: left; FONT: 1.5em 'Century Gothic', 'Lucida =
Grande', Arial, Helvetica, Sans-Serif; WIDTH: 35px; COLOR: #999
}
.comments .commentlist LI.authorcomment {
	BACKGROUND: #f6f7f8
}
.comments .pinglist {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1.2em; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
.comments .pinglist LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 7px; =
MARGIN-LEFT: 40px; PADDING-TOP: 7px; LIST-STYLE-TYPE: none
}
.comments .pinglist LI .commentauthor {
	DISPLAY: block; FONT-WEIGHT: bold
}
.comments .pinglist LI SMALL {
	DISPLAY: block; FONT: 0.8em Arial, Sans-Serif
}
.comments .pinglist LI .counter {
	DISPLAY: none
}
.comments .pinglist LI SPAN.favatar IMG {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: =
0px; MARGIN-LEFT: -25px; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: =
none
}
.comments .leavecomment {
	FONT-SIZE: 2em; MARGIN-BOTTOM: 40px; COLOR: #ddd; LETTER-SPACING: -2px; =
TEXT-ALIGN: center
}
.comments #loading {
	MARGIN-TOP: 40px; FONT-SIZE: 2em; MARGIN-BOTTOM: 40px; COLOR: #ddd; =
LETTER-SPACING: -1px; TEXT-ALIGN: center
}
.comments FORM {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: =
30px; MARGIN: 0px; PADDING-TOP: 1px
}
UNKNOWN {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; FONT: 1em =
Verdana, Arial, Helvetica, Sans-Serif; COLOR: #777; PADDING-TOP: 3px
}
UNKNOWN {
	BORDER-LEFT-COLOR: #666; BACKGROUND: #fff; BORDER-BOTTOM-COLOR: #666; =
COLOR: #333; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666
}
UNKNOWN {
	MARGIN: 5px 5px 1px 0px; WIDTH: 45%
}
.comments FORM TEXTAREA {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; WIDTH: =
100%; PADDING-TOP: 2px; HEIGHT: 250px
}
.comments FORM #submit {
	FLOAT: right; MARGIN: 0px
}
#footer {
	TEXT-ALIGN: center
}
#footer A {
	FONT-WEIGHT: bold; COLOR: #888; BORDER-BOTTOM: #ccc 1px solid
}
#footer A:hover {
	COLOR: black; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; TEXT-DECORATION: none; BORDER-BOTTOM-STYLE: =
none
}
.primary A:hover {
	TEXT-DECORATION: underline
}
.primary A:hover {
	TEXT-DECORATION: underline
}
.secondary A:hover {
	TEXT-DECORATION: underline
}
.secondary A:hover {
	TEXT-DECORATION: underline
}
H2 A:hover {
	COLOR: #27d! important
}
H2 SPAN A:hover {
	COLOR: #27d! important
}
A {
	COLOR: #27d; TEXT-DECORATION: none
}
.itemtext A:visited {
	COLOR: #b41
}
.itemtext A {
	FONT-WEIGHT: bold; COLOR: #363636
}
.clear {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px
}
.primary IMG {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; =
MARGIN-LEFT: 0px; BORDER-TOP-STYLE: none; PADDING-TOP: 10px; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: =
none; max-width: 100%
}
.center {
	TEXT-ALIGN: center
}
.alignright {
	FLOAT: right
}
.alignleft {
	FLOAT: left
}
UNKNOWN {
	DISPLAY: block; MARGIN-LEFT: auto; MARGIN-RIGHT: auto
}
UNKNOWN {
	PADDING-RIGHT: 4px; DISPLAY: inline; PADDING-LEFT: 4px; PADDING-BOTTOM: =
4px; MARGIN: 0px 0px 2px 7px; PADDING-TOP: 4px
}
UNKNOWN {
	PADDING-RIGHT: 4px; DISPLAY: inline; PADDING-LEFT: 4px; PADDING-BOTTOM: =
4px; MARGIN: 0px 7px 2px 0px; PADDING-TOP: 4px
}
IMG.noborder {
	BORDER-TOP-STYLE: none! important; BORDER-RIGHT-STYLE: none! important; =
BORDER-LEFT-STYLE: none! important; BORDER-BOTTOM-STYLE: none! important
}
.favorite IMG {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
SMALL {
	FONT-SIZE: 0.9em; LINE-HEIGHT: 1.5em
}
SMALL {
	COLOR: #777
}
STRIKE {
	COLOR: #777
}
CODE {
	FONT: 1.1em 'Courier New', Courier, Fixed
}
ACRONYM {
	FONT-SIZE: 0.9em; CURSOR: help; BORDER-BOTTOM: #999 1px dashed; =
LETTER-SPACING: 0.07em
}
abbr {
	FONT-SIZE: 0.9em; CURSOR: help; BORDER-BOTTOM: #999 1px dashed; =
LETTER-SPACING: 0.07em
}
BLOCKQUOTE {
	PADDING-RIGHT: 20px; PADDING-LEFT: 50px; BACKGROUND: =
url(images/quote.png) no-repeat 10px top; PADDING-BOTTOM: 0px; MARGIN: =
20px 0px; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: =
none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
HR {
	DISPLAY: none
}
.navigation {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
10px 0px; WIDTH: 100%; PADDING-TOP: 0px; TEXT-ALIGN: center
}
.navigation .left {
	FLOAT: left; WIDTH: 50%; TEXT-ALIGN: left
}
.navigation .right {
	FLOAT: right; WIDTH: 50%; TEXT-ALIGN: right
}
.navigation P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.navigation A {
	COLOR: #999
}
.alert {
	PADDING-RIGHT: 20px; BORDER-TOP: #ffd324 2px solid; PADDING-LEFT: 20px; =
BACKGROUND: #fff6bf; PADDING-BOTTOM: 5px; MARGIN: 10px auto; =
PADDING-TOP: 5px; BORDER-BOTTOM: #ffd324 2px solid; TEXT-ALIGN: center
}
IMG.wp-smiley {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 5px! important; =
PADDING-BOTTOM: 0px! important; BORDER-TOP-STYLE: none! important; =
PADDING-TOP: 0px! important; BORDER-RIGHT-STYLE: none! important; =
BORDER-LEFT-STYLE: none! important; BORDER-BOTTOM-STYLE: none! important
}
.itemtext OL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 35px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.itemtext UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 35px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.itemtext OL LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 3px; PADDING-TOP: 0px
}
.itemtext UL LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 3px; PADDING-TOP: 0px
}
UNKNOWN {
	PADDING-LEFT: 0px; MARGIN: 5px 0px 0px
}
.secondary UL {
	MARGIN-LEFT: 0px
}
.secondary OL {
	MARGIN-LEFT: 15px
}
.secondary UL LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1px; MARGIN: =
0px; PADDING-TOP: 1px
}
.secondary OL LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1px; MARGIN: =
0px; PADDING-TOP: 1px
}
.secondary UL LI {
	LIST-STYLE-IMAGE: none; LIST-STYLE-TYPE: none
}
OL LI {
	LIST-STYLE-POSITION: outside; LIST-STYLE-TYPE: decimal
}
.sb-search {
	MARGIN-TOP: 20px
}
.sb-search H2 {
	DISPLAY: none
}
UNKNOWN {
	PADDING-RIGHT: 0px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; MARGIN: =
0px; COLOR: #444; PADDING-TOP: 2px
}
INPUT#livesearch {
	WIDTH: 100%
}
INPUT#s {
	WIDTH: 75%
}
UNKNOWN {
	MARGIN: 0px
}
#LSResult {
	Z-INDEX: 100; BACKGROUND: url(images/livesearchbg.jpg) #eee repeat-y =
center 50%; MARGIN: 0px; WIDTH: 200px; BORDER-BOTTOM: #eee 1px solid; =
POSITION: absolute
}
#searchcontrols {
	PADDING-RIGHT: 1px; PADDING-LEFT: 1px; BACKGROUND: =
url(images/livesearchbgdark.jpg) #ddd repeat-y center 50%; =
PADDING-BOTTOM: 1px; PADDING-TOP: 1px; TEXT-ALIGN: center
}
#searchcontrols SMALL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.LSRow:hover {
	BACKGROUND: url(images/livesearchbghilight.jpg) #ffffcc repeat-y center =
50%
}
#LSHighlight {
	BACKGROUND: url(images/livesearchbghilight.jpg) #ffffcc repeat-y center =
50%
}
#LSHighlight:hover {
	BACKGROUND: url(images/livesearchbghilight.jpg) #ffffcc repeat-y center =
50%
}
#LSResult:hover #LSHighlight {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 5px; BORDER-TOP-STYLE: none; =
PADDING-TOP: 5px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; =
BORDER-BOTTOM-STYLE: none
}
#LSHighlight SMALL {
	COLOR: #999
}
#LSHighlight SMALL SPAN A {
	COLOR: #999
}
.LSRow {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
.LSRow SPAN A {
	FONT-WEIGHT: normal; WORD-SPACING: -1px; COLOR: #bbb; LINE-HEIGHT: =
1.3em
}
.LSRow SPAN A:visited {
	FONT-WEIGHT: normal; WORD-SPACING: -1px; COLOR: #bbb; LINE-HEIGHT: =
1.3em
}
.secondary DIV.sb-comments UL LI SPAN A {
	FONT-WEIGHT: normal; WORD-SPACING: -1px; COLOR: #999
}
DIV.sb-comments UL LI SMALL A {
	FONT-WEIGHT: normal; WORD-SPACING: -1px; COLOR: #999
}
.secondary DIV.sb-comments UL LI {
	MARGIN-BOTTOM: 6px
}
.activityentry {
	FONT-SIZE: 1.1em
}
DIV.sb-comments SMALL {
	DISPLAY: block; FONT-WEIGHT: normal; MARGIN: 0px; LINE-HEIGHT: 1em
}
.sb-flickr IMG {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 5px; PADDING-LEFT: 5px; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px; BORDER-RIGHT-WIDTH: 0px
}
#poststuff FIELDSET {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
#poststuff #title {
	WIDTH: 470px
}
#poststuff #excerpt {
	WIDTH: 470px
}
#poststuff #tags {
	WIDTH: 470px
}
#poststuff #title {
	FONT-SIZE: 2em
}
.localtags {
	DISPLAY: none
}
.technoratitags {
	DISPLAY: none
}
.contactform {
	WIDTH: 100%; POSITION: relative
}
.contactleft {
	CLEAR: both; PADDING-RIGHT: 4px; DISPLAY: inline; PADDING-LEFT: 4px; =
FLOAT: left; PADDING-BOTTOM: 4px; MARGIN: 5px 0px; WIDTH: 15%; =
PADDING-TOP: 4px; TEXT-ALIGN: right
}
.contactright {
	PADDING-RIGHT: 4px; DISPLAY: inline; PADDING-LEFT: 4px; FLOAT: right; =
PADDING-BOTTOM: 4px; MARGIN: 5px 0px; WIDTH: 70%; PADDING-TOP: 4px; =
TEXT-ALIGN: left
}
.contacterror {
	BORDER-RIGHT: #ff0000 1px solid; BORDER-TOP: #ff0000 1px solid; =
BORDER-LEFT: #ff0000 1px solid; BORDER-BOTTOM: #ff0000 1px solid
}

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mobhappy.com/blog1/wp-content/themes/k2/styles/MIna2.css

BODY {
	FONT-SIZE: 70%; MARGIN: 20px 0px 30px; COLOR: #363636; FONT-FAMILY: =
'Lucida Grande' Myriad Apple, Verdana, Arial, Sans-Serif; =
BACKGROUND-COLOR: #dde1e4; TEXT-ALIGN: center
}
#page {
	BORDER-RIGHT: #dedede 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: =
#dedede 1px solid; PADDING-LEFT: 10px; BACKGROUND: #ffffff; =
PADDING-BOTTOM: 10px; MARGIN: 0px auto; BORDER-LEFT: #dedede 1px solid; =
WIDTH: 720px; PADDING-TOP: 10px; BORDER-BOTTOM: #dedede 1px solid; =
POSITION: relative; TEXT-ALIGN: left
}
#header {
	BACKGROUND: url(mhbanner.jpg) center center
}
UL.menu LI A {
	MARGIN: 0px; FONT: 1em Verdana, Helvetica, Arial, Sans-Serif; =
TEXT-TRANSFORM: lowercase; COLOR: #000000; BACKGROUND-COLOR: #777777; =
opacity: .50
}
UL.menu LI A:hover {
	BACKGROUND: #000000; COLOR: #777777! important; TEXT-DECORATION: none; =
opacity: .70
}
UL.menu LI.current_page_item A {
	BACKGROUND: #000000; COLOR: #777777! important; TEXT-DECORATION: none; =
opacity: .70
}
UL.menu LI.current_page_item A:hover {
	BACKGROUND: #000000; COLOR: #777777! important; TEXT-DECORATION: none; =
opacity: .70
}
.primary IMG {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 10px; PADDING-LEFT: 10px; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 10px; =
MARGIN-LEFT: 0px; PADDING-TOP: 10px; BORDER-RIGHT-WIDTH: 0px; max-width: =
100%
}
IMG.center {
	DISPLAY: block; MARGIN-LEFT: auto; MARGIN-RIGHT: auto
}
IMG.alignright {
	PADDING-RIGHT: 4px; DISPLAY: inline; PADDING-LEFT: 4px; PADDING-BOTTOM: =
4px; MARGIN: 0px 0px 2px 7px; PADDING-TOP: 4px
}
IMG.alignleft {
	PADDING-RIGHT: 4px; DISPLAY: inline; PADDING-LEFT: 4px; PADDING-BOTTOM: =
4px; MARGIN: 0px 7px 2px 0px; PADDING-TOP: 4px
}
IMG.noborder {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
.primary .item {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 15px; MARGIN: =
0px; PADDING-TOP: 5px; POSITION: relative
}
.primary .item .itemtext {
	FONT: 1.1em/1.5em 'Lucida Grande', Verdana, Arial, Sans-Serif; COLOR: =
#666666; TEXT-ALIGN: justify
}
.primary .item .itemtext P {
	MARGIN: 13px 0px
}
.primary .item .itemtext UL {
	MARGIN: 13px 0px
}
.primary .item .itemtext OL {
	MARGIN: 13px 0px
}
.primary .item .itemtext DIV {
	MARGIN: 13px 0px
}
.primary .item .itemtext BLOCKQUOTE {
	MARGIN: 13px 0px
}
.primary .aside .itemtext P {
	MARGIN: 5px 0px
}
.primary .aside .itemtext UL {
	MARGIN: 5px 0px
}
.primary .aside .itemtext OL {
	MARGIN: 5px 0px
}
.primary .aside .itemtext DIV {
	MARGIN: 5px 0px
}
.primary .aside .itemtext BLOCKQUOTE {
	MARGIN: 5px 0px
}
.permalink .primary .aside .itemtext P {
	MARGIN: 13px 0px
}
.permalink .primary .aside .itemtext UL {
	MARGIN: 13px 0px
}
.permalink .primary .aside .itemtext OL {
	MARGIN: 13px 0px
}
.permalink .primary .aside .itemtext DIV {
	MARGIN: 13px 0px
}
.permalink .primary .aside .itemtext BLOCKQUOTE {
	MARGIN: 13px 0px
}
.secondary {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; MARGIN: =
0px -3% 20px 0%; FONT: 1em/1.5em ' Lucida Grande' Verdana, Arial, =
Sans-Serif; WIDTH: 28%; COLOR: #555; PADDING-TOP: 10px
}
H1 {
	FONT-FAMILY: Lucida Grande, Verdana, Sans-Serif
}
H2 {
	FONT-FAMILY: Lucida Grande, Verdana, Sans-Serif
}
H3 {
	FONT-FAMILY: Lucida Grande, Verdana, Sans-Serif
}
H4 {
	FONT-FAMILY: Lucida Grande, Verdana, Sans-Serif
}
H1 {
	COLOR: #ffffff; TEXT-DECORATION: none
}
H1 A {
	COLOR: #ffffff; TEXT-DECORATION: none
}
H1 A:hover {
	COLOR: #ffffff; TEXT-DECORATION: none
}
H1 A:visited {
	COLOR: #ffffff; TEXT-DECORATION: none
}
#header .description {
	COLOR: #ffffff; TEXT-DECORATION: none
}
H2 {
	COLOR: #444
}
H2 A {
	COLOR: #444
}
H2 A:visited {
	COLOR: #444
}
H3 {
	COLOR: #444
}
H3 A {
	COLOR: #444
}
H3 A:visited {
	COLOR: #444
}
H4 {
	COLOR: #444
}
H4 A {
	COLOR: #444
}
H4 A:visited {
	COLOR: #444
}
#header .description {
	FONT-SIZE: 1em; MARGIN: 0px 0px 0px 40px; COLOR: #ffffff
}
.metadata {
	DISPLAY: block; COLOR: #707070
}
A:hover {
	TEXT-DECORATION: underline
}
A:hover {
	TEXT-DECORATION: underline
}
H2 A:hover {
	COLOR: #2b2b2b! important
}
H2 SPAN A:hover {
	COLOR: #2b2b2b! important
}
A {
	COLOR: #2b2b2b; TEXT-DECORATION: none
}
.itemtext A:visited {
	COLOR: #2b2b2b
}

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mobhappy.com/blog1/wp-content/themes/k2/js/prototype.js.php

/*  Prototype JavaScript framework, version 1.4.0=0A=
 *  (c) 2005 Sam Stephenson <sam@conio.net>=0A=
 *=0A=
 *  THIS FILE IS AUTOMATICALLY GENERATED. When sending patches, please =
diff=0A=
 *  against the source tree, available from the Prototype darcs =
repository.=0A=
 *=0A=
 *  Prototype is freely distributable under the terms of an MIT-style =
license.=0A=
 *=0A=
 *  For details, see the Prototype web site: http://prototype.conio.net/=0A=
 *=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Prototype =3D {=0A=
  Version: '1.4.0',=0A=
  ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',=0A=
=0A=
  emptyFunction: function() {},=0A=
  K: function(x) {return x}=0A=
}=0A=
=0A=
var Class =3D {=0A=
  create: function() {=0A=
    return function() {=0A=
      this.initialize.apply(this, arguments);=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
var Abstract =3D new Object();=0A=
=0A=
Object.extend =3D function(destination, source) {=0A=
  for (property in source) {=0A=
    destination[property] =3D source[property];=0A=
  }=0A=
  return destination;=0A=
}=0A=
=0A=
Object.inspect =3D function(object) {=0A=
  try {=0A=
    if (object =3D=3D undefined) return 'undefined';=0A=
    if (object =3D=3D null) return 'null';=0A=
    return object.inspect ? object.inspect() : object.toString();=0A=
  } catch (e) {=0A=
    if (e instanceof RangeError) return '...';=0A=
    throw e;=0A=
  }=0A=
}=0A=
=0A=
Function.prototype.bind =3D function() {=0A=
  var __method =3D this, args =3D $A(arguments), object =3D args.shift();=0A=
  return function() {=0A=
    return __method.apply(object, args.concat($A(arguments)));=0A=
  }=0A=
}=0A=
=0A=
Function.prototype.bindAsEventListener =3D function(object) {=0A=
  var __method =3D this;=0A=
  return function(event) {=0A=
    return __method.call(object, event || window.event);=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Number.prototype, {=0A=
  toColorPart: function() {=0A=
    var digits =3D this.toString(16);=0A=
    if (this < 16) return '0' + digits;=0A=
    return digits;=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this + 1;=0A=
  },=0A=
=0A=
  times: function(iterator) {=0A=
    $R(0, this, true).each(iterator);=0A=
    return this;=0A=
  }=0A=
});=0A=
=0A=
var Try =3D {=0A=
  these: function() {=0A=
    var returnValue;=0A=
=0A=
    for (var i =3D 0; i < arguments.length; i++) {=0A=
      var lambda =3D arguments[i];=0A=
      try {=0A=
        returnValue =3D lambda();=0A=
        break;=0A=
      } catch (e) {}=0A=
    }=0A=
=0A=
    return returnValue;=0A=
  }=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var PeriodicalExecuter =3D Class.create();=0A=
PeriodicalExecuter.prototype =3D {=0A=
  initialize: function(callback, frequency) {=0A=
    this.callback =3D callback;=0A=
    this.frequency =3D frequency;=0A=
    this.currentlyExecuting =3D false;=0A=
=0A=
    this.registerCallback();=0A=
  },=0A=
=0A=
  registerCallback: function() {=0A=
    setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    if (!this.currentlyExecuting) {=0A=
      try {=0A=
        this.currentlyExecuting =3D true;=0A=
        this.callback();=0A=
      } finally {=0A=
        this.currentlyExecuting =3D false;=0A=
      }=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
function $() {=0A=
  var elements =3D new Array();=0A=
=0A=
  for (var i =3D 0; i < arguments.length; i++) {=0A=
    var element =3D arguments[i];=0A=
    if (typeof element =3D=3D 'string')=0A=
      element =3D document.getElementById(element);=0A=
=0A=
    if (arguments.length =3D=3D 1)=0A=
      return element;=0A=
=0A=
    elements.push(element);=0A=
  }=0A=
=0A=
  return elements;=0A=
}=0A=
Object.extend(String.prototype, {=0A=
  stripTags: function() {=0A=
    return this.replace(/<\/?[^>]+>/gi, '');=0A=
  },=0A=
=0A=
  stripScripts: function() {=0A=
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A=
  },=0A=
=0A=
  extractScripts: function() {=0A=
    var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A=
    var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A=
    return (this.match(matchAll) || []).map(function(scriptTag) {=0A=
      return (scriptTag.match(matchOne) || ['', ''])[1];=0A=
    });=0A=
  },=0A=
=0A=
  evalScripts: function() {=0A=
    return this.extractScripts().map(eval);=0A=
  },=0A=
=0A=
  escapeHTML: function() {=0A=
    var div =3D document.createElement('div');=0A=
    var text =3D document.createTextNode(this);=0A=
    div.appendChild(text);=0A=
    return div.innerHTML;=0A=
  },=0A=
=0A=
  unescapeHTML: function() {=0A=
    var div =3D document.createElement('div');=0A=
    div.innerHTML =3D this.stripTags();=0A=
    return div.childNodes[0] ? div.childNodes[0].nodeValue : '';=0A=
  },=0A=
=0A=
  toQueryParams: function() {=0A=
    var pairs =3D this.match(/^\??(.*)$/)[1].split('&');=0A=
    return pairs.inject({}, function(params, pairString) {=0A=
      var pair =3D pairString.split('=3D');=0A=
      params[pair[0]] =3D pair[1];=0A=
      return params;=0A=
    });=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.split('');=0A=
  },=0A=
=0A=
  camelize: function() {=0A=
    var oStringList =3D this.split('-');=0A=
    if (oStringList.length =3D=3D 1) return oStringList[0];=0A=
=0A=
    var camelizedString =3D this.indexOf('-') =3D=3D 0=0A=
      ? oStringList[0].charAt(0).toUpperCase() + =
oStringList[0].substring(1)=0A=
      : oStringList[0];=0A=
=0A=
    for (var i =3D 1, len =3D oStringList.length; i < len; i++) {=0A=
      var s =3D oStringList[i];=0A=
      camelizedString +=3D s.charAt(0).toUpperCase() + s.substring(1);=0A=
    }=0A=
=0A=
    return camelizedString;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return "'" + this.replace('\\', '\\\\').replace("'", '\\\'') + "'";=0A=
  }=0A=
});=0A=
=0A=
String.prototype.parseQuery =3D String.prototype.toQueryParams;=0A=
=0A=
var $break    =3D new Object();=0A=
var $continue =3D new Object();=0A=
=0A=
var Enumerable =3D {=0A=
  each: function(iterator) {=0A=
    var index =3D 0;=0A=
    try {=0A=
      this._each(function(value) {=0A=
        try {=0A=
          iterator(value, index++);=0A=
        } catch (e) {=0A=
          if (e !=3D $continue) throw e;=0A=
        }=0A=
      });=0A=
    } catch (e) {=0A=
      if (e !=3D $break) throw e;=0A=
    }=0A=
  },=0A=
=0A=
  all: function(iterator) {=0A=
    var result =3D true;=0A=
    this.each(function(value, index) {=0A=
      result =3D result && !!(iterator || Prototype.K)(value, index);=0A=
      if (!result) throw $break;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  any: function(iterator) {=0A=
    var result =3D true;=0A=
    this.each(function(value, index) {=0A=
      if (result =3D !!(iterator || Prototype.K)(value, index))=0A=
        throw $break;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  collect: function(iterator) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      results.push(iterator(value, index));=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  detect: function (iterator) {=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      if (iterator(value, index)) {=0A=
        result =3D value;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  findAll: function(iterator) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (iterator(value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  grep: function(pattern, iterator) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      var stringValue =3D value.toString();=0A=
      if (stringValue.match(pattern))=0A=
        results.push((iterator || Prototype.K)(value, index));=0A=
    })=0A=
    return results;=0A=
  },=0A=
=0A=
  include: function(object) {=0A=
    var found =3D false;=0A=
    this.each(function(value) {=0A=
      if (value =3D=3D object) {=0A=
        found =3D true;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return found;=0A=
  },=0A=
=0A=
  inject: function(memo, iterator) {=0A=
    this.each(function(value, index) {=0A=
      memo =3D iterator(memo, value, index);=0A=
    });=0A=
    return memo;=0A=
  },=0A=
=0A=
  invoke: function(method) {=0A=
    var args =3D $A(arguments).slice(1);=0A=
    return this.collect(function(value) {=0A=
      return value[method].apply(value, args);=0A=
    });=0A=
  },=0A=
=0A=
  max: function(iterator) {=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D (iterator || Prototype.K)(value, index);=0A=
      if (value >=3D (result || value))=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  min: function(iterator) {=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D (iterator || Prototype.K)(value, index);=0A=
      if (value <=3D (result || value))=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  partition: function(iterator) {=0A=
    var trues =3D [], falses =3D [];=0A=
    this.each(function(value, index) {=0A=
      ((iterator || Prototype.K)(value, index) ?=0A=
        trues : falses).push(value);=0A=
    });=0A=
    return [trues, falses];=0A=
  },=0A=
=0A=
  pluck: function(property) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      results.push(value[property]);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  reject: function(iterator) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (!iterator(value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  sortBy: function(iterator) {=0A=
    return this.collect(function(value, index) {=0A=
      return {value: value, criteria: iterator(value, index)};=0A=
    }).sort(function(left, right) {=0A=
      var a =3D left.criteria, b =3D right.criteria;=0A=
      return a < b ? -1 : a > b ? 1 : 0;=0A=
    }).pluck('value');=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.collect(Prototype.K);=0A=
  },=0A=
=0A=
  zip: function() {=0A=
    var iterator =3D Prototype.K, args =3D $A(arguments);=0A=
    if (typeof args.last() =3D=3D 'function')=0A=
      iterator =3D args.pop();=0A=
=0A=
    var collections =3D [this].concat(args).map($A);=0A=
    return this.map(function(value, index) {=0A=
      iterator(value =3D collections.pluck(index));=0A=
      return value;=0A=
    });=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '#<Enumerable:' + this.toArray().inspect() + '>';=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Enumerable, {=0A=
  map:     Enumerable.collect,=0A=
  find:    Enumerable.detect,=0A=
  select:  Enumerable.findAll,=0A=
  member:  Enumerable.include,=0A=
  entries: Enumerable.toArray=0A=
});=0A=
var $A =3D Array.from =3D function(iterable) {=0A=
  if (!iterable) return [];=0A=
  if (iterable.toArray) {=0A=
    return iterable.toArray();=0A=
  } else {=0A=
    var results =3D [];=0A=
    for (var i =3D 0; i < iterable.length; i++)=0A=
      results.push(iterable[i]);=0A=
    return results;=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Array.prototype, Enumerable);=0A=
=0A=
Array.prototype._reverse =3D Array.prototype.reverse;=0A=
=0A=
Object.extend(Array.prototype, {=0A=
  _each: function(iterator) {=0A=
    for (var i =3D 0; i < this.length; i++)=0A=
      iterator(this[i]);=0A=
  },=0A=
=0A=
  clear: function() {=0A=
    this.length =3D 0;=0A=
    return this;=0A=
  },=0A=
=0A=
  first: function() {=0A=
    return this[0];=0A=
  },=0A=
=0A=
  last: function() {=0A=
    return this[this.length - 1];=0A=
  },=0A=
=0A=
  compact: function() {=0A=
    return this.select(function(value) {=0A=
      return value !=3D undefined || value !=3D null;=0A=
    });=0A=
  },=0A=
=0A=
  flatten: function() {=0A=
    return this.inject([], function(array, value) {=0A=
      return array.concat(value.constructor =3D=3D Array ?=0A=
        value.flatten() : [value]);=0A=
    });=0A=
  },=0A=
=0A=
  without: function() {=0A=
    var values =3D $A(arguments);=0A=
    return this.select(function(value) {=0A=
      return !values.include(value);=0A=
    });=0A=
  },=0A=
=0A=
  indexOf: function(object) {=0A=
    for (var i =3D 0; i < this.length; i++)=0A=
      if (this[i] =3D=3D object) return i;=0A=
    return -1;=0A=
  },=0A=
=0A=
  reverse: function(inline) {=0A=
    return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A=
  },=0A=
=0A=
  shift: function() {=0A=
    var result =3D this[0];=0A=
    for (var i =3D 0; i < this.length - 1; i++)=0A=
      this[i] =3D this[i + 1];=0A=
    this.length--;=0A=
    return result;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '[' + this.map(Object.inspect).join(', ') + ']';=0A=
  }=0A=
});=0A=
var Hash =3D {=0A=
  _each: function(iterator) {=0A=
    for (key in this) {=0A=
      var value =3D this[key];=0A=
      if (typeof value =3D=3D 'function') continue;=0A=
=0A=
      var pair =3D [key, value];=0A=
      pair.key =3D key;=0A=
      pair.value =3D value;=0A=
      iterator(pair);=0A=
    }=0A=
  },=0A=
=0A=
  keys: function() {=0A=
    return this.pluck('key');=0A=
  },=0A=
=0A=
  values: function() {=0A=
    return this.pluck('value');=0A=
  },=0A=
=0A=
  merge: function(hash) {=0A=
    return $H(hash).inject($H(this), function(mergedHash, pair) {=0A=
      mergedHash[pair.key] =3D pair.value;=0A=
      return mergedHash;=0A=
    });=0A=
  },=0A=
=0A=
  toQueryString: function() {=0A=
    return this.map(function(pair) {=0A=
      return pair.map(encodeURIComponent).join('=3D');=0A=
    }).join('&');=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '#<Hash:{' + this.map(function(pair) {=0A=
      return pair.map(Object.inspect).join(': ');=0A=
    }).join(', ') + '}>';=0A=
  }=0A=
}=0A=
=0A=
function $H(object) {=0A=
  var hash =3D Object.extend({}, object || {});=0A=
  Object.extend(hash, Enumerable);=0A=
  Object.extend(hash, Hash);=0A=
  return hash;=0A=
}=0A=
ObjectRange =3D Class.create();=0A=
Object.extend(ObjectRange.prototype, Enumerable);=0A=
Object.extend(ObjectRange.prototype, {=0A=
  initialize: function(start, end, exclusive) {=0A=
    this.start =3D start;=0A=
    this.end =3D end;=0A=
    this.exclusive =3D exclusive;=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    var value =3D this.start;=0A=
    do {=0A=
      iterator(value);=0A=
      value =3D value.succ();=0A=
    } while (this.include(value));=0A=
  },=0A=
=0A=
  include: function(value) {=0A=
    if (value < this.start)=0A=
      return false;=0A=
    if (this.exclusive)=0A=
      return value < this.end;=0A=
    return value <=3D this.end;=0A=
  }=0A=
});=0A=
=0A=
var $R =3D function(start, end, exclusive) {=0A=
  return new ObjectRange(start, end, exclusive);=0A=
}=0A=
=0A=
var Ajax =3D {=0A=
  getTransport: function() {=0A=
    return Try.these(=0A=
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A=
      function() {return new ActiveXObject('Microsoft.XMLHTTP')},=0A=
      function() {return new XMLHttpRequest()}=0A=
    ) || false;=0A=
  },=0A=
=0A=
  activeRequestCount: 0=0A=
}=0A=
=0A=
Ajax.Responders =3D {=0A=
  responders: [],=0A=
=0A=
  _each: function(iterator) {=0A=
    this.responders._each(iterator);=0A=
  },=0A=
=0A=
  register: function(responderToAdd) {=0A=
    if (!this.include(responderToAdd))=0A=
      this.responders.push(responderToAdd);=0A=
  },=0A=
=0A=
  unregister: function(responderToRemove) {=0A=
    this.responders =3D this.responders.without(responderToRemove);=0A=
  },=0A=
=0A=
  dispatch: function(callback, request, transport, json) {=0A=
    this.each(function(responder) {=0A=
      if (responder[callback] && typeof responder[callback] =3D=3D =
'function') {=0A=
        try {=0A=
          responder[callback].apply(responder, [request, transport, =
json]);=0A=
        } catch (e) {}=0A=
      }=0A=
    });=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Ajax.Responders, Enumerable);=0A=
=0A=
Ajax.Responders.register({=0A=
  onCreate: function() {=0A=
    Ajax.activeRequestCount++;=0A=
  },=0A=
=0A=
  onComplete: function() {=0A=
    Ajax.activeRequestCount--;=0A=
  }=0A=
});=0A=
=0A=
Ajax.Base =3D function() {};=0A=
Ajax.Base.prototype =3D {=0A=
  setOptions: function(options) {=0A=
    this.options =3D {=0A=
      method:       'post',=0A=
      asynchronous: true,=0A=
      parameters:   ''=0A=
    }=0A=
    Object.extend(this.options, options || {});=0A=
  },=0A=
=0A=
  responseIsSuccess: function() {=0A=
    return this.transport.status =3D=3D undefined=0A=
        || this.transport.status =3D=3D 0=0A=
        || (this.transport.status >=3D 200 && this.transport.status < =
300);=0A=
  },=0A=
=0A=
  responseIsFailure: function() {=0A=
    return !this.responseIsSuccess();=0A=
  }=0A=
}=0A=
=0A=
Ajax.Request =3D Class.create();=0A=
Ajax.Request.Events =3D=0A=
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A=
=0A=
Ajax.Request.prototype =3D Object.extend(new Ajax.Base(), {=0A=
  initialize: function(url, options) {=0A=
    this.transport =3D Ajax.getTransport();=0A=
    this.setOptions(options);=0A=
    this.request(url);=0A=
  },=0A=
=0A=
  request: function(url) {=0A=
    var parameters =3D this.options.parameters || '';=0A=
    if (parameters.length > 0) parameters +=3D '&_=3D';=0A=
=0A=
    try {=0A=
      this.url =3D url;=0A=
      if (this.options.method =3D=3D 'get' && parameters.length > 0)=0A=
        this.url +=3D (this.url.match(/\?/) ? '&' : '?') + parameters;=0A=
=0A=
      Ajax.Responders.dispatch('onCreate', this, this.transport);=0A=
=0A=
      this.transport.open(this.options.method, this.url,=0A=
        this.options.asynchronous);=0A=
=0A=
      if (this.options.asynchronous) {=0A=
        this.transport.onreadystatechange =3D =
this.onStateChange.bind(this);=0A=
        setTimeout((function() =
{this.respondToReadyState(1)}).bind(this), 10);=0A=
      }=0A=
=0A=
      this.setRequestHeaders();=0A=
=0A=
      var body =3D this.options.postBody ? this.options.postBody : =
parameters;=0A=
      this.transport.send(this.options.method =3D=3D 'post' ? body : =
null);=0A=
=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  setRequestHeaders: function() {=0A=
    var requestHeaders =3D=0A=
      ['X-Requested-With', 'XMLHttpRequest',=0A=
       'X-Prototype-Version', Prototype.Version];=0A=
=0A=
    if (this.options.method =3D=3D 'post') {=0A=
      requestHeaders.push('Content-type',=0A=
        'application/x-www-form-urlencoded');=0A=
=0A=
      /* Force "Connection: close" for Mozilla browsers to work around=0A=
       * a bug where XMLHttpReqeuest sends an incorrect Content-length=0A=
       * header. See Mozilla Bugzilla #246651.=0A=
       */=0A=
      if (this.transport.overrideMimeType)=0A=
        requestHeaders.push('Connection', 'close');=0A=
    }=0A=
=0A=
    if (this.options.requestHeaders)=0A=
      requestHeaders.push.apply(requestHeaders, =
this.options.requestHeaders);=0A=
=0A=
    for (var i =3D 0; i < requestHeaders.length; i +=3D 2)=0A=
      this.transport.setRequestHeader(requestHeaders[i], =
requestHeaders[i+1]);=0A=
  },=0A=
=0A=
  onStateChange: function() {=0A=
    var readyState =3D this.transport.readyState;=0A=
    if (readyState !=3D 1)=0A=
      this.respondToReadyState(this.transport.readyState);=0A=
  },=0A=
=0A=
  header: function(name) {=0A=
    try {=0A=
      return this.transport.getResponseHeader(name);=0A=
    } catch (e) {}=0A=
  },=0A=
=0A=
  evalJSON: function() {=0A=
    try {=0A=
      return eval(this.header('X-JSON'));=0A=
    } catch (e) {}=0A=
  },=0A=
=0A=
  evalResponse: function() {=0A=
    try {=0A=
      return eval(this.transport.responseText);=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  respondToReadyState: function(readyState) {=0A=
    var event =3D Ajax.Request.Events[readyState];=0A=
    var transport =3D this.transport, json =3D this.evalJSON();=0A=
=0A=
    if (event =3D=3D 'Complete') {=0A=
      try {=0A=
        (this.options['on' + this.transport.status]=0A=
         || this.options['on' + (this.responseIsSuccess() ? 'Success' : =
'Failure')]=0A=
         || Prototype.emptyFunction)(transport, json);=0A=
      } catch (e) {=0A=
        this.dispatchException(e);=0A=
      }=0A=
=0A=
      if ((this.header('Content-type') || =
'').match(/^text\/javascript/i))=0A=
        this.evalResponse();=0A=
    }=0A=
=0A=
    try {=0A=
      (this.options['on' + event] || Prototype.emptyFunction)(transport, =
json);=0A=
      Ajax.Responders.dispatch('on' + event, this, transport, json);=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
=0A=
    /* Avoid memory leak in MSIE: clean up the oncomplete event handler =
*/=0A=
    if (event =3D=3D 'Complete')=0A=
      this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A=
  },=0A=
=0A=
  dispatchException: function(exception) {=0A=
    (this.options.onException || Prototype.emptyFunction)(this, =
exception);=0A=
    Ajax.Responders.dispatch('onException', this, exception);=0A=
  }=0A=
});=0A=
=0A=
Ajax.Updater =3D Class.create();=0A=
=0A=
Object.extend(Object.extend(Ajax.Updater.prototype, =
Ajax.Request.prototype), {=0A=
  initialize: function(container, url, options) {=0A=
    this.containers =3D {=0A=
      success: container.success ? $(container.success) : $(container),=0A=
      failure: container.failure ? $(container.failure) :=0A=
        (container.success ? null : $(container))=0A=
    }=0A=
=0A=
    this.transport =3D Ajax.getTransport();=0A=
    this.setOptions(options);=0A=
=0A=
    var onComplete =3D this.options.onComplete || =
Prototype.emptyFunction;=0A=
    this.options.onComplete =3D (function(transport, object) {=0A=
      this.updateContent();=0A=
      onComplete(transport, object);=0A=
    }).bind(this);=0A=
=0A=
    this.request(url);=0A=
  },=0A=
=0A=
  updateContent: function() {=0A=
    var receiver =3D this.responseIsSuccess() ?=0A=
      this.containers.success : this.containers.failure;=0A=
    var response =3D this.transport.responseText;=0A=
=0A=
    if (!this.options.evalScripts)=0A=
      response =3D response.stripScripts();=0A=
=0A=
    if (receiver) {=0A=
      if (this.options.insertion) {=0A=
        new this.options.insertion(receiver, response);=0A=
      } else {=0A=
        Element.update(receiver, response);=0A=
      }=0A=
    }=0A=
=0A=
    if (this.responseIsSuccess()) {=0A=
      if (this.onComplete)=0A=
        setTimeout(this.onComplete.bind(this), 10);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.PeriodicalUpdater =3D Class.create();=0A=
Ajax.PeriodicalUpdater.prototype =3D Object.extend(new Ajax.Base(), {=0A=
  initialize: function(container, url, options) {=0A=
    this.setOptions(options);=0A=
    this.onComplete =3D this.options.onComplete;=0A=
=0A=
    this.frequency =3D (this.options.frequency || 2);=0A=
    this.decay =3D (this.options.decay || 1);=0A=
=0A=
    this.updater =3D {};=0A=
    this.container =3D container;=0A=
    this.url =3D url;=0A=
=0A=
    this.start();=0A=
  },=0A=
=0A=
  start: function() {=0A=
    this.options.onComplete =3D this.updateComplete.bind(this);=0A=
    this.onTimerEvent();=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    this.updater.onComplete =3D undefined;=0A=
    clearTimeout(this.timer);=0A=
    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A=
  },=0A=
=0A=
  updateComplete: function(request) {=0A=
    if (this.options.decay) {=0A=
      this.decay =3D (request.responseText =3D=3D this.lastText ?=0A=
        this.decay * this.options.decay : 1);=0A=
=0A=
      this.lastText =3D request.responseText;=0A=
    }=0A=
    this.timer =3D setTimeout(this.onTimerEvent.bind(this),=0A=
      this.decay * this.frequency * 1000);=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    this.updater =3D new Ajax.Updater(this.container, this.url, =
this.options);=0A=
  }=0A=
});=0A=
document.getElementsByClassName =3D function(className, parentElement) {=0A=
  var children =3D ($(parentElement) || =
document.body).getElementsByTagName('*');=0A=
  return $A(children).inject([], function(elements, child) {=0A=
    if (child.className.match(new RegExp("(^|\\s)" + className + =
"(\\s|$)")))=0A=
      elements.push(child);=0A=
    return elements;=0A=
  });=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!window.Element) {=0A=
  var Element =3D new Object();=0A=
}=0A=
=0A=
Object.extend(Element, {=0A=
  visible: function(element) {=0A=
    return $(element).style.display !=3D 'none';=0A=
  },=0A=
=0A=
  toggle: function() {=0A=
    for (var i =3D 0; i < arguments.length; i++) {=0A=
      var element =3D $(arguments[i]);=0A=
      Element[Element.visible(element) ? 'hide' : 'show'](element);=0A=
    }=0A=
  },=0A=
=0A=
  hide: function() {=0A=
    for (var i =3D 0; i < arguments.length; i++) {=0A=
      var element =3D $(arguments[i]);=0A=
      element.style.display =3D 'none';=0A=
    }=0A=
  },=0A=
=0A=
  show: function() {=0A=
    for (var i =3D 0; i < arguments.length; i++) {=0A=
      var element =3D $(arguments[i]);=0A=
      element.style.display =3D '';=0A=
    }=0A=
  },=0A=
=0A=
  remove: function(element) {=0A=
    element =3D $(element);=0A=
    element.parentNode.removeChild(element);=0A=
  },=0A=
=0A=
  update: function(element, html) {=0A=
    $(element).innerHTML =3D html.stripScripts();=0A=
    setTimeout(function() {html.evalScripts()}, 10);=0A=
  },=0A=
=0A=
  getHeight: function(element) {=0A=
    element =3D $(element);=0A=
    return element.offsetHeight;=0A=
  },=0A=
=0A=
  classNames: function(element) {=0A=
    return new Element.ClassNames(element);=0A=
  },=0A=
=0A=
  hasClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    return Element.classNames(element).include(className);=0A=
  },=0A=
=0A=
  addClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    return Element.classNames(element).add(className);=0A=
  },=0A=
=0A=
  removeClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    return Element.classNames(element).remove(className);=0A=
  },=0A=
=0A=
  // removes whitespace-only text node children=0A=
  cleanWhitespace: function(element) {=0A=
    element =3D $(element);=0A=
    for (var i =3D 0; i < element.childNodes.length; i++) {=0A=
      var node =3D element.childNodes[i];=0A=
      if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A=
        Element.remove(node);=0A=
    }=0A=
  },=0A=
=0A=
  empty: function(element) {=0A=
    return $(element).innerHTML.match(/^\s*$/);=0A=
  },=0A=
=0A=
  scrollTo: function(element) {=0A=
    element =3D $(element);=0A=
    var x =3D element.x ? element.x : element.offsetLeft,=0A=
        y =3D element.y ? element.y : element.offsetTop;=0A=
    window.scrollTo(x, y);=0A=
  },=0A=
=0A=
  getStyle: function(element, style) {=0A=
    element =3D $(element);=0A=
    var value =3D element.style[style.camelize()];=0A=
    if (!value) {=0A=
      if (document.defaultView && document.defaultView.getComputedStyle) =
{=0A=
        var css =3D document.defaultView.getComputedStyle(element, null);=0A=
        value =3D css ? css.getPropertyValue(style) : null;=0A=
      } else if (element.currentStyle) {=0A=
        value =3D element.currentStyle[style.camelize()];=0A=
      }=0A=
    }=0A=
=0A=
    if (window.opera && ['left', 'top', 'right', =
'bottom'].include(style))=0A=
      if (Element.getStyle(element, 'position') =3D=3D 'static') value =
=3D 'auto';=0A=
=0A=
    return value =3D=3D 'auto' ? null : value;=0A=
  },=0A=
=0A=
  setStyle: function(element, style) {=0A=
    element =3D $(element);=0A=
    for (name in style)=0A=
      element.style[name.camelize()] =3D style[name];=0A=
  },=0A=
=0A=
  getDimensions: function(element) {=0A=
    element =3D $(element);=0A=
    if (Element.getStyle(element, 'display') !=3D 'none')=0A=
      return {width: element.offsetWidth, height: element.offsetHeight};=0A=
=0A=
    // All *Width and *Height properties give 0 on elements with display =
none,=0A=
    // so enable the element temporarily=0A=
    var els =3D element.style;=0A=
    var originalVisibility =3D els.visibility;=0A=
    var originalPosition =3D els.position;=0A=
    els.visibility =3D 'hidden';=0A=
    els.position =3D 'absolute';=0A=
    els.display =3D '';=0A=
    var originalWidth =3D element.clientWidth;=0A=
    var originalHeight =3D element.clientHeight;=0A=
    els.display =3D 'none';=0A=
    els.position =3D originalPosition;=0A=
    els.visibility =3D originalVisibility;=0A=
    return {width: originalWidth, height: originalHeight};=0A=
  },=0A=
=0A=
  makePositioned: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Element.getStyle(element, 'position');=0A=
    if (pos =3D=3D 'static' || !pos) {=0A=
      element._madePositioned =3D true;=0A=
      element.style.position =3D 'relative';=0A=
      // Opera returns the offset relative to the positioning context, =
when an=0A=
      // element is position relative but top and left have not been =
defined=0A=
      if (window.opera) {=0A=
        element.style.top =3D 0;=0A=
        element.style.left =3D 0;=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  undoPositioned: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._madePositioned) {=0A=
      element._madePositioned =3D undefined;=0A=
      element.style.position =3D=0A=
        element.style.top =3D=0A=
        element.style.left =3D=0A=
        element.style.bottom =3D=0A=
        element.style.right =3D '';=0A=
    }=0A=
  },=0A=
=0A=
  makeClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._overflow) return;=0A=
    element._overflow =3D element.style.overflow;=0A=
    if ((Element.getStyle(element, 'overflow') || 'visible') !=3D =
'hidden')=0A=
      element.style.overflow =3D 'hidden';=0A=
  },=0A=
=0A=
  undoClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._overflow) return;=0A=
    element.style.overflow =3D element._overflow;=0A=
    element._overflow =3D undefined;=0A=
  }=0A=
});=0A=
=0A=
var Toggle =3D new Object();=0A=
Toggle.display =3D Element.toggle;=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.Insertion =3D function(adjacency) {=0A=
  this.adjacency =3D adjacency;=0A=
}=0A=
=0A=
Abstract.Insertion.prototype =3D {=0A=
  initialize: function(element, content) {=0A=
    this.element =3D $(element);=0A=
    this.content =3D content.stripScripts();=0A=
=0A=
    if (this.adjacency && this.element.insertAdjacentHTML) {=0A=
      try {=0A=
        this.element.insertAdjacentHTML(this.adjacency, this.content);=0A=
      } catch (e) {=0A=
        if (this.element.tagName.toLowerCase() =3D=3D 'tbody') {=0A=
          this.insertContent(this.contentFromAnonymousTable());=0A=
        } else {=0A=
          throw e;=0A=
        }=0A=
      }=0A=
    } else {=0A=
      this.range =3D this.element.ownerDocument.createRange();=0A=
      if (this.initializeRange) this.initializeRange();=0A=
      =
this.insertContent([this.range.createContextualFragment(this.content)]);=0A=
    }=0A=
=0A=
    setTimeout(function() {content.evalScripts()}, 10);=0A=
  },=0A=
=0A=
  contentFromAnonymousTable: function() {=0A=
    var div =3D document.createElement('div');=0A=
    div.innerHTML =3D '<table><tbody>' + this.content + =
'</tbody></table>';=0A=
    return $A(div.childNodes[0].childNodes[0].childNodes);=0A=
  }=0A=
}=0A=
=0A=
var Insertion =3D new Object();=0A=
=0A=
Insertion.Before =3D Class.create();=0A=
Insertion.Before.prototype =3D Object.extend(new =
Abstract.Insertion('beforeBegin'), {=0A=
  initializeRange: function() {=0A=
    this.range.setStartBefore(this.element);=0A=
  },=0A=
=0A=
  insertContent: function(fragments) {=0A=
    fragments.each((function(fragment) {=0A=
      this.element.parentNode.insertBefore(fragment, this.element);=0A=
    }).bind(this));=0A=
  }=0A=
});=0A=
=0A=
Insertion.Top =3D Class.create();=0A=
Insertion.Top.prototype =3D Object.extend(new =
Abstract.Insertion('afterBegin'), {=0A=
  initializeRange: function() {=0A=
    this.range.selectNodeContents(this.element);=0A=
    this.range.collapse(true);=0A=
  },=0A=
=0A=
  insertContent: function(fragments) {=0A=
    fragments.reverse(false).each((function(fragment) {=0A=
      this.element.insertBefore(fragment, this.element.firstChild);=0A=
    }).bind(this));=0A=
  }=0A=
});=0A=
=0A=
Insertion.Bottom =3D Class.create();=0A=
Insertion.Bottom.prototype =3D Object.extend(new =
Abstract.Insertion('beforeEnd'), {=0A=
  initializeRange: function() {=0A=
    this.range.selectNodeContents(this.element);=0A=
    this.range.collapse(this.element);=0A=
  },=0A=
=0A=
  insertContent: function(fragments) {=0A=
    fragments.each((function(fragment) {=0A=
      this.element.appendChild(fragment);=0A=
    }).bind(this));=0A=
  }=0A=
});=0A=
=0A=
Insertion.After =3D Class.create();=0A=
Insertion.After.prototype =3D Object.extend(new =
Abstract.Insertion('afterEnd'), {=0A=
  initializeRange: function() {=0A=
    this.range.setStartAfter(this.element);=0A=
  },=0A=
=0A=
  insertContent: function(fragments) {=0A=
    fragments.each((function(fragment) {=0A=
      this.element.parentNode.insertBefore(fragment,=0A=
        this.element.nextSibling);=0A=
    }).bind(this));=0A=
  }=0A=
});=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.ClassNames =3D Class.create();=0A=
Element.ClassNames.prototype =3D {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    this.element.className.split(/\s+/).select(function(name) {=0A=
      return name.length > 0;=0A=
    })._each(iterator);=0A=
  },=0A=
=0A=
  set: function(className) {=0A=
    this.element.className =3D className;=0A=
  },=0A=
=0A=
  add: function(classNameToAdd) {=0A=
    if (this.include(classNameToAdd)) return;=0A=
    this.set(this.toArray().concat(classNameToAdd).join(' '));=0A=
  },=0A=
=0A=
  remove: function(classNameToRemove) {=0A=
    if (!this.include(classNameToRemove)) return;=0A=
    this.set(this.select(function(className) {=0A=
      return className !=3D classNameToRemove;=0A=
    }).join(' '));=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return this.toArray().join(' ');=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Element.ClassNames.prototype, Enumerable);=0A=
var Field =3D {=0A=
  clear: function() {=0A=
    for (var i =3D 0; i < arguments.length; i++)=0A=
      $(arguments[i]).value =3D '';=0A=
  },=0A=
=0A=
  focus: function(element) {=0A=
    $(element).focus();=0A=
  },=0A=
=0A=
  present: function() {=0A=
    for (var i =3D 0; i < arguments.length; i++)=0A=
      if ($(arguments[i]).value =3D=3D '') return false;=0A=
    return true;=0A=
  },=0A=
=0A=
  select: function(element) {=0A=
    $(element).select();=0A=
  },=0A=
=0A=
  activate: function(element) {=0A=
    element =3D $(element);=0A=
    element.focus();=0A=
    if (element.select)=0A=
      element.select();=0A=
  }=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Form =3D {=0A=
  serialize: function(form) {=0A=
    var elements =3D Form.getElements($(form));=0A=
    var queryComponents =3D new Array();=0A=
=0A=
    for (var i =3D 0; i < elements.length; i++) {=0A=
      var queryComponent =3D Form.Element.serialize(elements[i]);=0A=
      if (queryComponent)=0A=
        queryComponents.push(queryComponent);=0A=
    }=0A=
=0A=
    return queryComponents.join('&');=0A=
  },=0A=
=0A=
  getElements: function(form) {=0A=
    form =3D $(form);=0A=
    var elements =3D new Array();=0A=
=0A=
    for (tagName in Form.Element.Serializers) {=0A=
      var tagElements =3D form.getElementsByTagName(tagName);=0A=
      for (var j =3D 0; j < tagElements.length; j++)=0A=
        elements.push(tagElements[j]);=0A=
    }=0A=
    return elements;=0A=
  },=0A=
=0A=
  getInputs: function(form, typeName, name) {=0A=
    form =3D $(form);=0A=
    var inputs =3D form.getElementsByTagName('input');=0A=
=0A=
    if (!typeName && !name)=0A=
      return inputs;=0A=
=0A=
    var matchingInputs =3D new Array();=0A=
    for (var i =3D 0; i < inputs.length; i++) {=0A=
      var input =3D inputs[i];=0A=
      if ((typeName && input.type !=3D typeName) ||=0A=
          (name && input.name !=3D name))=0A=
        continue;=0A=
      matchingInputs.push(input);=0A=
    }=0A=
=0A=
    return matchingInputs;=0A=
  },=0A=
=0A=
  disable: function(form) {=0A=
    var elements =3D Form.getElements(form);=0A=
    for (var i =3D 0; i < elements.length; i++) {=0A=
      var element =3D elements[i];=0A=
      element.blur();=0A=
      element.disabled =3D 'true';=0A=
    }=0A=
  },=0A=
=0A=
  enable: function(form) {=0A=
    var elements =3D Form.getElements(form);=0A=
    for (var i =3D 0; i < elements.length; i++) {=0A=
      var element =3D elements[i];=0A=
      element.disabled =3D '';=0A=
    }=0A=
  },=0A=
=0A=
  findFirstElement: function(form) {=0A=
    return Form.getElements(form).find(function(element) {=0A=
      return element.type !=3D 'hidden' && !element.disabled &&=0A=
        ['input', 'select', =
'textarea'].include(element.tagName.toLowerCase());=0A=
    });=0A=
  },=0A=
=0A=
  focusFirstElement: function(form) {=0A=
    Field.activate(Form.findFirstElement(form));=0A=
  },=0A=
=0A=
  reset: function(form) {=0A=
    $(form).reset();=0A=
  }=0A=
}=0A=
=0A=
Form.Element =3D {=0A=
  serialize: function(element) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    var parameter =3D Form.Element.Serializers[method](element);=0A=
=0A=
    if (parameter) {=0A=
      var key =3D encodeURIComponent(parameter[0]);=0A=
      if (key.length =3D=3D 0) return;=0A=
=0A=
      if (parameter[1].constructor !=3D Array)=0A=
        parameter[1] =3D [parameter[1]];=0A=
=0A=
      return parameter[1].map(function(value) {=0A=
        return key + '=3D' + encodeURIComponent(value);=0A=
      }).join('&');=0A=
    }=0A=
  },=0A=
=0A=
  getValue: function(element) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    var parameter =3D Form.Element.Serializers[method](element);=0A=
=0A=
    if (parameter)=0A=
      return parameter[1];=0A=
  }=0A=
}=0A=
=0A=
Form.Element.Serializers =3D {=0A=
  input: function(element) {=0A=
    switch (element.type.toLowerCase()) {=0A=
      case 'submit':=0A=
      case 'hidden':=0A=
      case 'password':=0A=
      case 'text':=0A=
        return Form.Element.Serializers.textarea(element);=0A=
      case 'checkbox':=0A=
      case 'radio':=0A=
        return Form.Element.Serializers.inputSelector(element);=0A=
    }=0A=
    return false;=0A=
  },=0A=
=0A=
  inputSelector: function(element) {=0A=
    if (element.checked)=0A=
      return [element.name, element.value];=0A=
  },=0A=
=0A=
  textarea: function(element) {=0A=
    return [element.name, element.value];=0A=
  },=0A=
=0A=
  select: function(element) {=0A=
    return Form.Element.Serializers[element.type =3D=3D 'select-one' ?=0A=
      'selectOne' : 'selectMany'](element);=0A=
  },=0A=
=0A=
  selectOne: function(element) {=0A=
    var value =3D '', opt, index =3D element.selectedIndex;=0A=
    if (index >=3D 0) {=0A=
      opt =3D element.options[index];=0A=
      value =3D opt.value;=0A=
      if (!value && !('value' in opt))=0A=
        value =3D opt.text;=0A=
    }=0A=
    return [element.name, value];=0A=
  },=0A=
=0A=
  selectMany: function(element) {=0A=
    var value =3D new Array();=0A=
    for (var i =3D 0; i < element.length; i++) {=0A=
      var opt =3D element.options[i];=0A=
      if (opt.selected) {=0A=
        var optValue =3D opt.value;=0A=
        if (!optValue && !('value' in opt))=0A=
          optValue =3D opt.text;=0A=
        value.push(optValue);=0A=
      }=0A=
    }=0A=
    return [element.name, value];=0A=
  }=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var $F =3D Form.Element.getValue;=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.TimedObserver =3D function() {}=0A=
Abstract.TimedObserver.prototype =3D {=0A=
  initialize: function(element, frequency, callback) {=0A=
    this.frequency =3D frequency;=0A=
    this.element   =3D $(element);=0A=
    this.callback  =3D callback;=0A=
=0A=
    this.lastValue =3D this.getValue();=0A=
    this.registerCallback();=0A=
  },=0A=
=0A=
  registerCallback: function() {=0A=
    setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    var value =3D this.getValue();=0A=
    if (this.lastValue !=3D value) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
Form.Element.Observer =3D Class.create();=0A=
Form.Element.Observer.prototype =3D Object.extend(new =
Abstract.TimedObserver(), {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.Observer =3D Class.create();=0A=
Form.Observer.prototype =3D Object.extend(new Abstract.TimedObserver(), {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.EventObserver =3D function() {}=0A=
Abstract.EventObserver.prototype =3D {=0A=
  initialize: function(element, callback) {=0A=
    this.element  =3D $(element);=0A=
    this.callback =3D callback;=0A=
=0A=
    this.lastValue =3D this.getValue();=0A=
    if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A=
      this.registerFormCallbacks();=0A=
    else=0A=
      this.registerCallback(this.element);=0A=
  },=0A=
=0A=
  onElementEvent: function() {=0A=
    var value =3D this.getValue();=0A=
    if (this.lastValue !=3D value) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  },=0A=
=0A=
  registerFormCallbacks: function() {=0A=
    var elements =3D Form.getElements(this.element);=0A=
    for (var i =3D 0; i < elements.length; i++)=0A=
      this.registerCallback(elements[i]);=0A=
  },=0A=
=0A=
  registerCallback: function(element) {=0A=
    if (element.type) {=0A=
      switch (element.type.toLowerCase()) {=0A=
        case 'checkbox':=0A=
        case 'radio':=0A=
          Event.observe(element, 'click', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
        case 'password':=0A=
        case 'text':=0A=
        case 'textarea':=0A=
        case 'select-one':=0A=
        case 'select-multiple':=0A=
          Event.observe(element, 'change', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
      }=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
Form.Element.EventObserver =3D Class.create();=0A=
Form.Element.EventObserver.prototype =3D Object.extend(new =
Abstract.EventObserver(), {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.EventObserver =3D Class.create();=0A=
Form.EventObserver.prototype =3D Object.extend(new =
Abstract.EventObserver(), {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
if (!window.Event) {=0A=
  var Event =3D new Object();=0A=
}=0A=
=0A=
Object.extend(Event, {=0A=
  KEY_BACKSPACE: 8,=0A=
  KEY_TAB:       9,=0A=
  KEY_RETURN:   13,=0A=
  KEY_ESC:      27,=0A=
  KEY_LEFT:     37,=0A=
  KEY_UP:       38,=0A=
  KEY_RIGHT:    39,=0A=
  KEY_DOWN:     40,=0A=
  KEY_DELETE:   46,=0A=
=0A=
  element: function(event) {=0A=
    return event.target || event.srcElement;=0A=
  },=0A=
=0A=
  isLeftClick: function(event) {=0A=
    return (((event.which) && (event.which =3D=3D 1)) ||=0A=
            ((event.button) && (event.button =3D=3D 1)));=0A=
  },=0A=
=0A=
  pointerX: function(event) {=0A=
    return event.pageX || (event.clientX +=0A=
      (document.documentElement.scrollLeft || document.body.scrollLeft));=0A=
  },=0A=
=0A=
  pointerY: function(event) {=0A=
    return event.pageY || (event.clientY +=0A=
      (document.documentElement.scrollTop || document.body.scrollTop));=0A=
  },=0A=
=0A=
  stop: function(event) {=0A=
    if (event.preventDefault) {=0A=
      event.preventDefault();=0A=
      event.stopPropagation();=0A=
    } else {=0A=
      event.returnValue =3D false;=0A=
      event.cancelBubble =3D true;=0A=
    }=0A=
  },=0A=
=0A=
  // find the first node with the given tagName, starting from the=0A=
  // node the event was triggered on; traverses the DOM upwards=0A=
  findElement: function(event, tagName) {=0A=
    var element =3D Event.element(event);=0A=
    while (element.parentNode && (!element.tagName ||=0A=
        (element.tagName.toUpperCase() !=3D tagName.toUpperCase())))=0A=
      element =3D element.parentNode;=0A=
    return element;=0A=
  },=0A=
=0A=
  observers: false,=0A=
=0A=
  _observeAndCache: function(element, name, observer, useCapture) {=0A=
    if (!this.observers) this.observers =3D [];=0A=
    if (element.addEventListener) {=0A=
      this.observers.push([element, name, observer, useCapture]);=0A=
      element.addEventListener(name, observer, useCapture);=0A=
    } else if (element.attachEvent) {=0A=
      this.observers.push([element, name, observer, useCapture]);=0A=
      element.attachEvent('on' + name, observer);=0A=
    }=0A=
  },=0A=
=0A=
  unloadCache: function() {=0A=
    if (!Event.observers) return;=0A=
    for (var i =3D 0; i < Event.observers.length; i++) {=0A=
      Event.stopObserving.apply(this, Event.observers[i]);=0A=
      Event.observers[i][0] =3D null;=0A=
    }=0A=
    Event.observers =3D false;=0A=
  },=0A=
=0A=
  observe: function(element, name, observer, useCapture) {=0A=
    var element =3D $(element);=0A=
    useCapture =3D useCapture || false;=0A=
=0A=
    if (name =3D=3D 'keypress' &&=0A=
        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)=0A=
        || element.attachEvent))=0A=
      name =3D 'keydown';=0A=
=0A=
    this._observeAndCache(element, name, observer, useCapture);=0A=
  },=0A=
=0A=
  stopObserving: function(element, name, observer, useCapture) {=0A=
    var element =3D $(element);=0A=
    useCapture =3D useCapture || false;=0A=
=0A=
    if (name =3D=3D 'keypress' &&=0A=
        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)=0A=
        || element.detachEvent))=0A=
      name =3D 'keydown';=0A=
=0A=
    if (element.removeEventListener) {=0A=
      element.removeEventListener(name, observer, useCapture);=0A=
    } else if (element.detachEvent) {=0A=
      element.detachEvent('on' + name, observer);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
/* prevent memory leaks in IE */=0A=
Event.observe(window, 'unload', Event.unloadCache, false);=0A=
var Position =3D {=0A=
  // set to true if needed, warning: firefox performance problems=0A=
  // NOT neeeded for page scrolling, only if draggable contained in=0A=
  // scrollable elements=0A=
  includeScrollOffsets: false,=0A=
=0A=
  // must be called before calling withinIncludingScrolloffset, every =
time the=0A=
  // page is scrolled=0A=
  prepare: function() {=0A=
    this.deltaX =3D  window.pageXOffset=0A=
                || document.documentElement.scrollLeft=0A=
                || document.body.scrollLeft=0A=
                || 0;=0A=
    this.deltaY =3D  window.pageYOffset=0A=
                || document.documentElement.scrollTop=0A=
                || document.body.scrollTop=0A=
                || 0;=0A=
  },=0A=
=0A=
  realOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.scrollTop  || 0;=0A=
      valueL +=3D element.scrollLeft || 0;=0A=
      element =3D element.parentNode;=0A=
    } while (element);=0A=
    return [valueL, valueT];=0A=
  },=0A=
=0A=
  cumulativeOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
    return [valueL, valueT];=0A=
  },=0A=
=0A=
  positionedOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
      if (element) {=0A=
        p =3D Element.getStyle(element, 'position');=0A=
        if (p =3D=3D 'relative' || p =3D=3D 'absolute') break;=0A=
      }=0A=
    } while (element);=0A=
    return [valueL, valueT];=0A=
  },=0A=
=0A=
  offsetParent: function(element) {=0A=
    if (element.offsetParent) return element.offsetParent;=0A=
    if (element =3D=3D document.body) return element;=0A=
=0A=
    while ((element =3D element.parentNode) && element !=3D =
document.body)=0A=
      if (Element.getStyle(element, 'position') !=3D 'static')=0A=
        return element;=0A=
=0A=
    return document.body;=0A=
  },=0A=
=0A=
  // caches x/y coordinate pair to use with overlap=0A=
  within: function(element, x, y) {=0A=
    if (this.includeScrollOffsets)=0A=
      return this.withinIncludingScrolloffsets(element, x, y);=0A=
    this.xcomp =3D x;=0A=
    this.ycomp =3D y;=0A=
    this.offset =3D this.cumulativeOffset(element);=0A=
=0A=
    return (y >=3D this.offset[1] &&=0A=
            y <  this.offset[1] + element.offsetHeight &&=0A=
            x >=3D this.offset[0] &&=0A=
            x <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  withinIncludingScrolloffsets: function(element, x, y) {=0A=
    var offsetcache =3D this.realOffset(element);=0A=
=0A=
    this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A=
    this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A=
    this.offset =3D this.cumulativeOffset(element);=0A=
=0A=
    return (this.ycomp >=3D this.offset[1] &&=0A=
            this.ycomp <  this.offset[1] + element.offsetHeight &&=0A=
            this.xcomp >=3D this.offset[0] &&=0A=
            this.xcomp <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  // within must be called directly before=0A=
  overlap: function(mode, element) {=0A=
    if (!mode) return 0;=0A=
    if (mode =3D=3D 'vertical')=0A=
      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /=0A=
        element.offsetHeight;=0A=
    if (mode =3D=3D 'horizontal')=0A=
      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /=0A=
        element.offsetWidth;=0A=
  },=0A=
=0A=
  clone: function(source, target) {=0A=
    source =3D $(source);=0A=
    target =3D $(target);=0A=
    target.style.position =3D 'absolute';=0A=
    var offsets =3D this.cumulativeOffset(source);=0A=
    target.style.top    =3D offsets[1] + 'px';=0A=
    target.style.left   =3D offsets[0] + 'px';=0A=
    target.style.width  =3D source.offsetWidth + 'px';=0A=
    target.style.height =3D source.offsetHeight + 'px';=0A=
  },=0A=
=0A=
  page: function(forElement) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
=0A=
    var element =3D forElement;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
=0A=
      // Safari fix=0A=
      if (element.offsetParent=3D=3Ddocument.body)=0A=
        if (Element.getStyle(element,'position')=3D=3D'absolute') break;=0A=
=0A=
    } while (element =3D element.offsetParent);=0A=
=0A=
    element =3D forElement;=0A=
    do {=0A=
      valueT -=3D element.scrollTop  || 0;=0A=
      valueL -=3D element.scrollLeft || 0;=0A=
    } while (element =3D element.parentNode);=0A=
=0A=
    return [valueL, valueT];=0A=
  },=0A=
=0A=
  clone: function(source, target) {=0A=
    var options =3D Object.extend({=0A=
      setLeft:    true,=0A=
      setTop:     true,=0A=
      setWidth:   true,=0A=
      setHeight:  true,=0A=
      offsetTop:  0,=0A=
      offsetLeft: 0=0A=
    }, arguments[2] || {})=0A=
=0A=
    // find page position of source=0A=
    source =3D $(source);=0A=
    var p =3D Position.page(source);=0A=
=0A=
    // find coordinate system to use=0A=
    target =3D $(target);=0A=
    var delta =3D [0, 0];=0A=
    var parent =3D null;=0A=
    // delta [0,0] will do fine with position: fixed elements,=0A=
    // position:absolute needs offsetParent deltas=0A=
    if (Element.getStyle(target,'position') =3D=3D 'absolute') {=0A=
      parent =3D Position.offsetParent(target);=0A=
      delta =3D Position.page(parent);=0A=
    }=0A=
=0A=
    // correct by body offsets (fixes Safari)=0A=
    if (parent =3D=3D document.body) {=0A=
      delta[0] -=3D document.body.offsetLeft;=0A=
      delta[1] -=3D document.body.offsetTop;=0A=
    }=0A=
=0A=
    // set position=0A=
    if(options.setLeft)   target.style.left  =3D (p[0] - delta[0] + =
options.offsetLeft) + 'px';=0A=
    if(options.setTop)    target.style.top   =3D (p[1] - delta[1] + =
options.offsetTop) + 'px';=0A=
    if(options.setWidth)  target.style.width =3D source.offsetWidth + =
'px';=0A=
    if(options.setHeight) target.style.height =3D source.offsetHeight + =
'px';=0A=
  },=0A=
=0A=
  absolutize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.style.position =3D=3D 'absolute') return;=0A=
    Position.prepare();=0A=
=0A=
    var offsets =3D Position.positionedOffset(element);=0A=
    var top     =3D offsets[1];=0A=
    var left    =3D offsets[0];=0A=
    var width   =3D element.clientWidth;=0A=
    var height  =3D element.clientHeight;=0A=
=0A=
    element._originalLeft   =3D left - parseFloat(element.style.left  || =
0);=0A=
    element._originalTop    =3D top  - parseFloat(element.style.top || =
0);=0A=
    element._originalWidth  =3D element.style.width;=0A=
    element._originalHeight =3D element.style.height;=0A=
=0A=
    element.style.position =3D 'absolute';=0A=
    element.style.top    =3D top + 'px';;=0A=
    element.style.left   =3D left + 'px';;=0A=
    element.style.width  =3D width + 'px';;=0A=
    element.style.height =3D height + 'px';;=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.style.position =3D=3D 'relative') return;=0A=
    Position.prepare();=0A=
=0A=
    element.style.position =3D 'relative';=0A=
    var top  =3D parseFloat(element.style.top  || 0) - =
(element._originalTop || 0);=0A=
    var left =3D parseFloat(element.style.left || 0) - =
(element._originalLeft || 0);=0A=
=0A=
    element.style.top    =3D top + 'px';=0A=
    element.style.left   =3D left + 'px';=0A=
    element.style.height =3D element._originalHeight;=0A=
    element.style.width  =3D element._originalWidth;=0A=
  }=0A=
}=0A=
=0A=
// Safari returns margins on body which is incorrect if the child is =
absolutely=0A=
// positioned.  For performance reasons, redefine =
Position.cumulativeOffset for=0A=
// KHTML/WebKit only.=0A=
if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {=0A=
  Position.cumulativeOffset =3D function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      if (element.offsetParent =3D=3D document.body)=0A=
        if (Element.getStyle(element, 'position') =3D=3D 'absolute') =
break;=0A=
=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
=0A=
    return [valueL, valueT];=0A=
  }=0A=
}
------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mobhappy.com/blog1/wp-content/themes/k2/js/effects.js.php

// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, =
http://mir.aculo.us)=0A=
// Contributors:=0A=
//  Justin Palmer (http://encytemedia.com/)=0A=
//  Mark Pilgrim (http://diveintomark.org/)=0A=
//  Martin Bialasinki=0A=
// =0A=
// See scriptaculous.js for full license.  =0A=
=0A=
/* ------------- element ext -------------- */  =0A=
 =0A=
// converts rgb() and #xxx to #xxxxxx format,  =0A=
// returns self (or first argument) if not convertable  =0A=
String.prototype.parseColor =3D function() {  =0A=
  var color =3D '#';  =0A=
  if(this.slice(0,4) =3D=3D 'rgb(') {  =0A=
    var cols =3D this.slice(4,this.length-1).split(',');  =0A=
    var i=3D0; do { color +=3D parseInt(cols[i]).toColorPart() } while =
(++i<3);  =0A=
  } else {  =0A=
    if(this.slice(0,1) =3D=3D '#') {  =0A=
      if(this.length=3D=3D4) for(var i=3D1;i<4;i++) color +=3D =
(this.charAt(i) + this.charAt(i)).toLowerCase();  =0A=
      if(this.length=3D=3D7) color =3D this.toLowerCase();  =0A=
    }  =0A=
  }  =0A=
  return(color.length=3D=3D7 ? color : (arguments[0] || this));  =0A=
}=0A=
=0A=
Element.collectTextNodes =3D function(element) {  =0A=
  return $A($(element).childNodes).collect( function(node) {=0A=
    return (node.nodeType=3D=3D3 ? node.nodeValue : =0A=
      (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));=0A=
  }).flatten().join('');=0A=
}=0A=
=0A=
Element.collectTextNodesIgnoreClass =3D function(element, className) {  =0A=
  return $A($(element).childNodes).collect( function(node) {=0A=
    return (node.nodeType=3D=3D3 ? node.nodeValue : =0A=
      ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? =0A=
        Element.collectTextNodes(node) : ''));=0A=
  }).flatten().join('');=0A=
}=0A=
=0A=
Element.setStyle =3D function(element, style) {=0A=
  element =3D $(element);=0A=
  for(k in style) element.style[k.camelize()] =3D style[k];=0A=
}=0A=
=0A=
Element.setContentZoom =3D function(element, percent) {  =0A=
  Element.setStyle(element, {fontSize: (percent/100) + 'em'});   =0A=
  if(navigator.appVersion.indexOf('AppleWebKit')>0) =
window.scrollBy(0,0);  =0A=
}=0A=
=0A=
Element.getOpacity =3D function(element){  =0A=
  var opacity;=0A=
  if (opacity =3D Element.getStyle(element, 'opacity'))  =0A=
    return parseFloat(opacity);  =0A=
  if (opacity =3D (Element.getStyle(element, 'filter') || =
'').match(/alpha\(opacity=3D(.*)\)/))  =0A=
    if(opacity[1]) return parseFloat(opacity[1]) / 100;  =0A=
  return 1.0;  =0A=
}=0A=
=0A=
Element.setOpacity =3D function(element, value){  =0A=
  element=3D $(element);  =0A=
  if (value =3D=3D 1){=0A=
    Element.setStyle(element, { opacity: =0A=
      (/Gecko/.test(navigator.userAgent) && =
!/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? =0A=
      0.999999 : null });=0A=
    if(/MSIE/.test(navigator.userAgent))  =0A=
      Element.setStyle(element, {filter: =
Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')});  =0A=
  } else {  =0A=
    if(value < 0.00001) value =3D 0;  =0A=
    Element.setStyle(element, {opacity: value});=0A=
    if(/MSIE/.test(navigator.userAgent))  =0A=
     Element.setStyle(element, =0A=
       { filter: =
Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'') +=0A=
                 'alpha(opacity=3D'+value*100+')' });  =0A=
  }   =0A=
}  =0A=
 =0A=
Element.getInlineOpacity =3D function(element){  =0A=
  return $(element).style.opacity || '';=0A=
}  =0A=
=0A=
Element.childrenWithClassName =3D function(element, className) {  =0A=
  return $A($(element).getElementsByTagName('*')).select(=0A=
    function(c) { return Element.hasClassName(c, className) });=0A=
}=0A=
=0A=
Array.prototype.call =3D function() {=0A=
  var args =3D arguments;=0A=
  this.each(function(f){ f.apply(this, args) });=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Effect =3D {=0A=
  tagifyText: function(element) {=0A=
    var tagifyStyle =3D 'position:relative';=0A=
    if(/MSIE/.test(navigator.userAgent)) tagifyStyle +=3D ';zoom:1';=0A=
    element =3D $(element);=0A=
    $A(element.childNodes).each( function(child) {=0A=
      if(child.nodeType=3D=3D3) {=0A=
        child.nodeValue.toArray().each( function(character) {=0A=
          element.insertBefore(=0A=
            Builder.node('span',{style: tagifyStyle},=0A=
              character =3D=3D ' ' ? String.fromCharCode(160) : =
character), =0A=
              child);=0A=
        });=0A=
        Element.remove(child);=0A=
      }=0A=
    });=0A=
  },=0A=
  multiple: function(element, effect) {=0A=
    var elements;=0A=
    if(((typeof element =3D=3D 'object') || =0A=
        (typeof element =3D=3D 'function')) && =0A=
       (element.length))=0A=
      elements =3D element;=0A=
    else=0A=
      elements =3D $(element).childNodes;=0A=
      =0A=
    var options =3D Object.extend({=0A=
      speed: 0.1,=0A=
      delay: 0.0=0A=
    }, arguments[2] || {});=0A=
    var masterDelay =3D options.delay;=0A=
=0A=
    $A(elements).each( function(element, index) {=0A=
      new effect(element, Object.extend(options, { delay: index * =
options.speed + masterDelay }));=0A=
    });=0A=
  },=0A=
  PAIRS: {=0A=
    'slide':  ['SlideDown','SlideUp'],=0A=
    'blind':  ['BlindDown','BlindUp'],=0A=
    'appear': ['Appear','Fade']=0A=
  },=0A=
  toggle: function(element, effect) {=0A=
    element =3D $(element);=0A=
    effect =3D (effect || 'appear').toLowerCase();=0A=
    var options =3D Object.extend({=0A=
      queue: { position:'end', scope:(element.id || 'global') }=0A=
    }, arguments[2] || {});=0A=
    Effect[Element.visible(element) ? =0A=
      Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, =
options);=0A=
  }=0A=
};=0A=
=0A=
var Effect2 =3D Effect; // deprecated=0A=
=0A=
/* ------------- transitions ------------- */=0A=
=0A=
Effect.Transitions =3D {}=0A=
=0A=
Effect.Transitions.linear =3D function(pos) {=0A=
  return pos;=0A=
}=0A=
Effect.Transitions.sinoidal =3D function(pos) {=0A=
  return (-Math.cos(pos*Math.PI)/2) + 0.5;=0A=
}=0A=
Effect.Transitions.reverse  =3D function(pos) {=0A=
  return 1-pos;=0A=
}=0A=
Effect.Transitions.flicker =3D function(pos) {=0A=
  return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;=0A=
}=0A=
Effect.Transitions.wobble =3D function(pos) {=0A=
  return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;=0A=
}=0A=
Effect.Transitions.pulse =3D function(pos) {=0A=
  return (Math.floor(pos*10) % 2 =3D=3D 0 ? =0A=
    (pos*10-Math.floor(pos*10)) : 1-(pos*10-Math.floor(pos*10)));=0A=
}=0A=
Effect.Transitions.none =3D function(pos) {=0A=
  return 0;=0A=
}=0A=
Effect.Transitions.full =3D function(pos) {=0A=
  return 1;=0A=
}=0A=
=0A=
/* ------------- core effects ------------- */=0A=
=0A=
Effect.ScopedQueue =3D Class.create();=0A=
Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), {=0A=
  initialize: function() {=0A=
    this.effects  =3D [];=0A=
    this.interval =3D null;=0A=
  },=0A=
  _each: function(iterator) {=0A=
    this.effects._each(iterator);=0A=
  },=0A=
  add: function(effect) {=0A=
    var timestamp =3D new Date().getTime();=0A=
    =0A=
    var position =3D (typeof effect.options.queue =3D=3D 'string') ? =0A=
      effect.options.queue : effect.options.queue.position;=0A=
    =0A=
    switch(position) {=0A=
      case 'front':=0A=
        // move unstarted effects after this effect  =0A=
        this.effects.findAll(function(e){ return e.state=3D=3D'idle' =
}).each( function(e) {=0A=
            e.startOn  +=3D effect.finishOn;=0A=
            e.finishOn +=3D effect.finishOn;=0A=
          });=0A=
        break;=0A=
      case 'end':=0A=
        // start effect after last queued effect has finished=0A=
        timestamp =3D this.effects.pluck('finishOn').max() || timestamp;=0A=
        break;=0A=
    }=0A=
    =0A=
    effect.startOn  +=3D timestamp;=0A=
    effect.finishOn +=3D timestamp;=0A=
    this.effects.push(effect);=0A=
    if(!this.interval) =0A=
      this.interval =3D setInterval(this.loop.bind(this), 40);=0A=
  },=0A=
  remove: function(effect) {=0A=
    this.effects =3D this.effects.reject(function(e) { return =
e=3D=3Deffect });=0A=
    if(this.effects.length =3D=3D 0) {=0A=
      clearInterval(this.interval);=0A=
      this.interval =3D null;=0A=
    }=0A=
  },=0A=
  loop: function() {=0A=
    var timePos =3D new Date().getTime();=0A=
    this.effects.invoke('loop', timePos);=0A=
  }=0A=
});=0A=
=0A=
Effect.Queues =3D {=0A=
  instances: $H(),=0A=
  get: function(queueName) {=0A=
    if(typeof queueName !=3D 'string') return queueName;=0A=
    =0A=
    if(!this.instances[queueName])=0A=
      this.instances[queueName] =3D new Effect.ScopedQueue();=0A=
      =0A=
    return this.instances[queueName];=0A=
  }=0A=
}=0A=
Effect.Queue =3D Effect.Queues.get('global');=0A=
=0A=
Effect.DefaultOptions =3D {=0A=
  transition: Effect.Transitions.sinoidal,=0A=
  duration:   1.0,   // seconds=0A=
  fps:        25.0,  // max. 25fps due to Effect.Queue implementation=0A=
  sync:       false, // true for combining=0A=
  from:       0.0,=0A=
  to:         1.0,=0A=
  delay:      0.0,=0A=
  queue:      'parallel'=0A=
}=0A=
=0A=
Effect.Base =3D function() {};=0A=
Effect.Base.prototype =3D {=0A=
  position: null,=0A=
  start: function(options) {=0A=
    this.options      =3D =
Object.extend(Object.extend({},Effect.DefaultOptions), options || {});=0A=
    this.currentFrame =3D 0;=0A=
    this.state        =3D 'idle';=0A=
    this.startOn      =3D this.options.delay*1000;=0A=
    this.finishOn     =3D this.startOn + (this.options.duration*1000);=0A=
    this.event('beforeStart');=0A=
    if(!this.options.sync)=0A=
      Effect.Queues.get(typeof this.options.queue =3D=3D 'string' ? =0A=
        'global' : this.options.queue.scope).add(this);=0A=
  },=0A=
  loop: function(timePos) {=0A=
    if(timePos >=3D this.startOn) {=0A=
      if(timePos >=3D this.finishOn) {=0A=
        this.render(1.0);=0A=
        this.cancel();=0A=
        this.event('beforeFinish');=0A=
        if(this.finish) this.finish(); =0A=
        this.event('afterFinish');=0A=
        return;  =0A=
      }=0A=
      var pos   =3D (timePos - this.startOn) / (this.finishOn - =
this.startOn);=0A=
      var frame =3D Math.round(pos * this.options.fps * =
this.options.duration);=0A=
      if(frame > this.currentFrame) {=0A=
        this.render(pos);=0A=
        this.currentFrame =3D frame;=0A=
      }=0A=
    }=0A=
  },=0A=
  render: function(pos) {=0A=
    if(this.state =3D=3D 'idle') {=0A=
      this.state =3D 'running';=0A=
      this.event('beforeSetup');=0A=
      if(this.setup) this.setup();=0A=
      this.event('afterSetup');=0A=
    }=0A=
    if(this.state =3D=3D 'running') {=0A=
      if(this.options.transition) pos =3D this.options.transition(pos);=0A=
      pos *=3D (this.options.to-this.options.from);=0A=
      pos +=3D this.options.from;=0A=
      this.position =3D pos;=0A=
      this.event('beforeUpdate');=0A=
      if(this.update) this.update(pos);=0A=
      this.event('afterUpdate');=0A=
    }=0A=
  },=0A=
  cancel: function() {=0A=
    if(!this.options.sync)=0A=
      Effect.Queues.get(typeof this.options.queue =3D=3D 'string' ? =0A=
        'global' : this.options.queue.scope).remove(this);=0A=
    this.state =3D 'finished';=0A=
  },=0A=
  event: function(eventName) {=0A=
    if(this.options[eventName + 'Internal']) this.options[eventName + =
'Internal'](this);=0A=
    if(this.options[eventName]) this.options[eventName](this);=0A=
  },=0A=
  inspect: function() {=0A=
    return '#<Effect:' + $H(this).inspect() + ',options:' + =
$H(this.options).inspect() + '>';=0A=
  }=0A=
}=0A=
=0A=
Effect.Parallel =3D Class.create();=0A=
Object.extend(Object.extend(Effect.Parallel.prototype, =
Effect.Base.prototype), {=0A=
  initialize: function(effects) {=0A=
    this.effects =3D effects || [];=0A=
    this.start(arguments[1]);=0A=
  },=0A=
  update: function(position) {=0A=
    this.effects.invoke('render', position);=0A=
  },=0A=
  finish: function(position) {=0A=
    this.effects.each( function(effect) {=0A=
      effect.render(1.0);=0A=
      effect.cancel();=0A=
      effect.event('beforeFinish');=0A=
      if(effect.finish) effect.finish(position);=0A=
      effect.event('afterFinish');=0A=
    });=0A=
  }=0A=
});=0A=
=0A=
Effect.Opacity =3D Class.create();=0A=
Object.extend(Object.extend(Effect.Opacity.prototype, =
Effect.Base.prototype), {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
    // make this work on IE on elements without 'layout'=0A=
    if(/MSIE/.test(navigator.userAgent) && (!this.element.hasLayout))=0A=
      Element.setStyle(this.element, {zoom: 1});=0A=
    var options =3D Object.extend({=0A=
      from: Element.getOpacity(this.element) || 0.0,=0A=
      to:   1.0=0A=
    }, arguments[1] || {});=0A=
    this.start(options);=0A=
  },=0A=
  update: function(position) {=0A=
    Element.setOpacity(this.element, position);=0A=
  }=0A=
});=0A=
=0A=
Effect.Move =3D Class.create();=0A=
Object.extend(Object.extend(Effect.Move.prototype, =
Effect.Base.prototype), {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
    var options =3D Object.extend({=0A=
      x:    0,=0A=
      y:    0,=0A=
      mode: 'relative'=0A=
    }, arguments[1] || {});=0A=
    this.start(options);=0A=
  },=0A=
  setup: function() {=0A=
    // Bug in Opera: Opera returns the "real" position of a static =
element or=0A=
    // relative element that does not have top/left explicitly set.=0A=
    // =3D=3D> Always set top and left for position relative elements in =
your stylesheets =0A=
    // (to 0 if you do not need them) =0A=
    Element.makePositioned(this.element);=0A=
    this.originalLeft =3D =
parseFloat(Element.getStyle(this.element,'left') || '0');=0A=
    this.originalTop  =3D =
parseFloat(Element.getStyle(this.element,'top')  || '0');=0A=
    if(this.options.mode =3D=3D 'absolute') {=0A=
      // absolute movement, so we need to calc deltaX and deltaY=0A=
      this.options.x =3D this.options.x - this.originalLeft;=0A=
      this.options.y =3D this.options.y - this.originalTop;=0A=
    }=0A=
  },=0A=
  update: function(position) {=0A=
    Element.setStyle(this.element, {=0A=
      left: this.options.x  * position + this.originalLeft + 'px',=0A=
      top:  this.options.y  * position + this.originalTop  + 'px'=0A=
    });=0A=
  }=0A=
});=0A=
=0A=
// for backwards compatibility=0A=
Effect.MoveBy =3D function(element, toTop, toLeft) {=0A=
  return new Effect.Move(element, =0A=
    Object.extend({ x: toLeft, y: toTop }, arguments[3] || {}));=0A=
};=0A=
=0A=
Effect.Scale =3D Class.create();=0A=
Object.extend(Object.extend(Effect.Scale.prototype, =
Effect.Base.prototype), {=0A=
  initialize: function(element, percent) {=0A=
    this.element =3D $(element)=0A=
    var options =3D Object.extend({=0A=
      scaleX: true,=0A=
      scaleY: true,=0A=
      scaleContent: true,=0A=
      scaleFromCenter: false,=0A=
      scaleMode: 'box',        // 'box' or 'contents' or {} with =
provided values=0A=
      scaleFrom: 100.0,=0A=
      scaleTo:   percent=0A=
    }, arguments[2] || {});=0A=
    this.start(options);=0A=
  },=0A=
  setup: function() {=0A=
    this.restoreAfterFinish =3D this.options.restoreAfterFinish || false;=0A=
    this.elementPositioning =3D =
Element.getStyle(this.element,'position');=0A=
    =0A=
    this.originalStyle =3D {};=0A=
    ['top','left','width','height','fontSize'].each( function(k) {=0A=
      this.originalStyle[k] =3D this.element.style[k];=0A=
    }.bind(this));=0A=
      =0A=
    this.originalTop  =3D this.element.offsetTop;=0A=
    this.originalLeft =3D this.element.offsetLeft;=0A=
    =0A=
    var fontSize =3D Element.getStyle(this.element,'font-size') || =
'100%';=0A=
    ['em','px','%'].each( function(fontSizeType) {=0A=
      if(fontSize.indexOf(fontSizeType)>0) {=0A=
        this.fontSize     =3D parseFloat(fontSize);=0A=
        this.fontSizeType =3D fontSizeType;=0A=
      }=0A=
    }.bind(this));=0A=
    =0A=
    this.factor =3D (this.options.scaleTo - this.options.scaleFrom)/100;=0A=
    =0A=
    this.dims =3D null;=0A=
    if(this.options.scaleMode=3D=3D'box')=0A=
      this.dims =3D [this.element.offsetHeight, =
this.element.offsetWidth];=0A=
    if(/^content/.test(this.options.scaleMode))=0A=
      this.dims =3D [this.element.scrollHeight, =
this.element.scrollWidth];=0A=
    if(!this.dims)=0A=
      this.dims =3D [this.options.scaleMode.originalHeight,=0A=
                   this.options.scaleMode.originalWidth];=0A=
  },=0A=
  update: function(position) {=0A=
    var currentScale =3D (this.options.scaleFrom/100.0) + (this.factor * =
position);=0A=
    if(this.options.scaleContent && this.fontSize)=0A=
      Element.setStyle(this.element, {fontSize: this.fontSize * =
currentScale + this.fontSizeType });=0A=
    this.setDimensions(this.dims[0] * currentScale, this.dims[1] * =
currentScale);=0A=
  },=0A=
  finish: function(position) {=0A=
    if (this.restoreAfterFinish) Element.setStyle(this.element, =
this.originalStyle);=0A=
  },=0A=
  setDimensions: function(height, width) {=0A=
    var d =3D {};=0A=
    if(this.options.scaleX) d.width =3D width + 'px';=0A=
    if(this.options.scaleY) d.height =3D height + 'px';=0A=
    if(this.options.scaleFromCenter) {=0A=
      var topd  =3D (height - this.dims[0])/2;=0A=
      var leftd =3D (width  - this.dims[1])/2;=0A=
      if(this.elementPositioning =3D=3D 'absolute') {=0A=
        if(this.options.scaleY) d.top =3D this.originalTop-topd + 'px';=0A=
        if(this.options.scaleX) d.left =3D this.originalLeft-leftd + =
'px';=0A=
      } else {=0A=
        if(this.options.scaleY) d.top =3D -topd + 'px';=0A=
        if(this.options.scaleX) d.left =3D -leftd + 'px';=0A=
      }=0A=
    }=0A=
    Element.setStyle(this.element, d);=0A=
  }=0A=
});=0A=
=0A=
Effect.Highlight =3D Class.create();=0A=
Object.extend(Object.extend(Effect.Highlight.prototype, =
Effect.Base.prototype), {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
    var options =3D Object.extend({ startcolor: '#ffff99' }, =
arguments[1] || {});=0A=
    this.start(options);=0A=
  },=0A=
  setup: function() {=0A=
    // Prevent executing on elements not in the layout flow=0A=
    if(Element.getStyle(this.element, 'display')=3D=3D'none') { =
this.cancel(); return; }=0A=
    // Disable background image during the effect=0A=
    this.oldStyle =3D {=0A=
      backgroundImage: Element.getStyle(this.element, =
'background-image') };=0A=
    Element.setStyle(this.element, {backgroundImage: 'none'});=0A=
    if(!this.options.endcolor)=0A=
      this.options.endcolor =3D Element.getStyle(this.element, =
'background-color').parseColor('#ffffff');=0A=
    if(!this.options.restorecolor)=0A=
      this.options.restorecolor =3D Element.getStyle(this.element, =
'background-color');=0A=
    // init color calculations=0A=
    this._base  =3D $R(0,2).map(function(i){ return =
parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));=0A=
    this._delta =3D $R(0,2).map(function(i){ return =
parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] =
}.bind(this));=0A=
  },=0A=
  update: function(position) {=0A=
    Element.setStyle(this.element,{backgroundColor: =
$R(0,2).inject('#',function(m,v,i){=0A=
      return =
m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); =
}.bind(this)) });=0A=
  },=0A=
  finish: function() {=0A=
    Element.setStyle(this.element, Object.extend(this.oldStyle, {=0A=
      backgroundColor: this.options.restorecolor=0A=
    }));=0A=
  }=0A=
});=0A=
=0A=
Effect.ScrollTo =3D Class.create();=0A=
Object.extend(Object.extend(Effect.ScrollTo.prototype, =
Effect.Base.prototype), {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
    this.start(arguments[1] || {});=0A=
  },=0A=
  setup: function() {=0A=
    Position.prepare();=0A=
    var offsets =3D Position.cumulativeOffset(this.element);=0A=
    if(this.options.offset) offsets[1] +=3D this.options.offset;=0A=
    var max =3D window.innerHeight ? =0A=
      window.height - window.innerHeight :=0A=
      document.body.scrollHeight - =0A=
        (document.documentElement.clientHeight ? =0A=
          document.documentElement.clientHeight : =
document.body.clientHeight);=0A=
    this.scrollStart =3D Position.deltaY;=0A=
    this.delta =3D (offsets[1] > max ? max : offsets[1]) - =
this.scrollStart;=0A=
  },=0A=
  update: function(position) {=0A=
    Position.prepare();=0A=
    window.scrollTo(Position.deltaX, =0A=
      this.scrollStart + (position*this.delta));=0A=
  }=0A=
});=0A=
=0A=
/* ------------- combination effects ------------- */=0A=
=0A=
Effect.Fade =3D function(element) {=0A=
  var oldOpacity =3D Element.getInlineOpacity(element);=0A=
  var options =3D Object.extend({=0A=
  from: Element.getOpacity(element) || 1.0,=0A=
  to:   0.0,=0A=
  afterFinishInternal: function(effect) { with(Element) { =0A=
    if(effect.options.to!=3D0) return;=0A=
    hide(effect.element);=0A=
    setStyle(effect.element, {opacity: oldOpacity}); }}=0A=
  }, arguments[1] || {});=0A=
  return new Effect.Opacity(element,options);=0A=
}=0A=
=0A=
Effect.Appear =3D function(element) {=0A=
  var options =3D Object.extend({=0A=
  from: (Element.getStyle(element, 'display') =3D=3D 'none' ? 0.0 : =
Element.getOpacity(element) || 0.0),=0A=
  to:   1.0,=0A=
  beforeSetup: function(effect) { with(Element) {=0A=
    setOpacity(effect.element, effect.options.from);=0A=
    show(effect.element); }}=0A=
  }, arguments[1] || {});=0A=
  return new Effect.Opacity(element,options);=0A=
}=0A=
=0A=
Effect.Puff =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldStyle =3D { opacity: Element.getInlineOpacity(element), =
position: Element.getStyle(element, 'position') };=0A=
  return new Effect.Parallel(=0A=
   [ new Effect.Scale(element, 200, =0A=
      { sync: true, scaleFromCenter: true, scaleContent: true, =
restoreAfterFinish: true }), =0A=
     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], =0A=
     Object.extend({ duration: 1.0, =0A=
      beforeSetupInternal: function(effect) { with(Element) {=0A=
        setStyle(effect.effects[0].element, {position: 'absolute'}); }},=0A=
      afterFinishInternal: function(effect) { with(Element) {=0A=
         hide(effect.effects[0].element);=0A=
         setStyle(effect.effects[0].element, oldStyle); }}=0A=
     }, arguments[1] || {})=0A=
   );=0A=
}=0A=
=0A=
Effect.BlindUp =3D function(element) {=0A=
  element =3D $(element);=0A=
  Element.makeClipping(element);=0A=
  return new Effect.Scale(element, 0, =0A=
    Object.extend({ scaleContent: false, =0A=
      scaleX: false, =0A=
      restoreAfterFinish: true,=0A=
      afterFinishInternal: function(effect) { with(Element) {=0A=
        [hide, undoClipping].call(effect.element); }} =0A=
    }, arguments[1] || {})=0A=
  );=0A=
}=0A=
=0A=
Effect.BlindDown =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldHeight =3D Element.getStyle(element, 'height');=0A=
  var elementDimensions =3D Element.getDimensions(element);=0A=
  return new Effect.Scale(element, 100, =0A=
    Object.extend({ scaleContent: false, =0A=
      scaleX: false,=0A=
      scaleFrom: 0,=0A=
      scaleMode: {originalHeight: elementDimensions.height, =
originalWidth: elementDimensions.width},=0A=
      restoreAfterFinish: true,=0A=
      afterSetup: function(effect) { with(Element) {=0A=
        makeClipping(effect.element);=0A=
        setStyle(effect.element, {height: '0px'});=0A=
        show(effect.element); =0A=
      }},  =0A=
      afterFinishInternal: function(effect) { with(Element) {=0A=
        undoClipping(effect.element);=0A=
        setStyle(effect.element, {height: oldHeight});=0A=
      }}=0A=
    }, arguments[1] || {})=0A=
  );=0A=
}=0A=
=0A=
Effect.SwitchOff =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldOpacity =3D Element.getInlineOpacity(element);=0A=
  return new Effect.Appear(element, { =0A=
    duration: 0.4,=0A=
    from: 0,=0A=
    transition: Effect.Transitions.flicker,=0A=
    afterFinishInternal: function(effect) {=0A=
      new Effect.Scale(effect.element, 1, { =0A=
        duration: 0.3, scaleFromCenter: true,=0A=
        scaleX: false, scaleContent: false, restoreAfterFinish: true,=0A=
        beforeSetup: function(effect) { with(Element) {=0A=
          [makePositioned,makeClipping].call(effect.element);=0A=
        }},=0A=
        afterFinishInternal: function(effect) { with(Element) {=0A=
          [hide,undoClipping,undoPositioned].call(effect.element);=0A=
          setStyle(effect.element, {opacity: oldOpacity});=0A=
        }}=0A=
      })=0A=
    }=0A=
  });=0A=
}=0A=
=0A=
Effect.DropOut =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldStyle =3D {=0A=
    top: Element.getStyle(element, 'top'),=0A=
    left: Element.getStyle(element, 'left'),=0A=
    opacity: Element.getInlineOpacity(element) };=0A=
  return new Effect.Parallel(=0A=
    [ new Effect.Move(element, {x: 0, y: 100, sync: true }), =0A=
      new Effect.Opacity(element, { sync: true, to: 0.0 }) ],=0A=
    Object.extend(=0A=
      { duration: 0.5,=0A=
        beforeSetup: function(effect) { with(Element) {=0A=
          makePositioned(effect.effects[0].element); }},=0A=
        afterFinishInternal: function(effect) { with(Element) {=0A=
          [hide, undoPositioned].call(effect.effects[0].element);=0A=
          setStyle(effect.effects[0].element, oldStyle); }} =0A=
      }, arguments[1] || {}));=0A=
}=0A=
=0A=
Effect.Shake =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldStyle =3D {=0A=
    top: Element.getStyle(element, 'top'),=0A=
    left: Element.getStyle(element, 'left') };=0A=
	  return new Effect.Move(element, =0A=
	    { x:  20, y: 0, duration: 0.05, afterFinishInternal: =
function(effect) {=0A=
	  new Effect.Move(effect.element,=0A=
	    { x: -40, y: 0, duration: 0.1,  afterFinishInternal: =
function(effect) {=0A=
	  new Effect.Move(effect.element,=0A=
	    { x:  40, y: 0, duration: 0.1,  afterFinishInternal: =
function(effect) {=0A=
	  new Effect.Move(effect.element,=0A=
	    { x: -40, y: 0, duration: 0.1,  afterFinishInternal: =
function(effect) {=0A=
	  new Effect.Move(effect.element,=0A=
	    { x:  40, y: 0, duration: 0.1,  afterFinishInternal: =
function(effect) {=0A=
	  new Effect.Move(effect.element,=0A=
	    { x: -20, y: 0, duration: 0.05, afterFinishInternal: =
function(effect) { with(Element) {=0A=
        undoPositioned(effect.element);=0A=
        setStyle(effect.element, oldStyle);=0A=
  }}}) }}) }}) }}) }}) }});=0A=
}=0A=
=0A=
Effect.SlideDown =3D function(element) {=0A=
  element =3D $(element);=0A=
  Element.cleanWhitespace(element);=0A=
  // SlideDown need to have the content of the element wrapped in a =
container element with fixed height!=0A=
  var oldInnerBottom =3D Element.getStyle(element.firstChild, 'bottom');=0A=
  var elementDimensions =3D Element.getDimensions(element);=0A=
  return new Effect.Scale(element, 100, Object.extend({ =0A=
    scaleContent: false, =0A=
    scaleX: false, =0A=
    scaleFrom: 0,=0A=
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: =
elementDimensions.width},=0A=
    restoreAfterFinish: true,=0A=
    afterSetup: function(effect) { with(Element) {=0A=
      makePositioned(effect.element);=0A=
      makePositioned(effect.element.firstChild);=0A=
      if(window.opera) setStyle(effect.element, {top: ''});=0A=
      makeClipping(effect.element);=0A=
      setStyle(effect.element, {height: '0px'});=0A=
      show(element); }},=0A=
    afterUpdateInternal: function(effect) { with(Element) {=0A=
      setStyle(effect.element.firstChild, {bottom:=0A=
        (effect.dims[0] - effect.element.clientHeight) + 'px' }); }},=0A=
    afterFinishInternal: function(effect) { with(Element) {=0A=
      undoClipping(effect.element); =0A=
      undoPositioned(effect.element.firstChild);=0A=
      undoPositioned(effect.element);=0A=
      setStyle(effect.element.firstChild, {bottom: oldInnerBottom}); }}=0A=
    }, arguments[1] || {})=0A=
  );=0A=
}=0A=
  =0A=
Effect.SlideUp =3D function(element) {=0A=
  element =3D $(element);=0A=
  Element.cleanWhitespace(element);=0A=
  var oldInnerBottom =3D Element.getStyle(element.firstChild, 'bottom');=0A=
  return new Effect.Scale(element, 0, =0A=
   Object.extend({ scaleContent: false, =0A=
    scaleX: false, =0A=
    scaleMode: 'box',=0A=
    scaleFrom: 100,=0A=
    restoreAfterFinish: true,=0A=
    beforeStartInternal: function(effect) { with(Element) {=0A=
      makePositioned(effect.element);=0A=
      makePositioned(effect.element.firstChild);=0A=
      if(window.opera) setStyle(effect.element, {top: ''});=0A=
      makeClipping(effect.element);=0A=
      show(element); }},  =0A=
    afterUpdateInternal: function(effect) { with(Element) {=0A=
      setStyle(effect.element.firstChild, {bottom:=0A=
        (effect.dims[0] - effect.element.clientHeight) + 'px' }); }},=0A=
    afterFinishInternal: function(effect) { with(Element) {=0A=
        [hide, undoClipping].call(effect.element); =0A=
        undoPositioned(effect.element.firstChild);=0A=
        undoPositioned(effect.element);=0A=
        setStyle(effect.element.firstChild, {bottom: oldInnerBottom}); }}=0A=
   }, arguments[1] || {})=0A=
  );=0A=
}=0A=
=0A=
// Bug in opera makes the TD containing this element expand for a =
instance after finish =0A=
Effect.Squish =3D function(element) {=0A=
  return new Effect.Scale(element, window.opera ? 1 : 0, =0A=
    { restoreAfterFinish: true,=0A=
      beforeSetup: function(effect) { with(Element) {=0A=
        makeClipping(effect.element); }},  =0A=
      afterFinishInternal: function(effect) { with(Element) {=0A=
        hide(effect.element); =0A=
        undoClipping(effect.element); }}=0A=
  });=0A=
}=0A=
=0A=
Effect.Grow =3D function(element) {=0A=
  element =3D $(element);=0A=
  var options =3D Object.extend({=0A=
    direction: 'center',=0A=
    moveTransistion: Effect.Transitions.sinoidal,=0A=
    scaleTransition: Effect.Transitions.sinoidal,=0A=
    opacityTransition: Effect.Transitions.full=0A=
  }, arguments[1] || {});=0A=
  var oldStyle =3D {=0A=
    top: element.style.top,=0A=
    left: element.style.left,=0A=
    height: element.style.height,=0A=
    width: element.style.width,=0A=
    opacity: Element.getInlineOpacity(element) };=0A=
=0A=
  var dims =3D Element.getDimensions(element);    =0A=
  var initialMoveX, initialMoveY;=0A=
  var moveX, moveY;=0A=
  =0A=
  switch (options.direction) {=0A=
    case 'top-left':=0A=
      initialMoveX =3D initialMoveY =3D moveX =3D moveY =3D 0; =0A=
      break;=0A=
    case 'top-right':=0A=
      initialMoveX =3D dims.width;=0A=
      initialMoveY =3D moveY =3D 0;=0A=
      moveX =3D -dims.width;=0A=
      break;=0A=
    case 'bottom-left':=0A=
      initialMoveX =3D moveX =3D 0;=0A=
      initialMoveY =3D dims.height;=0A=
      moveY =3D -dims.height;=0A=
      break;=0A=
    case 'bottom-right':=0A=
      initialMoveX =3D dims.width;=0A=
      initialMoveY =3D dims.height;=0A=
      moveX =3D -dims.width;=0A=
      moveY =3D -dims.height;=0A=
      break;=0A=
    case 'center':=0A=
      initialMoveX =3D dims.width / 2;=0A=
      initialMoveY =3D dims.height / 2;=0A=
      moveX =3D -dims.width / 2;=0A=
      moveY =3D -dims.height / 2;=0A=
      break;=0A=
  }=0A=
  =0A=
  return new Effect.Move(element, {=0A=
    x: initialMoveX,=0A=
    y: initialMoveY,=0A=
    duration: 0.01, =0A=
    beforeSetup: function(effect) { with(Element) {=0A=
      hide(effect.element);=0A=
      makeClipping(effect.element);=0A=
      makePositioned(effect.element);=0A=
    }},=0A=
    afterFinishInternal: function(effect) {=0A=
      new Effect.Parallel(=0A=
        [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, =
from: 0.0, transition: options.opacityTransition }),=0A=
          new Effect.Move(effect.element, { x: moveX, y: moveY, sync: =
true, transition: options.moveTransition }),=0A=
          new Effect.Scale(effect.element, 100, {=0A=
            scaleMode: { originalHeight: dims.height, originalWidth: =
dims.width }, =0A=
            sync: true, scaleFrom: window.opera ? 1 : 0, transition: =
options.scaleTransition, restoreAfterFinish: true})=0A=
        ], Object.extend({=0A=
             beforeSetup: function(effect) { with(Element) {=0A=
               setStyle(effect.effects[0].element, {height: '0px'});=0A=
               show(effect.effects[0].element); }},=0A=
             afterFinishInternal: function(effect) { with(Element) {=0A=
               [undoClipping, =
undoPositioned].call(effect.effects[0].element); =0A=
               setStyle(effect.effects[0].element, oldStyle); }}=0A=
           }, options)=0A=
      )=0A=
    }=0A=
  });=0A=
}=0A=
=0A=
Effect.Shrink =3D function(element) {=0A=
  element =3D $(element);=0A=
  var options =3D Object.extend({=0A=
    direction: 'center',=0A=
    moveTransistion: Effect.Transitions.sinoidal,=0A=
    scaleTransition: Effect.Transitions.sinoidal,=0A=
    opacityTransition: Effect.Transitions.none=0A=
  }, arguments[1] || {});=0A=
  var oldStyle =3D {=0A=
    top: element.style.top,=0A=
    left: element.style.left,=0A=
    height: element.style.height,=0A=
    width: element.style.width,=0A=
    opacity: Element.getInlineOpacity(element) };=0A=
=0A=
  var dims =3D Element.getDimensions(element);=0A=
  var moveX, moveY;=0A=
  =0A=
  switch (options.direction) {=0A=
    case 'top-left':=0A=
      moveX =3D moveY =3D 0;=0A=
      break;=0A=
    case 'top-right':=0A=
      moveX =3D dims.width;=0A=
      moveY =3D 0;=0A=
      break;=0A=
    case 'bottom-left':=0A=
      moveX =3D 0;=0A=
      moveY =3D dims.height;=0A=
      break;=0A=
    case 'bottom-right':=0A=
      moveX =3D dims.width;=0A=
      moveY =3D dims.height;=0A=
      break;=0A=
    case 'center':  =0A=
      moveX =3D dims.width / 2;=0A=
      moveY =3D dims.height / 2;=0A=
      break;=0A=
  }=0A=
  =0A=
  return new Effect.Parallel(=0A=
    [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, =
transition: options.opacityTransition }),=0A=
      new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, =
transition: options.scaleTransition, restoreAfterFinish: true}),=0A=
      new Effect.Move(element, { x: moveX, y: moveY, sync: true, =
transition: options.moveTransition })=0A=
    ], Object.extend({            =0A=
         beforeStartInternal: function(effect) { with(Element) {=0A=
           [makePositioned, =
makeClipping].call(effect.effects[0].element) }},=0A=
         afterFinishInternal: function(effect) { with(Element) {=0A=
           [hide, undoClipping, =
undoPositioned].call(effect.effects[0].element);=0A=
           setStyle(effect.effects[0].element, oldStyle); }}=0A=
       }, options)=0A=
  );=0A=
}=0A=
=0A=
Effect.Pulsate =3D function(element) {=0A=
  element =3D $(element);=0A=
  var options    =3D arguments[1] || {};=0A=
  var oldOpacity =3D Element.getInlineOpacity(element);=0A=
  var transition =3D options.transition || Effect.Transitions.sinoidal;=0A=
  var reverser   =3D function(pos){ return =
transition(1-Effect.Transitions.pulse(pos)) };=0A=
  reverser.bind(transition);=0A=
  return new Effect.Opacity(element, =0A=
    Object.extend(Object.extend({  duration: 3.0, from: 0,=0A=
      afterFinishInternal: function(effect) { =
Element.setStyle(effect.element, {opacity: oldOpacity}); }=0A=
    }, options), {transition: reverser}));=0A=
}=0A=
=0A=
Effect.Fold =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldStyle =3D {=0A=
    top: element.style.top,=0A=
    left: element.style.left,=0A=
    width: element.style.width,=0A=
    height: element.style.height };=0A=
  Element.makeClipping(element);=0A=
  return new Effect.Scale(element, 5, Object.extend({   =0A=
    scaleContent: false,=0A=
    scaleX: false,=0A=
    afterFinishInternal: function(effect) {=0A=
    new Effect.Scale(element, 1, { =0A=
      scaleContent: false, =0A=
      scaleY: false,=0A=
      afterFinishInternal: function(effect) { with(Element) {=0A=
        [hide, undoClipping].call(effect.element); =0A=
        setStyle(effect.element, oldStyle);=0A=
      }} });=0A=
  }}, arguments[1] || {}));=0A=
}=0A=
=0A=
Effect.PhaseIn =3D function(element) {=0A=
  element =3D $(element);=0A=
  new Effect.BlindDown(element, arguments[1] || {});=0A=
  new Effect.Appear(element, arguments[2] || arguments[1] || {});=0A=
}=0A=
=0A=
Effect.PhaseOut =3D function(element) {=0A=
  element =3D $(element);=0A=
  new Effect.Fade(element, arguments[1] || {});=0A=
  new Effect.BlindUp(element, arguments[2] || arguments[1] || {});=0A=
}=0A=
=0A=
Effect.Phase =3D function(element) {=0A=
  element =3D $(element);=0A=
  if (element.style.display =3D=3D 'none')=0A=
    new Effect.PhaseIn(element, arguments[1] || {}, arguments[2] || =
arguments[1] || {});=0A=
  else new Effect.PhaseOut(element, arguments[1] || {}, arguments[2] || =
arguments[1] || {});=0A=
}
------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mobhappy.com/blog1/wp-content/themes/k2/js/ajax_comments.js

function commentAdded(request) {=0A=
  new Effect.Appear($('commentlist').lastChild);=0A=
  $('comment').value =3D '';=0A=
  $('comment').focus();=0A=
}=0A=
=0A=
function failure(request) {=0A=
  $('error').innerHTML =3D request.responseText;=0A=
  new Effect.Highlight('error');=0A=
}=0A=
=0A=
function loading() {=0A=
  $('submit').disabled =3D true;=0A=
  $('comment').disabled =3D true;  =0A=
  Element.show('loading');=0A=
}=0A=
=0A=
function complete(request) {=0A=
  Element.hide('loading');=0A=
  Element.show('commentform');=0A=
  $('submit').disabled =3D false;  =0A=
=0A=
  if (request.status =3D=3D 200) {commentAdded()}=0A=
  else {failure(request)};=0A=
}=0A=

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mobhappy.com/blog1/wp-content/themes/k2/js/k2functions.js

function ShowUtils() {=0A=
	new Effect.Phase('authorinfo');=0A=
	$("showinfo").style.display =3D "none";=0A=
	$("hideinfo").style.display =3D "";=0A=
}=0A=
=0A=
function HideUtils() {=0A=
	new Effect.Phase('authorinfo');=0A=
	$("showinfo").style.display =3D "";=0A=
	$("hideinfo").style.display =3D "none";=0A=
}
------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ypn-js.overture.com/partner/js/ypn.js

// -- defaults --=0A=
ctxt_ad_interface_default   =3D =
'http://ypn-js.overture.com/d/search/p/ypn/jsads/';=0A=
ctxt_ad_width_default       =3D 468;=0A=
ctxt_ad_height_default      =3D 60;=0A=
ctxt_ad_partner_default     =3D 'empty_partner';=0A=
ctxt_ad_frameborder_default =3D 0;=0A=
=0A=
// -- making sure stuff is defined --=0A=
var w =3D window;=0A=
if (w.ctxt_ad_interface =3D=3D null) {=0A=
  ctxt_ad_interface =3D ctxt_ad_interface_default;=0A=
}=0A=
=0A=
if (w.ctxt_ad_display_unit =3D=3D null) {=0A=
    ctxt_ad_display_unit =3D 1;=0A=
} else {=0A=
    ctxt_ad_display_unit++;=0A=
}=0A=
=0A=
if (! (w.ctxt_ad_keywords || w.ctxt_ad_id)) {=0A=
  if (w.ctxt_ad_url =3D=3D null) {=0A=
    ctxt_ad_url =3D document.referrer;=0A=
=0A=
    // if we're in a frameset, let's get outer frame name=0A=
    if (top.location =3D=3D document.location) {=0A=
      ctxt_ad_url =3D document.location;=0A=
    }=0A=
  }=0A=
  ctxt_ad_url_encoded =3D escape(ctxt_ad_url);=0A=
  ctxt_ad_url_encoded =3D ctxt_ad_url_encoded.substring(0,1023);=0A=
  // chop off any truncated encoded item=0A=
  ctxt_ad_url_encoded =3D ctxt_ad_url_encoded.replace(/%[0-9]?$/, '');=0A=
}=0A=
=0A=
if (w.ctxt_ad_width =3D=3D null) {=0A=
  ctxt_ad_width =3D ctxt_ad_width_default;=0A=
}=0A=
=0A=
if (w.ctxt_ad_height =3D=3D null) {=0A=
  ctxt_ad_height =3D ctxt_ad_height_default;=0A=
}=0A=
=0A=
if (w.ctxt_ad_partner =3D=3D null) {=0A=
  ctxt_ad_partner =3D ctxt_ad_partner_default + '-' +=0A=
                    window.location.hostname +=0A=
                    '-' + ctxt_ad_width + 'x' + ctxt_ad_height;=0A=
}=0A=
=0A=
if (w.ctxt_ad_frameborder =3D=3D null) {=0A=
  ctxt_ad_frameborder =3D ctxt_ad_frameborder_default;=0A=
}=0A=
=0A=
if (w.ctxt_ad_cw) {=0A=
  if (w.ctxt_ad_cw.match(/[>''\s""]/)) {=0A=
    if (w.testing_cw) {=0A=
      alert("Your clickwrapper ["+w.ctxt_ad_cw+"] contains illegal =
characters. "+=0A=
            "Proceeding with the request without the clickwrapper.");=0A=
    }=0A=
    w.ctxt_ad_cw =3D null;=0A=
  } else {=0A=
    ctxt_ad_cw_encoded =3D escape(ctxt_ad_cw);=0A=
    ctxt_ad_cw_encoded =3D ctxt_ad_cw_encoded.substring(0,1023);=0A=
    // chop off any truncated encoded item=0A=
    ctxt_ad_cw_encoded =3D ctxt_ad_cw_encoded.replace(/%[0-9]?$/, '');=0A=
  }=0A=
}=0A=
=0A=
=0A=
// -- building the full request url --=0A=
ctxt_ad_interface_full =3D ctxt_ad_interface + '?' +=0A=
  'Partner=3D' + ctxt_ad_partner;=0A=
if (w.ctxt_ad_section) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&type=3D" + ctxt_ad_section;=0A=
} else {=0A=
  if (w.ctxt_ad_type) {=0A=
    ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
        "&type=3D" + ctxt_ad_type;=0A=
  }=0A=
}=0A=
if (w.ctxt_ad_id) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&ctxtId=3D" + escape(ctxt_ad_id);=0A=
}=0A=
if (w.ctxt_ad_keywords) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&ctxtKeywords=3D" + escape(ctxt_ad_keywords);=0A=
}=0A=
if (w.ctxt_ad_ie) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&keywordCharEnc=3D" + ctxt_ad_ie;=0A=
}=0A=
if (w.ctxt_ad_market) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&mkt=3D" + escape(ctxt_ad_market);=0A=
}=0A=
ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
  "&adwd=3D" + ctxt_ad_width;=0A=
ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
  "&adht=3D" + ctxt_ad_height;=0A=
if (! (w.ctxt_ad_keywords || w.ctxt_ad_id)) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&ctxtUrl=3D" + ctxt_ad_url_encoded;=0A=
  if (w.ctxt_ad_url_cat) {=0A=
    ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
      "&ctxtCat=3D" + escape(ctxt_ad_url_cat);=0A=
  }=0A=
}=0A=
if (w.ctxt_ad_oe) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&outputCharEnc=3D" + ctxt_ad_oe;=0A=
}=0A=
if (w.ctxt_ad_cw) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&cw=3D" + ctxt_ad_cw_encoded;=0A=
}=0A=
if (w.ctxt_ad_css) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&css_url=3D" + ctxt_ad_css;=0A=
}=0A=
if (w.ctxt_ad_newwin) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&tg=3D" + ctxt_ad_newwin;=0A=
}=0A=
if (w.ctxt_ad_sl) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&slt=3D" + ctxt_ad_sl;=0A=
}=0A=
if (w.ctxt_ad_position) { =0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full + =0A=
    "&adPos=3D" + ctxt_ad_position; =0A=
}=0A=
if (w.ctxt_ad_bg) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&bg=3D" + ctxt_ad_bg;=0A=
}=0A=
if (w.ctxt_ad_bc) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&bc=3D" + ctxt_ad_bc;=0A=
}=0A=
if (w.ctxt_ad_cc) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&cc=3D" + ctxt_ad_cc;=0A=
}=0A=
if (w.ctxt_ad_lc) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&lc=3D" + ctxt_ad_lc;=0A=
}=0A=
if (w.ctxt_ad_tc) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&tc=3D" + ctxt_ad_tc;=0A=
}=0A=
if (w.ctxt_ad_uc) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&uc=3D" + ctxt_ad_uc;=0A=
}=0A=
if (w.ctxt_ref_url) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&refUrl=3D" + ctxt_ref_url;=0A=
} =0A=
if (w.ctxt_ad_display_unit) {=0A=
  ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
    "&du=3D" + ctxt_ad_display_unit;=0A=
}=0A=
ctxt_ad_interface_full =3D ctxt_ad_interface_full +=0A=
  "&cb=3D" + (new Date()).getTime();=0A=
=0A=
=0A=
// -- writing out the iframe --=0A=
if (! w.ctxt_ad_brs) {=0A=
document.write(=0A=
  '<ifr' + 'ame' +=0A=
  ' src=3D' + ctxt_ad_interface_full +=0A=
  ' width=3D' + ctxt_ad_width +=0A=
  ' height=3D' + ctxt_ad_height +=0A=
  ' frameborder=3D' + ctxt_ad_frameborder +=0A=
  ' hspace=3D0' +=0A=
  ' vspace=3D0' +=0A=
  ' scrolling=3Dno' +=0A=
  ' marginwidth=3D0' +=0A=
  ' marginheight=3D0' +=0A=
  ' allowtransparency=3Dtrue' +=0A=
  ' name=3Diframe0></ifr' + 'ame>'=0A=
);=0A=
}=0A=
=0A=
// zeroing out for next call=0A=
ctxt_ad_interface   =3D null;=0A=
ctxt_ad_width       =3D null;=0A=
ctxt_ad_height      =3D null;=0A=
ctxt_ad_partner     =3D null;=0A=
ctxt_ad_section     =3D null;=0A=
ctxt_ad_type        =3D null;=0A=
ctxt_ad_url         =3D null;=0A=
ctxt_ad_url_cat     =3D null;=0A=
ctxt_ad_market      =3D null;=0A=
ctxt_ad_id          =3D null;=0A=
ctxt_ad_keywords    =3D null;=0A=
ctxt_ad_frameborder =3D null;=0A=
ctxt_ad_newwin      =3D null;=0A=
ctxt_ad_sl          =3D null;=0A=
ctxt_ad_cw          =3D null;=0A=
ctxt_ad_css         =3D null;=0A=
ctxt_ad_ie          =3D null;=0A=
ctxt_ad_oe          =3D null;=0A=
ctxt_ad_bg          =3D null;=0A=
ctxt_ad_bc          =3D null;=0A=
ctxt_ad_cc          =3D null;=0A=
ctxt_ad_tc          =3D null;=0A=
ctxt_ad_lc          =3D null;=0A=
ctxt_ad_uc          =3D null;=0A=
ctxt_ad_brs         =3D null;=0A=

------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://proxy.blogads.com/svttfmmcvdlmfzhnbjmdpn/mobhappy/feed.js

document.write('<div id=3D"adstrip"><script> function =
si(w){window.status=3Dw;return true;} function =
so(){window.status=3D\'\';return true;} </script><table =
class=3D"adstrip"><tr><td class=3D"adstrip_title"><span =
class=3D"adstrip_title">Blogads</span></td></tr><tr><td =
id=3D"adstrip_advertise" class=3D"adstrip_link"><img =
src=3D"http://stat.blogads.com/svttfmmcvdlmfzhnbjmdpn/mobhappy/p.gif" =
height=3D"1" width=3D"1" alt=3D"" /><a =
href=3D"http://www.blogads.com/svttfmmcvdlmfzhnbjmdpn/mobhappy/advertise"=
 class=3D"adstrip_link" target=3D"popUp">Advertise =
here</a></td></tr></table></div> ');
------=_NextPart_000_0022_01C670DF.EECDCB00
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://s16.sitemeter.com/js/counter.js?site=s16mobhappy

// Copyright (c)2006 Site Meter, Inc.=20
// <![CDATA[
var SiteMeter =3D
{
	init:function()
	{
		SiteMeter.CodeName =3D "s16mobhappy";
		SiteMeter.ServerName =3D "s16.sitemeter.com";	=09
		SiteMeter.SecurityCode =3D "";=09
		SiteMeter.IP =3D "80.189.174.113";=09
		SiteMeter.trackingImage =3D new Image();
	=09
		if (typeof(g_sLastCodeName) !=3D 'undefined')
			if (g_sLastCodeName =3D=3D "s16mobhappy")
				return;

		SiteMeter.onPageLoad();
//		if (!SiteMeter.addEvent( window, "load", SiteMeter.onPageLoad ))
//			SiteMeter.onPageLoad();

		SiteMeter.addEvent( window, "load", SiteMeter.trackOutClicks );
	},
=09
	trackOutClicks:function()
	{
		for(var i=3D0;i<document.links.length;i++)
		{
			SiteMeter.addEvent( document.links[i], "click", SiteMeter.onClick );
			SiteMeter.addEvent( document.links[i], "contextmenu", =
SiteMeter.onContextClick );		=09
		}
	=09
	},

	onPageLoad:function()
	{
		var newImage  =3D document.createElement("img");
		var newHref   =3D document.createElement("a")	=09
		var scriptRef =3D SiteMeter.getScriptElement();
	=09
		var today=3Dnew Date();
		var sTZO=3D(typeof(today.getTimezoneOffset)!=3D'undefined') ? =
today.getTimezoneOffset() : '';
	=09
		newHref.target =3D "_top";
		newHref.href =3D "http://www.sitemeter.com/stats.asp?site=3D" + =
SiteMeter.CodeName;
	=09
		newImage.border =3D "0";
		newImage.alt =3D "Site Meter";
	=09
		var sImage =3D "http://" + SiteMeter.ServerName + "/meter.asp?site=3D" =
+ SiteMeter.CodeName;=20
		sImage +=3D "&refer=3D"+SiteMeter.getReferral();
		if (SiteMeter.IP !=3D "")
			sImage +=3D "&ip=3D"+SiteMeter.IP;
		sImage +=3D "&w=3D"+window.screen.width;=20
		sImage +=3D "&h=3D"+window.screen.height;
		sImage +=3D "&clr=3D"+window.screen.colorDepth;
		sImage +=3D "&tzo=3D" + sTZO;
		sImage +=3D "&lang=3D"+escape(navigator.language ? navigator.language =
: navigator.userLanguage);
		if (SiteMeter.SecurityCode !=3D "")
			sImage +=3D "&sc=3D"+escape(SiteMeter.SecurityCode);
		sImage +=3D "&pg=3D"+escape(document.location);
		sImage +=3D "&js=3D1&rnd=3D"+Math.random();
	=09
		newImage.src =3D sImage;
		newHref.appendChild(newImage);
		var parentOfScript =3D SiteMeter.getParent( scriptRef );
	=09
		if (parentOfScript)
			parentOfScript.insertBefore(newHref,scriptRef);
		else
			SiteMeter.trackingImage.src =3D sImage;
	},
=09
	logEvent:function(sEvent, sText, sURL )
	{
		if (document.images && !SiteMeter.isLocalURL(sURL))
		{
			var sImg =3D "http://" + SiteMeter.ServerName + "/meter.asp?site=3D" =
+ SiteMeter.CodeName;=20
			sImg +=3D "&e=3D" + sEvent;
			sImg +=3D "&l=3D" + escape(sURL);
			sImg +=3D "&t=3D" + escape(sText);
			sImg +=3D "&pg=3D"+ escape(document.location);
			if (SiteMeter.SecurityCode !=3D "") sImg +=3D =
"&sc=3D"+escape(SiteMeter.SecurityCode);
			if (SiteMeter.IP !=3D "")	sImg +=3D "&ip=3D"+SiteMeter.IP;
			sImg +=3D "&rnd=3D"+Math.random();
			if (SiteMeter.trackingImage)
				SiteMeter.trackingImage.src =3D sImg;
		}
	},
=09
	trimFragment:function(sString)
	{
		return sString.indexOf("#")>0?sString.substring(0, =
sString.indexOf("#")):sString;
	},
=09
	isLocalURL:function(sURL)
	{
		return (SiteMeter.trimFragment(document.location.href) =3D=3D =
SiteMeter.trimFragment(sURL));
	},
=09
	getReferral:function()
	{
	 	var sRef=3D"";
		var g_d =3D document;
		if (typeof(g_frames) !=3D "undefined")
		if (g_frames)
			sRef=3Dtop.document.referrer;
		if ((sRef =3D=3D "") || (sRef =3D=3D "[unknown origin]") || (sRef =
=3D=3D "unknown") || (sRef =3D=3D "undefined"))
		if (document["parent"] !=3D null)=20
			if (parent["document"] !=3D null) // ACCESS ERROR HERE!
				if (parent.document["referrer"] !=3D null)=20
					if (typeof(parent.document) =3D=3D "object")
						sRef=3Dparent.document.referrer;=20
		if ((sRef =3D=3D "") || (sRef =3D=3D "[unknown origin]") || (sRef =
=3D=3D "unknown") || (sRef =3D=3D "undefined"))
		if (g_d["referrer"] !=3D null)=20
			sRef =3D g_d["referrer"];
		if ((sRef =3D=3D "[unknown origin]") || (sRef =3D=3D "unknown") || =
(sRef =3D=3D "undefined"))
			sRef =3D "";
		=09
		return escape(sRef);
	},
=09
	getParent:function(e)
	{
		if (!e)
			return null;
		else
			if (e.parentElement)=20
				return e.parentElement;		=09
			else=09
				if (e.parentNode)
					return e.parentNode;
				else
					return null;
	},
=09
	getTarget:function(e)
	{
		var targ=3Dnull;
		if (!e) var e =3D window.event;
		if (e.target)=20
			targ =3D e.target;
		else if (e.srcElement)=20
			targ =3D e.srcElement;
		if (targ.nodeType)=20
			if (targ.nodeType =3D=3D 3) // Safari bug
				targ =3D targ.parentNode;
		return targ;
	},
=09
	getScriptElement:function()
	{
		var refScript=3Dnull;
		refScript =3D document.getElementById( "SiteMeterScript" );
		if (refScript)
			return refScript;
		=09
		var pageScripts =3D document.getElementsByTagName("script");
		for(var i=3D0;i<pageScripts.length;i++)
		{
			if (pageScripts[i].src)
			{
				var sSource =3D pageScripts[i].src.toLowerCase();
				if (sSource.indexOf("site=3D" + SiteMeter.CodeName) > 0)
					return pageScripts[i];
			}
		}

		return null;
	},
=09
	elementText:function(e)
	{
		do
		{
			var sText =3D (e.text)?e.text:e.innerText;
			if (sText) return sText.substr(0,100);
			if (e.alt) return e.alt;
			if (e.src) return e.src;
			e =3D SiteMeter.getParent(e);
		}
		while (e);
		return "";
	},
=09
	elementURL:function(e)
	{
		do
		{
			if ((e.href) && (e.nodeName.toUpperCase() =3D=3D 'A')) return e.href;
			e =3D SiteMeter.getParent(e);
		}
		while (e);
		return "";
	},
=09
	onClick:function(e)
	{
		var target =3D SiteMeter.getTarget(e);
		SiteMeter.logEvent( "click", SiteMeter.elementText(target), =
SiteMeter.elementURL(target) );
	},
=09
	onContextClick:function(e)
	{
		var target =3D SiteMeter.getTarget(e);
		SiteMeter.logEvent( "context", SiteMeter.elementText(target), =
SiteMeter.elementURL(target) );
	},

	addEvent:function( obj, sEvent, func )
	{
		if (obj.addEventListener)
		    obj.addEventListener(sEvent, func, false);
		else=20
			if (obj.attachEvent)=09
			   obj.attachEvent( "on"+sEvent, func );
			else
				return false;
		return true;
	}

}

SiteMeter.init();

var g_sLastCodeName =3D "s16mobhappy";
// ]]>

------=_NextPart_000_0022_01C670DF.EECDCB00--
