From: "Saved by Windows Internet Explorer 8" Subject: About EADP :: UNT Emergency Administration and Planning Date: Tue, 7 Jul 2009 11:48:34 -0500 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0092_01C9FEF8.DB7F3020" X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18049 This is a multi-part message in MIME format. ------=_NextPart_000_0092_01C9FEF8.DB7F3020 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.padm.unt.edu/eadp/index.php/about =EF=BB=BF About EADP :: UNT Emergency Administration and = Planning

Skip=20 Navigation

University of North Texas

=20
PADM | MPA | CPM | PhD | A-Z =
University=20 of North Texas
Department of Public = Administration

About Us


Home : About = Us

About EADP

Established in 1983, the Emergency Administration and Planning = Program (EADP)=20 is the pioneer resident degree program in emergency management. Our = unique=20 degree has drawn students from Alaska, California, Florida, Kansas, = Louisiana,=20 New Hampshire, New Mexico, Ohio, Oregon, Pennsylvania, Washington, = Wyoming and=20 others. International students have come from Barbados, Canada, the = Dominican=20 Republic, Ethiopia, France, Germany, Japan, Nigeria, Sweden, and Taiwan. =

Since its founding, over 1000 students have earned the bachelor of = science=20 degree in Emergency Administration and Planning. Graduates have obtained = jobs=20 with the Federal Emergency Management Agency (FEMA), the Environmental=20 Protection Agency (EPA), American Red Cross National Headquarters, the = State of=20 Texas Division of Emergency Management, State of Tennessee Emergency = Management=20 Agency, Texas Instruments, Perot Systems, SAIA Motor Freight, CURA = Emergency=20 Services, local emergency management offices, local Red Cross Chapters, = etc. At=20 the international level, graduates work as disaster planners for the Red = Crescent in Qatar, flood plain managers in Bangladesh, and Red Cross=20 representatives in Kenya. Others have even become the directors of = emergency=20 management in Barbados and in Fiji.


