Commits

marconius committed 4e729e1

random stuff

Comments (0)

Files changed (18)

satchmo/static/css/blackbird.css

-/*
-  Blackbird - Open Source JavaScript Logging Utility
-  Author: G Scott Olson
-  Web: http://blackbirdjs.googlecode.com/
-       http://www.gscottolson.com/blackbirdjs/
-  Version: 1.0
-
-  The MIT License - Copyright (c) 2008 Blackbird Project
-*/
-#blackbird { margin:0; padding:0; position:fixed; _position:absolute; font:11px/1.3 Consolas, 'Lucida Console', Monaco, monospace; _border:2px solid #BBB;  }
-#blackbird.bbTopLeft { top:0; left:0; _top:expression(eval(document.documentElement.scrollTop+8)); _left:expression(eval(document.documentElement.scrollLeft+8)); }
-#blackbird.bbTopRight { top:0; right:0; }
-* html .bbTopRight { right:auto; top:expression(eval(document.documentElement.scrollTop+8)); left:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-document.getElementById('blackbird').offsetWidth-8)); }
-#blackbird.bbBottomLeft  { bottom:0; left:0; }
-* html .bbBottomLeft { bottom:auto; top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-document.getElementById('blackbird').offsetHeight-8)); left:expression(eval(document.documentElement.scrollLeft+8)); }
-#blackbird.bbBottomRight { bottom:0; right:0; }
-* html .bbBottomRight { bottom:auto; right:auto; top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-document.getElementById('blackbird').offsetHeight-8)); left:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-document.getElementById('blackbird').offsetWidth-8)); }
-
-#blackbird.bbSmall { width:300px; _width:272px; }
-  #blackbird.bbSmall .header { _width:272px; }
-  #blackbird.bbSmall .header div.left, #blackbird.bbSmall .footer div.left   { width:150px; }
-  #blackbird.bbSmall .main { _width:272px; }
-  #blackbird.bbSmall .main div { height:200px; }
-  #blackbird.bbSmall .main div.mainBody { width:272px; }
-  #blackbird.bbSmall .footer { _width:272px; }
-
-#blackbird.bbLarge { width:500px; _width:472px; }
-  #blackbird.bbLarge .header { _width:472px; }
-  #blackbird.bbLarge .header div.left, #blackbird.bbLarge .footer div.left { width:350px; }
-  #blackbird.bbLarge .main { _width:472px; }
-  #blackbird.bbLarge .main div { height:500px; }
-  #blackbird.bbLarge .main div.mainBody { width:472px; }
-  #blackbird.bbLarge .footer { _width:472px; }
-
-#blackbird .header span { position:relative; width:16px; height:16px; margin:0 4px; float:left; background-image:url(../images/blackbird_icons.png); background-repeat:no-repeat; }
-	#blackbird .header span.error           { background-position:0px 0px; }
-	#blackbird .header span.errorDisabled   { background-position:-16px 0px; }
-	#blackbird .header span.warn            { background-position:0px -16px; }
-	#blackbird .header span.warnDisabled    { background-position:-16px -16px; }
-	#blackbird .header span.info            { background-position:0px -32px; }
-	#blackbird .header span.infoDisabled    { background-position:-16px -32px; }
-	#blackbird .header span.debug           { background-position:0px -48px; }
-	#blackbird .header span.debugDisabled   { background-position:-16px -48px; }
-	#blackbird .header span.profile         { background-position:0px -64px; }
-	#blackbird .header span.profileDisabled { background-position:-16px -64px; }
-	#blackbird .header span.close           { background-position:0px -80px; }
-	#blackbird .header span.clear           { background-position:-16px -80px; }
-	#blackbird .header span.small           { background-position:0px -96px; }
-	#blackbird .header span.large           { background-position:-16px -96px; }
-
-#blackbird .header > div, #blackbird .main > div, #blackbird .footer > div { background-image:url(../images/blackbird_panel.png); background-repeat:no-repeat; }
-	
-#blackbird .header div { float:left; _background-color:#000; }
-	#blackbird .header div.left { background-position:top left; height:40px; _height:16px; }
-		#blackbird .header .left div.filters { margin-left: -4px; padding:16px 0 0 19px; float:left; _padding:6px 8px; }
-	#blackbird .header div.right { background-position:top right; height:40px; width:150px; _width:122px; _height:16px; }
-		#blackbird .header .right div.controls { padding:16px 24px 0 0; float:right; _padding:6px 8px; }
-		#blackbird .header .right .controls span { margin:0; }
-		#blackbird .header .right .controls span.clear { margin-right:8px; }
-
-#blackbird .main div { float:left; }
-	#blackbird .main div.left { background-position:0 -30px; width:11px; _width:0; }
-	#blackbird .main div.mainBody { background-position:40% -40px; _background-color:#000; _filter:alpha(opacity='93'); }
-		#blackbird .main .mainBody ol { line-height: 1.45; height:100%; overflow:auto; width:100%; list-style-type:none; margin:0; padding:0; }
-		#blackbird .main .mainBody ol li { padding:1px 4px 1px 30px; border-bottom: 1px solid #333; color:#CCC; margin: 2px 2px; _text-indent: -2px; }
-		  #blackbird .main .mainBody ol li span { background:url(../images/blackbird_icons.png) no-repeat 0 0; border: 1px solid #333; height:16px; width:16px; display:block; float:left; margin: -2px 0 1px -25px; _display:inline; }
-		
-#blackbird .main .mainBody ol li.error span   { background-position:0 0; }
-#blackbird .main .mainBody ol li.warn span    { background-position:0 -16px; }
-#blackbird .main .mainBody ol li.info span    { background-position:0 -32px; }
-#blackbird .main .mainBody ol li.debug span   { background-position:0 -48px; }
-#blackbird .main .mainBody ol li.profile span { background-position:0 -64px; }
-
-#blackbird .main .mainBody ol li.profile { color:#DDD; font-style:italic; }
-			
-#blackbird .errorHidden li.error,	#blackbird .warnHidden li.warn,	#blackbird .infoHidden li.info,	#blackbird .debugHidden li.debug,	#blackbird .profileHidden li.profile { display:none; }
-
-#blackbird .main div.right { background:url(../images/blackbird_panel.png) no-repeat 100% -30px; width:17px; _width:0; }
-
-#blackbird .footer div { height:50px; float:left; _background-color:#000; _height:30px; }
-#blackbird .footer div.left { background-position:bottom left; _width:100%  !important; }
-  #blackbird .footer div.left label { display:block;color:#BBB;margin:8px 0 0 16px; position:relative; font-family:Arial,sans-serif; _margin:4px 0 0 8px;}
-    #blackbird .footer div.left label input { padding:0;vertical-align:middle; }
-#blackbird .footer div.right { background-position:bottom right; width:150px; _width:0; }

satchmo/static/css/jquery.autocomplete.css

-.ac_results {
-	padding: 0px;
-	border: 1px solid black;
-	background-color: white;
-	overflow: hidden;
-	z-index: 99999;
-}
-
-.ac_results ul {
-	width: 100%;
-	list-style-position: outside;
-	list-style: none;
-	padding: 0;
-	margin: 0;
-}
-
-.ac_results li {
-	margin: 0px;
-	padding: 2px 5px;
-	cursor: default;
-	display: block;
-	/* 
-	if width will be 100% horizontal scrollbar will apear 
-	when scroll mode will be used
-	*/
-	/*width: 100%;*/
-	font: menu;
-	font-size: 12px;
-	/* 
-	it is very important, if line-height not setted or setted 
-	in relative units scroll will be broken in firefox
-	*/
-	line-height: 16px;
-	overflow: hidden;
-}
-
-.ac_loading {
-	background: white url('/static/images/indicator.gif') right center no-repeat;
-}
-
-.ac_odd {
-	background-color: #eee;
-}
-
-.ac_over {
-	background-color: #0A246A;
-	color: white;
-}

