From: Subject: UA Online Syllabi Date: Tue, 23 Aug 2011 14:23:25 -0500 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0007_01CC61A0.383B1700" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 This is a multi-part message in MIME format. ------=_NextPart_000_0007_01CC61A0.383B1700 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://uaops.ua.edu/syllabus/201140/50108 =EF=BB=BF UA Online = Syllabi
Print = this=20 Syllabus=20

Note: If you are not satisfied with the printout produced by your web = browser, you may obtain better results by using the = download=20 option and printing from Microsoft Word.

Print this = Syllabus
Link to = this=20 Syllabus=20

You may copy the link below if you'd like to direct others to this = page. The=20 link will continue to take you to the most current version even if the = syllabus=20 is later modified or updated.=20

Link:
=20

Tools

PH 595 Section 002: Independent Study

Fall 2011

3 Credit Hours
Primary Instructor: Dr. Andreas Piepke
Syllabus subject to change.

Office Hours

Wednesday 10:00 am to=20 12:00 am. I have an open door policy. You may see me whenever I am in my = office,=20 room 202 Gallalee Hall. It is advisable to schedule an appointment by = phone or=20 email.

Phone:=20 6066,

Email: andreas@bama.ua.edu=

Prerequisites

From the Student Records System

No prerequisites found.

Course Description

This course will provide a self paced introduction to experimental = neutrino=20 physics. The emphasis is on the investigation of nuclear double beta = decay. The=20 course involves reading of papers and involvement in the ongoing EXO-200 = double=20 beta decay experiment. The latter will be through analysis of experiment = data=20 using our local, LINUX based, computing system. The student will = participate in=20 the weekly meetings of the neutrino physics research group and present = results=20 to this group by means of PowerPoint presentations. Achieving a passing = grade=20 will require an end of semester oral presentation to the group of at = least 30=20 min lenght or writing of a semester paper in scientific format (at least = 5=20 pages).

Student Learning Outcomes

  1. Become familiar with the experimental techniques involved in rare = event=20 searches.

  2. Develop a working understanding of neutrino mass tests and double = beta=20 decay experiments.

  3. Become familiar with the EXO-200 double beta decay experiment and = its=20 software tools.

  4. Develop the ability to work on EXO-200 data=20 analysis.

Outline of Topics

  1. Radioactive decay
  2. Rare event searches, backgrounds
  3. Double beta decay and its importance for neutrino physics
  4. EXO-200 data analysis

Exams and Assignments

Student performance will be assessed using the following:

  1. Active participation in the meetings of the neutrino research = group.
  2. At least one 15 min PowerPoint presentation on double beta decay = and the=20 EXO-200 experiment by mid term.
  3. A final 30 min presentation on EXO-200 research result or a 5 page = paper=20 on the same subject.

Grading Policy

This class will have a pass or fail grade. A passing grade requires = regular=20 participation in the neutrino physics group meetings, a 15 min midterm=20 PowerPoint presentation to the group, and a 30 min end of semester = PowerPoint=20 presentation to this group. A 5 page end of term paper on EXO-200 = research=20 results (in scientific format) may be substituted for the latter=20 requirement.

Policy on Missed Exams & Coursework

This class is self paced. The students are responsible for allocating = sufficient study time to the subject. Absences from the weekly group = meetings=20 will be accepted if it is scheduled ahead of time. There will be no make = up of=20 missed meetings. However, the scheduling will be flexible to accomodate = the=20 student's learning pace and time constaints.

Attendance Policy

Attendance of the weekly meetings of the neutrino physics research = group is=20 required. Absences can be excused for valid reasons and if prior = arrangements=20 are made with the instructor.

Required Texts

UA Supply Store Textbook Information

Textbook data from the Supply Store not found for this = course.

Other Course Materials

This class requires reading of scientific papers. A list of resources = will be=20 developped in collaboration with the instructor who will aid in = identifying=20 relevant papers.

Extra Credit Opportunities

None

Policy on Academic Misconduct

All students in attendance at the University of Alabama are expected = to be=20 honorable and to observe standards of conduct appropriate to a community = of=20 scholars. The University expects from its students a higher standard of = conduct=20 than the minimum required to avoid discipline. Academic misconduct = includes all=20 acts of dishonesty in any academically related matter and any knowing or = intentional help or attempt to help, or conspiracy to help, another = student.=20

The Academic Misconduct Disciplinary Policy will be = followed=20 in the event of academic misconduct.

Disability Statement

If you are registered with the Office of = Disability Services, please make an appointment with me as soon as = possible to=20 discuss any course accommodations that may be necessary. If you have a=20 disability, but have not contacted the Office of Disability Services, = please=20 call 348-4285 or visit 133-B Martha Parham Hall East to register for = services.=20 Students who may need course adaptations because of a disability are = welcome to=20 make an appointment to see me during office hours. Students with = disabilities=20 must be registered with the Office of Disability Services, 133-B Martha = Parham=20 Hall East, before receiving academic adjustments.

Severe Weather Protocol