XHTML / CSS2.0 / = Privacy Policy =
Copyright =C2=A9=20 2006-8 UNT PADM
For questions or comments, = please=20 contact us at padmweb@unt.edu=20
------=_NextPart_000_0092_01C9FEF8.DB7F3020 Content-Type: application/x-css Content-Transfer-Encoding: quoted-printable Content-Location: http://www.padm.unt.edu/eadp/common/style.css A { COLOR: #012052 } A:visited { COLOR: #012052 } A.ext:after { CONTENT: url(../img/a_ext.jpg) } BODY { MARGIN: 0px; FONT: 85% "Trebuchet MS"; BACKGROUND: = url(../img/body_bg.jpg) #012052 repeat-x 50% top } LABEL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 9em; PADDING-RIGHT: 0px; = DISPLAY: block; FLOAT: left; PADDING-TOP: 1px } #wrapper { BORDER-BOTTOM: black 2px solid; BORDER-LEFT: black 2px solid; MARGIN: = 0px auto 10px; WIDTH: 750px; BACKGROUND: url(../img/content_bg.jpg) = #ffffff repeat-y; BORDER-RIGHT: black 2px solid } #masthead { BORDER-BOTTOM: #808080 2px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; = PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #f5f5f5; = PADDING-TOP: 0px } #masthead SPAN { FONT-SIZE: 1.1em; FONT-WEIGHT: bold } UL#nav { TEXT-ALIGN: center; PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-LEFT: = 0px; WIDTH: 750px; PADDING-RIGHT: 0px; BACKGROUND: = url(../img/nav_li_bg.jpg) repeat-x 50% bottom; FONT-SIZE: 14px; = PADDING-TOP: 10px } UL#nav LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } UL#nav LI A { BORDER-BOTTOM: #8a2608 1px solid; BORDER-LEFT: #cf4116 1px solid; = PADDING-BOTTOM: 10px; MARGIN: 2px 0px; PADDING-LEFT: 22px; = PADDING-RIGHT: 22px; BACKGROUND: url(../img/nav_li_bg.jpg) repeat-x 50% = bottom; COLOR: white; BORDER-RIGHT: #8a2608 1px solid; TEXT-DECORATION: = none; PADDING-TOP: 10px } UL#nav LI A.current { BORDER-BOTTOM: white 1px solid } UL#nav LI A:hover { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: black 1px solid; = BACKGROUND: url(../img/nav_li_bg.jpg) repeat-x 50% top; BORDER-RIGHT: = #000000 1px solid } #mpa_link { BORDER-BOTTOM: #000000 3px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(../img/eadp.jpg) = #ffffff no-repeat; HEIGHT: 45px; PADDING-TOP: 0px } #mpa_link H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } #mpa_link A { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; TEXT-INDENT: = -1000em; DISPLAY: block; BORDER-TOP-STYLE: none; COLOR: #404040; = FONT-SIZE: 40px; BORDER-LEFT-STYLE: none } #mpa_link #homelink { HEIGHT: 45px } #hpic { BORDER-BOTTOM: #808080 3px solid; WIDTH: 750px; MARGIN-BOTTOM: 0px; = BACKGROUND: url(../../img/wooten3.jpg) no-repeat; HEIGHT: 175px; = BORDER-TOP: #000 4px solid } #content { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 5px; WIDTH: 530px; = PADDING-RIGHT: 5px; PADDING-TOP: 5px } HTML > #content UL { MARGIN: 0px 0px 0px 15px } #content LI { PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = LIST-STYLE-IMAGE: url(../img/li_bg.jpg) !important; PADDING-TOP: 0px } #content_large LI { PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = LIST-STYLE-IMAGE: url(../img/li_bg.jpg) !important; PADDING-TOP: 0px } #content H2 { BORDER-BOTTOM: #800000 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: = 10px; WIDTH: 350px; PADDING-RIGHT: 0px; DISPLAY: block; MARGIN-BOTTOM: = 5px; BACKGROUND: url(../img/content_h2_bg.jpg) repeat-y left 50%; COLOR: = #000000; FONT-SIZE: 16px; TEXT-DECORATION: none; PADDING-TOP: 0px } #content H2 A { BORDER-BOTTOM-STYLE: none; DISPLAY: block; COLOR: #059033 } #content H2 A:hover { COLOR: #000000 } #content H3 { MARGIN-BOTTOM: 5px; COLOR: #000000; FONT-SIZE: 1.1em; TEXT-DECORATION: = none } #content P { MARGIN-LEFT: 5px } UL { MARGIN-LEFT: 5px } FORM { MARGIN-LEFT: 5px } .breadcrumbs { BORDER-BOTTOM: grey 1px solid; PADDING-BOTTOM: 2px; MARGIN: 5px 0px 0px = 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 0.8em; = PADDING-TOP: 2px } #content #headline { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; WIDTH: 510px; = BORDER-TOP-STYLE: none; BACKGROUND: none transparent scroll repeat 0% = 0%; COLOR: #a22121; FONT-SIZE: 1.7em; BORDER-LEFT-STYLE: none } #content IMG.contentpic { BORDER-BOTTOM: #aeaeae 1px solid; BORDER-LEFT: #aeaeae 1px solid; = PADDING-BOTTOM: 2px; MARGIN: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; = BORDER-TOP: #aeaeae 1px solid; BORDER-RIGHT: #aeaeae 1px solid; = PADDING-TOP: 2px } #content IMG.right { FLOAT: right } #content IMG.left { FLOAT: left } .section H2 { FONT-SIZE: 1.1em } #sidebar { WIDTH: 185px; FLOAT: right } #sidebar A { BORDER-BOTTOM: #059033 1px solid; TEXT-ALIGN: right; PADDING-BOTTOM: = 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; = TEXT-DECORATION: none; PADDING-TOP: 5px } #sidebar A:hover { BACKGROUND: #dadada } #sidebar UL { PADDING-BOTTOM: 0px; MARGIN: 0px 10px 0px 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; PADDING-TOP: 0px } #sidebar LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; PADDING-TOP: 0px } #footer { MARGIN: 0px auto; WIDTH: 750px; COLOR: white; FONT-SIZE: 11px } #footer A { COLOR: white } A.rsslink { POSITION: absolute; TOP: 5px; RIGHT: 0px; TEXT-DECORATION: none } A.rsslink IMG { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE: none } DIV.questionmark { BORDER-BOTTOM: #aaaaaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: = #aaaaaa 1px solid; PADDING-BOTTOM: 10px; MARGIN: 10px auto 0px; = PADDING-LEFT: 60px; WIDTH: 300px; PADDING-RIGHT: 10px; BACKGROUND: = url(../img/questionmark.jpg) #eaeaea no-repeat left 50%; BORDER-TOP: = #aaaaaa 1px solid; BORDER-RIGHT: #aaaaaa 1px solid; PADDING-TOP: 10px } .error { BORDER-BOTTOM: red 1px solid; TEXT-ALIGN: center; BORDER-LEFT: red 1px = solid; PADDING-BOTTOM: 10px; MARGIN: 0px auto; PADDING-LEFT: 5px; WIDTH: = 400px; PADDING-RIGHT: 5px; COLOR: red; BORDER-TOP: red 1px solid; = BORDER-RIGHT: red 1px solid; PADDING-TOP: 10px } .hide { DISPLAY: none } .cf:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: = "." } .cf { DISPLAY: inline-block } * HTML .cf { HEIGHT: 1% } .cf { DISPLAY: block } H2#print { DISPLAY: none } ------=_NextPart_000_0092_01C9FEF8.DB7F3020 Content-Type: application/x-css Content-Transfer-Encoding: quoted-printable Content-Location: http://www.padm.unt.edu/eadp/common/print.css .hide { DISPLAY: none } .error { BORDER-BOTTOM: #dd1111 1px solid; TEXT-ALIGN: center; BORDER-LEFT: = #dd1111 1px solid; PADDING-BOTTOM: 5px; MARGIN: 10px auto; PADDING-LEFT: = 10px; WIDTH: 350px; PADDING-RIGHT: 10px; COLOR: #ff0000; BORDER-TOP: = #dd1111 1px solid; BORDER-RIGHT: #dd1111 1px solid; PADDING-TOP: 5px } A { BORDER-BOTTOM: #0b0bc1 1px dotted; COLOR: #0b0bc1; TEXT-DECORATION: = none } A:hover { COLOR: #000000 } BODY { BACKGROUND-IMAGE: none; BACKGROUND-COLOR: transparent; MARGIN: 0px; = BACKGROUND-ATTACHMENT: scroll; FONT: 90% "Helvetica",Arial,sans-serif; = BACKGROUND-POSITION: 0% 0% } P { LINE-HEIGHT: 1.3em } LI { LINE-HEIGHT: 1.3em } DIV { LINE-HEIGHT: 1.3em } LEGEND { FONT-WEIGHT: bold } FIELDSET { =09 } LABEL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 8em; PADDING-RIGHT: 0px; = DISPLAY: block; FLOAT: left; PADDING-TOP: 1px } #brand { DISPLAY: none } H2#print { MARGIN: 0px; FONT-SIZE: 20px } #header { BORDER-BOTTOM: #000000 1px solid; MARGIN: 0px auto 1px; WIDTH: 771px } #header FORM { DISPLAY: none } #header H1 A { LETTER-SPACING: 0.14em; COLOR: #000000; FONT-SIZE: 25px } #header .date { MARGIN: 0px 0px 0px 5px; COLOR: #ffffff; FONT-SIZE: 0.6em } #masthead { DISPLAY: none } #nav { DISPLAY: none } #sidebar { DISPLAY: none } #left_col { WIDTH: 100% } #pagetitle H1 { PADDING-BOTTOM: 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: = 1.7em; PADDING-TOP: 20px } #right_col { DISPLAY: none } #content { PADDING-BOTTOM: 5px; MARGIN-TOP: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } #content UL { =09 } #content H2 { BORDER-BOTTOM: #000000 2px solid; WIDTH: 350px; DISPLAY: block; = MARGIN-BOTTOM: 5px; FONT-SIZE: 1.1em; TEXT-DECORATION: none } #content H2 A { BORDER-BOTTOM-STYLE: none; DISPLAY: block } #footer { MARGIN: 2px auto; WIDTH: 775px; FONT-SIZE: 0.8em } .cf:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: = "." } .cf { DISPLAY: inline-block } * HTML .cf { HEIGHT: 1% } .cf { DISPLAY: block } .hp_pic2 { DISPLAY: none } ------=_NextPart_000_0092_01C9FEF8.DB7F3020 Content-Type: application/x-css Content-Transfer-Encoding: quoted-printable Content-Location: http://www.padm.unt.edu/eadp/common/_about.css .q { MARGIN: 0px 0px 4px 4px } .a { MARGIN: 4px 10px 20px 20px } .partner { MARGIN: 10px 0px 10px 25px } .partner H2 { BORDER-BOTTOM-STYLE: none !important; PADDING-BOTTOM: 0px !important; = BORDER-RIGHT-STYLE: none !important; MARGIN: 0px; PADDING-LEFT: 0px = !important; PADDING-RIGHT: 0px !important; BORDER-TOP-STYLE: none = !important; BACKGROUND: none transparent scroll repeat 0% 0%; = BORDER-LEFT-STYLE: none !important; PADDING-TOP: 0px !important } ------=_NextPart_000_0092_01C9FEF8.DB7F3020 Content-Type: application/x-js Content-Transfer-Encoding: quoted-printable Content-Location: http://www.padm.unt.edu/eadp/common/scripts/jquery.js /* prevent execution of jQuery if included more then once */=0A= if(typeof window.jQuery =3D=3D "undefined") {=0A= /*=0A= * jQuery 1.0.3 - New Wave Javascript=0A= *=0A= * Copyright (c) 2006 John Resig (jquery.com)=0A= * Dual licensed under the MIT (MIT-LICENSE.txt)=0A= * and GPL (GPL-LICENSE.txt) licenses.=0A= *=0A= * $Date: 2006-10-27 11:15:44 -0400 (Fri, 27 Oct 2006) $=0A= * $Rev: 501 $=0A= */=0A= =0A= // Global undefined variable=0A= window.undefined =3D window.undefined;=0A= var jQuery =3D function(a,c) {=0A= =0A= // Shortcut for document ready (because $(document).each() is silly)=0A= if ( a && typeof a =3D=3D "function" && jQuery.fn.ready )=0A= return jQuery(document).ready(a);=0A= =0A= // Make sure that a selection was provided=0A= a =3D a || jQuery.context || document;=0A= =0A= // Watch for when a jQuery object is passed as the selector=0A= if ( a.jquery )=0A= return jQuery( jQuery.merge( a, [] ) );=0A= =0A= // Watch for when a jQuery object is passed at the context=0A= if ( c && c.jquery )=0A= return jQuery( c ).find(a);=0A= =0A= // If the context is global, return a new object=0A= if ( window =3D=3D this )=0A= return new jQuery(a,c);=0A= =0A= // Handle HTML strings=0A= if ( a.constructor =3D=3D String ) {=0A= var m =3D /^[^<]*(<.+>)[^>]*$/.exec(a);=0A= if ( m ) a =3D jQuery.clean( [ m[1] ] );=0A= }=0A= =0A= // Watch for when an array is passed in=0A= this.get( a.constructor =3D=3D Array || a.length && !a.nodeType && a[0] = !=3D undefined && a[0].nodeType ?=0A= // Assume that it is an array of DOM Elements=0A= jQuery.merge( a, [] ) :=0A= =0A= // Find the matching elements and save them for later=0A= jQuery.find( a, c ) );=0A= =0A= // See if an extra function was provided=0A= var fn =3D arguments[ arguments.length - 1 ];=0A= =0A= // If so, execute it in context=0A= if ( fn && typeof fn =3D=3D "function" )=0A= this.each(fn);=0A= =0A= return this;=0A= };=0A= =0A= // Map over the $ in case of overwrite=0A= if ( typeof $ !=3D "undefined" )=0A= jQuery._$ =3D $;=0A= =0A= // Map the jQuery namespace to the '$' one=0A= var $ =3D jQuery;=0A= =0A= jQuery.fn =3D jQuery.prototype =3D {=0A= jquery: "1.0.3",=0A= =0A= size: function() {=0A= return this.length;=0A= },=0A= =0A= get: function( num ) {=0A= // Watch for when an array (of elements) is passed in=0A= if ( num && num.constructor =3D=3D Array ) {=0A= =0A= // Use a tricky hack to make the jQuery object=0A= // look and feel like an array=0A= this.length =3D 0;=0A= [].push.apply( this, num );=0A= =0A= return this;=0A= } else=0A= return num =3D=3D undefined ?=0A= =0A= // Return a 'clean' array=0A= jQuery.merge( this, [] ) :=0A= =0A= // Return just the object=0A= this[num];=0A= },=0A= each: function( fn, args ) {=0A= return jQuery.each( this, fn, args );=0A= },=0A= index: function( obj ) {=0A= var pos =3D -1;=0A= this.each(function(i){=0A= if ( this =3D=3D obj ) pos =3D i;=0A= });=0A= return pos;=0A= },=0A= =0A= attr: function( key, value, type ) {=0A= // Check to see if we're setting style values=0A= return key.constructor !=3D String || value !=3D undefined ?=0A= this.each(function(){=0A= // See if we're setting a hash of styles=0A= if ( value =3D=3D undefined )=0A= // Set all the styles=0A= for ( var prop in key )=0A= jQuery.attr(=0A= type ? this.style : this,=0A= prop, key[prop]=0A= );=0A= =0A= // See if we're setting a single key/value style=0A= else=0A= jQuery.attr(=0A= type ? this.style : this,=0A= key, value=0A= );=0A= }) :=0A= =0A= // Look for the case where we're accessing a style value=0A= jQuery[ type || "attr" ]( this[0], key );=0A= },=0A= =0A= css: function( key, value ) {=0A= return this.attr( key, value, "curCSS" );=0A= },=0A= text: function(e) {=0A= e =3D e || this;=0A= var t =3D "";=0A= for ( var j =3D 0; j < e.length; j++ ) {=0A= var r =3D e[j].childNodes;=0A= for ( var i =3D 0; i < r.length; i++ )=0A= if ( r[i].nodeType !=3D 8 )=0A= t +=3D r[i].nodeType !=3D 1 ?=0A= r[i].nodeValue : jQuery.fn.text([ r[i] ]);=0A= }=0A= return t;=0A= },=0A= =0A= wrap: function() {=0A= // The elements to wrap the target around=0A= var a =3D jQuery.clean(arguments);=0A= =0A= // Wrap each of the matched elements individually=0A= return this.each(function(){=0A= // Clone the structure that we're using to wrap=0A= var b =3D a[0].cloneNode(true);=0A= =0A= // Insert it before the element to be wrapped=0A= this.parentNode.insertBefore( b, this );=0A= =0A= // Find the deepest point in the wrap structure=0A= while ( b.firstChild )=0A= b =3D b.firstChild;=0A= =0A= // Move the matched element to within the wrap structure=0A= b.appendChild( this );=0A= });=0A= },=0A= =0A= append: function() {=0A= return this.domManip(arguments, true, 1, function(a){=0A= this.appendChild( a );=0A= });=0A= },=0A= =0A= prepend: function() {=0A= return this.domManip(arguments, true, -1, function(a){=0A= this.insertBefore( a, this.firstChild );=0A= });=0A= },=0A= =0A= before: function() {=0A= return this.domManip(arguments, false, 1, function(a){=0A= this.parentNode.insertBefore( a, this );=0A= });=0A= },=0A= =0A= after: function() {=0A= return this.domManip(arguments, false, -1, function(a){=0A= this.parentNode.insertBefore( a, this.nextSibling );=0A= });=0A= },=0A= end: function() {=0A= return this.get( this.stack.pop() );=0A= },=0A= find: function(t) {=0A= return this.pushStack( jQuery.map( this, function(a){=0A= return jQuery.find(t,a);=0A= }), arguments );=0A= },=0A= clone: function(deep) {=0A= return this.pushStack( jQuery.map( this, function(a){=0A= return a.cloneNode( deep !=3D undefined ? deep : true );=0A= }), arguments );=0A= },=0A= =0A= filter: function(t) {=0A= return this.pushStack(=0A= t.constructor =3D=3D Array &&=0A= jQuery.map(this,function(a){=0A= for ( var i =3D 0; i < t.length; i++ )=0A= if ( jQuery.filter(t[i],[a]).r.length )=0A= return a;=0A= return false;=0A= }) ||=0A= =0A= t.constructor =3D=3D Boolean &&=0A= ( t ? this.get() : [] ) ||=0A= =0A= typeof t =3D=3D "function" &&=0A= jQuery.grep( this, t ) ||=0A= =0A= jQuery.filter(t,this).r, arguments );=0A= },=0A= =0A= not: function(t) {=0A= return this.pushStack( t.constructor =3D=3D String ?=0A= jQuery.filter(t,this,false).r :=0A= jQuery.grep(this,function(a){ return a !=3D t; }), arguments );=0A= },=0A= =0A= add: function(t) {=0A= return this.pushStack( jQuery.merge( this, t.constructor =3D=3D String = ?=0A= jQuery.find(t) : t.constructor =3D=3D Array ? t : [t] ), arguments );=0A= },=0A= is: function(expr) {=0A= return expr ? jQuery.filter(expr,this).r.length > 0 : false;=0A= },=0A= domManip: function(args, table, dir, fn){=0A= var clone =3D this.size() > 1;=0A= var a =3D jQuery.clean(args);=0A= =0A= return this.each(function(){=0A= var obj =3D this;=0A= =0A= if ( table && this.nodeName.toUpperCase() =3D=3D "TABLE" && = a[0].nodeName.toUpperCase() !=3D "THEAD" ) {=0A= var tbody =3D this.getElementsByTagName("tbody");=0A= =0A= if ( !tbody.length ) {=0A= obj =3D document.createElement("tbody");=0A= this.appendChild( obj );=0A= } else=0A= obj =3D tbody[0];=0A= }=0A= =0A= for ( var i =3D ( dir < 0 ? a.length - 1 : 0 );=0A= i !=3D ( dir < 0 ? dir : a.length ); i +=3D dir ) {=0A= fn.apply( obj, [ clone ? a[i].cloneNode(true) : a[i] ] );=0A= }=0A= });=0A= },=0A= pushStack: function(a,args) {=0A= var fn =3D args && args[args.length-1];=0A= var fn2 =3D args && args[args.length-2];=0A= =0A= if ( fn && fn.constructor !=3D Function ) fn =3D null;=0A= if ( fn2 && fn2.constructor !=3D Function ) fn2 =3D null;=0A= =0A= if ( !fn ) {=0A= if ( !this.stack ) this.stack =3D [];=0A= this.stack.push( this.get() );=0A= this.get( a );=0A= } else {=0A= var old =3D this.get();=0A= this.get( a );=0A= =0A= if ( fn2 && a.length || !fn2 )=0A= this.each( fn2 || fn ).get( old );=0A= else=0A= this.get( old ).each( fn );=0A= }=0A= =0A= return this;=0A= }=0A= };=0A= =0A= jQuery.extend =3D jQuery.fn.extend =3D function(obj,prop) {=0A= // Watch for the case where null or undefined gets passed in by accident=0A= if ( arguments.length > 1 && (prop =3D=3D=3D null || prop =3D=3D = undefined) )=0A= return obj;=0A= =0A= // If no property object was provided, then we're extending jQuery=0A= if ( !prop ) { prop =3D obj; obj =3D this; }=0A= =0A= // Extend the base object=0A= for ( var i in prop ) obj[i] =3D prop[i];=0A= =0A= // Return the modified object=0A= return obj;=0A= };=0A= =0A= jQuery.extend({=0A= init: function(){=0A= jQuery.initDone =3D true;=0A= =0A= jQuery.each( jQuery.macros.axis, function(i,n){=0A= jQuery.fn[ i ] =3D function(a) {=0A= var ret =3D jQuery.map(this,n);=0A= if ( a && a.constructor =3D=3D String )=0A= ret =3D jQuery.filter(a,ret).r;=0A= return this.pushStack( ret, arguments );=0A= };=0A= });=0A= =0A= jQuery.each( jQuery.macros.to, function(i,n){=0A= jQuery.fn[ i ] =3D function(){=0A= var a =3D arguments;=0A= return this.each(function(){=0A= for ( var j =3D 0; j < a.length; j++ )=0A= jQuery(a[j])[n]( this );=0A= });=0A= };=0A= });=0A= =0A= jQuery.each( jQuery.macros.each, function(i,n){=0A= jQuery.fn[ i ] =3D function() {=0A= return this.each( n, arguments );=0A= };=0A= });=0A= =0A= jQuery.each( jQuery.macros.filter, function(i,n){=0A= jQuery.fn[ n ] =3D function(num,fn) {=0A= return this.filter( ":" + n + "(" + num + ")", fn );=0A= };=0A= });=0A= =0A= jQuery.each( jQuery.macros.attr, function(i,n){=0A= n =3D n || i;=0A= jQuery.fn[ i ] =3D function(h) {=0A= return h =3D=3D undefined ?=0A= this.length ? this[0][n] : null :=0A= this.attr( n, h );=0A= };=0A= });=0A= =0A= jQuery.each( jQuery.macros.css, function(i,n){=0A= jQuery.fn[ n ] =3D function(h) {=0A= return h =3D=3D undefined ?=0A= ( this.length ? jQuery.css( this[0], n ) : null ) :=0A= this.css( n, h );=0A= };=0A= });=0A= =0A= },=0A= each: function( obj, fn, args ) {=0A= if ( obj.length =3D=3D undefined )=0A= for ( var i in obj )=0A= fn.apply( obj[i], args || [i, obj[i]] );=0A= else=0A= for ( var i =3D 0; i < obj.length; i++ )=0A= if ( fn.apply( obj[i], args || [i, obj[i]] ) =3D=3D=3D false ) break;=0A= return obj;=0A= },=0A= =0A= className: {=0A= add: function(o,c){=0A= if (jQuery.className.has(o,c)) return;=0A= o.className +=3D ( o.className ? " " : "" ) + c;=0A= },=0A= remove: function(o,c){=0A= if( !c ) {=0A= o.className =3D "";=0A= } else {=0A= var classes =3D o.className.split(" ");=0A= for(var i=3D0; i", ""];=0A= else if ( !s.indexOf("", ""];=0A= else if ( !s.indexOf("", ""]; // tbody auto-inserted=0A= else if ( !s.indexOf("", ""];=0A= =0A= // Go to html and back, then peel off extra wrappers=0A= div.innerHTML =3D wrap[1] + s + wrap[2];=0A= while ( wrap[0]-- ) div =3D div.firstChild;=0A= =0A= // Have to loop through the childNodes here to =0A= // prevent a Safari crash with text nodes and /n characters=0A= for ( var j =3D 0; j < div.childNodes.length; j++ )=0A= r.push( div.childNodes[j] );=0A= } =0A= else if ( arg.length !=3D undefined && !arg.nodeType ) // Handles = Array, jQuery, DOM NodeList collections=0A= for ( var n =3D 0; n < arg.length; n++ )=0A= r.push(arg[n]);=0A= else=0A= r.push( arg.nodeType ? arg : document.createTextNode(arg.toString()) = );=0A= }=0A= =0A= return r;=0A= },=0A= =0A= expr: {=0A= "": "m[2]=3D=3D '*'||a.nodeName.toUpperCase()=3D=3Dm[2].toUpperCase()",=0A= "#": "a.getAttribute('id')&&a.getAttribute('id')=3D=3Dm[2]",=0A= ":": {=0A= // Position Checks=0A= lt: "im[3]-0",=0A= nth: "m[3]-0=3D=3Di",=0A= eq: "m[3]-0=3D=3Di",=0A= first: "i=3D=3D0",=0A= last: "i=3D=3Dr.length-1",=0A= even: "i%2=3D=3D0",=0A= odd: "i%2",=0A= =0A= // Child Checks=0A= "nth-child": "jQuery.sibling(a,m[3]).cur",=0A= "first-child": "jQuery.sibling(a,0).cur",=0A= "last-child": "jQuery.sibling(a,0).last",=0A= "only-child": "jQuery.sibling(a).length=3D=3D1",=0A= =0A= // Parent Checks=0A= parent: "a.childNodes.length",=0A= empty: "!a.childNodes.length",=0A= =0A= // Text Check=0A= contains: "jQuery.fn.text.apply([a]).indexOf(m[3])>=3D0",=0A= =0A= // Visibility=0A= visible: = "a.type!=3D'hidden'&&jQuery.css(a,'display')!=3D'none'&&jQuery.css(a,'vis= ibility')!=3D'hidden'",=0A= hidden: = "a.type=3D=3D'hidden'||jQuery.css(a,'display')=3D=3D'none'||jQuery.css(a,= 'visibility')=3D=3D'hidden'",=0A= =0A= // Form attributes=0A= enabled: "!a.disabled",=0A= disabled: "a.disabled",=0A= checked: "a.checked",=0A= selected: "a.selected || jQuery.attr(a, 'selected')",=0A= =0A= // Form elements=0A= text: "a.type=3D=3D'text'",=0A= radio: "a.type=3D=3D'radio'",=0A= checkbox: "a.type=3D=3D'checkbox'",=0A= file: "a.type=3D=3D'file'",=0A= password: "a.type=3D=3D'password'",=0A= submit: "a.type=3D=3D'submit'",=0A= image: "a.type=3D=3D'image'",=0A= reset: "a.type=3D=3D'reset'",=0A= button: "a.type=3D=3D'button'",=0A= input: = "a.nodeName.toLowerCase().match(/input|select|textarea|button/)"=0A= },=0A= ".": "jQuery.className.has(a,m[2])",=0A= "@": {=0A= "=3D": "z=3D=3Dm[4]",=0A= "!=3D": "z!=3Dm[4]",=0A= "^=3D": "z && !z.indexOf(m[4])",=0A= "$=3D": "z && z.substr(z.length - m[4].length,m[4].length)=3D=3Dm[4]",=0A= "*=3D": "z && z.indexOf(m[4])>=3D0",=0A= "": "z"=0A= },=0A= "[": "jQuery.find(m[2],a).length"=0A= },=0A= =0A= token: [=0A= "\\.\\.|/\\.\\.", "a.parentNode",=0A= ">|/", "jQuery.sibling(a.firstChild)",=0A= "\\+", "jQuery.sibling(a).next",=0A= "~", function(a){=0A= var r =3D [];=0A= var s =3D jQuery.sibling(a);=0A= if ( s.n > 0 )=0A= for ( var i =3D s.n; i < s.length; i++ )=0A= r.push( s[i] );=0A= return r;=0A= }=0A= ],=0A= find: function( t, context ) {=0A= // Make sure that the context is a DOM Element=0A= if ( context && context.nodeType =3D=3D undefined )=0A= context =3D null;=0A= =0A= // Set the correct context (if none is provided)=0A= context =3D context || jQuery.context || document;=0A= =0A= if ( t.constructor !=3D String ) return [t];=0A= =0A= if ( !t.indexOf("//") ) {=0A= context =3D context.documentElement;=0A= t =3D t.substr(2,t.length);=0A= } else if ( !t.indexOf("/") ) {=0A= context =3D context.documentElement;=0A= t =3D t.substr(1,t.length);=0A= // FIX Assume the root element is right :(=0A= if ( t.indexOf("/") >=3D 1 )=0A= t =3D t.substr(t.indexOf("/"),t.length);=0A= }=0A= =0A= var ret =3D [context];=0A= var done =3D [];=0A= var last =3D null;=0A= =0A= while ( t.length > 0 && last !=3D t ) {=0A= var r =3D [];=0A= last =3D t;=0A= =0A= t =3D jQuery.trim(t).replace( /^\/\//i, "" );=0A= =0A= var foundToken =3D false;=0A= =0A= for ( var i =3D 0; i < jQuery.token.length; i +=3D 2 ) {=0A= if ( foundToken ) continue;=0A= =0A= var re =3D new RegExp("^(" + jQuery.token[i] + ")");=0A= var m =3D re.exec(t);=0A= =0A= if ( m ) {=0A= r =3D ret =3D jQuery.map( ret, jQuery.token[i+1] );=0A= t =3D jQuery.trim( t.replace( re, "" ) );=0A= foundToken =3D true;=0A= }=0A= }=0A= =0A= if ( !foundToken ) {=0A= if ( !t.indexOf(",") || !t.indexOf("|") ) {=0A= if ( ret[0] =3D=3D context ) ret.shift();=0A= done =3D jQuery.merge( done, ret );=0A= r =3D ret =3D [context];=0A= t =3D " " + t.substr(1,t.length);=0A= } else {=0A= var re2 =3D /^([#.]?)([a-z0-9\\*_-]*)/i;=0A= var m =3D re2.exec(t);=0A= =0A= if ( m[1] =3D=3D "#" ) {=0A= // Ummm, should make this work in all XML docs=0A= var oid =3D document.getElementById(m[2]);=0A= r =3D ret =3D oid ? [oid] : [];=0A= t =3D t.replace( re2, "" );=0A= } else {=0A= if ( !m[2] || m[1] =3D=3D "." ) m[2] =3D "*";=0A= =0A= for ( var i =3D 0; i < ret.length; i++ )=0A= r =3D jQuery.merge( r,=0A= m[2] =3D=3D "*" ?=0A= jQuery.getAll(ret[i]) :=0A= ret[i].getElementsByTagName(m[2])=0A= );=0A= }=0A= }=0A= =0A= }=0A= =0A= if ( t ) {=0A= var val =3D jQuery.filter(t,r);=0A= ret =3D r =3D val.r;=0A= t =3D jQuery.trim(val.t);=0A= }=0A= }=0A= =0A= if ( ret && ret[0] =3D=3D context ) ret.shift();=0A= done =3D jQuery.merge( done, ret );=0A= =0A= return done;=0A= },=0A= =0A= getAll: function(o,r) {=0A= r =3D r || [];=0A= var s =3D o.childNodes;=0A= for ( var i =3D 0; i < s.length; i++ )=0A= if ( s[i].nodeType =3D=3D 1 ) {=0A= r.push( s[i] );=0A= jQuery.getAll( s[i], r );=0A= }=0A= return r;=0A= },=0A= =0A= attr: function(elem, name, value){=0A= var fix =3D {=0A= "for": "htmlFor",=0A= "class": "className",=0A= "float": jQuery.browser.msie ? "styleFloat" : "cssFloat",=0A= cssFloat: jQuery.browser.msie ? "styleFloat" : "cssFloat",=0A= innerHTML: "innerHTML",=0A= className: "className",=0A= value: "value",=0A= disabled: "disabled",=0A= checked: "checked",=0A= readonly: "readOnly"=0A= };=0A= =0A= // IE actually uses filters for opacity ... elem is actually elem.style=0A= if (name =3D=3D "opacity" && jQuery.browser.msie && value !=3D = undefined) {=0A= // IE has trouble with opacity if it does not have layout=0A= // Would prefer to check element.hasLayout first but don't have = access to the element here=0A= elem['zoom'] =3D 1; =0A= if (value =3D=3D 1) // Remove filter to avoid more IE weirdness=0A= return elem["filter"] =3D = elem["filter"].replace(/alpha\([^\)]*\)/gi,"");=0A= else=0A= return elem["filter"] =3D = elem["filter"].replace(/alpha\([^\)]*\)/gi,"") + "alpha(opacity=3D" + = value * 100 + ")";=0A= } else if (name =3D=3D "opacity" && jQuery.browser.msie) {=0A= return elem["filter"] ? parseFloat( = elem["filter"].match(/alpha\(opacity=3D(.*)\)/)[1] )/100 : 1;=0A= }=0A= =0A= // Mozilla doesn't play well with opacity 1=0A= if (name =3D=3D "opacity" && jQuery.browser.mozilla && value =3D=3D 1) = value =3D 0.9999;=0A= =0A= if ( fix[name] ) {=0A= if ( value !=3D undefined ) elem[fix[name]] =3D value;=0A= return elem[fix[name]];=0A= } else if( value =3D=3D undefined && jQuery.browser.msie && = elem.nodeName && elem.nodeName.toUpperCase() =3D=3D 'FORM' && (name = =3D=3D 'action' || name =3D=3D 'method') ) {=0A= return elem.getAttributeNode(name).nodeValue;=0A= } else if ( elem.getAttribute !=3D undefined && elem.tagName ) { // IE = elem.getAttribute passes even for style=0A= if ( value !=3D undefined ) elem.setAttribute( name, value );=0A= return elem.getAttribute( name );=0A= } else {=0A= name =3D name.replace(/-([a-z])/ig,function(z,b){return = b.toUpperCase();});=0A= if ( value !=3D undefined ) elem[name] =3D value;=0A= return elem[name];=0A= }=0A= },=0A= =0A= // The regular expressions that power the parsing engine=0A= parse: [=0A= // Match: [@value=3D'test'], [@foo]=0A= "\\[ *(@)S *([!*$^=3D]*) *('?\"?)(.*?)\\4 *\\]",=0A= =0A= // Match: [div], [div p]=0A= "(\\[)\s*(.*?)\s*\\]",=0A= =0A= // Match: :contains('foo')=0A= "(:)S\\(\"?'?([^\\)]*?)\"?'?\\)",=0A= =0A= // Match: :even, :last-chlid=0A= "([:.#]*)S"=0A= ],=0A= =0A= filter: function(t,r,not) {=0A= // Figure out if we're doing regular, or inverse, filtering=0A= var g =3D not !=3D=3D false ? jQuery.grep :=0A= function(a,f) {return jQuery.grep(a,f,true);};=0A= =0A= while ( t && /^[a-z[({<*:.#]/i.test(t) ) {=0A= =0A= var p =3D jQuery.parse;=0A= =0A= for ( var i =3D 0; i < p.length; i++ ) {=0A= =0A= // Look for, and replace, string-like sequences=0A= // and finally build a regexp out of it=0A= var re =3D new RegExp(=0A= "^" + p[i].replace("S", "([a-z*_-][a-z0-9_-]*)"), "i" );=0A= =0A= var m =3D re.exec( t );=0A= =0A= if ( m ) {=0A= // Re-organize the first match=0A= if ( !i )=0A= m =3D ["",m[1], m[3], m[2], m[5]];=0A= =0A= // Remove what we just matched=0A= t =3D t.replace( re, "" );=0A= =0A= break;=0A= }=0A= }=0A= =0A= // :not() is a special case that can be optimized by=0A= // keeping it out of the expression list=0A= if ( m[1] =3D=3D ":" && m[2] =3D=3D "not" )=0A= r =3D jQuery.filter(m[3],r,false).r;=0A= =0A= // Otherwise, find the expression to execute=0A= else {=0A= var f =3D jQuery.expr[m[1]];=0A= if ( f.constructor !=3D String )=0A= f =3D jQuery.expr[m[1]][m[2]];=0A= =0A= // Build a custom macro to enclose it=0A= eval("f =3D function(a,i){" +=0A= ( m[1] =3D=3D "@" ? "z=3DjQuery.attr(a,m[3]);" : "" ) +=0A= "return " + f + "}");=0A= =0A= // Execute it against the current filter=0A= r =3D g( r, f );=0A= }=0A= }=0A= =0A= // Return an array of filtered elements (r)=0A= // and the modified expression string (t)=0A= return { r: r, t: t };=0A= },=0A= trim: function(t){=0A= return t.replace(/^\s+|\s+$/g, "");=0A= },=0A= parents: function( elem ){=0A= var matched =3D [];=0A= var cur =3D elem.parentNode;=0A= while ( cur && cur !=3D document ) {=0A= matched.push( cur );=0A= cur =3D cur.parentNode;=0A= }=0A= return matched;=0A= },=0A= sibling: function(elem, pos, not) {=0A= var elems =3D [];=0A= =0A= if(elem) {=0A= var siblings =3D elem.parentNode.childNodes;=0A= for ( var i =3D 0; i < siblings.length; i++ ) {=0A= if ( not =3D=3D=3D true && siblings[i] =3D=3D elem ) continue;=0A= =0A= if ( siblings[i].nodeType =3D=3D 1 )=0A= elems.push( siblings[i] );=0A= if ( siblings[i] =3D=3D elem )=0A= elems.n =3D elems.length - 1;=0A= }=0A= }=0A= =0A= return jQuery.extend( elems, {=0A= last: elems.n =3D=3D elems.length - 1,=0A= cur: pos =3D=3D "even" && elems.n % 2 =3D=3D 0 || pos =3D=3D "odd" && = elems.n % 2 || elems[pos] =3D=3D elem,=0A= prev: elems[elems.n - 1],=0A= next: elems[elems.n + 1]=0A= });=0A= },=0A= merge: function(first, second) {=0A= var result =3D [];=0A= =0A= // Move b over to the new array (this helps to avoid=0A= // StaticNodeList instances)=0A= for ( var k =3D 0; k < first.length; k++ )=0A= result[k] =3D first[k];=0A= =0A= // Now check for duplicates between a and b and only=0A= // add the unique items=0A= for ( var i =3D 0; i < second.length; i++ ) {=0A= var noCollision =3D true;=0A= =0A= // The collision-checking process=0A= for ( var j =3D 0; j < first.length; j++ )=0A= if ( second[i] =3D=3D first[j] )=0A= noCollision =3D false;=0A= =0A= // If the item is unique, add it=0A= if ( noCollision )=0A= result.push( second[i] );=0A= }=0A= =0A= return result;=0A= },=0A= grep: function(elems, fn, inv) {=0A= // If a string is passed in for the function, make a function=0A= // for it (a handy shortcut)=0A= if ( fn.constructor =3D=3D String )=0A= fn =3D new Function("a","i","return " + fn);=0A= =0A= var result =3D [];=0A= =0A= // Go through the array, only saving the items=0A= // that pass the validator function=0A= for ( var i =3D 0; i < elems.length; i++ )=0A= if ( !inv && fn(elems[i],i) || inv && !fn(elems[i],i) )=0A= result.push( elems[i] );=0A= =0A= return result;=0A= },=0A= map: function(elems, fn) {=0A= // If a string is passed in for the function, make a function=0A= // for it (a handy shortcut)=0A= if ( fn.constructor =3D=3D String )=0A= fn =3D new Function("a","return " + fn);=0A= =0A= var result =3D [];=0A= =0A= // Go through the array, translating each of the items to their=0A= // new value (or values).=0A= for ( var i =3D 0; i < elems.length; i++ ) {=0A= var val =3D fn(elems[i],i);=0A= =0A= if ( val !=3D=3D null && val !=3D undefined ) {=0A= if ( val.constructor !=3D Array ) val =3D [val];=0A= result =3D jQuery.merge( result, val );=0A= }=0A= }=0A= =0A= return result;=0A= },=0A= =0A= /*=0A= * A number of helper functions used for managing events.=0A= * Many of the ideas behind this code orignated from Dean Edwards' = addEvent library.=0A= */=0A= event: {=0A= =0A= // Bind an event to an element=0A= // Original by Dean Edwards=0A= add: function(element, type, handler) {=0A= // For whatever reason, IE has trouble passing the window object=0A= // around, causing it to be cloned in the process=0A= if ( jQuery.browser.msie && element.setInterval !=3D undefined )=0A= element =3D window;=0A= =0A= // Make sure that the function being executed has a unique ID=0A= if ( !handler.guid )=0A= handler.guid =3D this.guid++;=0A= =0A= // Init the element's event structure=0A= if (!element.events)=0A= element.events =3D {};=0A= =0A= // Get the current list of functions bound to this event=0A= var handlers =3D element.events[type];=0A= =0A= // If it hasn't been initialized yet=0A= if (!handlers) {=0A= // Init the event handler queue=0A= handlers =3D element.events[type] =3D {};=0A= =0A= // Remember an existing handler, if it's already there=0A= if (element["on" + type])=0A= handlers[0] =3D element["on" + type];=0A= }=0A= =0A= // Add the function to the element's handler list=0A= handlers[handler.guid] =3D handler;=0A= =0A= // And bind the global event handler to the element=0A= element["on" + type] =3D this.handle;=0A= =0A= // Remember the function in a global list (for triggering)=0A= if (!this.global[type])=0A= this.global[type] =3D [];=0A= this.global[type].push( element );=0A= },=0A= =0A= guid: 1,=0A= global: {},=0A= =0A= // Detach an event or set of events from an element=0A= remove: function(element, type, handler) {=0A= if (element.events)=0A= if (type && element.events[type])=0A= if ( handler )=0A= delete element.events[type][handler.guid];=0A= else=0A= for ( var i in element.events[type] )=0A= delete element.events[type][i];=0A= else=0A= for ( var j in element.events )=0A= this.remove( element, j );=0A= },=0A= =0A= trigger: function(type,data,element) {=0A= // Touch up the incoming data=0A= data =3D data || [];=0A= =0A= // Handle a global trigger=0A= if ( !element ) {=0A= var g =3D this.global[type];=0A= if ( g )=0A= for ( var i =3D 0; i < g.length; i++ )=0A= this.trigger( type, data, g[i] );=0A= =0A= // Handle triggering a single element=0A= } else if ( element["on" + type] ) {=0A= // Pass along a fake event=0A= data.unshift( this.fix({ type: type, target: element }) );=0A= =0A= // Trigger the event=0A= element["on" + type].apply( element, data );=0A= }=0A= },=0A= =0A= handle: function(event) {=0A= if ( typeof jQuery =3D=3D "undefined" ) return false;=0A= =0A= event =3D event || jQuery.event.fix( window.event );=0A= =0A= // If no correct event was found, fail=0A= if ( !event ) return false;=0A= =0A= var returnValue =3D true;=0A= =0A= var c =3D this.events[event.type];=0A= =0A= var args =3D [].slice.call( arguments, 1 );=0A= args.unshift( event );=0A= =0A= for ( var j in c ) {=0A= if ( c[j].apply( this, args ) =3D=3D=3D false ) {=0A= event.preventDefault();=0A= event.stopPropagation();=0A= returnValue =3D false;=0A= }=0A= }=0A= =0A= return returnValue;=0A= },=0A= =0A= fix: function(event) {=0A= // check IE=0A= if(jQuery.browser.msie) {=0A= // get real event from window.event=0A= event =3D window.event;=0A= // fix target property=0A= event.target =3D event.srcElement;=0A= // check safari and if target is a textnode=0A= } else if(jQuery.browser.safari && event.target.nodeType =3D=3D 3) {=0A= // target is readonly, clone the event object=0A= event =3D jQuery.extend({}, event);=0A= // get parentnode from textnode=0A= event.target =3D event.target.parentNode;=0A= }=0A= // fix preventDefault and stopPropagation=0A= event.preventDefault =3D function() {=0A= this.returnValue =3D false;=0A= };=0A= event.stopPropagation =3D function() {=0A= this.cancelBubble =3D true;=0A= };=0A= return event;=0A= }=0A= =0A= }=0A= });=0A= new function() {=0A= var b =3D navigator.userAgent.toLowerCase();=0A= =0A= // Figure out what browser is being used=0A= jQuery.browser =3D {=0A= safari: /webkit/.test(b),=0A= opera: /opera/.test(b),=0A= msie: /msie/.test(b) && !/opera/.test(b),=0A= mozilla: /mozilla/.test(b) && !/(compatible|webkit)/.test(b)=0A= };=0A= =0A= // Check to see if the W3C box model is being used=0A= jQuery.boxModel =3D !jQuery.browser.msie || document.compatMode =3D=3D = "CSS1Compat";=0A= };=0A= =0A= jQuery.macros =3D {=0A= to: {=0A= appendTo: "append",=0A= prependTo: "prepend",=0A= insertBefore: "before",=0A= insertAfter: "after"=0A= },=0A= =0A= css: = "width,height,top,left,position,float,overflow,color,background".split(",= "),=0A= =0A= filter: [ "eq", "lt", "gt", "contains" ],=0A= =0A= attr: {=0A= =0A= val: "value",=0A= =0A= html: "innerHTML",=0A= =0A= id: null,=0A= =0A= title: null,=0A= =0A= name: null,=0A= =0A= href: null,=0A= =0A= src: null,=0A= =0A= rel: null=0A= },=0A= =0A= axis: {=0A= =0A= parent: "a.parentNode",=0A= =0A= ancestors: jQuery.parents,=0A= =0A= parents: jQuery.parents,=0A= =0A= next: "jQuery.sibling(a).next",=0A= =0A= prev: "jQuery.sibling(a).prev",=0A= =0A= siblings: "jQuery.sibling(a, null, true)",=0A= =0A= children: "jQuery.sibling(a.firstChild)"=0A= },=0A= =0A= each: {=0A= removeAttr: function( key ) {=0A= this.removeAttribute( key );=0A= },=0A= show: function(){=0A= this.style.display =3D this.oldblock ? this.oldblock : "";=0A= if ( jQuery.css(this,"display") =3D=3D "none" )=0A= this.style.display =3D "block";=0A= },=0A= hide: function(){=0A= this.oldblock =3D this.oldblock || jQuery.css(this,"display");=0A= if ( this.oldblock =3D=3D "none" )=0A= this.oldblock =3D "block";=0A= this.style.display =3D "none";=0A= },=0A= toggle: function(){=0A= jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ].apply( = jQuery(this), arguments );=0A= },=0A= addClass: function(c){=0A= jQuery.className.add(this,c);=0A= },=0A= removeClass: function(c){=0A= jQuery.className.remove(this,c);=0A= },=0A= toggleClass: function( c ){=0A= jQuery.className[ jQuery.className.has(this,c) ? "remove" : "add" = ](this,c);=0A= },=0A= =0A= remove: function(a){=0A= if ( !a || jQuery.filter( a, [this] ).r )=0A= this.parentNode.removeChild( this );=0A= },=0A= empty: function(){=0A= while ( this.firstChild )=0A= this.removeChild( this.firstChild );=0A= },=0A= bind: function( type, fn ) {=0A= if ( fn.constructor =3D=3D String )=0A= fn =3D new Function("e", ( !fn.indexOf(".") ? "jQuery(this)" : = "return " ) + fn);=0A= jQuery.event.add( this, type, fn );=0A= },=0A= =0A= unbind: function( type, fn ) {=0A= jQuery.event.remove( this, type, fn );=0A= },=0A= trigger: function( type, data ) {=0A= jQuery.event.trigger( type, data, this );=0A= }=0A= }=0A= };=0A= =0A= jQuery.init();=0A= jQuery.fn.extend({=0A= =0A= // We're overriding the old toggle function, so=0A= // remember it for later=0A= _toggle: jQuery.fn.toggle,=0A= toggle: function(a,b) {=0A= // If two functions are passed in, we're=0A= // toggling on a click=0A= return a && b && a.constructor =3D=3D Function && b.constructor =3D=3D = Function ? this.click(function(e){=0A= // Figure out which function to execute=0A= this.last =3D this.last =3D=3D a ? b : a;=0A= =0A= // Make sure that clicks stop=0A= e.preventDefault();=0A= =0A= // and execute the function=0A= return this.last.apply( this, [e] ) || false;=0A= }) :=0A= =0A= // Otherwise, execute the old toggle function=0A= this._toggle.apply( this, arguments );=0A= },=0A= hover: function(f,g) {=0A= =0A= // A private function for haandling mouse 'hovering'=0A= function handleHover(e) {=0A= // Check if mouse(over|out) are still within the same parent element=0A= var p =3D (e.type =3D=3D "mouseover" ? e.fromElement : e.toElement) = || e.relatedTarget;=0A= =0A= // Traverse up the tree=0A= while ( p && p !=3D this ) try { p =3D p.parentNode } catch(e) { p = =3D this; };=0A= =0A= // If we actually just moused on to a sub-element, ignore it=0A= if ( p =3D=3D this ) return false;=0A= =0A= // Execute the right function=0A= return (e.type =3D=3D "mouseover" ? f : g).apply(this, [e]);=0A= }=0A= =0A= // Bind the function to the two event listeners=0A= return this.mouseover(handleHover).mouseout(handleHover);=0A= },=0A= ready: function(f) {=0A= // If the DOM is already ready=0A= if ( jQuery.isReady )=0A= // Execute the function immediately=0A= f.apply( document );=0A= =0A= // Otherwise, remember the function for later=0A= else {=0A= // Add the function to the wait list=0A= jQuery.readyList.push( f );=0A= }=0A= =0A= return this;=0A= }=0A= });=0A= =0A= jQuery.extend({=0A= /*=0A= * All the code that makes DOM Ready work nicely.=0A= */=0A= isReady: false,=0A= readyList: [],=0A= =0A= // Handle when the DOM is ready=0A= ready: function() {=0A= // Make sure that the DOM is not already loaded=0A= if ( !jQuery.isReady ) {=0A= // Remember that the DOM is ready=0A= jQuery.isReady =3D true;=0A= =0A= // If there are functions bound, to execute=0A= if ( jQuery.readyList ) {=0A= // Execute all of them=0A= for ( var i =3D 0; i < jQuery.readyList.length; i++ )=0A= jQuery.readyList[i].apply( document );=0A= =0A= // Reset the list of functions=0A= jQuery.readyList =3D null;=0A= }=0A= // Remove event lisenter to avoid memory leak=0A= if ( jQuery.browser.mozilla || jQuery.browser.opera )=0A= document.removeEventListener( "DOMContentLoaded", jQuery.ready, = false );=0A= }=0A= }=0A= });=0A= =0A= new function(){=0A= =0A= var e =3D ("blur,focus,load,resize,scroll,unload,click,dblclick," +=0A= "mousedown,mouseup,mousemove,mouseover,mouseout,change,reset,select," = + =0A= "submit,keydown,keypress,keyup,error").split(",");=0A= =0A= // Go through all the event names, but make sure that=0A= // it is enclosed properly=0A= for ( var i =3D 0; i < e.length; i++ ) new function(){=0A= =0A= var o =3D e[i];=0A= =0A= // Handle event binding=0A= jQuery.fn[o] =3D function(f){=0A= return f ? this.bind(o, f) : this.trigger(o);=0A= };=0A= =0A= // Handle event unbinding=0A= jQuery.fn["un"+o] =3D function(f){ return this.unbind(o, f); };=0A= =0A= // Finally, handle events that only fire once=0A= jQuery.fn["one"+o] =3D function(f){=0A= // save cloned reference to this=0A= var element =3D jQuery(this);=0A= var handler =3D function() {=0A= // unbind itself when executed=0A= element.unbind(o, handler);=0A= element =3D null;=0A= // apply original handler with the same arguments=0A= f.apply(this, arguments);=0A= };=0A= return this.bind(o, handler);=0A= };=0A= =0A= };=0A= =0A= // If Mozilla is used=0A= if ( jQuery.browser.mozilla || jQuery.browser.opera ) {=0A= // Use the handy event callback=0A= document.addEventListener( "DOMContentLoaded", jQuery.ready, false );=0A= =0A= // If IE is used, use the excellent hack by Matthias Miller=0A= // = http://www.outofhanwell.com/blog/index.php?title=3Dthe_window_onload_prob= lem_revisited=0A= } else if ( jQuery.browser.msie ) {=0A= =0A= // Only works if you document.write() it=0A= document.write("<\/script>");=0A= =0A= // Use the defer script hack=0A= var script =3D document.getElementById("__ie_init");=0A= script.onreadystatechange =3D function() {=0A= if ( this.readyState !=3D "complete" ) return;=0A= this.parentNode.removeChild( this );=0A= jQuery.ready();=0A= };=0A= =0A= // Clear from memory=0A= script =3D null;=0A= =0A= // If Safari is used=0A= } else if ( jQuery.browser.safari ) {=0A= // Continually check to see if the document.readyState is valid=0A= jQuery.safariTimer =3D setInterval(function(){=0A= // loaded and complete are both valid states=0A= if ( document.readyState =3D=3D "loaded" || =0A= document.readyState =3D=3D "complete" ) {=0A= =0A= // If either one are found, remove the timer=0A= clearInterval( jQuery.safariTimer );=0A= jQuery.safariTimer =3D null;=0A= =0A= // and execute any waiting functions=0A= jQuery.ready();=0A= }=0A= }, 10);=0A= } =0A= =0A= // A fallback to window.onload, that will always work=0A= jQuery.event.add( window, "load", jQuery.ready );=0A= =0A= };=0A= =0A= // Clean up after IE to avoid memory leaks=0A= if (jQuery.browser.msie) jQuery(window).unload(function() {=0A= var event =3D jQuery.event, global =3D event.global;=0A= for (var type in global) {=0A= var els =3D global[type], i =3D els.length;=0A= if (i>0) do if (type !=3D 'unload') event.remove(els[i-1], type); = while (--i);=0A= }=0A= });=0A= jQuery.fn.extend({=0A= =0A= // overwrite the old show method=0A= _show: jQuery.fn.show,=0A= =0A= show: function(speed,callback){=0A= return speed ? this.animate({=0A= height: "show", width: "show", opacity: "show"=0A= }, speed, callback) : this._show();=0A= },=0A= =0A= // Overwrite the old hide method=0A= _hide: jQuery.fn.hide,=0A= =0A= hide: function(speed,callback){=0A= return speed ? this.animate({=0A= height: "hide", width: "hide", opacity: "hide"=0A= }, speed, callback) : this._hide();=0A= },=0A= =0A= slideDown: function(speed,callback){=0A= return this.animate({height: "show"}, speed, callback);=0A= },=0A= =0A= slideUp: function(speed,callback){=0A= return this.animate({height: "hide"}, speed, callback);=0A= },=0A= =0A= slideToggle: function(speed,callback){=0A= return this.each(function(){=0A= var state =3D jQuery(this).is(":hidden") ? "show" : "hide";=0A= jQuery(this).animate({height: state}, speed, callback);=0A= });=0A= },=0A= =0A= fadeIn: function(speed,callback){=0A= return this.animate({opacity: "show"}, speed, callback);=0A= },=0A= =0A= fadeOut: function(speed,callback){=0A= return this.animate({opacity: "hide"}, speed, callback);=0A= },=0A= =0A= fadeTo: function(speed,to,callback){=0A= return this.animate({opacity: to}, speed, callback);=0A= },=0A= animate: function(prop,speed,callback) {=0A= return this.queue(function(){=0A= =0A= this.curAnim =3D jQuery.extend({}, prop);=0A= =0A= for ( var p in prop ) {=0A= var e =3D new jQuery.fx( this, jQuery.speed(speed,callback), p );=0A= if ( prop[p].constructor =3D=3D Number )=0A= e.custom( e.cur(), prop[p] );=0A= else=0A= e[ prop[p] ]( prop );=0A= }=0A= =0A= });=0A= },=0A= queue: function(type,fn){=0A= if ( !fn ) {=0A= fn =3D type;=0A= type =3D "fx";=0A= }=0A= =0A= return this.each(function(){=0A= if ( !this.queue )=0A= this.queue =3D {};=0A= =0A= if ( !this.queue[type] )=0A= this.queue[type] =3D [];=0A= =0A= this.queue[type].push( fn );=0A= =0A= if ( this.queue[type].length =3D=3D 1 )=0A= fn.apply(this);=0A= });=0A= }=0A= =0A= });=0A= =0A= jQuery.extend({=0A= =0A= setAuto: function(e,p) {=0A= if ( e.notAuto ) return;=0A= =0A= if ( p =3D=3D "height" && e.scrollHeight !=3D = parseInt(jQuery.curCSS(e,p)) ) return;=0A= if ( p =3D=3D "width" && e.scrollWidth !=3D = parseInt(jQuery.curCSS(e,p)) ) return;=0A= =0A= // Remember the original height=0A= var a =3D e.style[p];=0A= =0A= // Figure out the size of the height right now=0A= var o =3D jQuery.curCSS(e,p,1);=0A= =0A= if ( p =3D=3D "height" && e.scrollHeight !=3D o ||=0A= p =3D=3D "width" && e.scrollWidth !=3D o ) return;=0A= =0A= // Set the height to auto=0A= e.style[p] =3D e.currentStyle ? "" : "auto";=0A= =0A= // See what the size of "auto" is=0A= var n =3D jQuery.curCSS(e,p,1);=0A= =0A= // Revert back to the original size=0A= if ( o !=3D n && n !=3D "auto" ) {=0A= e.style[p] =3D a;=0A= e.notAuto =3D true;=0A= }=0A= },=0A= =0A= speed: function(s,o) {=0A= o =3D o || {};=0A= =0A= if ( o.constructor =3D=3D Function )=0A= o =3D { complete: o };=0A= =0A= var ss =3D { slow: 600, fast: 200 };=0A= o.duration =3D (s && s.constructor =3D=3D Number ? s : ss[s]) || 400;=0A= =0A= // Queueing=0A= o.oldComplete =3D o.complete;=0A= o.complete =3D function(){=0A= jQuery.dequeue(this, "fx");=0A= if ( o.oldComplete && o.oldComplete.constructor =3D=3D Function )=0A= o.oldComplete.apply( this );=0A= };=0A= =0A= return o;=0A= },=0A= =0A= queue: {},=0A= =0A= dequeue: function(elem,type){=0A= type =3D type || "fx";=0A= =0A= if ( elem.queue && elem.queue[type] ) {=0A= // Remove self=0A= elem.queue[type].shift();=0A= =0A= // Get next function=0A= var f =3D elem.queue[type][0];=0A= =0A= if ( f ) f.apply( elem );=0A= }=0A= },=0A= =0A= /*=0A= * I originally wrote fx() as a clone of moo.fx and in the process=0A= * of making it small in size the code became illegible to sane=0A= * people. You've been warned.=0A= */=0A= =0A= fx: function( elem, options, prop ){=0A= =0A= var z =3D this;=0A= =0A= // The users options=0A= z.o =3D {=0A= duration: options.duration || 400,=0A= complete: options.complete,=0A= step: options.step=0A= };=0A= =0A= // The element=0A= z.el =3D elem;=0A= =0A= // The styles=0A= var y =3D z.el.style;=0A= =0A= // Simple function for setting a style value=0A= z.a =3D function(){=0A= if ( options.step )=0A= options.step.apply( elem, [ z.now ] );=0A= =0A= if ( prop =3D=3D "opacity" )=0A= jQuery.attr(y, "opacity", z.now); // Let attr handle opacity=0A= else if ( parseInt(z.now) ) // My hate for IE will never die=0A= y[prop] =3D parseInt(z.now) + "px";=0A= =0A= y.display =3D "block";=0A= };=0A= =0A= // Figure out the maximum number to run to=0A= z.max =3D function(){=0A= return parseFloat( jQuery.css(z.el,prop) );=0A= };=0A= =0A= // Get the current size=0A= z.cur =3D function(){=0A= var r =3D parseFloat( jQuery.curCSS(z.el, prop) );=0A= return r && r > -10000 ? r : z.max();=0A= };=0A= =0A= // Start an animation from one number to another=0A= z.custom =3D function(from,to){=0A= z.startTime =3D (new Date()).getTime();=0A= z.now =3D from;=0A= z.a();=0A= =0A= z.timer =3D setInterval(function(){=0A= z.step(from, to);=0A= }, 13);=0A= };=0A= =0A= // Simple 'show' function=0A= z.show =3D function(){=0A= if ( !z.el.orig ) z.el.orig =3D {};=0A= =0A= // Remember where we started, so that we can go back to it later=0A= z.el.orig[prop] =3D this.cur();=0A= =0A= // Begin the animation=0A= z.custom(0, z.el.orig[prop]);=0A= =0A= // Stupid IE, look what you made me do=0A= if ( prop !=3D "opacity" )=0A= y[prop] =3D "1px";=0A= };=0A= =0A= // Simple 'hide' function=0A= z.hide =3D function(){=0A= if ( !z.el.orig ) z.el.orig =3D {};=0A= =0A= // Remember where we started, so that we can go back to it later=0A= z.el.orig[prop] =3D this.cur();=0A= =0A= z.o.hide =3D true;=0A= =0A= // Begin the animation=0A= z.custom(z.el.orig[prop], 0);=0A= };=0A= =0A= // Remember the overflow of the element=0A= if ( !z.el.oldOverflow )=0A= z.el.oldOverflow =3D jQuery.css( z.el, "overflow" );=0A= =0A= // Make sure that nothing sneaks out=0A= y.overflow =3D "hidden";=0A= =0A= // Each step of an animation=0A= z.step =3D function(firstNum, lastNum){=0A= var t =3D (new Date()).getTime();=0A= =0A= if (t > z.o.duration + z.startTime) {=0A= // Stop the timer=0A= clearInterval(z.timer);=0A= z.timer =3D null;=0A= =0A= z.now =3D lastNum;=0A= z.a();=0A= =0A= z.el.curAnim[ prop ] =3D true;=0A= =0A= var done =3D true;=0A= for ( var i in z.el.curAnim )=0A= if ( z.el.curAnim[i] !=3D=3D true )=0A= done =3D false;=0A= =0A= if ( done ) {=0A= // Reset the overflow=0A= y.overflow =3D z.el.oldOverflow;=0A= =0A= // Hide the element if the "hide" operation was done=0A= if ( z.o.hide ) =0A= y.display =3D 'none';=0A= =0A= // Reset the property, if the item has been hidden=0A= if ( z.o.hide ) {=0A= for ( var p in z.el.curAnim ) {=0A= if (p =3D=3D "opacity")=0A= jQuery.attr(y, p, z.el.orig[p]);=0A= else=0A= y[ p ] =3D z.el.orig[p] + "px";=0A= =0A= // set its height and/or width to auto=0A= if ( p =3D=3D 'height' || p =3D=3D 'width' )=0A= jQuery.setAuto( z.el, p );=0A= }=0A= }=0A= }=0A= =0A= // If a callback was provided, execute it=0A= if( done && z.o.complete && z.o.complete.constructor =3D=3D Function = )=0A= // Execute the complete function=0A= z.o.complete.apply( z.el );=0A= } else {=0A= // Figure out where in the animation we are and set the number=0A= var p =3D (t - this.startTime) / z.o.duration;=0A= z.now =3D ((-Math.cos(p*Math.PI)/2) + 0.5) * (lastNum-firstNum) + = firstNum;=0A= =0A= // Perform the next step of the animation=0A= z.a();=0A= }=0A= };=0A= =0A= }=0A= =0A= });=0A= jQuery.fn.extend({=0A= loadIfModified: function( url, params, callback ) {=0A= this.load( url, params, callback, 1 );=0A= },=0A= load: function( url, params, callback, ifModified ) {=0A= if ( url.constructor =3D=3D Function )=0A= return this.bind("load", url);=0A= =0A= callback =3D callback || function(){};=0A= =0A= // Default to a GET request=0A= var type =3D "GET";=0A= =0A= // If the second parameter was provided=0A= if ( params ) {=0A= // If it's a function=0A= if ( params.constructor =3D=3D Function ) {=0A= // We assume that it's the callback=0A= callback =3D params;=0A= params =3D null;=0A= =0A= // Otherwise, build a param string=0A= } else {=0A= params =3D jQuery.param( params );=0A= type =3D "POST";=0A= }=0A= }=0A= =0A= var self =3D this;=0A= =0A= // Request the remote document=0A= jQuery.ajax( type, url, params,function(res, status){=0A= =0A= if ( status =3D=3D "success" || !ifModified && status =3D=3D = "notmodified" ) {=0A= // Inject the HTML into all the matched elements=0A= self.html(res.responseText)=0A= // Execute all the scripts inside of the newly-injected HTML=0A= .evalScripts()=0A= // Execute callback=0A= .each( callback, [res.responseText, status] );=0A= } else=0A= callback.apply( self, [res.responseText, status] );=0A= =0A= }, ifModified);=0A= =0A= return this;=0A= },=0A= serialize: function() {=0A= return jQuery.param( this );=0A= },=0A= =0A= evalScripts: function() {=0A= return this.find('script').each(function(){=0A= if ( this.src )=0A= // for some weird reason, it doesn't work if the callback is ommited=0A= jQuery.getScript( this.src, function() {} );=0A= else=0A= eval.call( window, this.text || this.textContent || this.innerHTML = || "" );=0A= }).end();=0A= }=0A= =0A= });=0A= =0A= // If IE is used, create a wrapper for the XMLHttpRequest object=0A= if ( jQuery.browser.msie && typeof XMLHttpRequest =3D=3D "undefined" )=0A= XMLHttpRequest =3D function(){=0A= return new ActiveXObject(=0A= navigator.userAgent.indexOf("MSIE 5") >=3D 0 ?=0A= "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"=0A= );=0A= };=0A= =0A= // Attach a bunch of functions for handling common AJAX events=0A= =0A= =0A= =0A= new function(){=0A= var e =3D = "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess".split(",");=0A= =0A= for ( var i =3D 0; i < e.length; i++ ) new function(){=0A= var o =3D e[i];=0A= jQuery.fn[o] =3D function(f){=0A= return this.bind(o, f);=0A= };=0A= };=0A= };=0A= =0A= jQuery.extend({=0A= get: function( url, data, callback, type, ifModified ) {=0A= if ( data && data.constructor =3D=3D Function ) {=0A= type =3D callback;=0A= callback =3D data;=0A= data =3D null;=0A= }=0A= =0A= // append ? + data or & + data, in case there are already params=0A= if ( data ) url +=3D ((url.indexOf("?") > -1) ? "&" : "?") + = jQuery.param(data);=0A= =0A= // Build and start the HTTP Request=0A= jQuery.ajax( "GET", url, null, function(r, status) {=0A= if ( callback ) callback( jQuery.httpData(r,type), status );=0A= }, ifModified);=0A= },=0A= getIfModified: function( url, data, callback, type ) {=0A= jQuery.get(url, data, callback, type, 1);=0A= },=0A= getScript: function( url, callback ) {=0A= if(callback)=0A= jQuery.get(url, null, callback, "script");=0A= else {=0A= jQuery.get(url, null, null, "script");=0A= }=0A= },=0A= getJSON: function( url, data, callback ) {=0A= if(callback)=0A= jQuery.get(url, data, callback, "json");=0A= else {=0A= jQuery.get(url, data, "json");=0A= }=0A= },=0A= post: function( url, data, callback, type ) {=0A= // Build and start the HTTP Request=0A= jQuery.ajax( "POST", url, jQuery.param(data), function(r, status) {=0A= if ( callback ) callback( jQuery.httpData(r,type), status );=0A= });=0A= },=0A= =0A= // timeout (ms)=0A= timeout: 0,=0A= ajaxTimeout: function(timeout) {=0A= jQuery.timeout =3D timeout;=0A= },=0A= =0A= // Last-Modified header cache for next request=0A= lastModified: {},=0A= ajax: function( type, url, data, ret, ifModified ) {=0A= // If only a single argument was passed in,=0A= // assume that it is a object of key/value pairs=0A= var global =3D true;=0A= var timeout =3D jQuery.timeout;=0A= if ( !url ) {=0A= ret =3D type.complete;=0A= var success =3D type.success;=0A= var error =3D type.error;=0A= var dataType =3D type.dataType;=0A= var global =3D typeof type.global =3D=3D "boolean" ? type.global : = true;=0A= var timeout =3D typeof type.timeout =3D=3D "number" ? type.timeout : = jQuery.timeout;=0A= ifModified =3D type.ifModified || false;=0A= data =3D type.data;=0A= url =3D type.url;=0A= type =3D type.type;=0A= }=0A= =0A= // Watch for a new set of requests=0A= if ( global && ! jQuery.active++ )=0A= jQuery.event.trigger( "ajaxStart" );=0A= =0A= var requestDone =3D false;=0A= =0A= // Create the request object=0A= var xml =3D new XMLHttpRequest();=0A= =0A= // Open the socket=0A= xml.open(type || "GET", url, true);=0A= =0A= // Set the correct header, if data is being sent=0A= if ( data )=0A= xml.setRequestHeader("Content-Type", = "application/x-www-form-urlencoded");=0A= =0A= // Set the If-Modified-Since header, if ifModified mode.=0A= if ( ifModified )=0A= xml.setRequestHeader("If-Modified-Since",=0A= jQuery.lastModified[url] || "Thu, 01 Jan 1970 00:00:00 GMT" );=0A= =0A= // Set header so the called script knows that it's an XMLHttpRequest=0A= xml.setRequestHeader("X-Requested-With", "XMLHttpRequest");=0A= =0A= // Make sure the browser sends the right content length=0A= if ( xml.overrideMimeType )=0A= xml.setRequestHeader("Connection", "close");=0A= =0A= // Wait for a response to come back=0A= var onreadystatechange =3D function(istimeout){=0A= // The transfer is complete and the data is available, or the request = timed out=0A= if ( xml && (xml.readyState =3D=3D 4 || istimeout =3D=3D "timeout") ) = {=0A= requestDone =3D true;=0A= =0A= var status =3D jQuery.httpSuccess( xml ) && istimeout !=3D "timeout" = ?=0A= ifModified && jQuery.httpNotModified( xml, url ) ? "notmodified" : = "success" : "error";=0A= =0A= // Make sure that the request was successful or notmodified=0A= if ( status !=3D "error" ) {=0A= // Cache Last-Modified header, if ifModified mode.=0A= var modRes;=0A= try {=0A= modRes =3D xml.getResponseHeader("Last-Modified");=0A= } catch(e) {} // swallow exception thrown by FF if header is not = available=0A= =0A= if ( ifModified && modRes )=0A= jQuery.lastModified[url] =3D modRes;=0A= =0A= // If a local callback was specified, fire it=0A= if ( success )=0A= success( jQuery.httpData( xml, dataType ), status );=0A= =0A= // Fire the global callback=0A= if( global )=0A= jQuery.event.trigger( "ajaxSuccess" );=0A= =0A= // Otherwise, the request was not successful=0A= } else {=0A= // If a local callback was specified, fire it=0A= if ( error ) error( xml, status );=0A= =0A= // Fire the global callback=0A= if( global )=0A= jQuery.event.trigger( "ajaxError" );=0A= }=0A= =0A= // The request was completed=0A= if( global )=0A= jQuery.event.trigger( "ajaxComplete" );=0A= =0A= // Handle the global AJAX counter=0A= if ( global && ! --jQuery.active )=0A= jQuery.event.trigger( "ajaxStop" );=0A= =0A= // Process result=0A= if ( ret ) ret(xml, status);=0A= =0A= // Stop memory leaks=0A= xml.onreadystatechange =3D function(){};=0A= xml =3D null;=0A= =0A= }=0A= };=0A= xml.onreadystatechange =3D onreadystatechange;=0A= =0A= // Timeout checker=0A= if(timeout > 0)=0A= setTimeout(function(){=0A= // Check to see if the request is still happening=0A= if (xml) {=0A= // Cancel the request=0A= xml.abort();=0A= =0A= if ( !requestDone ) onreadystatechange( "timeout" );=0A= =0A= // Clear from memory=0A= xml =3D null;=0A= }=0A= }, timeout);=0A= =0A= // Send the data=0A= xml.send(data);=0A= },=0A= =0A= // Counter for holding the number of active queries=0A= active: 0,=0A= =0A= // Determines if an XMLHttpRequest was successful or not=0A= httpSuccess: function(r) {=0A= try {=0A= return !r.status && location.protocol =3D=3D "file:" ||=0A= ( r.status >=3D 200 && r.status < 300 ) || r.status =3D=3D 304 ||=0A= jQuery.browser.safari && r.status =3D=3D undefined;=0A= } catch(e){}=0A= =0A= return false;=0A= },=0A= =0A= // Determines if an XMLHttpRequest returns NotModified=0A= httpNotModified: function(xml, url) {=0A= try {=0A= var xmlRes =3D xml.getResponseHeader("Last-Modified");=0A= =0A= // Firefox always returns 200. check Last-Modified date=0A= return xml.status =3D=3D 304 || xmlRes =3D=3D = jQuery.lastModified[url] ||=0A= jQuery.browser.safari && xml.status =3D=3D undefined;=0A= } catch(e){}=0A= =0A= return false;=0A= },=0A= =0A= /* Get the data out of an XMLHttpRequest.=0A= * Return parsed XML if content-type header is "xml" and type is "xml" = or omitted,=0A= * otherwise return plain text.=0A= * (String) data - The type of data that you're expecting back,=0A= * (e.g. "xml", "html", "script")=0A= */=0A= httpData: function(r,type) {=0A= var ct =3D r.getResponseHeader("content-type");=0A= var data =3D !type && ct && ct.indexOf("xml") >=3D 0;=0A= data =3D type =3D=3D "xml" || data ? r.responseXML : r.responseText;=0A= =0A= // If the type is "script", eval it=0A= if ( type =3D=3D "script" ) eval.call( window, data );=0A= =0A= // Get the JavaScript object, if JSON is used.=0A= if ( type =3D=3D "json" ) eval( "data =3D " + data );=0A= =0A= // evaluate scripts within html=0A= if ( type =3D=3D "html" ) $("
").html(data).evalScripts();=0A= =0A= return data;=0A= },=0A= =0A= // Serialize an array of form elements or a set of=0A= // key/values into a query string=0A= param: function(a) {=0A= var s =3D [];=0A= =0A= // If an array was passed in, assume that it is an array=0A= // of form elements=0A= if ( a.constructor =3D=3D Array || a.jquery ) {=0A= // Serialize the form elements=0A= for ( var i =3D 0; i < a.length; i++ )=0A= s.push( a[i].name + "=3D" + encodeURIComponent( a[i].value ) );=0A= =0A= // Otherwise, assume that it's an object of key/value pairs=0A= } else {=0A= // Serialize the key/values=0A= for ( var j in a )=0A= s.push( j + "=3D" + encodeURIComponent( a[j] ) );=0A= }=0A= =0A= // Return the resulting serialization=0A= return s.join("&");=0A= }=0A= =0A= });=0A= } // close: if(typeof window.jQuery =3D=3D "undefined") {=0A= ------=_NextPart_000_0092_01C9FEF8.DB7F3020--