satchmo/static/css/style.css

-/* @override http://localhost:8000/static/css/style.css */
-
-#container {
-width: 90%;
-margin: 10px auto;
-background-color: #fff;
-color: #333;
-border: 1px solid gray;
-line-height: 130%;
-padding: 0;
-margin-top: 0;
-}
-
-#navbar {
-width: 100%;
-background-color: #fff;
-color: #333;
-line-height: 90%;	
-border: none;
-border-bottom: 1px solid silver;
-}
-
-#top {
-padding: .5em;
-background-color: #ddd;
-border-bottom: 1px solid gray;
-}
-
-#top h1 {
-padding: 0;
-margin: 0;
-}
-
-h5 {
-margin: 0;
-padding: 0;
-}
-
-#sidebar-secondary {
-float: left;
-width: 160px;
-margin: 0;
-padding: 1em;
-}
-
-#sidebar-secondary h3, #sidebar-primary h3 {
-	font-size: 110%;
-	font-weight: bold;
-	margin-bottom: 0.1em;
-	margin-top: 1em;	
-}
-
-#sidebar-primary {
-float: right;
-width: 160px;
-margin: 0;
-padding: 1em;
-background-color: #ddd;
-border-left: 1px solid silver;
-border-bottom: 1px solid silver;
-}
-
-#sidebar-primary .wishlist {
-	padding-top: 10px;
-}
-
-
-#content {
-margin-left: 200px;
-margin-right: 200px;
-padding: 1em;
-}
-
-body {
-	font-family:  "Arial", serif;
-	font-size: 12px;
-	background-color: #555;
-	margin-top: 0px;
-	padding-top: 0px;
-}
-
-#pagination {
-clear:both;
-display: block;
-width:100%;
-float: none;
-padding: 1em;
-}
-
-#pagination ul {
-margin: 0;
-padding: 0;
-text-align: left; 
-font-size: 12px;
-}
-
-#pagination li {
-list-style-type: none;
-display: inline;
-padding-bottom: 1px;
-}
-
-#pagination a, #pagination a:visited {
-padding: 0 5px;
-text-decoration: none; 
-}
-
-#pagination li.currentpage {
-font-weight: bold;
-padding: 0 5px;
-}
-
-#content div.productreviews {
-padding-top: 10px;
-padding-bottom: 10px;
-font-size: 12px;
-}
-
-
-#content div.productreviews h2 {
-    font-size: 14px;
-}
-
-#content div.productreviews span.label {
-	float: left;
-	width: 80px;
-}
-
-#footer {
-clear: both;
-margin: 0;
-padding: .5em;
-color: #333;
-background-color: #ddd;
-border-top: 1px solid gray;
-}
-
-#sidebar-secondary p, #sidebar-primary p { margin: 0 0 1em 0; }
-#content h2 { margin: 0 0 .5em 0; }
-
-.brandcategories {
-    clear: both;
-}
-
-.brandImage,
-.productImage {
-border:solid 1px silver;
-padding:5px;
-float: left;
-margin-top: 10px;
-margin-left: 10px;
-margin-right: 10px;
-margin-bottom:2px;
-text-align: center;
-}
-
-.productImage p {
-text-align: center;
-font-size: 10pt;
-}
-
-#menu_container ul {
-margin: 0;
-padding: 0;
-list-style-type: none;
-}
-
-
-#shipping ul li {
-list-style-type: none;	
-text-decoration: none;
-padding-left: 1em;
-text-indent: -1em;
-}
-
-#checkoutprogress {
-border-style: solid;
-border-width: 1px;
-padding: 3px;
-margin-bottom: 25px;	
-}
-
-#checkoutprogress ul {
-display: inline;
-margin-left: 0;
-padding-left: 0;
-border: none;
-}
-
-#checkoutprogress ul li {
-margin-left: 0;
-padding-left: 2px;
-display: inline;
-list-style: none;
-}
-
-#checkoutprogress ul li:before {
-content: "\0020 \0020 \0020 \00BB \0020";
-display: inline;
-list-style: none;
-}
-
-#checkoutprogress ul li.first:before {
-content: " ";
-}
-
-#checkoutprogress li.active {
-background-color: #ccc;
-}
-
-#wishlist ul li,
-#product_category ul li {
-list-style: none;
-padding: 0.5em;
-border-bottom: 1px dashed #e0e0e0;	
-background-color: white;
-}
-
-#wishlist ul li:hover,
-#product_category ul li:hover {
-	background-color: #f0fff0;
-}
-
-#wishlist ul li a,
-#product_category ul li a {
-	display: block;
-}
-
-#wishlist span.date {
-	font-style: italic;
-	display: block;
-	margin-left: 5px;
-	font-size: 10px;
-}
-
-#wishlist form {
-	display: inline;
-}
-
-#menu_container a {
-display: block;
-color: #FFF;
-background-color: #7F7F7F;
-width: 9em;
-padding: 3px 17px 3px 8px;
-text-decoration: none;
-border-bottom: 1px solid #fff;
-font-weight: bold;
-}
-
-#menu_container a:hover {
-background-color: #B6B6B6;
-color: #FFF;
-}
-
-#menu_container li li a {
-display: block;
-color: #FFF;
-background-color: #C0C0C0;
-width: 9em;
-padding: 3px 8px 3px 17px;
-text-decoration: none;
-border-bottom: 1px solid #fff;
-font-weight: normal;
-}
-
-#menu_container li li li a {
-display: block;
-color: #FFF;
-width: 9em;
-background-color: #C0C0C0;
-padding: 3px 1px 3px 24px;
-text-decoration: none;
-border-bottom: 1px solid #fff;
-font-weight: normal;
-}
-
-#menu_container a.current:before {
-content: "\0020 \0020 \0020 \00BB \0020";
-}
-
-.addressblock {
-padding-top: .5em;
-padding-bottom: .5em;
-}
-
-.profile li {
-list-style-type: none;
-}
-
-table.ordertable {
-width:  100%;
-font-weight: normal;
-font-size: 13px;
-}
-
-table.ordertable thead {
-	background-color: #ddd;
-}
-
-table.ordertable span.orderitemqty {
-	font-style: italic;
-}
-p {
-	line-height: 150%;
-}
-
-.help, p.help {
-        font-size:9px !important; color:#999;
-}
-
-img {
-	border: none;
-}
-
-.error {
-    color: red;
-    text-align: center;
-}
-
-/* =============== Navigation Bars ===================== */
-
-#navbar ul {		
-	margin: 1em;
-	padding: 0px;
-}
-#navbar ul li { 
-	display: inline; 
-	list-style: none; 		
-}
-#navbar ul li { 
-	padding-left: 0.7em; 
-	padding-right: 0.5em; 
-	border-left: 1px solid #b0b0b0; 	
-}  
-#navbar ul li.first {
-	padding-left: 0em; 
-	border-left: none; 
-}
-
-.recentview h3 {
-	padding-bottom: 10px;
-}
-
-.recentitem {
-	padding-bottom: 10px;
-}
-
-div.recentlyadded { 
-    display: block;
-}
-
-.qtyform #id_quantity {
-    width: 5em;
-}
-
-#payment ul li{
-    list-style-type: none;
-}
-
-/* ============ Upsell section ============== */
-
-div.upsell {
-	padding-top: 10px;
-}
-
-div.upsell .upselldescription {
-	padding-bottom: 10px;
-}

satchmo/static/images/blackbird_icons.png