In the case of a tornado warning (tornado has been sighted or = detected by=20 radar; sirens activated), all university activities are automatically = suspended,=20 including all classes and laboratories. If you are in a building, please = move=20 immediately to the lowest level and toward the center of the building = away from=20 windows (interior classrooms, offices, or corridors) and remain there = until the=20 tornado warning has expired. Classes in session when the tornado warning = is=20 issued can resume immediately after the warning has expired at the = discretion of=20 the instructor. Classes that have not yet begun will resume 30 minutes = after the=20 tornado warning has expired provided at least half of the class period=20 remains.

UA is a residential campus with many students living on or near = campus. In=20 general classes will remain in session until the National Weather = Service issues=20 safety warnings for the city of Tuscaloosa. Clearly, some students and = faculty=20 commute from adjacent counties. These counties may experience weather = related=20 problems not encountered in Tuscaloosa. Individuals should follow the = advice of=20 the National Weather Service for that area taking the necessary = precautions to=20 ensure personal safety. Whenever the National Weather Service and the = Emergency=20 Management Agency issue a warning, people in the path of the storm = (tornado or=20 severe thunderstorm) should take immediate life saving actions.

When West Alabama is under a severe weather advisory, = conditions can=20 change rapidly. It is imperative to get to where you can receive = information=20 from the National = Weather=20 Service and to follow the instructions provided. Personal safety = should=20 dictate the actions that faculty, staff and students take. The Office of = Public=20 Relations will disseminate the latest information regarding conditions = on campus=20 in the following ways:

  • Weather advisory posted on the UA homepage
  • Weather advisory sent out through Connect-ED--faculty, staff and = students=20 (sign up at = myBama)
  • Weather advisory broadcast over WVUA at 90.7 FM
  • Weather advisory broadcast over Alabama Public Radio (WUAL) at = 91.5 FM=20
  • Weather advisory broadcast over WVUA 7. WVUA 7 Storm Watch = provides a free=20 service you can subscribe to that allows you to receive weather = warnings for=20 Tuscaloosa via e-mail, pager or cell phone. Check http://www.wvua7.com/stormwatch.html for = details.

------=_NextPart_000_0007_01CC61A0.383B1700 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://uaops.ua.edu/css/facebox.css #facebox .b { BACKGROUND: url(../images/b.png) } #facebox .tl { BACKGROUND: url(../images/tl.png) } #facebox .tr { BACKGROUND: url(../images/tr.png) } #facebox .bl { BACKGROUND: url(../images/bl.png) } #facebox .br { BACKGROUND: url(../images/br.png) } #facebox { Z-INDEX: 100; POSITION: absolute; TEXT-ALIGN: left; TOP: 0px; LEFT: 0px } #facebox .popup { POSITION: relative } #facebox TABLE { BORDER-COLLAPSE: collapse } #facebox TD { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; PADDING-TOP: 0px } #facebox .body { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 370px; PADDING-RIGHT: = 10px; BACKGROUND: #fff; PADDING-TOP: 10px } #facebox .loading { TEXT-ALIGN: center } #facebox .image { TEXT-ALIGN: center } #facebox IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; = BORDER-RIGHT: 0px } #facebox .footer { TEXT-ALIGN: right; MARGIN-TOP: 10px; BORDER-TOP: #dddddd 1px solid; = PADDING-TOP: 5px } #facebox .tl { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 10px; PADDING-RIGHT: = 0px; HEIGHT: 10px; OVERFLOW: hidden; PADDING-TOP: 0px } #facebox .tr { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 10px; PADDING-RIGHT: = 0px; HEIGHT: 10px; OVERFLOW: hidden; PADDING-TOP: 0px } #facebox .bl { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 10px; PADDING-RIGHT: = 0px; HEIGHT: 10px; OVERFLOW: hidden; PADDING-TOP: 0px } #facebox .br { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 10px; PADDING-RIGHT: = 0px; HEIGHT: 10px; OVERFLOW: hidden; PADDING-TOP: 0px } #facebox_overlay { POSITION: fixed; WIDTH: 100%; BACKGROUND: #990000; HEIGHT: 100%; TOP: = 0px; LEFT: 0px } .facebox_hide { Z-INDEX: -100 } .facebox_overlayBG { Z-INDEX: 99; BACKGROUND-COLOR: #000 } * HTML #facebox_overlay { POSITION: absolute } ------=_NextPart_000_0007_01CC61A0.383B1700 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://uaops.ua.edu/js/jquery.js /*!=0A= * jQuery JavaScript Library v1.3.2=0A= * http://jquery.com/=0A= *=0A= * Copyright (c) 2009 John Resig=0A= * Dual licensed under the MIT and GPL licenses.=0A= * http://docs.jquery.com/License=0A= *=0A= * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)=0A= * Revision: 6246=0A= */=0A= (function(){=0A= =0A= var =0A= // Will speed up references to window, and allows munging its name.=0A= window =3D this,=0A= // Will speed up references to undefined, and allows munging its name.=0A= undefined,=0A= // Map over jQuery in case of overwrite=0A= _jQuery =3D window.jQuery,=0A= // Map over the $ in case of overwrite=0A= _$ =3D window.$,=0A= =0A= jQuery =3D window.jQuery =3D window.$ =3D function( selector, context ) = {=0A= // The jQuery object is actually just the init constructor 'enhanced'=0A= return new jQuery.fn.init( selector, context );=0A= },=0A= =0A= // A simple way to check for HTML strings or ID strings=0A= // (both of which we optimize for)=0A= quickExpr =3D /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,=0A= // Is it a simple selector=0A= isSimple =3D /^.[^:#\[\.,]*$/;=0A= =0A= jQuery.fn =3D jQuery.prototype =3D {=0A= init: function( selector, context ) {=0A= // Make sure that a selection was provided=0A= selector =3D selector || document;=0A= =0A= // Handle $(DOMElement)=0A= if ( selector.nodeType ) {=0A= this[0] =3D selector;=0A= this.length =3D 1;=0A= this.context =3D selector;=0A= return this;=0A= }=0A= // Handle HTML strings=0A= if ( typeof selector =3D=3D=3D "string" ) {=0A= // Are we dealing with HTML string or an ID?=0A= var match =3D quickExpr.exec( selector );=0A= =0A= // Verify a match, and that no context was specified for #id=0A= if ( match && (match[1] || !context) ) {=0A= =0A= // HANDLE: $(html) -> $(array)=0A= if ( match[1] )=0A= selector =3D jQuery.clean( [ match[1] ], context );=0A= =0A= // HANDLE: $("#id")=0A= else {=0A= var elem =3D document.getElementById( match[3] );=0A= =0A= // Handle the case where IE and Opera return items=0A= // by name instead of ID=0A= if ( elem && elem.id !=3D match[3] )=0A= return jQuery().find( selector );=0A= =0A= // Otherwise, we inject the element directly into the jQuery object=0A= var ret =3D jQuery( elem || [] );=0A= ret.context =3D document;=0A= ret.selector =3D selector;=0A= return ret;=0A= }=0A= =0A= // HANDLE: $(expr, [context])=0A= // (which is just equivalent to: $(content).find(expr)=0A= } else=0A= return jQuery( context ).find( selector );=0A= =0A= // HANDLE: $(function)=0A= // Shortcut for document ready=0A= } else if ( jQuery.isFunction( selector ) )=0A= return jQuery( document ).ready( selector );=0A= =0A= // Make sure that old selector state is passed along=0A= if ( selector.selector && selector.context ) {=0A= this.selector =3D selector.selector;=0A= this.context =3D selector.context;=0A= }=0A= =0A= return this.setArray(jQuery.isArray( selector ) ?=0A= selector :=0A= jQuery.makeArray(selector));=0A= },=0A= =0A= // Start with an empty selector=0A= selector: "",=0A= =0A= // The current version of jQuery being used=0A= jquery: "1.3.2",=0A= =0A= // The number of elements contained in the matched element set=0A= size: function() {=0A= return this.length;=0A= },=0A= =0A= // Get the Nth element in the matched element set OR=0A= // Get the whole matched element set as a clean array=0A= get: function( num ) {=0A= return num =3D=3D=3D undefined ?=0A= =0A= // Return a 'clean' array=0A= Array.prototype.slice.call( this ) :=0A= =0A= // Return just the object=0A= this[ num ];=0A= },=0A= =0A= // Take an array of elements and push it onto the stack=0A= // (returning the new matched element set)=0A= pushStack: function( elems, name, selector ) {=0A= // Build a new jQuery matched element set=0A= var ret =3D jQuery( elems );=0A= =0A= // Add the old object onto the stack (as a reference)=0A= ret.prevObject =3D this;=0A= =0A= ret.context =3D this.context;=0A= =0A= if ( name =3D=3D=3D "find" )=0A= ret.selector =3D this.selector + (this.selector ? " " : "") + = selector;=0A= else if ( name )=0A= ret.selector =3D this.selector + "." + name + "(" + selector + ")";=0A= =0A= // Return the newly-formed element set=0A= return ret;=0A= },=0A= =0A= // Force the current matched set of elements to become=0A= // the specified array of elements (destroying the stack in the process)=0A= // You should use pushStack() in order to do this, but maintain the = stack=0A= setArray: function( elems ) {=0A= // Resetting the length to 0, then using the native Array push=0A= // is a super-fast way to populate an object with array-like properties=0A= this.length =3D 0;=0A= Array.prototype.push.apply( this, elems );=0A= =0A= return this;=0A= },=0A= =0A= // Execute a callback for every element in the matched set.=0A= // (You can seed the arguments with an array of args, but this is=0A= // only used internally.)=0A= each: function( callback, args ) {=0A= return jQuery.each( this, callback, args );=0A= },=0A= =0A= // Determine the position of an element within=0A= // the matched set of elements=0A= index: function( elem ) {=0A= // Locate the position of the desired element=0A= return jQuery.inArray(=0A= // If it receives a jQuery object, the first element is used=0A= elem && elem.jquery ? elem[0] : elem=0A= , this );=0A= },=0A= =0A= attr: function( name, value, type ) {=0A= var options =3D name;=0A= =0A= // Look for the case where we're accessing a style value=0A= if ( typeof name =3D=3D=3D "string" )=0A= if ( value =3D=3D=3D undefined )=0A= return this[0] && jQuery[ type || "attr" ]( this[0], name );=0A= =0A= else {=0A= options =3D {};=0A= options[ name ] =3D value;=0A= }=0A= =0A= // Check to see if we're setting style values=0A= return this.each(function(i){=0A= // Set all the styles=0A= for ( name in options )=0A= jQuery.attr(=0A= type ?=0A= this.style :=0A= this,=0A= name, jQuery.prop( this, options[ name ], type, i, name )=0A= );=0A= });=0A= },=0A= =0A= css: function( key, value ) {=0A= // ignore negative width and height values=0A= if ( (key =3D=3D 'width' || key =3D=3D 'height') && parseFloat(value) = < 0 )=0A= value =3D undefined;=0A= return this.attr( key, value, "curCSS" );=0A= },=0A= =0A= text: function( text ) {=0A= if ( typeof text !=3D=3D "object" && text !=3D null )=0A= return this.empty().append( (this[0] && this[0].ownerDocument || = document).createTextNode( text ) );=0A= =0A= var ret =3D "";=0A= =0A= jQuery.each( text || this, function(){=0A= jQuery.each( this.childNodes, function(){=0A= if ( this.nodeType !=3D 8 )=0A= ret +=3D this.nodeType !=3D 1 ?=0A= this.nodeValue :=0A= jQuery.fn.text( [ this ] );=0A= });=0A= });=0A= =0A= return ret;=0A= },=0A= =0A= wrapAll: function( html ) {=0A= if ( this[0] ) {=0A= // The elements to wrap the target around=0A= var wrap =3D jQuery( html, this[0].ownerDocument ).clone();=0A= =0A= if ( this[0].parentNode )=0A= wrap.insertBefore( this[0] );=0A= =0A= wrap.map(function(){=0A= var elem =3D this;=0A= =0A= while ( elem.firstChild )=0A= elem =3D elem.firstChild;=0A= =0A= return elem;=0A= }).append(this);=0A= }=0A= =0A= return this;=0A= },=0A= =0A= wrapInner: function( html ) {=0A= return this.each(function(){=0A= jQuery( this ).contents().wrapAll( html );=0A= });=0A= },=0A= =0A= wrap: function( html ) {=0A= return this.each(function(){=0A= jQuery( this ).wrapAll( html );=0A= });=0A= },=0A= =0A= append: function() {=0A= return this.domManip(arguments, true, function(elem){=0A= if (this.nodeType =3D=3D 1)=0A= this.appendChild( elem );=0A= });=0A= },=0A= =0A= prepend: function() {=0A= return this.domManip(arguments, true, function(elem){=0A= if (this.nodeType =3D=3D 1)=0A= this.insertBefore( elem, this.firstChild );=0A= });=0A= },=0A= =0A= before: function() {=0A= return this.domManip(arguments, false, function(elem){=0A= this.parentNode.insertBefore( elem, this );=0A= });=0A= },=0A= =0A= after: function() {=0A= return this.domManip(arguments, false, function(elem){=0A= this.parentNode.insertBefore( elem, this.nextSibling );=0A= });=0A= },=0A= =0A= end: function() {=0A= return this.prevObject || jQuery( [] );=0A= },=0A= =0A= // For internal use only.=0A= // Behaves like an Array's method, not like a jQuery method.=0A= push: [].push,=0A= sort: [].sort,=0A= splice: [].splice,=0A= =0A= find: function( selector ) {=0A= if ( this.length =3D=3D=3D 1 ) {=0A= var ret =3D this.pushStack( [], "find", selector );=0A= ret.length =3D 0;=0A= jQuery.find( selector, this[0], ret );=0A= return ret;=0A= } else {=0A= return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){=0A= return jQuery.find( selector, elem );=0A= })), "find", selector );=0A= }=0A= },=0A= =0A= clone: function( events ) {=0A= // Do the clone=0A= var ret =3D this.map(function(){=0A= if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {=0A= // IE copies events bound via attachEvent when=0A= // using cloneNode. Calling detachEvent on the=0A= // clone will also remove the events from the orignal=0A= // In order to get around this, we use innerHTML.=0A= // Unfortunately, this means some modifications to=0A= // attributes in IE that are actually only stored=0A= // as properties will not be copied (such as the=0A= // the name attribute on an input).=0A= var html =3D this.outerHTML;=0A= if ( !html ) {=0A= var div =3D this.ownerDocument.createElement("div");=0A= div.appendChild( this.cloneNode(true) );=0A= html =3D div.innerHTML;=0A= }=0A= =0A= return jQuery.clean([html.replace(/ jQuery\d+=3D"(?:\d+|null)"/g, = "").replace(/^\s*/, "")])[0];=0A= } else=0A= return this.cloneNode(true);=0A= });=0A= =0A= // Copy the events from the original to the clone=0A= if ( events =3D=3D=3D true ) {=0A= var orig =3D this.find("*").andSelf(), i =3D 0;=0A= =0A= ret.find("*").andSelf().each(function(){=0A= if ( this.nodeName !=3D=3D orig[i].nodeName )=0A= return;=0A= =0A= var events =3D jQuery.data( orig[i], "events" );=0A= =0A= for ( var type in events ) {=0A= for ( var handler in events[ type ] ) {=0A= jQuery.event.add( this, type, events[ type ][ handler ], events[ = type ][ handler ].data );=0A= }=0A= }=0A= =0A= i++;=0A= });=0A= }=0A= =0A= // Return the cloned set=0A= return ret;=0A= },=0A= =0A= filter: function( selector ) {=0A= return this.pushStack(=0A= jQuery.isFunction( selector ) &&=0A= jQuery.grep(this, function(elem, i){=0A= return selector.call( elem, i );=0A= }) ||=0A= =0A= jQuery.multiFilter( selector, jQuery.grep(this, function(elem){=0A= return elem.nodeType =3D=3D=3D 1;=0A= }) ), "filter", selector );=0A= },=0A= =0A= closest: function( selector ) {=0A= var pos =3D jQuery.expr.match.POS.test( selector ) ? jQuery(selector) = : null,=0A= closer =3D 0;=0A= =0A= return this.map(function(){=0A= var cur =3D this;=0A= while ( cur && cur.ownerDocument ) {=0A= if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {=0A= jQuery.data(cur, "closest", closer);=0A= return cur;=0A= }=0A= cur =3D cur.parentNode;=0A= closer++;=0A= }=0A= });=0A= },=0A= =0A= not: function( selector ) {=0A= if ( typeof selector =3D=3D=3D "string" )=0A= // test special case where just one selector is passed in=0A= if ( isSimple.test( selector ) )=0A= return this.pushStack( jQuery.multiFilter( selector, this, true ), = "not", selector );=0A= else=0A= selector =3D jQuery.multiFilter( selector, this );=0A= =0A= var isArrayLike =3D selector.length && selector[selector.length - 1] = !=3D=3D undefined && !selector.nodeType;=0A= return this.filter(function() {=0A= return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this !=3D = selector;=0A= });=0A= },=0A= =0A= add: function( selector ) {=0A= return this.pushStack( jQuery.unique( jQuery.merge(=0A= this.get(),=0A= typeof selector =3D=3D=3D "string" ?=0A= jQuery( selector ) :=0A= jQuery.makeArray( selector )=0A= )));=0A= },=0A= =0A= is: function( selector ) {=0A= return !!selector && jQuery.multiFilter( selector, this ).length > 0;=0A= },=0A= =0A= hasClass: function( selector ) {=0A= return !!selector && this.is( "." + selector );=0A= },=0A= =0A= val: function( value ) {=0A= if ( value =3D=3D=3D undefined ) { =0A= var elem =3D this[0];=0A= =0A= if ( elem ) {=0A= if( jQuery.nodeName( elem, 'option' ) )=0A= return (elem.attributes.value || {}).specified ? elem.value : = elem.text;=0A= =0A= // We need to handle select boxes special=0A= if ( jQuery.nodeName( elem, "select" ) ) {=0A= var index =3D elem.selectedIndex,=0A= values =3D [],=0A= options =3D elem.options,=0A= one =3D elem.type =3D=3D "select-one";=0A= =0A= // Nothing was selected=0A= if ( index < 0 )=0A= return null;=0A= =0A= // Loop through all the selected options=0A= for ( var i =3D one ? index : 0, max =3D one ? index + 1 : = options.length; i < max; i++ ) {=0A= var option =3D options[ i ];=0A= =0A= if ( option.selected ) {=0A= // Get the specifc value for the option=0A= value =3D jQuery(option).val();=0A= =0A= // We don't need an array for one selects=0A= if ( one )=0A= return value;=0A= =0A= // Multi-Selects return an array=0A= values.push( value );=0A= }=0A= }=0A= =0A= return values; =0A= }=0A= =0A= // Everything else, we just grab the value=0A= return (elem.value || "").replace(/\r/g, "");=0A= =0A= }=0A= =0A= return undefined;=0A= }=0A= =0A= if ( typeof value =3D=3D=3D "number" )=0A= value +=3D '';=0A= =0A= return this.each(function(){=0A= if ( this.nodeType !=3D 1 )=0A= return;=0A= =0A= if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )=0A= this.checked =3D (jQuery.inArray(this.value, value) >=3D 0 ||=0A= jQuery.inArray(this.name, value) >=3D 0);=0A= =0A= else if ( jQuery.nodeName( this, "select" ) ) {=0A= var values =3D jQuery.makeArray(value);=0A= =0A= jQuery( "option", this ).each(function(){=0A= this.selected =3D (jQuery.inArray( this.value, values ) >=3D 0 ||=0A= jQuery.inArray( this.text, values ) >=3D 0);=0A= });=0A= =0A= if ( !values.length )=0A= this.selectedIndex =3D -1;=0A= =0A= } else=0A= this.value =3D value;=0A= });=0A= },=0A= =0A= html: function( value ) {=0A= return value =3D=3D=3D undefined ?=0A= (this[0] ?=0A= this[0].innerHTML.replace(/ jQuery\d+=3D"(?:\d+|null)"/g, "") :=0A= null) :=0A= this.empty().append( value );=0A= },=0A= =0A= replaceWith: function( value ) {=0A= return this.after( value ).remove();=0A= },=0A= =0A= eq: function( i ) {=0A= return this.slice( i, +i + 1 );=0A= },=0A= =0A= slice: function() {=0A= return this.pushStack( Array.prototype.slice.apply( this, arguments ),=0A= "slice", Array.prototype.slice.call(arguments).join(",") );=0A= },=0A= =0A= map: function( callback ) {=0A= return this.pushStack( jQuery.map(this, function(elem, i){=0A= return callback.call( elem, i, elem );=0A= }));=0A= },=0A= =0A= andSelf: function() {=0A= return this.add( this.prevObject );=0A= },=0A= =0A= domManip: function( args, table, callback ) {=0A= if ( this[0] ) {=0A= var fragment =3D (this[0].ownerDocument || = this[0]).createDocumentFragment(),=0A= scripts =3D jQuery.clean( args, (this[0].ownerDocument || this[0]), = fragment ),=0A= first =3D fragment.firstChild;=0A= =0A= if ( first )=0A= for ( var i =3D 0, l =3D this.length; i < l; i++ )=0A= callback.call( root(this[i], first), this.length > 1 || i > 0 ?=0A= fragment.cloneNode(true) : fragment );=0A= =0A= if ( scripts )=0A= jQuery.each( scripts, evalScript );=0A= }=0A= =0A= return this;=0A= =0A= function root( elem, cur ) {=0A= return table && jQuery.nodeName(elem, "table") && = jQuery.nodeName(cur, "tr") ?=0A= (elem.getElementsByTagName("tbody")[0] ||=0A= elem.appendChild(elem.ownerDocument.createElement("tbody"))) :=0A= elem;=0A= }=0A= }=0A= };=0A= =0A= // Give the init function the jQuery prototype for later instantiation=0A= jQuery.fn.init.prototype =3D jQuery.fn;=0A= =0A= function evalScript( i, elem ) {=0A= if ( elem.src )=0A= jQuery.ajax({=0A= url: elem.src,=0A= async: false,=0A= dataType: "script"=0A= });=0A= =0A= else=0A= jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || = "" );=0A= =0A= if ( elem.parentNode )=0A= elem.parentNode.removeChild( elem );=0A= }=0A= =0A= function now(){=0A= return +new Date;=0A= }=0A= =0A= jQuery.extend =3D jQuery.fn.extend =3D function() {=0A= // copy reference to target object=0A= var target =3D arguments[0] || {}, i =3D 1, length =3D = arguments.length, deep =3D false, options;=0A= =0A= // Handle a deep copy situation=0A= if ( typeof target =3D=3D=3D "boolean" ) {=0A= deep =3D target;=0A= target =3D arguments[1] || {};=0A= // skip the boolean and the target=0A= i =3D 2;=0A= }=0A= =0A= // Handle case when target is a string or something (possible in deep = copy)=0A= if ( typeof target !=3D=3D "object" && !jQuery.isFunction(target) )=0A= target =3D {};=0A= =0A= // extend jQuery itself if only one argument is passed=0A= if ( length =3D=3D i ) {=0A= target =3D this;=0A= --i;=0A= }=0A= =0A= for ( ; i < length; i++ )=0A= // Only deal with non-null/undefined values=0A= if ( (options =3D arguments[ i ]) !=3D null )=0A= // Extend the base object=0A= for ( var name in options ) {=0A= var src =3D target[ name ], copy =3D options[ name ];=0A= =0A= // Prevent never-ending loop=0A= if ( target =3D=3D=3D copy )=0A= continue;=0A= =0A= // Recurse if we're merging object values=0A= if ( deep && copy && typeof copy =3D=3D=3D "object" && = !copy.nodeType )=0A= target[ name ] =3D jQuery.extend( deep, =0A= // Never move original objects, clone them=0A= src || ( copy.length !=3D null ? [ ] : { } )=0A= , copy );=0A= =0A= // Don't bring in undefined values=0A= else if ( copy !=3D=3D undefined )=0A= target[ name ] =3D copy;=0A= =0A= }=0A= =0A= // Return the modified object=0A= return target;=0A= };=0A= =0A= // exclude the following css properties to add px=0A= var exclude =3D /z-?index|font-?weight|opacity|zoom|line-?height/i,=0A= // cache defaultView=0A= defaultView =3D document.defaultView || {},=0A= toString =3D Object.prototype.toString;=0A= =0A= jQuery.extend({=0A= noConflict: function( deep ) {=0A= window.$ =3D _$;=0A= =0A= if ( deep )=0A= window.jQuery =3D _jQuery;=0A= =0A= return jQuery;=0A= },=0A= =0A= // See test/unit/core.js for details concerning isFunction.=0A= // Since version 1.3, DOM methods and functions like alert=0A= // aren't supported. They return false on IE (#2968).=0A= isFunction: function( obj ) {=0A= return toString.call(obj) =3D=3D=3D "[object Function]";=0A= },=0A= =0A= isArray: function( obj ) {=0A= return toString.call(obj) =3D=3D=3D "[object Array]";=0A= },=0A= =0A= // check if an element is in a (or is an) XML document=0A= isXMLDoc: function( elem ) {=0A= return elem.nodeType =3D=3D=3D 9 && elem.documentElement.nodeName = !=3D=3D "HTML" ||=0A= !!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );=0A= },=0A= =0A= // Evalulates a script in a global context=0A= globalEval: function( data ) {=0A= if ( data && /\S/.test(data) ) {=0A= // Inspired by code by Andrea Giammarchi=0A= // = http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom= .html=0A= var head =3D document.getElementsByTagName("head")[0] || = document.documentElement,=0A= script =3D document.createElement("script");=0A= =0A= script.type =3D "text/javascript";=0A= if ( jQuery.support.scriptEval )=0A= script.appendChild( document.createTextNode( data ) );=0A= else=0A= script.text =3D data;=0A= =0A= // Use insertBefore instead of appendChild to circumvent an IE6 bug.=0A= // This arises when a base node is used (#2709).=0A= head.insertBefore( script, head.firstChild );=0A= head.removeChild( script );=0A= }=0A= },=0A= =0A= nodeName: function( elem, name ) {=0A= return elem.nodeName && elem.nodeName.toUpperCase() =3D=3D = name.toUpperCase();=0A= },=0A= =0A= // args is for internal usage only=0A= each: function( object, callback, args ) {=0A= var name, i =3D 0, length =3D object.length;=0A= =0A= if ( args ) {=0A= if ( length =3D=3D=3D undefined ) {=0A= for ( name in object )=0A= if ( callback.apply( object[ name ], args ) =3D=3D=3D false )=0A= break;=0A= } else=0A= for ( ; i < length; )=0A= if ( callback.apply( object[ i++ ], args ) =3D=3D=3D false )=0A= break;=0A= =0A= // A special, fast, case for the most common use of each=0A= } else {=0A= if ( length =3D=3D=3D undefined ) {=0A= for ( name in object )=0A= if ( callback.call( object[ name ], name, object[ name ] ) = =3D=3D=3D false )=0A= break;=0A= } else=0A= for ( var value =3D object[0];=0A= i < length && callback.call( value, i, value ) !=3D=3D false; value = =3D object[++i] ){}=0A= }=0A= =0A= return object;=0A= },=0A= =0A= prop: function( elem, value, type, i, name ) {=0A= // Handle executable functions=0A= if ( jQuery.isFunction( value ) )=0A= value =3D value.call( elem, i );=0A= =0A= // Handle passing in a number to a CSS property=0A= return typeof value =3D=3D=3D "number" && type =3D=3D "curCSS" && = !exclude.test( name ) ?=0A= value + "px" :=0A= value;=0A= },=0A= =0A= className: {=0A= // internal only, use addClass("class")=0A= add: function( elem, classNames ) {=0A= jQuery.each((classNames || "").split(/\s+/), function(i, className){=0A= if ( elem.nodeType =3D=3D 1 && !jQuery.className.has( = elem.className, className ) )=0A= elem.className +=3D (elem.className ? " " : "") + className;=0A= });=0A= },=0A= =0A= // internal only, use removeClass("class")=0A= remove: function( elem, classNames ) {=0A= if (elem.nodeType =3D=3D 1)=0A= elem.className =3D classNames !=3D=3D undefined ?=0A= jQuery.grep(elem.className.split(/\s+/), function(className){=0A= return !jQuery.className.has( classNames, className );=0A= }).join(" ") :=0A= "";=0A= },=0A= =0A= // internal only, use hasClass("class")=0A= has: function( elem, className ) {=0A= return elem && jQuery.inArray( className, (elem.className || = elem).toString().split(/\s+/) ) > -1;=0A= }=0A= },=0A= =0A= // A method for quickly swapping in/out CSS properties to get correct = calculations=0A= swap: function( elem, options, callback ) {=0A= var old =3D {};=0A= // Remember the old values, and insert the new ones=0A= for ( var name in options ) {=0A= old[ name ] =3D elem.style[ name ];=0A= elem.style[ name ] =3D options[ name ];=0A= }=0A= =0A= callback.call( elem );=0A= =0A= // Revert the old values=0A= for ( var name in options )=0A= elem.style[ name ] =3D old[ name ];=0A= },=0A= =0A= css: function( elem, name, force, extra ) {=0A= if ( name =3D=3D "width" || name =3D=3D "height" ) {=0A= var val, props =3D { position: "absolute", visibility: "hidden", = display:"block" }, which =3D name =3D=3D "width" ? [ "Left", "Right" ] : = [ "Top", "Bottom" ];=0A= =0A= function getWH() {=0A= val =3D name =3D=3D "width" ? elem.offsetWidth : elem.offsetHeight;=0A= =0A= if ( extra =3D=3D=3D "border" )=0A= return;=0A= =0A= jQuery.each( which, function() {=0A= if ( !extra )=0A= val -=3D parseFloat(jQuery.curCSS( elem, "padding" + this, true)) = || 0;=0A= if ( extra =3D=3D=3D "margin" )=0A= val +=3D parseFloat(jQuery.curCSS( elem, "margin" + this, true)) = || 0;=0A= else=0A= val -=3D parseFloat(jQuery.curCSS( elem, "border" + this + = "Width", true)) || 0;=0A= });=0A= }=0A= =0A= if ( elem.offsetWidth !=3D=3D 0 )=0A= getWH();=0A= else=0A= jQuery.swap( elem, props, getWH );=0A= =0A= return Math.max(0, Math.round(val));=0A= }=0A= =0A= return jQuery.curCSS( elem, name, force );=0A= },=0A= =0A= curCSS: function( elem, name, force ) {=0A= var ret, style =3D elem.style;=0A= =0A= // We need to handle opacity special in IE=0A= if ( name =3D=3D "opacity" && !jQuery.support.opacity ) {=0A= ret =3D jQuery.attr( style, "opacity" );=0A= =0A= return ret =3D=3D "" ?=0A= "1" :=0A= ret;=0A= }=0A= =0A= // Make sure we're using the right name for getting the float value=0A= if ( name.match( /float/i ) )=0A= name =3D styleFloat;=0A= =0A= if ( !force && style && style[ name ] )=0A= ret =3D style[ name ];=0A= =0A= else if ( defaultView.getComputedStyle ) {=0A= =0A= // Only "float" is needed here=0A= if ( name.match( /float/i ) )=0A= name =3D "float";=0A= =0A= name =3D name.replace( /([A-Z])/g, "-$1" ).toLowerCase();=0A= =0A= var computedStyle =3D defaultView.getComputedStyle( elem, null );=0A= =0A= if ( computedStyle )=0A= ret =3D computedStyle.getPropertyValue( name );=0A= =0A= // We should always get a number back from opacity=0A= if ( name =3D=3D "opacity" && ret =3D=3D "" )=0A= ret =3D "1";=0A= =0A= } else if ( elem.currentStyle ) {=0A= var camelCase =3D name.replace(/\-(\w)/g, function(all, letter){=0A= return letter.toUpperCase();=0A= });=0A= =0A= ret =3D elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];=0A= =0A= // From the awesome hack by Dean Edwards=0A= // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291=0A= =0A= // If we're not dealing with a regular pixel number=0A= // but a number that has a weird ending, we need to convert it to = pixels=0A= if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {=0A= // Remember the original values=0A= var left =3D style.left, rsLeft =3D elem.runtimeStyle.left;=0A= =0A= // Put in the new values to get a computed value out=0A= elem.runtimeStyle.left =3D elem.currentStyle.left;=0A= style.left =3D ret || 0;=0A= ret =3D style.pixelLeft + "px";=0A= =0A= // Revert the changed values=0A= style.left =3D left;=0A= elem.runtimeStyle.left =3D rsLeft;=0A= }=0A= }=0A= =0A= return ret;=0A= },=0A= =0A= clean: function( elems, context, fragment ) {=0A= context =3D context || document;=0A= =0A= // !context.createElement fails in IE with an error but returns typeof = 'object'=0A= if ( typeof context.createElement =3D=3D=3D "undefined" )=0A= context =3D context.ownerDocument || context[0] && = context[0].ownerDocument || document;=0A= =0A= // If a single string is passed in and it's a single tag=0A= // just do a createElement and skip the rest=0A= if ( !fragment && elems.length =3D=3D=3D 1 && typeof elems[0] = =3D=3D=3D "string" ) {=0A= var match =3D /^<(\w+)\s*\/?>$/.exec(elems[0]);=0A= if ( match )=0A= return [ context.createElement( match[1] ) ];=0A= }=0A= =0A= var ret =3D [], scripts =3D [], div =3D context.createElement("div");=0A= =0A= jQuery.each(elems, function(i, elem){=0A= if ( typeof elem =3D=3D=3D "number" )=0A= elem +=3D '';=0A= =0A= if ( !elem )=0A= return;=0A= =0A= // Convert html string into DOM nodes=0A= if ( typeof elem =3D=3D=3D "string" ) {=0A= // Fix "XHTML"-style tags in all browsers=0A= elem =3D elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, = tag){=0A= return = tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?=0A= all :=0A= front + ">";=0A= });=0A= =0A= // Trim whitespace, otherwise indexOf won't work as expected=0A= var tags =3D elem.replace(/^\s+/, "").substring(0, 10).toLowerCase();=0A= =0A= var wrap =3D=0A= // option or optgroup=0A= !tags.indexOf("", "" ] ||=0A= =0A= !tags.indexOf("", "" ] ||=0A= =0A= tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&=0A= [ 1, "", "
" ] ||=0A= =0A= !tags.indexOf("", "" ] ||=0A= =0A= // matched above=0A= (!tags.indexOf("", "" ] ||=0A= =0A= !tags.indexOf("", "" ] ||=0A= =0A= // IE can't serialize and