Removed
Old image

satchmo/static/images/blackbird_panel.png

Removed
Old image

satchmo/static/images/indicator.gif

Removed
Old image

satchmo/static/images/productimage-picture-default.jpg

Removed
Old image

satchmo/static/images/sample-logo.bmp

Removed
Old image

satchmo/static/js/blackbird.js

-/*
-	Blackbird - Open Source JavaScript Logging Utility
-	Author: G Scott Olson
-	Web: http://blackbirdjs.googlecode.com/
-	     http://www.gscottolson.com/blackbirdjs/
-	Version: 1.0
-
-	The MIT License - Copyright (c) 2008 Blackbird Project
-*/
-( function() {
-	var NAMESPACE = 'log';
-	var IE6_POSITION_FIXED = true; // enable IE6 {position:fixed}
-	
-	var bbird;
-	var outputList;
-	var cache = [];
-	
-	var state = getState();
-	var classes = {};
-	var profiler = {};
-	var IDs = {
-		blackbird: 'blackbird',
-		checkbox: 'bbVis',
-		filters: 'bbFilters',
-		controls: 'bbControls',
-		size: 'bbSize'
-	}
-	var messageTypes = { //order of these properties imply render order of filter controls
-		debug: true,
-		info: true,
-		warn: true,
-		error: true,
-		profile: true
-	};
-	
-	function generateMarkup() { //build markup
-		var spans = [];
-		for ( type in messageTypes ) {
-			spans.push( [ '<span class="', type, '" type="', type, '"></span>'].join( '' ) );
-		}
-
-		var newNode = document.createElement( 'DIV' );
-		newNode.id = IDs.blackbird;
-		newNode.style.display = 'none';
-		newNode.innerHTML = [
-			'<div class="header">',
-				'<div class="left">',
-					'<div id="', IDs.filters, '" class="filters" title="click to filter by message type">', spans.join( '' ), '</div>',
-				'</div>',
-				'<div class="right">',
-					'<div id="', IDs.controls, '" class="controls">',
-						'<span id="', IDs.size ,'" title="contract" op="resize"></span>',
-						'<span class="clear" title="clear" op="clear"></span>',
-						'<span class="close" title="close" op="close"></span>',
-					'</div>',
-				'</div>',
-			'</div>',
-			'<div class="main">',
-				'<div class="left"></div><div class="mainBody">',
-					'<ol>', cache.join( '' ), '</ol>',
-				'</div><div class="right"></div>',
-			'</div>',
-			'<div class="footer">',
-				'<div class="left"><label for="', IDs.checkbox, '"><input type="checkbox" id="', IDs.checkbox, '" />Visible on page load</label></div>',
-				'<div class="right"></div>',
-			'</div>'
-		].join( '' );
-		return newNode;
-	}
-
-	function backgroundImage() { //(IE6 only) change <BODY> tag's background to resolve {position:fixed} support
-		var bodyTag = document.getElementsByTagName( 'BODY' )[ 0 ];
-		
-		if ( bodyTag.currentStyle && IE6_POSITION_FIXED ) {
-			if (bodyTag.currentStyle.backgroundImage == 'none' ) {
-				bodyTag.style.backgroundImage = 'url(about:blank)';
-			}
-			if (bodyTag.currentStyle.backgroundAttachment == 'scroll' ) {
-				bodyTag.style.backgroundAttachment = 'fixed';
-			}
-		}
-	}
-
-	function addMessage( type, content ) { //adds a message to the output list
-		content = ( content.constructor == Array ) ? content.join( '' ) : content;
-		if ( outputList ) {
-			var newMsg = document.createElement( 'LI' );
-			newMsg.className = type;
-			newMsg.innerHTML = [ '<span class="icon"></span>', content ].join( '' );
-			outputList.appendChild( newMsg );
-			scrollToBottom();
-		} else {
-			cache.push( [ '<li class="', type, '"><span class="icon"></span>', content, '</li>' ].join( '' ) );
-		}
-	}
-	
-	function clear() { //clear list output
-		outputList.innerHTML = '';
-	}
-	
-	function clickControl( evt ) {
-		if ( !evt ) evt = window.event;
-		var el = ( evt.target ) ? evt.target : evt.srcElement;
-
-		if ( el.tagName == 'SPAN' ) {
-			switch ( el.getAttributeNode( 'op' ).nodeValue ) {
-				case 'resize': resize(); break;
-				case 'clear':  clear();  break;
-				case 'close':  hide();   break;
-			}
-		}
-	}
-	
-	function clickFilter( evt ) { //show/hide a specific message type
-		if ( !evt ) evt = window.event;
-		var span = ( evt.target ) ? evt.target : evt.srcElement;
-
-		if ( span && span.tagName == 'SPAN' ) {
-
-			var type = span.getAttributeNode( 'type' ).nodeValue;
-
-			if ( evt.altKey ) {
-				var filters = document.getElementById( IDs.filters ).getElementsByTagName( 'SPAN' );
-
-				var active = 0;
-				for ( entry in messageTypes ) {
-					if ( messageTypes[ entry ] ) active++;
-				}
-				var oneActiveFilter = ( active == 1 && messageTypes[ type ] );
-
-				for ( var i = 0; filters[ i ]; i++ ) {
-					var spanType = filters[ i ].getAttributeNode( 'type' ).nodeValue;
-
-					filters[ i ].className = ( oneActiveFilter || ( spanType == type ) ) ? spanType : spanType + 'Disabled';
-					messageTypes[ spanType ] = oneActiveFilter || ( spanType == type );
-				}
-			}
-			else {
-				messageTypes[ type ] = ! messageTypes[ type ];
-				span.className = ( messageTypes[ type ] ) ? type : type + 'Disabled';
-			}
-
-			//build outputList's class from messageTypes object
-			var disabledTypes = [];
-			for ( type in messageTypes ) {
-				if ( ! messageTypes[ type ] ) disabledTypes.push( type );
-			}
-			disabledTypes.push( '' );
-			outputList.className = disabledTypes.join( 'Hidden ' );
-
-			scrollToBottom();
-		}
-	}
-
-	function clickVis( evt ) {
-		if ( !evt ) evt = window.event;
-		var el = ( evt.target ) ? evt.target : evt.srcElement;
-
-		state.load = el.checked;
-		setState();
-	}
-	
-	
-	function scrollToBottom() { //scroll list output to the bottom
-		outputList.scrollTop = outputList.scrollHeight;
-	}
-	
-	function isVisible() { //determine the visibility
-		return ( bbird.style.display == 'block' );
-	}
-
-	function hide() { 
-	  bbird.style.display = 'none';
-	}
-			
-	function show() {
-		var body = document.getElementsByTagName( 'BODY' )[ 0 ];
-		body.removeChild( bbird );
-		body.appendChild( bbird );
-		bbird.style.display = 'block';
-	}
-	
-	//sets the position
-	function reposition( position ) {
-		if ( position === undefined || position == null ) {
-			position = ( state && state.pos === null ) ? 1 : ( state.pos + 1 ) % 4; //set to initial position ('topRight') or move to next position
-		}
-				
-		switch ( position ) {
-			case 0: classes[ 0 ] = 'bbTopLeft'; break;
-			case 1: classes[ 0 ] = 'bbTopRight'; break;
-			case 2: classes[ 0 ] = 'bbBottomLeft'; break;
-			case 3: classes[ 0 ] = 'bbBottomRight'; break;
-		}
-		state.pos = position;
-		setState();
-	}
-
-	function resize( size ) {
-		if ( size === undefined || size === null ) {
-			size = ( state && state.size == null ) ? 0 : ( state.size + 1 ) % 2;
-	  	}
-
-		classes[ 1 ] = ( size === 0 ) ? 'bbSmall' : 'bbLarge'
-
-		var span = document.getElementById( IDs.size );
-		span.title = ( size === 1 ) ? 'small' : 'large';
-		span.className = span.title;	  
-
-		state.size = size;
-		setState();
-		scrollToBottom();
-	}
-
-	function setState() {
-		var props = [];
-		for ( entry in state ) {
-			var value = ( state[ entry ] && state[ entry ].constructor === String ) ? '"' + state[ entry ] + '"' : state[ entry ]; 
-			props.push( entry + ':' + value );
-		}
-		props = props.join( ',' );
-		
-		var expiration = new Date();
-		expiration.setDate( expiration.getDate() + 14 );
-		document.cookie = [ 'blackbird={', props, '}; expires=', expiration.toUTCString() ,';' ].join( '' );
-
-		var newClass = [];
-		for ( word in classes ) {
-			newClass.push( classes[ word ] );
-		}
-		bbird.className = newClass.join( ' ' );
-	}
-	
-	function getState() {
-		var re = new RegExp( /blackbird=({[^;]+})(;|\b|$)/ );
-		var match = re.exec( document.cookie );
-		return ( match && match[ 1 ] ) ? eval( '(' + match[ 1 ] + ')' ) : { pos:null, size:null, load:null };
-	}
-	
-	//event handler for 'keyup' event for window
-	function readKey( evt ) {
-		if ( !evt ) evt = window.event;
-		var code = 113; //F2 key
-					
-		if ( evt && evt.keyCode == code ) {
-					
-			var visible = isVisible();
-					
-			if ( visible && evt.shiftKey && evt.altKey ) clear();
-			else if	 (visible && evt.shiftKey ) reposition();
-			else if ( !evt.shiftKey && !evt.altKey ) {
-			  ( visible ) ? hide() : show();
-			}
-		}
-	}
-
-	//event management ( thanks John Resig )
-	function addEvent( obj, type, fn ) {
-		var obj = ( obj.constructor === String ) ? document.getElementById( obj ) : obj;
-		if ( obj.attachEvent ) {
-			obj[ 'e' + type + fn ] = fn;
-			obj[ type + fn ] = function(){ obj[ 'e' + type + fn ]( window.event ) };
-			obj.attachEvent( 'on' + type, obj[ type + fn ] );
-		} else obj.addEventListener( type, fn, false );
-	}
-	function removeEvent( obj, type, fn ) {
-		var obj = ( obj.constructor === String ) ? document.getElementById( obj ) : obj;
-		if ( obj.detachEvent ) {
-			obj.detachEvent( 'on' + type, obj[ type + fn ] );
-			obj[ type + fn ] = null;
-	  } else obj.removeEventListener( type, fn, false );
-	}
-
-	window[ NAMESPACE ] = {
-		toggle:
-			function() { ( isVisible() ) ? hide() : show(); },
-		resize:
-			function() { resize(); },
-		clear:
-			function() { clear(); },
-		move:
-			function() { reposition(); },
-		debug: 
-			function( msg ) { addMessage( 'debug', msg ); },
-		warn:
-			function( msg ) { addMessage( 'warn', msg ); },
-		info:
-			function( msg ) { addMessage( 'info', msg ); },
-		error:
-			function( msg ) { addMessage( 'error', msg ); },
-		profile: 
-			function( label ) {
-				var currentTime = new Date(); //record the current time when profile() is executed
-				
-				if ( label == undefined || label == '' ) {
-					addMessage( 'error', '<b>ERROR:</b> Please specify a label for your profile statement' );
-				}
-				else if ( profiler[ label ] ) {
-					addMessage( 'profile', [ label, ': ', currentTime - profiler[ label ],	'ms' ].join( '' ) );
-					delete profiler[ label ];
-				}
-				else {
-					profiler[ label ] = currentTime;
-					addMessage( 'profile', label );
-				}
-				return currentTime;
-			}
-	}
-
-	addEvent( window, 'load', 
-		/* initialize Blackbird when the page loads */
-		function() {
-			var body = document.getElementsByTagName( 'BODY' )[ 0 ];
-			bbird = body.appendChild( generateMarkup() );
-			outputList = bbird.getElementsByTagName( 'OL' )[ 0 ];
-		
-			backgroundImage();
-		
-			//add events
-			addEvent( IDs.checkbox, 'click', clickVis );
-			addEvent( IDs.filters, 'click', clickFilter );
-			addEvent( IDs.controls, 'click', clickControl );
-			addEvent( document, 'keyup', readKey);
-
-			resize( state.size );
-			reposition( state.pos );
-			if ( state.load ) {
-				show();
-				document.getElementById( IDs.checkbox ).checked = true; 
-			}
-
-			scrollToBottom();
-
-			window[ NAMESPACE ].init = function() {
-				show();
-				window[ NAMESPACE ].error( [ '<b>', NAMESPACE, '</b> can only be initialized once' ] );
-			}
-
-			addEvent( window, 'unload', function() {
-				removeEvent( IDs.checkbox, 'click', clickVis );
-				removeEvent( IDs.filters, 'click', clickFilter );
-				removeEvent( IDs.controls, 'click', clickControl );
-				removeEvent( document, 'keyup', readKey );
-			});
-		});
-})();

satchmo/static/js/jquery-1.4.2.js

-/*!
- * jQuery JavaScript Library v1.4.2
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Sat Feb 13 22:33:48 2010 -0500
- */
-(function( window, undefined ) {
-
-// Define a local copy of jQuery
-var jQuery = function( selector, context ) {
-		// The jQuery object is actually just the init constructor 'enhanced'
-		return new jQuery.fn.init( selector, context );
-	},
-
-	// Map over jQuery in case of overwrite
-	_jQuery = window.jQuery,
-
-	// Map over the $ in case of overwrite
-	_$ = window.$,
-
-	// Use the correct document accordingly with window argument (sandbox)
-	document = window.document,
-
-	// A central reference to the root jQuery(document)
-	rootjQuery,
-
-	// A simple way to check for HTML strings or ID strings
-	// (both of which we optimize for)
-	quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,
-
-	// Is it a simple selector
-	isSimple = /^.[^:#\[\.,]*$/,
-
-	// Check if a string has a non-whitespace character in it
-	rnotwhite = /\S/,
-
-	// Used for trimming whitespace
-	rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g,
-
-	// Match a standalone tag
-	rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
-
-	// Keep a UserAgent string for use with jQuery.browser
-	userAgent = navigator.userAgent,
-
-	// For matching the engine and version of the browser
-	browserMatch,
-	
-	// Has the ready events already been bound?
-	readyBound = false,
-	
-	// The functions to execute on DOM ready
-	readyList = [],
-
-	// The ready event handler
-	DOMContentLoaded,
-
-	// Save a reference to some core methods
-	toString = Object.prototype.toString,
-	hasOwnProperty = Object.prototype.hasOwnProperty,
-	push = Array.prototype.push,
-	slice = Array.prototype.slice,
-	indexOf = Array.prototype.indexOf;
-
-jQuery.fn = jQuery.prototype = {
-	init: function( selector, context ) {
-		var match, elem, ret, doc;
-
-		// Handle $(""), $(null), or $(undefined)
-		if ( !selector ) {
-			return this;
-		}
-
-		// Handle $(DOMElement)
-		if ( selector.nodeType ) {
-			this.context = this[0] = selector;
-			this.length = 1;
-			return this;
-		}
-		
-		// The body element only exists once, optimize finding it
-		if ( selector === "body" && !context ) {
-			this.context = document;
-			this[0] = document.body;
-			this.selector = "body";
-			this.length = 1;
-			return this;
-		}
-
-		// Handle HTML strings
-		if ( typeof selector === "string" ) {
-			// Are we dealing with HTML string or an ID?
-			match = quickExpr.exec( selector );
-
-			// Verify a match, and that no context was specified for #id
-			if ( match && (match[1] || !context) ) {
-
-				// HANDLE: $(html) -> $(array)
-				if ( match[1] ) {
-					doc = (context ? context.ownerDocument || context : document);
-
-					// If a single string is passed in and it's a single tag
-					// just do a createElement and skip the rest
-					ret = rsingleTag.exec( selector );
-
-					if ( ret ) {
-						if ( jQuery.isPlainObject( context ) ) {
-							selector = [ document.createElement( ret[1] ) ];
-							jQuery.fn.attr.call( selector, context, true );
-
-						} else {
-							selector = [ doc.createElement( ret[1] ) ];
-						}
-
-					} else {
-						ret = buildFragment( [ match[1] ], [ doc ] );
-						selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
-					}
-					
-					return jQuery.merge( this, selector );
-					
-				// HANDLE: $("#id")
-				} else {
-					elem = document.getElementById( match[2] );
-
-					if ( elem ) {
-						// Handle the case where IE and Opera return items
-						// by name instead of ID
-						if ( elem.id !== match[2] ) {
-							return rootjQuery.find( selector );
-						}
-
-						// Otherwise, we inject the element directly into the jQuery object
-						this.length = 1;
-						this[0] = elem;
-					}
-
-					this.context = document;
-					this.selector = selector;
-					return this;
-				}
-
-			// HANDLE: $("TAG")
-			} else if ( !context && /^\w+$/.test( selector ) ) {
-				this.selector = selector;
-				this.context = document;
-				selector = document.getElementsByTagName( selector );
-				return jQuery.merge( this, selector );
-
-			// HANDLE: $(expr, $(...))
-			} else if ( !context || context.jquery ) {
-				return (context || rootjQuery).find( selector );
-
-			// HANDLE: $(expr, context)
-			// (which is just equivalent to: $(context).find(expr)
-			} else {
-				return jQuery( context ).find( selector );
-			}
-
-		// HANDLE: $(function)
-		// Shortcut for document ready
-		} else if ( jQuery.isFunction( selector ) ) {
-			return rootjQuery.ready( selector );
-		}
-
-		if (selector.selector !== undefined) {
-			this.selector = selector.selector;
-			this.context = selector.context;
-		}
-
-		return jQuery.makeArray( selector, this );
-	},
-
-	// Start with an empty selector
-	selector: "",
-
-	// The current version of jQuery being used
-	jquery: "1.4.2",
-
-	// The default length of a jQuery object is 0
-	length: 0,
-
-	// The number of elements contained in the matched element set
-	size: function() {
-		return this.length;
-	},
-
-	toArray: function() {
-		return slice.call( this, 0 );
-	},
-
-	// Get the Nth element in the matched element set OR
-	// Get the whole matched element set as a clean array
-	get: function( num ) {
-		return num == null ?
-
-			// Return a 'clean' array
-			this.toArray() :
-
-			// Return just the object
-			( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
-	},
-
-	// Take an array of elements and push it onto the stack
-	// (returning the new matched element set)
-	pushStack: function( elems, name, selector ) {
-		// Build a new jQuery matched element set
-		var ret = jQuery();
-
-		if ( jQuery.isArray( elems ) ) {
-			push.apply( ret, elems );
-		
-		} else {
-			jQuery.merge( ret, elems );
-		}
-
-		// Add the old object onto the stack (as a reference)
-		ret.prevObject = this;
-
-		ret.context = this.context;
-
-		if ( name === "find" ) {
-			ret.selector = this.selector + (this.selector ? " " : "") + selector;
-		} else if ( name ) {
-			ret.selector = this.selector + "." + name + "(" + selector + ")";
-		}
-
-		// Return the newly-formed element set
-		return ret;
-	},
-
-	// Execute a callback for every element in the matched set.
-	// (You can seed the arguments with an array of args, but this is
-	// only used internally.)
-	each: function( callback, args ) {
-		return jQuery.each( this, callback, args );
-	},
-	
-	ready: function( fn ) {
-		// Attach the listeners
-		jQuery.bindReady();
-
-		// If the DOM is already ready
-		if ( jQuery.isReady ) {
-			// Execute the function immediately
-			fn.call( document, jQuery );
-
-		// Otherwise, remember the function for later
-		} else if ( readyList ) {
-			// Add the function to the wait list
-			readyList.push( fn );
-		}
-
-		return this;
-	},
-	
-	eq: function( i ) {
-		return i === -1 ?
-			this.slice( i ) :
-			this.slice( i, +i + 1 );
-	},
-
-	first: function() {
-		return this.eq( 0 );
-	},
-
-	last: function() {
-		return this.eq( -1 );
-	},
-
-	slice: function() {
-		return this.pushStack( slice.apply( this, arguments ),
-			"slice", slice.call(arguments).join(",") );
-	},
-
-	map: function( callback ) {
-		return this.pushStack( jQuery.map(this, function( elem, i ) {
-			return callback.call( elem, i, elem );
-		}));
-	},
-	
-	end: function() {
-		return this.prevObject || jQuery(null);
-	},
-
-	// For internal use only.
-	// Behaves like an Array's method, not like a jQuery method.
-	push: push,
-	sort: [].sort,
-	splice: [].splice
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-jQuery.extend = jQuery.fn.extend = function() {
-	// copy reference to target object
-	var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy;
-
-	// Handle a deep copy situation
-	if ( typeof target === "boolean" ) {
-		deep = target;
-		target = arguments[1] || {};
-		// skip the boolean and the target
-		i = 2;
-	}
-
-	// Handle case when target is a string or something (possible in deep copy)
-	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
-		target = {};
-	}
-
-	// extend jQuery itself if only one argument is passed
-	if ( length === i ) {
-		target = this;
-		--i;
-	}
-
-	for ( ; i < length; i++ ) {
-		// Only deal with non-null/undefined values
-		if ( (options = arguments[ i ]) != null ) {
-			// Extend the base object
-			for ( name in options ) {
-				src = target[ name ];
-				copy = options[ name ];
-
-				// Prevent never-ending loop
-				if ( target === copy ) {
-					continue;
-				}
-
-				// Recurse if we're merging object literal values or arrays
-				if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {
-					var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src
-						: jQuery.isArray(copy) ? [] : {};
-
-					// Never move original objects, clone them
-					target[ name ] = jQuery.extend( deep, clone, copy );
-
-				// Don't bring in undefined values
-				} else if ( copy !== undefined ) {
-					target[ name ] = copy;
-				}
-			}
-		}
-	}
-
-	// Return the modified object
-	return target;
-};
-
-jQuery.extend({
-	noConflict: function( deep ) {
-		window.$ = _$;
-
-		if ( deep ) {
-			window.jQuery = _jQuery;
-		}
-
-		return jQuery;
-	},
-	
-	// Is the DOM ready to be used? Set to true once it occurs.
-	isReady: false,
-	
-	// Handle when the DOM is ready
-	ready: function() {
-		// Make sure that the DOM is not already loaded
-		if ( !jQuery.isReady ) {
-			// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
-			if ( !document.body ) {
-				return setTimeout( jQuery.ready, 13 );
-			}
-
-			// Remember that the DOM is ready
-			jQuery.isReady = true;
-
-			// If there are functions bound, to execute
-			if ( readyList ) {
-				// Execute all of them
-				var fn, i = 0;
-				while ( (fn = readyList[ i++ ]) ) {
-					fn.call( document, jQuery );
-				}
-
-				// Reset the list of functions
-				readyList = null;
-			}
-
-			// Trigger any bound ready events
-			if ( jQuery.fn.triggerHandler ) {
-				jQuery( document ).triggerHandler( "ready" );
-			}
-		}
-	},
-	
-	bindReady: function() {
-		if ( readyBound ) {
-			return;
-		}
-
-		readyBound = true;
-
-		// Catch cases where $(document).ready() is called after the
-		// browser event has already occurred.
-		if ( document.readyState === "complete" ) {
-			return jQuery.ready();
-		}
-
-		// Mozilla, Opera and webkit nightlies currently support this event
-		if ( document.addEventListener ) {
-			// Use the handy event callback
-			document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-			
-			// A fallback to window.onload, that will always work
-			window.addEventListener( "load", jQuery.ready, false );
-
-		// If IE event model is used
-		} else if ( document.attachEvent ) {
-			// ensure firing before onload,
-			// maybe late but safe also for iframes
-			document.attachEvent("onreadystatechange", DOMContentLoaded);
-			
-			// A fallback to window.onload, that will always work
-			window.attachEvent( "onload", jQuery.ready );
-
-			// If IE and not a frame
-			// continually check to see if the document is ready
-			var toplevel = false;
-
-			try {
-				toplevel = window.frameElement == null;
-			} catch(e) {}
-
-			if ( document.documentElement.doScroll && toplevel ) {
-				doScrollCheck();
-			}
-		}
-	},
-
-	// See test/unit/core.js for details concerning isFunction.
-	// Since version 1.3, DOM methods and functions like alert
-	// aren't supported. They return false on IE (#2968).
-	isFunction: function( obj ) {
-		return toString.call(obj) === "[object Function]";
-	},
-
-	isArray: function( obj ) {
-		return toString.call(obj) === "[object Array]";
-	},
-
-	isPlainObject: function( obj ) {
-		// Must be an Object.
-		// Because of IE, we also have to check the presence of the constructor property.
-		// Make sure that DOM nodes and window objects don't pass through, as well
-		if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) {
-			return false;
-		}
-		
-		// Not own constructor property must be Object
-		if ( obj.constructor
-			&& !hasOwnProperty.call(obj, "constructor")
-			&& !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) {
-			return false;
-		}
-		
-		// Own properties are enumerated firstly, so to speed up,
-		// if last one is own, then all properties are own.
-	
-		var key;
-		for ( key in obj ) {}
-		
-		return key === undefined || hasOwnProperty.call( obj, key );
-	},
-
-	isEmptyObject: function( obj ) {
-		for ( var name in obj ) {
-			return false;
-		}
-		return true;
-	},
-	
-	error: function( msg ) {
-		throw msg;
-	},
-	
-	parseJSON: function( data ) {
-		if ( typeof data !== "string" || !data ) {
-			return null;
-		}
-
-		// Make sure leading/trailing whitespace is removed (IE can't handle it)
-		data = jQuery.trim( data );
-		
-		// Make sure the incoming data is actual JSON
-		// Logic borrowed from http://json.org/json2.js
-		if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
-			.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
-			.replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
-
-			// Try to use the native JSON parser first
-			return window.JSON && window.JSON.parse ?
-				window.JSON.parse( data ) :
-				(new Function("return " + data))();
-
-		} else {
-			jQuery.error( "Invalid JSON: " + data );
-		}
-	},
-
-	noop: function() {},
-
-	// Evalulates a script in a global context
-	globalEval: function( data ) {
-		if ( data && rnotwhite.test(data) ) {
-			// Inspired by code by Andrea Giammarchi
-			// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
-			var head = document.getElementsByTagName("head")[0] || document.documentElement,
-				script = document.createElement("script");
-
-			script.type = "text/javascript";
-
-			if ( jQuery.support.scriptEval ) {
-				script.appendChild( document.createTextNode( data ) );
-			} else {
-				script.text = data;
-			}
-
-			// Use insertBefore instead of appendChild to circumvent an IE6 bug.
-			// This arises when a base node is used (#2709).
-			head.insertBefore( script, head.firstChild );
-			head.removeChild( script );
-		}
-	},
-
-	nodeName: function( elem, name ) {
-		return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
-	},
-
-	// args is for internal usage only
-	each: function( object, callback, args ) {
-		var name, i = 0,
-			length = object.length,
-			isObj = length === undefined || jQuery.isFunction(object);
-
-		if ( args ) {
-			if ( isObj ) {
-				for ( name in object ) {
-					if ( callback.apply( object[ name ], args ) === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( ; i < length; ) {
-					if ( callback.apply( object[ i++ ], args ) === false ) {
-						break;
-					}
-				}
-			}
-
-		// A special, fast, case for the most common use of each
-		} else {
-			if ( isObj ) {
-				for ( name in object ) {
-					if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( var value = object[0];
-					i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
-			}
-		}
-
-		return object;
-	},
-
-	trim: function( text ) {
-		return (text || "").replace( rtrim, "" );
-	},
-
-	// results is for internal usage only
-	makeArray: function( array, results ) {
-		var ret = results || [];
-
-		if ( array != null ) {
-			// The window, strings (and functions) also have 'length'
-			// The extra typeof function check is to prevent crashes
-			// in Safari 2 (See: #3039)
-			if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) {
-				push.call( ret, array );
-			} else {
-				jQuery.merge( ret, array );
-			}
-		}
-
-		return ret;
-	},
-
-	inArray: function( elem, array ) {
-		if ( array.indexOf ) {
-			return array.indexOf( elem );
-		}
-
-		for ( var i = 0, length = array.length; i < length; i++ ) {
-			if ( array[ i ] === elem ) {
-				return i;
-			}
-		}
-
-		return -1;
-	},
-
-	merge: function( first, second ) {
-		var i = first.length, j = 0;
-
-		if ( typeof second.length === "number" ) {
-			for ( var l = second.length; j < l; j++ ) {
-				first[ i++ ] = second[ j ];
-			}
-		
-		} else {
-			while ( second[j] !== undefined ) {
-				first[ i++ ] = second[ j++ ];
-			}
-		}
-
-		first.length = i;
-
-		return first;
-	},
-
-	grep: function( elems, callback, inv ) {
-		var ret = [];
-
-		// Go through the array, only saving the items
-		// that pass the validator function
-		for ( var i = 0, length = elems.length; i < length; i++ ) {
-			if ( !inv !== !callback( elems[ i ], i ) ) {
-				ret.push( elems[ i ] );
-			}
-		}
-
-		return ret;
-	},
-
-	// arg is for internal usage only
-	map: function( elems, callback, arg ) {
-		var ret = [], value;
-
-		// Go through the array, translating each of the items to their
-		// new value (or values).
-		for ( var i = 0, length = elems.length; i < length; i++ ) {
-			value = callback( elems[ i ], i, arg );
-
-			if ( value != null ) {
-				ret[ ret.length ] = value;
-			}
-		}
-
-		return ret.concat.apply( [], ret );
-	},
-
-	// A global GUID counter for objects
-	guid: 1,
-
-	proxy: function( fn, proxy, thisObject ) {
-		if ( arguments.length === 2 ) {
-			if ( typeof proxy === "string" ) {
-				thisObject = fn;
-				fn = thisObject[ proxy ];
-				proxy = undefined;
-
-			} else if ( proxy && !jQuery.isFunction( proxy ) ) {
-				thisObject = proxy;
-				proxy = undefined;
-			}
-		}
-
-		if ( !proxy && fn ) {
-			proxy = function() {
-				return fn.apply( thisObject || this, arguments );
-			};
-		}
-
-		// Set the guid of unique handler to the same of original handler, so it can be removed
-		if ( fn ) {
-			proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
-		}
-
-		// So proxy can be declared as an argument
-		return proxy;
-	},
-
-	// Use of jQuery.browser is frowned upon.
-	// More details: http://docs.jquery.com/Utilities/jQuery.browser
-	uaMatch: function( ua ) {
-		ua = ua.toLowerCase();
-
-		var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
-			/(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) ||
-			/(msie) ([\w.]+)/.exec( ua ) ||
-			!/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) ||
-		  	[];
-
-		return { browser: match[1] || "", version: match[2] || "0" };
-	},
-
-	browser: {}
-});
-
-browserMatch = jQuery.uaMatch( userAgent );
-if ( browserMatch.browser ) {
-	jQuery.browser[ browserMatch.browser ] = true;
-	jQuery.browser.version = browserMatch.version;
-}
-
-// Deprecated, use jQuery.browser.webkit instead
-if ( jQuery.browser.webkit ) {
-	jQuery.browser.safari = true;
-}
-
-if ( indexOf ) {
-	jQuery.inArray = function( elem, array ) {
-		return indexOf.call( array, elem );
-	};
-}
-
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
-
-// Cleanup functions for the document ready method
-if ( document.addEventListener ) {
-	DOMContentLoaded = function() {
-		document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-		jQuery.ready();
-	};
-
-} else if ( document.attachEvent ) {
-	DOMContentLoaded = function() {
-		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
-		if ( document.readyState === "complete" ) {
-			document.detachEvent( "onreadystatechange", DOMContentLoaded );
-			jQuery.ready();
-		}
-	};
-}
-
-// The DOM ready check for Internet Explorer
-function doScrollCheck() {
-	if ( jQuery.isReady ) {
-		return;
-	}
-
-	try {
-		// If IE is used, use the trick by Diego Perini
-		// http://javascript.nwbox.com/IEContentLoaded/
-		document.documentElement.doScroll("left");
-	} catch( error ) {
-		setTimeout( doScrollCheck, 1 );
-		return;
-	}
-
-	// and execute any waiting functions
-	jQuery.ready();
-}
-
-function evalScript( i, elem ) {
-	if ( elem.src ) {
-		jQuery.ajax({
-			url: elem.src,
-			async: false,
-			dataType: "script"
-		});
-	} else {
-		jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
-	}
-
-	if ( elem.parentNode ) {
-		elem.parentNode.removeChild( elem );
-	}
-}
-
-// Mutifunctional method to get and set values to a collection
-// The value/s can be optionally by executed if its a function
-function access( elems, key, value, exec, fn, pass ) {
-	var length = elems.length;
-	
-	// Setting many attributes
-	if ( typeof key === "object" ) {
-		for ( var k in key ) {
-			access( elems, k, key[k], exec, fn, value );
-		}
-		return elems;
-	}
-	
-	// Setting one attribute
-	if ( value !== undefined ) {
-		// Optionally, function values get executed if exec is true
-		exec = !pass && exec && jQuery.isFunction(value);
-		
-		for ( var i = 0; i < length; i++ ) {
-			fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
-		}
-		
-		return elems;
-	}
-	
-	// Getting an attribute
-	return length ? fn( elems[0], key ) : undefined;
-}
-
-function now() {
-	return (new Date).getTime();
-}
-(function() {
-
-	jQuery.support = {};
-
-	var root = document.documentElement,
-		script = document.createElement("script"),
-		div = document.createElement("div"),
-		id = "script" + now();
-
-	div.style.display = "none";
-	div.innerHTML = "   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-
-	var all = div.getElementsByTagName("*"),
-		a = div.getElementsByTagName("a")[0];
-
-	// Can't get basic test support
-	if ( !all || !all.length || !a ) {
-		return;
-	}
-
-	jQuery.support = {
-		// IE strips leading whitespace when .innerHTML is used
-		leadingWhitespace: div.firstChild.nodeType === 3,
-
-		// Make sure that tbody elements aren't automatically inserted
-		// IE will insert them into empty tables
-		tbody: !div.getElementsByTagName("tbody").length,
-
-		// Make sure that link elements get serialized correctly by innerHTML
-		// This requires a wrapper element in IE
-		htmlSerialize: !!div.getElementsByTagName("link").length,
-
-		// Get the style information from getAttribute
-		// (IE uses .cssText insted)
-		style: /red/.test( a.getAttribute("style") ),
-
-		// Make sure that URLs aren't manipulated
-		// (IE normalizes it by default)
-		hrefNormalized: a.getAttribute("href") === "/a",
-
-		// Make sure that element opacity exists
-		// (IE uses filter instead)
-		// Use a regex to work around a WebKit issue. See #5145
-		opacity: /^0.55$/.test( a.style.opacity ),
-
-		// Verify style float existence
-		// (IE uses styleFloat instead of cssFloat)
-		cssFloat: !!a.style.cssFloat,
-
-		// Make sure that if no value is specified for a checkbox
-		// that it defaults to "on".
-		// (WebKit defaults to "" instead)
-		checkOn: div.getElementsByTagName("input")[0].value === "on",
-
-		// Make sure that a selected-by-default option has a working selected property.
-		// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
-		optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected,
-
-		parentNode: div.removeChild( div.appendChild( document.createElement("div") ) ).parentNode === null,
-
-		// Will be defined later
-		deleteExpando: true,
-		checkClone: false,
-		scriptEval: false,
-		noCloneEvent: true,
-		boxModel: null
-	};
-
-	script.type = "text/javascript";
-	try {
-		script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
-	} catch(e) {}
-
-	root.insertBefore( script, root.firstChild );
-
-	// Make sure that the execution of code works by injecting a script
-	// tag with appendChild/createTextNode
-	// (IE doesn't support this, fails, and uses .text instead)
-	if ( window[ id ] ) {
-		jQuery.support.scriptEval = true;
-		delete window[ id ];
-	}
-
-	// Test to see if it's possible to delete an expando from an element
-	// Fails in Internet Explorer
-	try {
-		delete script.test;
-	
-	} catch(e) {
-		jQuery.support.deleteExpando = false;
-	}
-
-	root.removeChild( script );
-
-	if ( div.attachEvent && div.fireEvent ) {
-		div.attachEvent("onclick", function click() {
-			// Cloning a node shouldn't copy over any
-			// bound event handlers (IE does this)
-			jQuery.support.noCloneEvent = false;
-			div.detachEvent("onclick", click);
-		});
-		div.cloneNode(true).fireEvent("onclick");
-	}
-
-	div = document.createElement("div");
-	div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
-
-	var fragment = document.createDocumentFragment();
-	fragment.appendChild( div.firstChild );
-
-	// WebKit doesn't clone checked state correctly in fragments
-	jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
-
-	// Figure out if the W3C box model works as expected
-	// document.body must exist before we can do this
-	jQuery(function() {
-		var div = document.createElement("div");
-		div.style.width = div.style.paddingLeft = "1px";
-
-		document.body.appendChild( div );
-		jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
-		document.body.removeChild( div ).style.display = 'none';
-
-		div = null;
-	});
-
-	// Technique from Juriy Zaytsev
-	// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
-	var eventSupported = function( eventName ) { 
-		var el = document.createElement("div"); 
-		eventName = "on" + eventName; 
-
-		var isSupported = (eventName in el); 
-		if ( !isSupported ) { 
-			el.setAttribute(eventName, "return;"); 
-			isSupported = typeof el[eventName] === "function"; 
-		} 
-		el = null; 
-
-		return isSupported; 
-	};
-	
-	jQuery.support.submitBubbles = eventSupported("submit");
-	jQuery.support.changeBubbles = eventSupported("change");
-
-	// release memory in IE
-	root = script = div = all = a = null;
-})();
-
-jQuery.props = {
-	"for": "htmlFor",
-	"class": "className",
-	readonly: "readOnly",
-	maxlength: "maxLength",
-	cellspacing: "cellSpacing",
-	rowspan: "rowSpan",
-	colspan: "colSpan",
-	tabindex: "tabIndex",
-	usemap: "useMap",
-	frameborder: "frameBorder"
-};
-var expando = "jQuery" + now(), uuid = 0, windowData = {};
-
-jQuery.extend({
-	cache: {},
-	
-	expando:expando,
-
-	// The following elements throw uncatchable exceptions if you
-	// attempt to add expando properties to them.
-	noData: {
-		"embed": true,
-		"object": true,
-		"applet": true
-	},
-
-	data: function( elem, name, data ) {
-		if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
-			return;
-		}
-
-		elem = elem == window ?
-			windowData :
-			elem;
-
-		var id = elem[ expando ], cache = jQuery.cache, thisCache;
-
-		if ( !id && typeof name === "string" && data === undefined ) {
-			return null;
-		}
-
-		// Compute a unique ID for the element
-		if ( !id ) { 
-			id = ++uuid;
-		}
-
-		// Avoid generating a new cache unless none exists and we
-		// want to manipulate it.
-		if ( typeof name === "object" ) {
-			elem[ expando ] = id;
-			thisCache = cache[ id ] = jQuery.extend(true, {}, name);
-
-		} else if ( !cache[ id ] ) {
-			elem[ expando ] = id;
-			cache[ id ] = {};
-		}
-
-		thisCache = cache[ id ];
-
-		// Prevent overriding the named cache with undefined values
-		if ( data !== undefined ) {
-			thisCache[ name ] = data;
-		}
-
-		return typeof name === "string" ? thisCache[ name ] : thisCache;
-	},
-
-	removeData: function( elem, name ) {
-		if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
-			return;
-		}
-
-		elem = elem == window ?
-			windowData :
-			elem;
-
-		var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];
-
-		// If we want to remove a specific section of the element's data
-		if ( name ) {
-			if ( thisCache ) {
-				// Remove the section of cache data
-				delete thisCache[ name ];
-
-				// If we've removed all the data, remove the element's cache
-				if ( jQuery.isEmptyObject(thisCache) ) {
-					jQuery.removeData( elem );
-				}
-			}
-
-		// Otherwise, we want to remove all of the element's data
-		} else {
-			if ( jQuery.support.deleteExpando ) {
-				delete elem[ jQuery.expando ];
-
-			} else if ( elem.removeAttribute ) {
-				elem.removeAttribute( jQuery.expando );
-			}
-
-			// Completely remove the data cache
-			delete cache[ id ];
-		}
-	}
-});
-
-jQuery.fn.extend({
-	data: function( key, value ) {
-		if ( typeof key === "undefined" && this.length ) {
-			return jQuery.data( this[0] );
-
-		} else if ( typeof key === "object" ) {
-			return this.each(function() {
-				jQuery.data( this, key );
-			});
-		}
-
-		var parts = key.split(".");
-		parts[1] = parts[1] ? "." + parts[1] : "";
-
-		if ( value === undefined ) {
-			var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
-
-			if ( data === undefined && this.length ) {
-				data = jQuery.data( this[0], key );
-			}
-			return data === undefined && parts[1] ?
-				this.data( parts[0] ) :
-				data;
-		} else {
-			return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() {
-				jQuery.data( this, key, value );
-			});
-		}
-	},
-
-	removeData: function( key ) {
-		return this.each(function() {
-			jQuery.removeData( this, key );
-		});
-	}
-});
-jQuery.extend({
-	queue: function( elem, type, data ) {
-		if ( !elem ) {
-			return;
-		}
-
-		type = (type || "fx") + "queue";
-		var q = jQuery.data( elem, type );
-
-		// Speed up dequeue by getting out quickly if this is just a lookup
-		if ( !data ) {
-			return q || [];
-		}
-
-		if ( !q || jQuery.isArray(data) ) {
-			q = jQuery.data( elem, type, jQuery.makeArray(data) );
-
-		} else {
-			q.push( data );
-		}
-
-		return q;
-	},
-
-	dequeue: function( elem, type ) {
-		type = type || "fx";
-
-		var queue = jQuery.queue( elem, type ), fn = queue.shift();
-
-		// If the fx queue is dequeued, always remove the progress sentinel
-		if ( fn === "inprogress" ) {
-			fn = queue.shift();
-		}
-
-		if ( fn ) {
-			// Add a progress sentinel to prevent the fx queue from being
-			// automatically dequeued
-			if ( type === "fx" ) {
-				queue.unshift("inprogress");
-			}
-
-			fn.call(elem, function() {
-				jQuery.dequeue(elem, type);
-			});
-		}
-	}
-});
-
-jQuery.fn.extend({
-	queue: function( type, data ) {
-		if ( typeof type !== "string" ) {
-			data = type;
-			type = "fx";
-		}
-
-		if ( data === undefined ) {
-			return jQuery.queue( this[0], type );
-		}
-		return this.each(function( i, elem ) {
-			var queue = jQuery.queue( this, type, data );
-
-			if ( type === "fx" && queue[0] !== "inprogress" ) {
-				jQuery.dequeue( this, type );
-			}
-		});
-	},
-	dequeue: function( type ) {
-		return this.each(function() {
-			jQuery.dequeue( this, type );
-		});
-	},
-
-	// Based off of the plugin by Clint Helfers, with permission.
-	// http://blindsignals.com/index.php/2009/07/jquery-delay/
-	delay: function( time, type ) {
-		time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
-		type = type || "fx";
-
-		return this.queue( type, function() {
-			var elem = this;
-			setTimeout(function() {
-				jQuery.dequeue( elem, type );
-			}, time );
-		});
-	},
-
-	clearQueue: function( type ) {
-		return this.queue( type || "fx", [] );
-	}
-});
-var rclass = /[\n\t]/g,
-	rspace = /\s+/,
-	rreturn = /\r/g,
-	rspecialurl = /href|src|style/,
-	rtype = /(button|input)/i,
-	rfocusable = /(button|input|object|select|textarea)/i,
-	rclickable = /^(a|area)$/i,
-	rradiocheck = /radio|checkbox/;
-
-jQuery.fn.extend({
-	attr: function( name, value ) {
-		return access( this, name, value, true, jQuery.attr );
-	},
-
-	removeAttr: function( name, fn ) {
-		return this.each(function(){
-			jQuery.attr( this, name, "" );
-			if ( this.nodeType === 1 ) {
-				this.removeAttribute( name );
-			}
-		});
-	},
-
-	addClass: function( value ) {
-		if ( jQuery.isFunction(value) ) {
-			return this.each(function(i) {
-				var self = jQuery(this);
-				self.addClass( value.call(this, i, self.attr("class")) );
-			});
-		}
-
-		if ( value && typeof value === "string" ) {
-			var classNames = (value || "").split( rspace );
-
-			for ( var i = 0, l = this.length; i < l; i++ ) {
-				var elem = this[i];
-
-				if ( elem.nodeType === 1 ) {
-					if ( !elem.className ) {
-						elem.className = value;
-
-					} else {
-						var className = " " + elem.className + " ", setClass = elem.className;
-						for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
-							if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
-								setClass += " " + classNames[c];
-							}
-						}
-						elem.className = jQuery.trim( setClass );
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	removeClass: function( value ) {
-		if ( jQuery.isFunction(value) ) {
-			return this.each(function(i) {