Move busui to seperate repository
Move busui to seperate repository

file:a/busui/about.php (deleted)
<?php  
include('common.inc.php');  
include_header("About")  
?>  
<p>  
Busness Time - An ACT bus timetable webapp<br />  
Based on the maxious-canberra-transit-feed (<a href="cbrfeed.zip">download</a>, last updated <?php echo date("F d Y.", @filemtime('cbrfeed.zip')); ?>)<br />  
Source code for the transit feed and this site @ <a href="http://maxious.lambdacomplex.org/git">http://maxious.lambdacomplex.org/git</a><br />  
Uses jQuery Mobile, PHP, Ruby, Python, Google Transit Feed Specification tools, OpenTripPlanner, OpenLayers, OpenStreetMap, Cloudmade Geocoder and Tile Service<br />  
<br />  
Feedback encouraged; contact maxious@lambdacomplex.org<br />  
<br />  
Some icons by Joseph Wain / glyphish.com<br />  
<br />  
<small>Disclaimer: The content of this website is of a general and informative nature. Please check with printed timetables or those available on http://action.act.gov.au before your trip.  
Whilst every effort has been made to ensure the high quality and accuracy of the Site, the Author makes no warranty,  
express or implied concerning the topicality, correctness, completeness or quality of the information, which is provided  
"as is". The Author expressly disclaims all warranties, including but not limited to warranties of fitness for a particular purpose and warranties of merchantability.  
All offers are not binding and without obligation. The Author expressly reserves the right, in his discretion, to suspend,  
change, modify, add or remove portions of the Site and to restrict or terminate the use and accessibility of the Site  
without prior notice. </small>  
<?  
include_footer();  
?>  
 
file:a/busui/common.inc.php (deleted)
<?php  
date_default_timezone_set('Australia/ACT');  
$APIurl = "http://localhost:8765";  
$cloudmadeAPIkey="daa03470bb8740298d4b10e3f03d63e6";  
$googleMapsAPIkey="ABQIAAAA95XYXN0cki3Yj_Sb71CFvBTPaLd08ONybQDjcH_VdYtHHLgZvRTw2INzI_m17_IoOUqH3RNNmlTk1Q";  
$otpAPIurl = 'http://10.1.0.243:5080/opentripplanner-api-webapp/';  
if (isDebug()) error_reporting(E_ALL ^ E_NOTICE);  
 
// SELECT array_to_string(array(SELECT REPLACE(name_2006, ',', '\,') as name FROM suburbs order by name), ',')  
$suburbs = explode(",","Acton,Ainslie,Amaroo,Aranda,Banks,Barton,Belconnen,Bonner,Bonython,Braddon,Bruce,Calwell,Campbell,Chapman,Charnwood,Chifley,Chisholm,City,Conder,Cook,Curtin,Deakin,Dickson,Downer,Duffy,Dunlop,Evatt,Fadden,Farrer,Fisher,Florey,Flynn,Forrest,Franklin,Fraser,Fyshwick,Garran,Gilmore,Giralang,Gordon,Gowrie,Greenway,Griffith,Gungahlin,Hackett,Hall,Harrison,Hawker,Higgins,Holder,Holt,Hughes,Hume,Isaacs,Isabella Plains,Kaleen,Kambah,Kingston,Latham,Lawson,Lyneham,Lyons,Macarthur,Macgregor,Macquarie,Mawson,McKellar,Melba,Mitchell,Monash,Narrabundah,Ngunnawal,Nicholls,Oaks Estate,O'Connor,O'Malley,Oxley,Page,Palmerston,Parkes,Pearce,Phillip,Pialligo,Red Hill,Reid,Richardson,Rivett,Russell,Scullin,Spence,Stirling,Symonston,Tharwa,Theodore,Torrens,Turner,Wanniassa,Waramanga,Watson,Weetangera,Weston,Yarralumla");  
 
// you have to open the session to be able to modify or remove it  
session_start();  
if (isset($_REQUEST['service_period'])) $_SESSION['service_period'] = filter_var($_REQUEST['service_period'],FILTER_SANITIZE_STRING);  
if (isset($_REQUEST['time'])) $_SESSION['time'] = filter_var($_REQUEST['time'],FILTER_SANITIZE_STRING);  
if (isset($_REQUEST['geolocate'])) {  
$contents = geocode(var_filter($_REQUEST['geolocate'],FILTER_SANITIZE_URL),true);  
if (isset($contents[0]->centroid)) {  
$session['lat'] = $contents[0]->centroid->coordinates[0];  
$session['lon'] = $contents[0]->centroid->coordinates[1];  
}  
else {  
$session['lat'] = "";  
$session['lon'] = "";  
}  
}  
//print_r ($_SESSION);  
function isDebug()  
{  
return $_SERVER['SERVER_NAME'] == "10.0.1.154" || $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1" || !$_SERVER['SERVER_NAME'];  
}  
 
function debug($msg) {  
if (isDebug()) echo "<!-- $msg -->";  
}  
function isFastDevice() {  
return true;  
}  
 
function include_header($pageTitle, $opendiv = true, $geolocate = false) {  
echo '  
<!DOCTYPE html>  
<html>  
<head>  
<title>busness time - '.$pageTitle.'</title>  
';  
if (isDebug()) echo '<link rel="stylesheet" href="css/jquery-mobile-1.0a3.css" />  
<script type="text/javascript" src="js/jquery-1.5.js"></script>  
<script type="text/javascript" src="js/jquery-mobile-1.0a3.js"></script>';  
else echo '<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.css" />  
<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.js"></script>  
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.js"></script>';  
echo '  
<link rel="stylesheet" href="css/jquery.ui.datepicker.mobile.css" />  
<script>  
//reset type=date inputs to text  
$( document ).bind( "mobileinit", function(){  
$.mobile.page.prototype.options.degradeInputs.date = true;  
});  
</script>  
<script src="js/jQuery.ui.datepicker.js"></script>  
<script src="js/jquery.ui.datepicker.mobile.js"></script>  
<style type="text/css">  
.ui-navbar {  
width: 100%;  
}  
.ui-btn-inner {  
white-space: normal !important;  
}  
.ui-li-heading {  
white-space: normal !important;  
}  
.ui-listview-filter {  
margin: 0 !important;  
}  
#footer {  
text-size: 0.75em;  
text-align: center;  
}  
body {  
background-color: #F0F0F0;  
}  
</style>  
<meta name="apple-mobile-web-app-capable" content="yes" />  
<meta name="apple-mobile-web-app-status-bar-style" content="black" />  
<link rel="apple-touch-startup-image" href="startup.png" />  
<link rel="apple-touch-icon" href="apple-touch-icon.png" />';  
if ($geolocate) {  
echo "<script>  
 
function success(position) {  
$('#geolocate').val(position.coords.latitude+','+position.coords.longitude);  
// setCookie('geolocate',position.coords.latitude+','+position.coords.longitude,1);  
$('#here').click(function(event) { $('#geolocate').val(doAJAXrequestForGeolocSessionHere()); return false;});  
$('#here').show();  
}  
function error(msg) {  
console.log(msg);  
}  
 
if (navigator.geolocation) {  
navigator.geolocation.getCurrentPosition(success, error);  
}  
 
</script> ";  
}  
echo '</head>  
<body>  
';  
if ($opendiv) {  
echo '<div data-role="page">  
 
<div data-role="header">  
<h1>'.$pageTitle.'</h1>  
</div><!-- /header -->  
<div data-role="content"> ';  
}  
}  
 
function include_footer()  
{  
if ($geolocate && isset($_SESSION['lat'])) {  
echo "<script>  
$('#here').click(function(event) { $('#geolocate').val(doAJAXrequestForGeolocSessionHere()); return false;});  
$('#here').show();  
</script>";  
}  
echo '<div id="footer"><a href="about.php">About/Contact Us</a>&nbsp;<a href="feedback.php">Feedback/Bug Report</a></a>';  
echo '</div>';  
}  
 
$service_periods = Array ('sunday','saturday','weekday');  
 
function service_period()  
{  
if (isset($_SESSION['service_period'])) return $_SESSION['service_period'];  
 
switch (date('w')){  
 
case 0:  
return 'sunday';  
case 6:  
return 'saturday';  
default:  
return 'weekday';  
}  
}  
 
function remove_spaces($string)  
{  
return str_replace(' ','',$string);  
}  
 
function midnight_seconds()  
{  
// from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html  
if (isset($_SESSION['time'])) {  
$time = strtotime($_SESSION['time']);  
return (date("G",$time) * 3600) + (date("i",$time) * 60) + date("s",$time);  
}  
return (date("G") * 3600) + (date("i") * 60) + date("s");  
}  
 
function midnight_seconds_to_time($seconds)  
{  
if ($seconds > 0) {  
$midnight = mktime (0, 0, 0, date("n"), date("j"), date("Y"));  
return date("h:ia",$midnight+$seconds);  
} else {  
return "";  
}  
}  
function getPage($url)  
{  
debug($url);  
$ch = curl_init($url);  
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );  
curl_setopt( $ch, CURLOPT_HEADER, 0 );  
curl_setopt($ch,CURLOPT_TIMEOUT,30);  
$page = curl_exec($ch);  
if(curl_errno($ch)) echo "<font color=red> Database temporarily unavailable: ".curl_errno($ch)." ".curl_error($ch)."</font>";  
curl_close($ch);  
return $page;  
}  
function array_flatten($a,$f=array()){  
if(!$a||!is_array($a))return '';  
foreach($a as $k=>$v){  
if(is_array($v))$f=array_flatten($v,$f);  
else $f[$k]=$v;  
}  
return $f;  
}  
 
function staticmap($mapPoints, $zoom = 0, $markerImage = "iconb")  
{  
$width = 300;  
$height = 300;  
$metersperpixel[9]=305.492*$width;  
$metersperpixel[10]=152.746*$width;  
$metersperpixel[11]=76.373*$width;  
$metersperpixel[12]=38.187*$width;  
$metersperpixel[13]=19.093*$width;  
$metersperpixel[14]=9.547*$width;  
$metersperpixel[15]=4.773*$width;  
$metersperpixel[16]=2.387*$width;  
// $metersperpixel[17]=1.193*$width;  
$center = "";  
$markers = "";  
$minlat = 999;  
$minlon = 999;  
$maxlat = 0;  
$maxlon = 0;  
 
if (sizeof($mapPoints) < 1) return "map error";  
if (sizeof($mapPoints) === 1) {  
if ($zoom == 0) $zoom = 14;  
$markers .= "{$mapPoints[0][0]},{$mapPoints[0][1]},$markerimage";  
$center = "{$mapPoints[0][0]},{$mapPoints[0][1]}";  
} else {  
foreach ($mapPoints as $index => $mapPoint) {  
$markers .= $mapPoint[0].",".$mapPoint[1].",".$markerImage.($index+1);  
if ($index+1 != sizeof($mapPoints)) $markers .= "|";  
if ($mapPoint[0] < $minlat) $minlat = $mapPoint[0];  
if ($mapPoint[0] > $maxlat) $maxlat = $mapPoint[0];  
if ($mapPoint[1] < $minlon) $minlon = $mapPoint[1];  
if ($mapPoint[1] > $maxlon) $maxlon = $mapPoint[1];  
$totalLat += $mapPoint[0];  
$totalLon += $mapPoint[1];  
}  
if ($zoom == 0) {  
$mapwidthinmeters = distance($minlat,$minlon,$minlat,$maxlon);  
foreach (array_reverse($metersperpixel,true) as $zoomLevel => $maxdistance)  
{  
if ($zoom == 0 && $mapwidthinmeters < ($maxdistance + 50)) $zoom = $zoomLevel;  
}  
}  
$center = $totalLat/sizeof($mapPoints).",".$totalLon/sizeof($mapPoints);  
}  
$output = "";  
$output .= '<div data-role="collapsible" data-collapsed="true"><h3>Open Map...</h3>';  
$output .= '<center><img src="staticmaplite/staticmap.php?center='.$center.'&zoom='.$zoom.'&size='.$width.'x'.$height.'&maptype=mapnik&markers='.$markers.'" width='.$width.' height='.$height.'></center>';  
$output .= '</div>';  
return $output;  
}  
 
function distance($lat1, $lng1, $lat2, $lng2)  
{  
$pi80 = M_PI / 180;  
$lat1 *= $pi80;  
$lng1 *= $pi80;  
$lat2 *= $pi80;  
$lng2 *= $pi80;  
 
$r = 6372.797; // mean radius of Earth in km  
$dlat = $lat2 - $lat1;  
$dlng = $lng2 - $lng1;  
$a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlng / 2) * sin($dlng / 2);  
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));  
$km = $r * $c;  
 
return $km * 1000;  
}  
 
function decodePolylineToArray($encoded)  
{  
// source: http://latlongeeks.com/forum/viewtopic.php?f=4&t=5  
$length = strlen($encoded);  
$index = 0;  
$points = array();  
$lat = 0;  
$lng = 0;  
 
while ($index < $length)  
{  
// Temporary variable to hold each ASCII byte.  
$b = 0;  
 
// The encoded polyline consists of a latitude value followed by a  
// longitude value. They should always come in pairs. Read the  
// latitude value first.  
$shift = 0;  
$result = 0;  
do  
{  
// The `ord(substr($encoded, $index++))` statement returns the ASCII  
// code for the character at $index. Subtract 63 to get the original  
// value. (63 was added to ensure proper ASCII characters are displayed  
// in the encoded polyline string, which is `human` readable)  
$b = ord(substr($encoded, $index++)) - 63;  
 
// AND the bits of the byte with 0x1f to get the original 5-bit `chunk.  
// Then left shift the bits by the required amount, which increases  
// by 5 bits each time.  
// OR the value into $results, which sums up the individual 5-bit chunks  
// into the original value. Since the 5-bit chunks were reversed in  
// order during encoding, reading them in this way ensures proper  
// summation.  
$result |= ($b & 0x1f) << $shift;  
$shift += 5;  
}  
// Continue while the read byte is >= 0x20 since the last `chunk`  
// was not OR'd with 0x20 during the conversion process. (Signals the end)  
while ($b >= 0x20);  
 
// Check if negative, and convert. (All negative values have the last bit  
// set)  
$dlat = (($result & 1) ? ~($result >> 1) : ($result >> 1));  
 
// Compute actual latitude since value is offset from previous value.  
$lat += $dlat;  
 
// The next values will correspond to the longitude for this point.  
$shift = 0;  
$result = 0;  
do  
{  
$b = ord(substr($encoded, $index++)) - 63;  
$result |= ($b & 0x1f) << $shift;  
$shift += 5;  
}  
while ($b >= 0x20);  
 
$dlng = (($result & 1) ? ~($result >> 1) : ($result >> 1));  
$lng += $dlng;  
 
// The actual latitude and longitude values were multiplied by  
// 1e5 before encoding so that they could be converted to a 32-bit  
// integer representation. (With a decimal accuracy of 5 places)  
// Convert back to original values.  
$points[] = array($lat * 1e-5, $lng * 1e-5);  
}  
 
return $points;  
}  
 
function object2array($object) {  
if (is_object($object)) {  
foreach ($object as $key => $value) {  
$array[$key] = $value;  
}  
}  
else {  
$array = $object;  
}  
return $array;  
}  
 
function geocode($query, $giveOptions) {  
global $cloudmadeAPIkey;  
$url = "http://geocoding.cloudmade.com/$cloudmadeAPIkey/geocoding/v2/find.js?query=".$query."&bbox=-35.5,149.00,-35.15,149.1930&return_location=true&bbox_only=true";  
$contents = json_decode(getPage($url));  
if ($giveOptions) return $contents->features;  
elseif (isset($contents->features[0]->centroid)) return $contents->features[0]->centroid->coordinates[0].",".$contents->features[0]->centroid->coordinates[1];  
else return "";  
}  
 
function reverseGeocode($lat,$lng) {  
global $cloudmadeAPIkey;  
$url = "http://geocoding.cloudmade.com/$cloudmadeAPIkey/geocoding/v2/find.js?around=".$lat.",".$lng."&distance=closest&object_type=road";  
$contents = json_decode(getPage($url));  
return $contents->features[0]->properties->name;  
}  
 
function startsWith($haystack,$needle,$case=true) {  
if($case){return (strcmp(substr($haystack, 0, strlen($needle)),$needle)===0);}  
return (strcasecmp(substr($haystack, 0, strlen($needle)),$needle)===0);  
}  
 
function endsWith($haystack,$needle,$case=true) {  
if($case){return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)),$needle)===0);}  
return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)),$needle)===0);  
}  
function bracketsMeanNewLine($input) {  
return str_replace(")","</small>",str_replace("(","<br><small>",$input));  
}  
 
function viaPoints($tripid,$stopid, $timingPointsOnly = false) {  
global $APIurl;  
$url = $APIurl."/json/tripstoptimes?trip=".$tripid;  
 
$json = json_decode(getPage($url));  
debug(print_r($json,true));  
$stops = $json[0];  
$times = $json[1];  
$foundStop = false;  
$viaPoints = Array();  
foreach ($stops as $key => $row)  
{  
if ($foundStop) {  
if (!$timingPointsOnly || !startsWith($row[5],"Wj") ) {  
$viaPoints[] = Array("id" => $row[0], "name" => $row[1], "time" => $times[$key]);  
}  
} else {  
if ($row[0] == $stopid) $foundStop = true;  
}  
}  
return $viaPoints;  
}  
 
function viaPointNames($tripid,$stopid) {  
$points = viaPoints($tripid,$stopid,true);  
$pointNames = Array();  
foreach ($points as $point) {  
$pointNames[] = $point['name'];  
}  
return implode(", ",$pointNames);  
}  
 
function timePlaceSettings($geolocate = false) {  
global $service_periods;  
$geoerror = false;  
if ($geolocate == true) {  
$geoerror = !isset($_SESSION['lat']) || !isset($_SESSION['lat'])  
|| $_SESSION['lat'] == "" || $_SESSION['lon'] == "";  
}  
if ($geoerror) {  
echo '<div class="error">Sorry, but your location could not currently be detected.  
Please allow location permission, wait for your location to be detected,  
or enter an address/co-ordinates in the box below.</div>';  
}  
echo '<div data-role="collapsible" data-collapsed="'.!$geoerror.'">  
<h3>Change Time/Place...</h3>  
<form action="" method="post">  
<div class="ui-body">  
<div data-role="fieldcontain">  
<label for="geolocate"> Current Location: </label>  
<input type="text" id="geolocate" name="geolocate" value="Enter co-ordinates or address here"/> <a href="#" style="display:none" name="here" id="here"/>Here?</a>  
</div>  
<div data-role="fieldcontain">  
<label for="time"> Time: </label>  
<input type="time" name="time" id="time" value="'. ($_SESSION['time'] ? $_SESSION['time'] : date("H:m")).'"/> <a href="#" name="currentTime" id="currentTime"/>Current Time?</a>  
</div>  
<div data-role="fieldcontain">  
<label for="service_period"> Service Period: </label>  
<select name="service_period">';  
 
foreach ($service_periods as $service_period) {  
echo "<option value=\"$service_period\"".(service_period() === $service_period ? "SELECTED" : "").'>'.ucwords($service_period).'</option>';  
}  
echo '</select>  
<a href="#" style="display:none" name="currentPeriod" id="currentPeriod"/>Current Period?</a>  
</div>  
 
<input type="submit" value="Update"/>  
</form>  
</div></div>';  
}  
?>  
 Binary files a/busui/css/images/01-refresh.png and /dev/null differ
 Binary files a/busui/css/images/02-redo.png and /dev/null differ
 Binary files a/busui/css/images/06-magnify.png and /dev/null differ
 Binary files a/busui/css/images/07-map-marker.png and /dev/null differ
 Binary files a/busui/css/images/101-gameplan.png and /dev/null differ
 Binary files a/busui/css/images/102-walk.png and /dev/null differ
 Binary files a/busui/css/images/103-map.png and /dev/null differ
 Binary files a/busui/css/images/113-navigation.png and /dev/null differ
 Binary files a/busui/css/images/121-landscape.png and /dev/null differ
 Binary files a/busui/css/images/13-target.png and /dev/null differ
 Binary files a/busui/css/images/139-flags.png and /dev/null differ
 Binary files a/busui/css/images/145-persondot.png and /dev/null differ
 Binary files a/busui/css/images/184-warning.png and /dev/null differ
 Binary files a/busui/css/images/193-location-arrow.png and /dev/null differ
 Binary files a/busui/css/images/28-star.png and /dev/null differ
 Binary files a/busui/css/images/53-house.png and /dev/null differ
 Binary files a/busui/css/images/55-network.png and /dev/null differ
 Binary files a/busui/css/images/57-download.png and /dev/null differ
 Binary files a/busui/css/images/58-bookmark.png and /dev/null differ
 Binary files a/busui/css/images/59-flag.png and /dev/null differ
 Binary files a/busui/css/images/60-signpost.png and /dev/null differ
 Binary files a/busui/css/images/73-radar.png and /dev/null differ
 Binary files a/busui/css/images/74-location.png and /dev/null differ
 Binary files a/busui/css/images/83-calendar.png and /dev/null differ
 Binary files a/busui/css/images/ajax-loader.png and /dev/null differ
 Binary files a/busui/css/images/form-check-off.png and /dev/null differ
 Binary files a/busui/css/images/form-check-on.png and /dev/null differ
 Binary files a/busui/css/images/form-radio-off.png and /dev/null differ
 Binary files a/busui/css/images/form-radio-on.png and /dev/null differ
 Binary files a/busui/css/images/icon-search-black.png and /dev/null differ
 Binary files a/busui/css/images/icons-18-black.png and /dev/null differ
 Binary files a/busui/css/images/icons-18-white.png and /dev/null differ
 Binary files a/busui/css/images/icons-36-black.png and /dev/null differ
 Binary files a/busui/css/images/icons-36-white.png and /dev/null differ
/*!  
* jQuery Mobile v1.0a3  
* http://jquerymobile.com/  
*  
* Copyright 2010, jQuery Project  
* Dual licensed under the MIT or GPL Version 2 licenses.  
* http://jquery.org/license  
*/  
/*!  
* jQuery Mobile v1.0a3  
* http://jquerymobile.com/  
*  
* Copyright 2010, jQuery Project  
* Dual licensed under the MIT or GPL Version 2 licenses.  
* http://jquery.org/license  
*/.ui-bar-a{border:1px solid #2a2a2a;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #000;background-image:-moz-linear-gradient(top,#3c3c3c,#111);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3c3c3c),color-stop(1,#111));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#3c3c3c', EndColorStr='#111111')"}.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif}.ui-bar-a .ui-link-inherit{color:#fff}.ui-bar-a .ui-link{color:#7cc4e7;font-weight:bold}.ui-body-a{border:1px solid #2a2a2a;background:#222;color:#fff;text-shadow:0 1px 0 #000;font-weight:normal;background-image:-moz-linear-gradient(top,#666,#222);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#666),color-stop(1,#222));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#666666', EndColorStr='#222222)')"}.ui-body-a,.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif}.ui-body-a .ui-link-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:bold}.ui-br{border-bottom:1px solid rgba(130,130,130,.3)}.ui-btn-up-a{border:1px solid #222;background:#333;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #000;text-decoration:none;background-image:-moz-linear-gradient(top,#555,#333);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#555),color-stop(1,#333));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#555555', EndColorStr='#333333')"}.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;text-decoration:none;background-image:-moz-linear-gradient(top,#666,#444);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#666),color-stop(1,#444));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#666666', EndColorStr='#444444')"}.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #000;background:#3d3d3d;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-moz-linear-gradient(top,#333,#5a5a5a);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#333),color-stop(1,#5a5a5a));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#333333', EndColorStr='#5a5a5a')"}.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #254f7a;background-image:-moz-linear-gradient(top,#81a8ce,#5e87b0);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#81a8ce),color-stop(1,#5e87b0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#81a8ce', EndColorStr='#5e87b0')"}.ui-bar-b,.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Helvetica,Arial,sans-serif}.ui-bar-b .ui-link-inherit{color:#fff}.ui-bar-b .ui-link{color:#7cc4e7;font-weight:bold}.ui-body-b{border:1px solid #c6c6c6;background:#ccc;color:#333;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-moz-linear-gradient(top,#e6e6e6,#ccc);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e6e6e6),color-stop(1,#ccc));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#e6e6e6', EndColorStr='#cccccc')"}.ui-body-b,.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Helvetica,Arial,sans-serif}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-b{border:1px solid #145072;background:#2567ab;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #145072;text-decoration:none;background-image:-moz-linear-gradient(top,#4e89c5,#2567ab);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#5f9cc5),color-stop(1,#396b9e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#4e89c5', EndColorStr='#2567ab')"}.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #00516e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #014d68;background-image:-moz-linear-gradient(top,#72b0d4,#4b88b6);text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#72b0d4),color-stop(1,#4b88b6));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#72b0d4', EndColorStr='#4b88b6')"}.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #225377;background-image:-moz-linear-gradient(top,#396b9e,#4e89c5);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#396b9e),color-stop(1,#4e89c5));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#396b9e', EndColorStr='#4e89c5')"}.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif}.ui-bar-c{border:1px solid #b3b3b3;background:#e9eaeb;color:#3e3e3e;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#f0f0f0,#e9eaeb);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f0f0f0),color-stop(1,#e9eaeb));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#f0f0f0', EndColorStr='#e9eaeb')"}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c{border:1px solid #b3b3b3;color:#333;text-shadow:0 1px 0 #fff;background:#f0f0f0;background-image:-moz-linear-gradient(top,#eee,#ddd);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(1,#ddd));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#eeeeee', EndColorStr='#dddddd')"}.ui-body-c,.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#444;cursor:pointer;text-shadow:0 1px 1px #f6f6f6;text-decoration:none;background-image:-moz-linear-gradient(top,#fefefe,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fdfdfd),color-stop(1,#eee));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fdfdfd', EndColorStr='#eeeeee')"}.ui-btn-up-c a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid #bbb;background:#dadada;font-weight:bold;color:#101010;text-decoration:none;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#ededed,#dadada);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ededed),color-stop(1,#dadada));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ededed', EndColorStr='#dadada')"}.ui-btn-hover-c a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid #808080;background:#fdfdfd;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#eee,#fdfdfd);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(1,#fdfdfd));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#eeeeee', EndColorStr='#fdfdfd')"}.ui-btn-down-c a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif}.ui-bar-d{border:1px solid #ccc;background:#bbb;color:#333;text-shadow:0 1px 0 #eee;background-image:-moz-linear-gradient(top,#ddd,#bbb);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ddd),color-stop(1,#bbb));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#dddddd', EndColorStr='#bbbbbb')"}.ui-bar-d,.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif}.ui-bar-d .ui-link-inherit{color:#333}.ui-bar-d .ui-link{color:#2489ce;font-weight:bold}.ui-body-d{border:1px solid #ccc;color:#333;text-shadow:0 1px 0 #fff;background:#fff}.ui-body-d,.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Helvetica,Arial,sans-serif}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-d{border:1px solid #ccc;background:#fff;font-weight:bold;color:#444;text-decoration:none;text-shadow:0 1px 1px #fff}.ui-btn-up-d a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#222;cursor:pointer;text-shadow:0 1px 1px #fff;text-decoration:none;background-image:-moz-linear-gradient(top,#fdfdfd,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fdfdfd),color-stop(1,#eee));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fdfdfd', EndColorStr='#eeeeee')"}.ui-btn-hover-d a.ui-link-inherit{color:#222}.ui-btn-down-d{border:1px solid #aaa;background:#fff;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#eee,#fff);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(1,#fff));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#eeeeee', EndColorStr='#ffffff')"}.ui-btn-down-d a.ui-link-inherit{border:1px solid #808080;background:#ced0d2;font-weight:bold;color:#111;text-shadow:none;background-image:-moz-linear-gradient(top,#ccc,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ccc),color-stop(1,#eee));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#cccccc', EndColorStr='#eeeeee')"}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif}.ui-bar-e{border:1px solid #f7c942;background:#fadb4e;color:#333;text-shadow:0 1px 0 #fff;background-image:-moz-linear-gradient(top,#fceda7,#fadb4e);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fceda7),color-stop(1,#fadb4e));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fceda7', EndColorStr='#fadb4e')"}.ui-bar-e,.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif}.ui-bar-e .ui-link-inherit{color:#333}.ui-bar-e .ui-link{color:#2489ce;font-weight:bold}.ui-body-e{border:1px solid #f7c942;color:#333;text-shadow:0 1px 0 #fff;background:#faeb9e;background-image:-moz-linear-gradient(top,#fff,#faeb9e);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(1,#faeb9e));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff', EndColorStr='#faeb9e')"}.ui-body-e,.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Helvetica,Arial,sans-serif}.ui-body-e .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-e{border:1px solid #f7c942;background:#fadb4e;font-weight:bold;color:#333;cursor:pointer;text-shadow:0 1px 1px #fe3;text-decoration:none;text-shadow:0 1px 0 #fff;background-image:-moz-linear-gradient(top,#fceda7,#fadb4e);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fceda7),color-stop(1,#fadb4e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fceda7', EndColorStr='#fadb4e')"}.ui-btn-up-e a.ui-link-inherit{color:#333}.ui-btn-hover-e{border:1px solid #e79952;background:#fbe26f;font-weight:bold;color:#111;text-decoration:none;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#fcf0b5,#fbe26f);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fcf0b5),color-stop(1,#fbe26f));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fcf0b5', EndColorStr='#fbe26f')"}.ui-btn-hover-e a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid #f7c942;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#fadb4e,#fceda7);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fadb4e),color-stop(1,#fceda7));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fadb4e', EndColorStr='#fceda7')"}.ui-btn-down-e a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{border:1px solid #155678;background:#4596ce;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #145072;text-decoration:none;background-image:-moz-linear-gradient(top,#85bae4,#5393c5);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#85bae4),color-stop(1,#5393c5));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#85bae4', EndColorStr='#5393c5')";outline:0}.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:1px solid #fff;border-color:rgba(255,255,255,.3)}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.ui-disabled{opacity:.3}.ui-disabled,.ui-disabled a{cursor:default!important}.ui-icon{background-image:url(images/icons-18-white.png);background-repeat:no-repeat;background-color:#666;background-color:rgba(0,0,0,.4);-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-disc{background-color:#666;background-color:rgba(0,0,0,.3);-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-black{background-image:url(images/icons-18-black.png)}.ui-icon-black-disc{background-color:#fff;background-color:rgba(255,255,255,.3);-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}@media screen and (-webkit-min-device-pixel-ratio:2),screen and (max--moz-device-pixel-ratio:2){.ui-icon{background-image:url(images/icons-36-white.png);background-size:630px 18px}.ui-icon-black{background-image:url(images/icons-36-black.png)}}.ui-icon-plus{background-position:-0 0}.ui-icon-minus{background-position:-36px 0}.ui-icon-delete{background-position:-72px 0}.ui-icon-arrow-r{background-position:-108px 0}.ui-icon-arrow-l{background-position:-144px 0}.ui-icon-arrow-u{background-position:-180px 0}.ui-icon-arrow-d{background-position:-216px 0}.ui-icon-check{background-position:-252px 0}.ui-icon-gear{background-position:-288px 0}.ui-icon-refresh{background-position:-324px 0}.ui-icon-forward{background-position:-360px 0}.ui-icon-back{background-position:-396px 0}.ui-icon-grid{background-position:-432px 0}.ui-icon-star{background-position:-468px 0}.ui-icon-alert{background-position:-504px 0}.ui-icon-info{background-position:-540px 0}.ui-icon-home{background-position:-576px 0}.ui-icon-search{background-position:-612px 0}.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-color:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;background-size:20px 20px}.ui-icon-checkbox-off{background-image:url(images/form-check-off.png)}.ui-icon-checkbox-on{background-image:url(images/form-check-on.png)}.ui-icon-radio-off{background-image:url(images/form-radio-off.png)}.ui-icon-radio-on{background-image:url(images/form-radio-on.png)}.ui-icon-searchfield{background-image:url(images/icon-search-black.png);background-size:16px 16px}.ui-icon-loading{background-image:url(images/ajax-loader.png);width:40px;height:40px;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;background-size:35px 35px}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em}.ui-corner-tl,.ui-corner-tr,.ui-corner-bl,.ui-corner-br,.ui-corner-top,.ui-corner-bottom,.ui-corner-right,.ui-corner-left,.ui-corner-all,.ui-btn-corner-tl,.ui-btn-corner-tr,.ui-btn-corner-bl,.ui-btn-corner-br,.ui-btn-corner-top,.ui-btn-corner-bottom,.ui-btn-corner-right,.ui-btn-corner-left,.ui-btn-corner-all{-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.ui-overlay{background:#666;opacity:.5;filter:Alpha(Opacity=50);position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 4px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3)}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-focus{-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus{outline-width:2px}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border:0}.ui-mobile-viewport{margin:0;overflow-x:hidden;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}[data-role=page],[data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-page-active{display:block;overflow:visible}.portrait,.portrait .ui-page{min-height:480px}.landscape,.landscape .ui-page{min-height:320px}.ui-loading .ui-mobile-viewport{overflow:hidden!important}.ui-loading .ui-loader{display:block}.ui-loading .ui-page{overflow:hidden}.ui-loader{display:none;position:absolute;opacity:.85;z-index:10;left:50%;width:200px;margin-left:-130px;margin-top:-35px;padding:10px 30px}.ui-loader h1{font-size:15px;text-align:center}.ui-loader .ui-icon{position:static;display:block;opacity:.9;margin:0 auto;width:35px;height:35px;background-color:transparent}.ui-mobile-rendering>*{visibility:hidden}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both}.ui-bar{font-size:16px;margin:0}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:16px;display:inline-block}.ui-header,.ui-footer{display:block}.ui-page .ui-header,.ui-page .ui-footer{position:relative}.ui-header .ui-btn-left{position:absolute;left:10px;top:.4em}.ui-header .ui-title,.ui-footer .ui-title{text-align:center;font-size:16px;display:block;margin:.6em 90px .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-header .ui-btn-right{position:absolute;right:10px;top:.4em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-page-fullscreen .ui-content{padding:0}.ui-icon{width:18px;height:18px}.ui-fullscreen img{max-width:100%}.ui-nojs{position:absolute;left:-9999px}.spin{-webkit-transform:rotate(360deg);-webkit-animation-name:spin;-webkit-animation-duration:1s;-webkit-animation-iteration-count:infinite}@-webkit-keyframes spin{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}.in,.out{-webkit-animation-timing-function:ease-in-out;-webkit-animation-duration:350ms}.slide.in{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromright}.slide.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft}.slide.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromleft}.slide.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;z-index:10}.slideup.out{-webkit-animation-name:dontmove;z-index:0}.slideup.out.reverse{-webkit-transform:translateY(100%);z-index:10;-webkit-animation-name:slideouttobottom}.slideup.in.reverse{z-index:0;-webkit-animation-name:dontmove}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;z-index:10}.slidedown.out{-webkit-animation-name:dontmove;z-index:0}.slidedown.out.reverse{-webkit-transform:translateY(-100%);z-index:10;-webkit-animation-name:slideouttotop}.slidedown.in.reverse{z-index:0;-webkit-animation-name:dontmove}@-webkit-keyframes slideinfromright{from{-webkit-transform:translateX(100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translateX(-100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(100%)}}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.in{opacity:1;z-index:10;-webkit-animation-name:fadein}.fade.out{z-index:0;-webkit-animation-name:fadeout}.ui-mobile-viewport-perspective{-webkit-perspective:1000;position:absolute}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden}.flip{-webkit-animation-duration:.65s;-webkit-backface-visibility:hidden;-webkit-transform:translateX(0)}.flip.in{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromleft}.flip.out{-webkit-transform:rotateY(-180deg) scale(.8);-webkit-animation-name:flipouttoleft}.flip.in.reverse{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromright}.flip.out.reverse{-webkit-transform:rotateY(180deg) scale(.8);-webkit-animation-name:flipouttoright}@-webkit-keyframes flipinfromright{from{-webkit-transform:rotateY(-180deg) scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipinfromleft{from{-webkit-transform:rotateY(180deg) scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0) scale(1)}to{-webkit-transform:rotateY(-180deg) scale(.8)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0) scale(1)}to{-webkit-transform:rotateY(180deg) scale(.8)}}@-webkit-keyframes dontmove{from{opacity:1}to{opacity:1}}.pop{-webkit-transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);opacity:1;-webkit-animation-name:popin;z-index:10}.pop.out.reverse{-webkit-transform:scale(.2);opacity:0;-webkit-animation-name:popout;z-index:10}.pop.in.reverse{z-index:0;-webkit-animation-name:dontmove}@-webkit-keyframes popin{from{-webkit-transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.2);opacity:0}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:50%}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.333%}.ui-grid-b .ui-block-a{clear:left}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:25%}.ui-grid-c .ui-block-a{clear:left}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:20%}.ui-grid-d .ui-block-a{clear:left}.ui-header,.ui-footer,.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{position:absolute;overflow:hidden;width:100%;border-left-width:0;border-right-width:0}.ui-header-fixed,.ui-footer-fixed{z-index:1000;-webkit-transform:translateZ(0)}.ui-footer-duplicate,.ui-page-fullscreen .ui-fixed-inline{display:none}.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{opacity:.9}.ui-navbar{overflow:hidden}.ui-navbar ul,.ui-navbar-expanded ul{list-style:none;padding:0;margin:0;position:relative;display:block;border:0}.ui-navbar-collapsed ul{float:left;width:75%;margin-right:-2px}.ui-navbar-collapsed .ui-navbar-toggle{float:left;width:25%}.ui-navbar li.ui-navbar-truncate{position:absolute;left:-9999px;top:-9999px}.ui-navbar li .ui-btn,.ui-navbar .ui-navbar-toggle .ui-btn{display:block;font-size:12px;text-align:center;margin:0;border-right-width:0}.ui-navbar li .ui-btn{margin-right:-1px}.ui-navbar li .ui-btn:last-child{margin-right:0}.ui-header .ui-navbar li .ui-btn,.ui-header .ui-navbar .ui-navbar-toggle .ui-btn,.ui-footer .ui-navbar li .ui-btn,.ui-footer .ui-navbar .ui-navbar-toggle .ui-btn{border-top-width:0;border-bottom-width:0}.ui-navbar .ui-btn-inner{padding-left:2px;padding-right:2px}.ui-navbar-noicons li .ui-btn .ui-btn-inner,.ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner{padding-top:.8em;padding-bottom:.9em}.ui-navbar-expanded .ui-btn{margin:0;font-size:14px}.ui-navbar-expanded .ui-btn-inner{padding-left:5px;padding-right:5px}.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner{padding:45px 5px 15px;text-align:center}.ui-navbar-expanded .ui-btn-icon-top .ui-icon{top:15px}.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner{padding:15px 5px 45px;text-align:center}.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon{bottom:15px}.ui-navbar-expanded li .ui-btn .ui-btn-inner{min-height:2.5em}.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner{padding-top:1.8em;padding-bottom:1.9em}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 5px;padding:0}.ui-btn:focus,.ui-btn:active{outline:0}.ui-header .ui-btn,.ui-footer .ui-btn,.ui-bar .ui-btn{display:inline-block;font-size:13px;margin:0}.ui-btn-inline{display:inline-block}.ui-btn-inner{padding:.6em 25px;display:block;height:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-bar .ui-btn-inner{padding:.4em 8px .5em}.ui-btn-icon-notext{display:inline-block;width:20px;height:20px;padding:2px 1px 2px 3px;text-indent:-9999px}.ui-btn-icon-notext .ui-btn-inner{padding:0}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-999px}.ui-btn-icon-left .ui-btn-inner{padding-left:33px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-bar .ui-btn-icon-left .ui-btn-inner{padding-left:27px}.ui-btn-icon-right .ui-btn-inner{padding-right:33px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-bar .ui-btn-icon-right .ui-btn-inner{padding-right:27px}.ui-btn-icon-top .ui-btn-inner{padding-top:33px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner,.ui-bar .ui-btn-icon-top .ui-btn-inner{padding-top:27px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:33px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner,.ui-bar .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:27px}.ui-btn-icon-notext .ui-icon{display:block}.ui-btn-icon-left .ui-icon,.ui-btn-icon-right .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top .ui-icon,.ui-btn-icon-bottom .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right .ui-icon{right:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-bar .ui-btn-icon-left .ui-icon{left:4px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-bar .ui-btn-icon-right .ui-icon{right:4px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-bar .ui-btn-icon-top .ui-icon{top:4px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-bar .ui-btn-icon-bottom .ui-icon{bottom:4px}.ui-btn-icon-top .ui-icon{top:5px}.ui-btn-icon-bottom .ui-icon{bottom:5px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:button;opacity:0;cursor:pointer}.ui-collapsible-contain{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -8px;padding:0;border-width:0 0 1px 0;position:relative}.ui-collapsible-heading a{text-align:left;margin:0}.ui-collapsible-heading a .ui-btn-inner{padding-left:40px}.ui-collapsible-heading a span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading a span.ui-btn .ui-btn-inner{padding:0}.ui-collapsible-heading a span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;left:-9999px}.ui-collapsible-content{display:block;padding:10px 0 10px 8px}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible-contain{margin:-1px 0 0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0 1em}.ui-bar .ui-controlgroup{margin:0 .3em}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em}.ui-controlgroup-controls{display:block;width:95%}.ui-controlgroup li{list-style:none}.ui-controlgroup-vertical .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-horizontal{padding:0}.ui-controlgroup-horizontal .ui-btn,.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{margin:0 -5px 0 0;display:inline-block}.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio .ui-btn,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal .ui-radio:last-child{margin-right:0}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px}.min-width-480px .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.min-width-480px .ui-controlgroup-controls{width:60%;display:inline-block}.ui-dialog{min-height:480px}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{margin:15px;position:relative}.ui-dialog .ui-header,.ui-dialog .ui-footer{z-index:10;width:auto}.ui-dialog .ui-content,.ui-dialog .ui-footer{margin-top:-15px}.ui-checkbox,.ui-radio{position:relative;margin:.2em 0 .5em;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;z-index:2}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;z-index:1}.ui-field-contain{background:0;padding:1.5em 0;margin:0;border-bottom-width:1px;overflow:visible}.ui-field-contain:first-child{border-top-width:0}.min-width-480px .ui-field-contain{border-width:0;padding:0;margin:1em 0}.ui-select{display:block;position:relative}.ui-select select{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:button;left:0;top:0;width:100%;height:100%;opacity:.001}.ui-select .ui-btn select.ui-select-nativeonly{opacity:1}.ui-select .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:inline-block;min-height:1em}.ui-select .ui-btn-text{text-overflow:ellipsis;overflow:hidden;width:85%}.ui-selectmenu{position:absolute;padding:0;z-index:100!important;width:80%;max-width:350px;padding:6px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu-hidden{top:-9999px;left:-9999px}.ui-selectmenu-screen{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99}.ui-screen-hidden,.ui-selectmenu-list .ui-li .ui-icon{display:none}.ui-selectmenu-list .ui-li .ui-icon{display:block}.ui-li.ui-selectmenu-placeholder{display:none}.min-width-480px label.ui-select{display:inline-block;width:20%;margin:0 2% 0 0}.min-width-480px .ui-select{width:60%;display:inline-block}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:normal;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;line-height:1.4;font-size:16px;display:block;width:95%}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}.ui-input-search{padding:0 30px;width:77%;background-position:8px 50%;background-repeat:no-repeat;position:relative}.ui-input-search input.ui-input-text{border:0;width:98%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-14px}.ui-input-search .ui-input-clear-hidden{display:none}.min-width-480px label.ui-input-text{vertical-align:top}.min-width-480px label.ui-input-text{display:inline-block;width:20%;margin:0 2% 0 0}.min-width-480px input.ui-input-text,.min-width-480px textarea.ui-input-text,.min-width-480px .ui-input-search{width:60%;display:inline-block}.min-width-480px .ui-input-search{width:50%}.ui-listview{margin:0;counter-reset:listnumbering}.ui-content .ui-listview{margin:-15px}.ui-content .ui-listview-inset{margin:1em 0}.ui-listview,.ui-li{list-style:none;padding:0;zoom:1}.ui-li{display:block;margin:0;position:relative;overflow:hidden;text-align:left;border-width:0;border-top-width:1px}.ui-li .ui-btn-text{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-divider,.ui-li-static{padding:.5em 15px;font-size:14px;font-weight:bold;counter-reset:listnumbering}ol.ui-listview .ui-link-inherit:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:normal;counter-increment:listnumbering;content:counter(listnumbering) ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li:last-child{border-bottom-width:1px}.ui-li .ui-btn-inner{display:block;position:relative;padding:.7em 75px .7em 15px}.ui-li-has-thumb .ui-btn-inner{min-height:60px;padding-left:100px}.ui-li-has-icon .ui-btn-inner{min-height:20px;padding-left:40px}.ui-li-heading{font-size:16px;font-weight:bold;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:normal;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-thumb,.ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-li-icon{max-height:40px;max-width:40px;left:10px;top:.9em}.ui-li-thumb,.ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0}.min-width-480px .ui-li-aside{width:45%}.ui-li-has-alt .ui-btn-inner{padding-right:95px}.ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em .5em;top:50%;margin-top:-.9em;right:38px}.ui-li-divider .ui-li-count{right:10px}.ui-li-has-alt .ui-li-count{right:55px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-11px 0 0 0;border-bottom-width:1px}.ui-li-link-alt .ui-btn-inner{padding:0;position:static}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible}}label.ui-slider{display:block}input.ui-slider-input,.min-width-480px input.ui-slider-input{display:inline-block;width:50px}select.ui-slider-switch{display:none}div.ui-slider{position:relative;display:inline-block;overflow:visible;height:15px;padding:0;margin:0 2% 0 20px;top:4px;width:66%}a.ui-slider-handle{position:absolute;z-index:10;top:50%;width:28px;height:28px;margin-top:-15px;margin-left:-15px}a.ui-slider-handle .ui-btn-inner{padding-left:0;padding-right:0}.min-width-480px label.ui-slider{display:inline-block;width:20%;margin:0 2% 0 0}.min-width-480px div.ui-slider{width:45%}div.ui-slider-switch{height:32px;overflow:hidden;margin-left:0}div.ui-slider-inneroffset{margin-left:50%;position:absolute;top:1px;height:100%;width:50%}div.ui-slider-handle-snapping{-webkit-transition:left 100ms linear}div.ui-slider-labelbg{position:absolute;top:0;margin:0;border-width:0}div.ui-slider-switch div.ui-slider-labelbg-a{width:60%;height:100%;left:0}div.ui-slider-switch div.ui-slider-labelbg-b{width:60%;height:100%;right:0}.ui-slider-switch-a div.ui-slider-labelbg-a,.ui-slider-switch-b div.ui-slider-labelbg-b{z-index:1}.ui-slider-switch-a div.ui-slider-labelbg-b,.ui-slider-switch-b div.ui-slider-labelbg-a{z-index:10}div.ui-slider-switch a.ui-slider-handle{z-index:20;width:101%;height:32px;margin-top:-18px;margin-left:-101%}span.ui-slider-label{width:100%;position:absolute;height:32px;font-size:16px;text-align:center;line-height:2;background:0;border-color:transparent}span.ui-slider-label-a{left:-100%;margin-right:-1px}span.ui-slider-label-b{right:-100%;margin-left:-1px}  
/*  
* jQuery UI Datepicker @VERSION  
*  
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)  
* Dual licensed under the MIT or GPL Version 2 licenses.  
* http://jquery.org/license  
*  
* http://docs.jquery.com/UI/Datepicker#theming  
*/  
div.hasDatepicker{ display: block; padding: 0; overflow: visible; margin: 8px 0; }  
.ui-datepicker { overflow: visible; margin: 0; max-width: 500px; }  
.ui-datepicker .ui-datepicker-header { position:relative; padding:.4em 0; border-bottom: 0; font-weight: bold; }  
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { padding: 1px 0 1px 2px; position:absolute; top: .5em; margin-top: 0; text-indent: -9999px; }  
 
.ui-datepicker .ui-datepicker-prev { left:6px; }  
.ui-datepicker .ui-datepicker-next { right:6px; }  
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }  
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }  
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}  
.ui-datepicker select.ui-datepicker-month,  
.ui-datepicker select.ui-datepicker-year { width: 49%;}  
.ui-datepicker table {width: 100%; border-collapse: collapse; margin:0; }  
.ui-datepicker td { border-width: 1px; padding: 0; text-align: center; }  
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em 0; font-weight: bold; margin: 0; border-width: 0; text-align: center; text-decoration: none; }  
 
.ui-datepicker-calendar th { padding-top: .3em; padding-bottom: .3em; }  
.ui-datepicker-calendar th span, .ui-datepicker-calendar span.ui-state-default { opacity: .3; }  
.ui-datepicker-calendar td a { padding-top: .5em; padding-bottom: .5em; }  
 
.min-width-480px div.hasDatepicker { width: 63%; display: inline-block; margin: 0; }  
file:a/busui/feedback.php (deleted)
<?php  
include('common.inc.php');  
include_header("Feedback")  
?>  
<h3>Add/Move/Delete a Bus Stop Location</h3>  
StopID:  
or StopCode:  
 
Suggested Stop Location (lat/long or words):  
 
<h3>Bug Report/Feedback</h3>  
<textarea id="extrainfo">  
Referrer URL  
User Agent  
User host/IP  
Current date/time  
Dump of $_SESSION  
</textarea>  
file:a/busui/index.php (deleted)
<?php  
include('common.inc.php');  
include_header("bus.lambdacomplex.org",false, true)  
?>  
<div data-role="page">  
<div data-role="content">  
<div id="jqm-homeheader">  
<center><h3>busness time</h3><br><small>Canberra Bus Timetables and Trip Planner</small></center>  
</div>  
<a href="tripPlanner.php" data-role="button">Launch Trip Planner...</a>  
<ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">  
<li data-role="list-divider">Timetables - Stops</li>  
<li><a href="stopList.php">Major (Timing Point) Stops</a></li>  
<li><a href="stopList.php">All Stops</a></li>  
<li><a href="stopList.php?suburbs=yes">Stops By Suburb</a></li>  
<li><a class="nearby" href="stopList.php?nearby=yes">Nearby Stops</a></li>  
</ul>  
<ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">  
<li data-role="list-divider">Timetables - Routes</li>  
<li><a href="routeList.php">Routes By Final Destination</a></li>  
<li><a href="routeList.php?bynumber=yes">Routes By Number</a></li>  
<li><a class="nearby" href="routeList.php?nearby=yes">Nearby Routes</a></li>  
</ul>  
<?php  
echo timePlaceSettings();  
include_footer(true)  
?>  
 
/*!  
* jQuery UI 1.8.5  
*  
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)  
* Dual licensed under the MIT or GPL Version 2 licenses.  
* http://jquery.org/license  
*  
* http://docs.jquery.com/UI  
*/  
(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.5",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,  
NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,  
"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");  
if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"));if(!isNaN(b)&&b!=0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind("mousedown.ui-disableSelection selectstart.ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f,  
"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c.style(this,h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c.style(this,  
h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}});  
c(function(){var a=document.createElement("div"),b=document.body;c.extend(a.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.appendChild(a).offsetHeight===100;b.removeChild(a).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,  
d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery);  
;/*  
* jQuery UI Datepicker 1.8.5  
*  
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)  
* Dual licensed under the MIT or GPL Version 2 licenses.  
* http://jquery.org/license  
*  
* http://docs.jquery.com/UI/Datepicker  
*  
* Depends:  
* jquery.ui.core.js  
*/  
(function(d,G){function L(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass=  
"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su",  
"Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",  
minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>')}function E(a,b){d.extend(a,  
b);for(var c in b)if(b[c]==null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.5"}});var y=(new Date).getTime();d.extend(L.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=  
f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')}},  
_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&  
b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==  
""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,  
c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),  
true);this._updateDatepicker(b);this._updateAlternate(b)}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{});b=b&&b.constructor==  
Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);  
d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},  
_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=  
d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;  
for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&  
this._hideDatepicker();var h=this._getDateDatepicker(a,true);E(e.settings,f);this._attachments(d(a),e);this._autoSize(e);this._setDateDatepicker(a,h);this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&  
!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass,b.dpDiv).add(d("td."+d.datepicker._currentClass,b.dpDiv));c[0]?d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]):d.datepicker._hideDatepicker();  
return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||  
a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,  
a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));  
var c=String.fromCharCode(a.charCode==G?a.keyCode:a.charCode);return a.ctrlKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||  
a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);  
d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&  
d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=d.datepicker._getBorders(b.dpDiv);b.dpDiv.find("iframe.ui-datepicker-cover").css({left:-i[0],top:-i[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,  
h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a)).find("iframe.ui-datepicker-cover").css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}).end().find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){d(this).removeClass("ui-state-hover");  
this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).addClass("ui-datepicker-prev-hover");  
this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);var e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");  
a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input.focus()},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),  
k=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>k&&k>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1);)a=a[b?"previousSibling":"nextSibling"];  
a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():  
"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&  
!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;  
b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=  
this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=  
d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,  
"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b==  
"object"?b.toString():b+"";if(b=="")return null;for(var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff,f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,k=c=-1,l=-1,u=-1,j=false,o=function(p){(p=z+1<a.length&&a.charAt(z+1)==p)&&z++;return p},m=function(p){o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"?4:p=="o"?  
3:2)+"}");p=b.substring(s).match(p);if(!p)throw"Missing number at position "+s;s+=p[0].length;return parseInt(p[0],10)},n=function(p,w,H){p=o(p)?H:w;for(w=0;w<p.length;w++)if(b.substr(s,p[w].length).toLowerCase()==p[w].toLowerCase()){s+=p[w].length;return w+1}throw"Unknown name at position "+s;},r=function(){if(b.charAt(s)!=a.charAt(z))throw"Unexpected literal at position "+s;s++},s=0,z=0;z<a.length;z++)if(j)if(a.charAt(z)=="'"&&!o("'"))j=false;else r();else switch(a.charAt(z)){case "d":l=m("d");  
break;case "D":n("D",f,h);break;case "o":u=m("o");break;case "m":k=m("m");break;case "M":k=n("M",i,g);break;case "y":c=m("y");break;case "@":var v=new Date(m("@"));c=v.getFullYear();k=v.getMonth()+1;l=v.getDate();break;case "!":v=new Date((m("!")-this._ticksTo1970)/1E4);c=v.getFullYear();k=v.getMonth()+1;l=v.getDate();break;case "'":if(o("'"))r();else j=true;break;default:r()}if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>  
-1){k=1;l=u;do{e=this._getDaysInMonth(c,k-1);if(l<=e)break;k++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,k-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=k||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*  
60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=j+1<a.length&&a.charAt(j+1)==o)&&j++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},k=function(o,m,n,r){return i(o)?r[m]:n[m]},l="",u=false;if(b)for(var j=0;j<a.length;j++)if(u)if(a.charAt(j)==  
"'"&&!i("'"))u=false;else l+=a.charAt(j);else switch(a.charAt(j)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=k("D",b.getDay(),e,f);break;case "o":l+=g("o",(b.getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5,3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=k("M",b.getMonth(),h,c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+=  
"'";else u=true;break;default:l+=a.charAt(j)}return l},_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+1)==h)&&f++;return h},f=0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+="0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==G?a.settings[b]:this._defaults[b]},  
_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,f,h;f=h=this._getDefaultDate(a);var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,  
this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var e=function(h){var i=new Date;i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,k=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,j=u.exec(h);j;){switch(j[2]||"d"){case "d":case "D":g+=  
parseInt(j[1],10);break;case "w":case "W":g+=parseInt(j[1],10)*7;break;case "m":case "M":l+=parseInt(j[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(k,l));break;case "y":case "Y":k+=parseInt(j[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(k,l));break}j=u.exec(h)}return new Date(k,l,g)};if(b=(b=b==null?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):b)&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},  
_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?  
"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),k=  
this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),j=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=j&&n<j?j:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,  
"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-k,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', -"+k+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+  
n+"</span></a>";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,g+k,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', +"+k+", 'M');\" title=\""+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+r+'"><span class="ui-icon ui-icon-circle-triangle-'+  
(c?"w":"e")+'">'+r+"</span></a>";k=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&a.currentDay?u:b;k=!h?k:this.formatDate(k,r,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+y+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,r)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+  
y+".datepicker._gotoToday('#"+a.id+"');\">"+k+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;k=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),w=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var M=this._getDefaultDate(a),I="",C=0;C<i[0];C++){for(var N=  
"",D=0;D<i[1];D++){var J=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",x="";if(l){x+='<div class="ui-datepicker-group';if(i[1]>1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&C==0?c?  
f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,j,o,C>0||D>0,z,v)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var A=k?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var q=(t+h)%7;A+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+r[q]+'">'+s[q]+"</span></th>"}x+=A+"</tr></thead><tbody>";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,  
A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O<A;O++){x+="<tr>";var P=!k?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(q)+"</td>";for(t=0;t<7;t++){var F=p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,K=B&&!H||!F[0]||j&&q<j||o&&q>o;P+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(B?" ui-datepicker-other-month":"")+(q.getTime()==J.getTime()&&g==a.selectedMonth&&  
a._keyEvent||M.getTime()==q.getTime()&&M.getTime()==J.getTime()?" "+this._dayOverClass:"")+(K?" "+this._unselectableClass+" ui-state-disabled":"")+(B&&!w?"":" "+F[1]+(q.getTime()==u.getTime()?" "+this._currentClass:"")+(q.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!B||w)&&F[2]?' title="'+F[2]+'"':"")+(K?"":' onclick="DP_jQuery_'+y+".datepicker._selectDay('#"+a.id+"',"+q.getMonth()+","+q.getFullYear()+', this);return false;"')+">"+(B&&!w?"&#xa0;":K?'<span class="ui-state-default">'+q.getDate()+  
"</span>":'<a class="ui-state-default'+(q.getTime()==b.getTime()?" ui-state-highlight":"")+(q.getTime()==J.getTime()?" ui-state-active":"")+(B?" ui-priority-secondary":"")+'" href="#">'+q.getDate()+"</a>")+"</td>";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+=P+"</tr>"}g++;if(g>11){g=0;m++}x+="</tbody></table>"+(l?"</div>"+(i[0]>0&&D==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");N+=x}I+=N}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':  
"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var k=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),j='<div class="ui-datepicker-title">',o="";if(h||!k)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+  
a.id+"');\">";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(j+=o+(h||!(k&&l)?"&#xa0;":""));if(h||!l)j+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,  
i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(j+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=g;b++)j+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";j+="</select>"}j+=this._get(a,"yearSuffix");if(u)j+=(h||!(k&&l)?"&#xa0;":"")+o;j+="</div>";return j},_adjustInstDate:function(a,b,c){var e=  
a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,  
"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);  
c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,  
"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=  
function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));  
return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new L;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.5";window["DP_jQuery_"+y]=d})(jQuery);  
;  
file:a/busui/js/jquery-1.5.js (deleted)
/*!  
* jQuery JavaScript Library v1.5  
* http://jquery.com/  
*  
* Copyright 2011, John Resig  
* Dual licensed under the MIT or GPL Version 2 licenses.  
* http://jquery.org/license  
*  
* Includes Sizzle.js  
* http://sizzlejs.com/  
* Copyright 2011, The Dojo Foundation  
* Released under the MIT, BSD, and GPL Licenses.  
*  
* Date: Mon Jan 31 08:31:29 2011 -0500  
*/  
(function( window, undefined ) {  
 
// Use the correct document accordingly with window argument (sandbox)  
var document = window.document;  
var jQuery = (function() {  
 
// 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, rootjQuery );  
},  
 
// Map over jQuery in case of overwrite  
_jQuery = window.jQuery,  
 
// Map over the $ in case of overwrite  
_$ = window.$,  
 
// 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\-]+)$)/,  
 
// Check if a string has a non-whitespace character in it  
rnotwhite = /\S/,  
 
// Used for trimming whitespace  
trimLeft = /^\s+/,  
trimRight = /\s+$/,  
 
// Check for digits  
rdigit = /\d/,  
 
// Match a standalone tag  
rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,  
 
// JSON RegExp  
rvalidchars = /^[\],:{}\s]*$/,  
rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,  
rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,  
rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,  
 
// Useragent RegExp  
rwebkit = /(webkit)[ \/]([\w.]+)/,  
ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,  
rmsie = /(msie) ([\w.]+)/,  
rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,  
 
// 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 deferred used on DOM ready  
readyList,  
 
// Promise methods  
promiseMethods = "then done fail isResolved isRejected promise".split( " " ),  
 
// The ready event handler  
DOMContentLoaded,  
 
// Save a reference to some core methods  
toString = Object.prototype.toString,  
hasOwn = Object.prototype.hasOwnProperty,  
push = Array.prototype.push,  
slice = Array.prototype.slice,  
trim = String.prototype.trim,  
indexOf = Array.prototype.indexOf,  
 
// [[Class]] -> type pairs  
class2type = {};  
 
jQuery.fn = jQuery.prototype = {  
constructor: jQuery,  
init: function( selector, context, rootjQuery ) {  
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 && document.body ) {  
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] ) {  
context = context instanceof jQuery ? context[0] : context;  
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 = jQuery.buildFragment( [ match[1] ], [ doc ] );  
selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;  
}  
 
return jQuery.merge( this, selector );  
 
// HANDLE: $("#id")  
} else {  
elem = document.getElementById( match[2] );  
 
// Check parentNode to catch when Blackberry 4.6 returns  
// nodes that are no longer in the document #6963  
if ( elem && elem.parentNode ) {  
// 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: $(expr, $(...))  
} else if ( !context || context.jquery ) {  
return (context || rootjQuery).find( selector );  
 
// HANDLE: $(expr, context)  
// (which is just equivalent to: $(context).find(expr)  
} else {  
return this.constructor( 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.5",  
 
// 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[ this.length + num ] : 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 = this.constructor();  
 
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();  
 
// Add the callback  
readyList.done( 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 || this.constructor(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() {  
var options, name, src, copy, copyIsArray, clone,  
target = arguments[0] || {},  
i = 1,  
length = arguments.length,  
deep = false;  
 
// 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 plain objects or arrays  
if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {  
if ( copyIsArray ) {  
copyIsArray = false;  
clone = src && jQuery.isArray(src) ? src : [];  
 
} else {  
clone = src && jQuery.isPlainObject(src) ? src : {};  
}  
 
// 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,  
 
// A counter to track how many items to wait for before  
// the ready event fires. See #6781  
readyWait: 1,  
 
// Handle when the DOM is ready  
ready: function( wait ) {  
// A third-party is pushing the ready event forwards  
if ( wait === true ) {  
jQuery.readyWait--;  
}  
 
// Make sure that the DOM is not already loaded  
if ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {  
// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).  
if ( !document.body ) {  
return setTimeout( jQuery.ready, 1 );  
}  
 
// Remember that the DOM is ready  
jQuery.isReady = true;  
 
// If a normal DOM Ready event fired, decrement, and wait if need be  
if ( wait !== true && --jQuery.readyWait > 0 ) {  
return;  
}  
 
// If there are functions bound, to execute  
readyList.resolveWith( document, [ jQuery ] );  
 
// Trigger any bound ready events  
if ( jQuery.fn.trigger ) {  
jQuery( document ).trigger( "ready" ).unbind( "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" ) {  
// Handle it asynchronously to allow scripts the opportunity to delay ready  
return setTimeout( jQuery.ready, 1 );  
}  
 
// 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 jQuery.type(obj) === "function";  
},  
 
isArray: Array.isArray || function( obj ) {  
return jQuery.type(obj) === "array";  
},  
 
// A crude way of determining if an object is a window  
isWindow: function( obj ) {  
return obj && typeof obj === "object" && "setInterval" in obj;  
},  
 
isNaN: function( obj ) {  
return obj == null || !rdigit.test( obj ) || isNaN( obj );  
},  
 
type: function( obj ) {  
return obj == null ?  
String( obj ) :  
class2type[ toString.call(obj) ] || "object";  
},  
 
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 || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {  
return false;  
}  
 
// Not own constructor property must be Object  
if ( obj.constructor &&  
!hasOwn.call(obj, "constructor") &&  
!hasOwn.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 || hasOwn.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 ( rvalidchars.test(data.replace(rvalidescape, "@")  
.replace(rvalidtokens, "]")  
.replace(rvalidbraces, "")) ) {  
 
// 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 );  
}  
},  
 
// Cross-browser xml parsing  
// (xml & tmp used internally)  
parseXML: function( data , xml , tmp ) {  
 
if ( window.DOMParser ) { // Standard  
tmp = new DOMParser();  
xml = tmp.parseFromString( data , "text/xml" );  
} else { // IE  
xml = new ActiveXObject( "Microsoft.XMLDOM" );  
xml.async = "false";  
xml.loadXML( data );  
}  
 
tmp = xml.documentElement;  
 
if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) {  
jQuery.error( "Invalid XML: " + data );  
}  
 
return xml;  
},  
 
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;  
},  
 
// Use native String.trim function wherever possible  
trim: trim ?  
function( text ) {  
return text == null ?  
"" :  
trim.call( text );  
} :  
 
// Otherwise use our own trimming functionality  
function( text ) {  
return text == null ?  
"" :  
text.toString().replace( trimLeft, "" ).replace( trimRight, "" );  
},  
 
// 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)  
// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930  
var type = jQuery.type(array);  
 
if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {  
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 = [], retVal;  
inv = !!inv;  
 
// Go through the array, only saving the items  
// that pass the validator function  
for ( var i = 0, length = elems.length; i < length; i++ ) {  
retVal = !!callback( elems[ i ], i );  
if ( inv !== retVal ) {  
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;  
}  
}  
 
// Flatten any nested arrays  
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;  
},  
 
// Mutifunctional method to get and set values to a collection  
// The value/s can be optionally by executed if its a function  
access: function( elems, key, value, exec, fn, pass ) {  
var length = elems.length;  
 
// Setting many attributes  
if ( typeof key === "object" ) {  
for ( var k in key ) {  
jQuery.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;  
},  
 
now: function() {  
return (new Date()).getTime();  
},  
 
// Create a simple deferred (one callbacks list)  
_Deferred: function() {  
var // callbacks list  
callbacks = [],  
// stored [ context , args ]  
fired,  
// to avoid firing when already doing so  
firing,  
// flag to know if the deferred has been cancelled  
cancelled,  
// the deferred itself  
deferred = {  
 
// done( f1, f2, ...)  
done: function() {  
if ( !cancelled ) {  
var args = arguments,  
i,  
length,  
elem,  
type,  
_fired;  
if ( fired ) {  
_fired = fired;  
fired = 0;  
}  
for ( i = 0, length = args.length; i < length; i++ ) {  
elem = args[ i ];  
type = jQuery.type( elem );  
if ( type === "array" ) {  
deferred.done.apply( deferred, elem );  
} else if ( type === "function" ) {  
callbacks.push( elem );  
}  
}  
if ( _fired ) {  
deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );  
}  
}  
return this;  
},  
 
// resolve with given context and args  
resolveWith: function( context, args ) {  
if ( !cancelled && !fired && !firing ) {  
firing = 1;  
try {  
while( callbacks[ 0 ] ) {  
callbacks.shift().apply( context, args );  
}  
}  
finally {  
fired = [ context, args ];  
firing = 0;  
}  
}  
return this;  
},  
 
// resolve with this as context and given arguments  
resolve: function() {  
deferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments );  
return this;  
},  
 
// Has this deferred been resolved?  
isResolved: function() {  
return !!( firing || fired );  
},  
 
// Cancel  
cancel: function() {  
cancelled = 1;  
callbacks = [];  
return this;  
}  
};  
 
return deferred;  
},  
 
// Full fledged deferred (two callbacks list)  
Deferred: function( func ) {  
var deferred = jQuery._Deferred(),  
failDeferred = jQuery._Deferred(),  
promise;  
// Add errorDeferred methods, then and promise  
jQuery.extend( deferred, {  
then: function( doneCallbacks, failCallbacks ) {  
deferred.done( doneCallbacks ).fail( failCallbacks );  
return this;  
},  
fail: failDeferred.done,  
rejectWith: failDeferred.resolveWith,  
reject: failDeferred.resolve,  
isRejected: failDeferred.isResolved,  
// Get a promise for this deferred  
// If obj is provided, the promise aspect is added to the object  
promise: function( obj , i /* internal */ ) {  
if ( obj == null ) {  
if ( promise ) {  
return promise;  
}  
promise = obj = {};  
}  
i = promiseMethods.length;  
while( i-- ) {  
obj[ promiseMethods[ i ] ] = deferred[ promiseMethods[ i ] ];  
}  
return obj;  
}  
} );  
// Make sure only one callback list will be used  
deferred.then( failDeferred.cancel, deferred.cancel );  
// Unexpose cancel  
delete deferred.cancel;  
// Call given func if any  
if ( func ) {  
func.call( deferred, deferred );  
}  
return deferred;  
},  
 
// Deferred helper  
when: function( object ) {  
var args = arguments,  
length = args.length,  
deferred = length <= 1 && object && jQuery.isFunction( object.promise ) ?  
object :  
jQuery.Deferred(),  
promise = deferred.promise(),  
resolveArray;  
 
if ( length > 1 ) {  
resolveArray = new Array( length );  
jQuery.each( args, function( index, element ) {  
jQuery.when( element ).then( function( value ) {  
resolveArray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;  
if( ! --length ) {  
deferred.resolveWith( promise, resolveArray );  
}  
}, deferred.reject );  
} );  
} else if ( deferred !== object ) {  
deferred.resolve( object );  
}  
return promise;  
},  
 
// Use of jQuery.browser is frowned upon.  
// More details: http://docs.jquery.com/Utilities/jQuery.browser  
uaMatch: function( ua ) {  
ua = ua.toLowerCase();  
 
var match = rwebkit.exec( ua ) ||  
ropera.exec( ua ) ||  
rmsie.exec( ua ) ||  
ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||  
[];  
 
return { browser: match[1] || "", version: match[2] || "0" };  
},  
 
sub: function() {  
function jQuerySubclass( selector, context ) {  
return new jQuerySubclass.fn.init( selector, context );  
}  
jQuery.extend( true, jQuerySubclass, this );  
jQuerySubclass.superclass = this;  
jQuerySubclass.fn = jQuerySubclass.prototype = this();  
jQuerySubclass.fn.constructor = jQuerySubclass;  
jQuerySubclass.subclass = this.subclass;  
jQuerySubclass.fn.init = function init( selector, context ) {  
if ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {  
context = jQuerySubclass(context);  
}  
 
return jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );  
};  
jQuerySubclass.fn.init.prototype = jQuerySubclass.fn;  
var rootjQuerySubclass = jQuerySubclass(document);  
return jQuerySubclass;  
},  
 
browser: {}  
});  
 
// Create readyList deferred  
readyList = jQuery._Deferred();  
 
// Populate the class2type map  
jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {  
class2type[ "[object " + name + "]" ] = name.toLowerCase();  
});  
 
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 );  
};  
}  
 
// IE doesn't match non-breaking spaces with \s  
if ( rnotwhite.test( "\xA0" ) ) {  
trimLeft = /^[\s\xA0]+/;  
trimRight = /[\s\xA0]+$/;  
}  
 
// 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(e) {  
setTimeout( doScrollCheck, 1 );  
return;  
}  
 
// and execute any waiting functions  
jQuery.ready();  
}  
 
// Expose jQuery to the global object  
return (window.jQuery = window.$ = jQuery);  
 
})();  
 
 
(function() {  
 
jQuery.support = {};  
 
var div = document.createElement("div");  
 
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],  
select = document.createElement("select"),  
opt = select.appendChild( document.createElement("option") );  
 
// 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: opt.selected,  
 
// Will be defined later  
deleteExpando: true,  
optDisabled: false,  
checkClone: false,  
_scriptEval: null,  
noCloneEvent: true,  
boxModel: null,  
inlineBlockNeedsLayout: false,  
shrinkWrapBlocks: false,  
reliableHiddenOffsets: true  
};  
 
// Make sure that the options inside disabled selects aren't marked as disabled  
// (WebKit marks them as diabled)  
select.disabled = true;  
jQuery.support.optDisabled = !opt.disabled;  
 
jQuery.support.scriptEval = function() {  
if ( jQuery.support._scriptEval === null ) {  
var root = document.documentElement,  
script = document.createElement("script"),  
id = "script" + jQuery.now();  
 
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 ];  
} else {  
jQuery.support._scriptEval = false;  
}  
 
root.removeChild( script );  
// release memory in IE  
root = script = id = null;  
}  
 
return jQuery.support._scriptEval;  
};  
 
// Test to see if it's possible to delete an expando from an element  
// Fails in Internet Explorer  
try {  
delete div.test;  
 
} catch(e) {  
jQuery.support.deleteExpando = false;  
}  
 
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"),  
body = document.getElementsByTagName("body")[0];  
 
// Frameset documents with no body should not run this code  
if ( !body ) {  
return;  
}  
 
div.style.width = div.style.paddingLeft = "1px";  
body.appendChild( div );  
jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;  
 
if ( "zoom" in div.style ) {  
// Check if natively block-level elements act like inline-block  
// elements when setting their display to 'inline' and giving  
// them layout  
// (IE < 8 does this)  
div.style.display = "inline";  
div.style.zoom = 1;  
jQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;  
 
// Check if elements with layout shrink-wrap their children  
// (IE 6 does this)  
div.style.display = "";  
div.innerHTML = "<div style='width:4px;'></div>";  
jQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;  
}  
 
div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";  
var tds = div.getElementsByTagName("td");  
 
// Check if table cells still have offsetWidth/Height when they are set  
// to display:none and there are still other visible table cells in a  
// table row; if so, offsetWidth/Height are not reliable for use when  
// determining if an element has been hidden directly using  
// display:none (it is still safe to use offsets if a parent element is  
// hidden; don safety goggles and see bug #4512 for more information).  
// (only IE 8 fails this test)  
jQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;  
 
tds[0].style.display = "";  
tds[1].style.display = "none";  
 
// Check if empty table cells still have offsetWidth/Height  
// (IE < 8 fail this test)  
jQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;  
div.innerHTML = "";  
 
body.removeChild( div ).style.display = "none";  
div = tds = 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;  
 
// We only care about the case where non-standard event systems  
// are used, namely in IE. Short-circuiting here helps us to  
// avoid an eval call (in setAttribute) which can cause CSP  
// to go haywire. See: https://developer.mozilla.org/en/Security/CSP  
if ( !el.attachEvent ) {  
return true;  
}  
 
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  
div = all = a = null;  
})();  
 
 
 
var rbrace = /^(?:\{.*\}|\[.*\])$/;  
 
jQuery.extend({  
cache: {},  
 
// Please use with caution  
uuid: 0,  
 
// Unique for each copy of jQuery on the page  
// Non-digits removed to match rinlinejQuery  
expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),  
 
// The following elements throw uncatchable exceptions if you  
// attempt to add expando properties to them.  
noData: {  
"embed": true,  
// Ban all objects except for Flash (which handle expandos)  
"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",  
"applet": true  
},  
 
hasData: function( elem ) {  
elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];  
 
return !!elem && !jQuery.isEmptyObject(elem);  
},  
 
data: function( elem, name, data, pvt /* Internal Use Only */ ) {  
if ( !jQuery.acceptData( elem ) ) {  
return;  
}  
 
var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache,  
 
// We have to handle DOM nodes and JS objects differently because IE6-7  
// can't GC object references properly across the DOM-JS boundary  
isNode = elem.nodeType,  
 
// Only DOM nodes need the global jQuery cache; JS object data is  
// attached directly to the object so GC can occur automatically  
cache = isNode ? jQuery.cache : elem,  
 
// Only defining an ID for JS objects if its cache already exists allows  
// the code to shortcut on the same path as a DOM node with no cache  
id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;  
 
// Avoid doing any more work than we need to when trying to get data on an  
// object that has no data at all  
if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {  
return;  
}  
 
if ( !id ) {  
// Only DOM nodes need a new unique ID for each element since their data  
// ends up in the global cache  
if ( isNode ) {  
elem[ jQuery.expando ] = id = ++jQuery.uuid;  
} else {  
id = jQuery.expando;  
}  
}  
 
if ( !cache[ id ] ) {  
cache[ id ] = {};  
}  
 
// An object can be passed to jQuery.data instead of a key/value pair; this gets  
// shallow copied over onto the existing cache  
if ( typeof name === "object" ) {  
if ( pvt ) {  
cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);  
} else {  
cache[ id ] = jQuery.extend(cache[ id ], name);  
}  
}  
 
thisCache = cache[ id ];  
 
// Internal jQuery data is stored in a separate object inside the object's data  
// cache in order to avoid key collisions between internal data and user-defined  
// data  
if ( pvt ) {  
if ( !thisCache[ internalKey ] ) {  
thisCache[ internalKey ] = {};  
}  
 
thisCache = thisCache[ internalKey ];  
}  
 
if ( data !== undefined ) {  
thisCache[ name ] = data;  
}  
 
// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should  
// not attempt to inspect the internal events object using jQuery.data, as this  
// internal data object is undocumented and subject to change.  
if ( name === "events" && !thisCache[name] ) {  
return thisCache[ internalKey ] && thisCache[ internalKey ].events;  
}  
 
return getByName ? thisCache[ name ] : thisCache;  
},  
 
removeData: function( elem, name, pvt /* Internal Use Only */ ) {  
if ( !jQuery.acceptData( elem ) ) {  
return;  
}  
 
var internalKey = jQuery.expando, isNode = elem.nodeType,  
 
// See jQuery.data for more information  
cache = isNode ? jQuery.cache : elem,  
 
// See jQuery.data for more information  
id = isNode ? elem[ jQuery.expando ] : jQuery.expando;  
 
// If there is already no cache entry for this object, there is no  
// purpose in continuing  
if ( !cache[ id ] ) {  
return;  
}  
 
if ( name ) {  
var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];  
 
if ( thisCache ) {  
delete thisCache[ name ];  
 
// If there is no data left in the cache, we want to continue  
// and let the cache object itself get destroyed  
if ( !jQuery.isEmptyObject(thisCache) ) {  
return;  
}  
}  
}  
 
// See jQuery.data for more information  
if ( pvt ) {  
delete cache[ id ][ internalKey ];  
 
// Don't destroy the parent cache unless the internal data object  
// had been the only thing left in it  
if ( !jQuery.isEmptyObject(cache[ id ]) ) {  
return;  
}  
}  
 
var internalCache = cache[ id ][ internalKey ];  
 
// Browsers that fail expando deletion also refuse to delete expandos on  
// the window, but it will allow it on all other JS objects; other browsers  
// don't care  
if ( jQuery.support.deleteExpando || cache != window ) {  
delete cache[ id ];  
} else {  
cache[ id ] = null;  
}  
 
// We destroyed the entire user cache at once because it's faster than  
// iterating through each key, but we need to continue to persist internal  
// data if it existed  
if ( internalCache ) {  
cache[ id ] = {};  
cache[ id ][ internalKey ] = internalCache;  
 
// Otherwise, we need to eliminate the expando on the node to avoid  
// false lookups in the cache for entries that no longer exist  
} else if ( isNode ) {  
// IE does not allow us to delete expando properties from nodes,  
// nor does it have a removeAttribute function on Document nodes;  
// we must handle all of these cases  
if ( jQuery.support.deleteExpando ) {  
delete elem[ jQuery.expando ];  
} else if ( elem.removeAttribute ) {  
elem.removeAttribute( jQuery.expando );  
} else {  
elem[ jQuery.expando ] = null;  
}  
}  
},  
 
// For internal use only.  
_data: function( elem, name, data ) {  
return jQuery.data( elem, name, data, true );  
},  
 
// A method for determining if a DOM node can handle the data expando  
acceptData: function( elem ) {  
if ( elem.nodeName ) {  
var match = jQuery.noData[ elem.nodeName.toLowerCase() ];  
 
if ( match ) {  
return !(match === true || elem.getAttribute("classid") !== match);  
}  
}  
 
return true;  
}  
});  
 
jQuery.fn.extend({  
data: function( key, value ) {  
var data = null;  
 
if ( typeof key === "undefined" ) {  
if ( this.length ) {  
data = jQuery.data( this[0] );  
 
if ( this[0].nodeType === 1 ) {  
var attr = this[0].attributes, name;  
for ( var i = 0, l = attr.length; i < l; i++ ) {  
name = attr[i].name;  
 
if ( name.indexOf( "data-" ) === 0 ) {  
name = name.substr( 5 );  
dataAttr( this[0], name, data[ name ] );  
}  
}  
}  
}  
 
return data;  
 
} 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 ) {  
data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);  
 
// Try to fetch any internally stored data first  
if ( data === undefined && this.length ) {  
data = jQuery.data( this[0], key );  
data = dataAttr( this[0], key, data );  
}  
 
return data === undefined && parts[1] ?  
this.data( parts[0] ) :  
data;  
 
} else {  
return this.each(function() {  
var $this = jQuery( this ),  
args = [ parts[0], value ];  
 
$this.triggerHandler( "setData" + parts[1] + "!", args );  
jQuery.data( this, key, value );  
$this.triggerHandler( "changeData" + parts[1] + "!", args );  
});  
}  
},  
 
removeData: function( key ) {  
return this.each(function() {  
jQuery.removeData( this, key );  
});  
}  
});  
 
function dataAttr( elem, key, data ) {  
// If nothing was found internally, try to fetch any  
// data from the HTML5 data-* attribute  
if ( data === undefined && elem.nodeType === 1 ) {  
data = elem.getAttribute( "data-" + key );  
 
if ( typeof data === "string" ) {  
try {  
data = data === "true" ? true :  
data === "false" ? false :  
data === "null" ? null :  
!jQuery.isNaN( data ) ? parseFloat( data ) :  
rbrace.test( data ) ? jQuery.parseJSON( data ) :  
data;  
} catch( e ) {}  
 
// Make sure we set the data so it isn't changed later  
jQuery.data( elem, key, data );  
 
} else {  
data = undefined;  
}  
}  
 
return data;  
}  
 
 
 
 
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);  
});  
}  
 
if ( !queue.length ) {  
jQuery.removeData( elem, type + "queue", true );  
}  
}  
});  
 
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 ) {  
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\r]/g,  
rspaces = /\s+/,  
rreturn = /\r/g,  
rspecialurl = /^(?:href|src|style)$/,  
rtype = /^(?:button|input)$/i,  
rfocusable = /^(?:button|input|object|select|textarea)$/i,  
rclickable = /^a(?:rea)?$/i,  
rradiocheck = /^(?:radio|checkbox)$/i;  
 
jQuery.props = {  
"for": "htmlFor",  
"class": "className",  
readonly: "readOnly",  
maxlength: "maxLength",  
cellspacing: "cellSpacing",  
rowspan: "rowSpan",  
colspan: "colSpan",  
tabindex: "tabIndex",  
usemap: "useMap",  
frameborder: "frameBorder"  
};  
 
jQuery.fn.extend({  
attr: function( name, value ) {  
return jQuery.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( rspaces );  
 
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) {  
var self = jQuery(this);  
self.removeClass( value.call(this, i, self.attr("class")) );  
});  
}  
 
if ( (value && typeof value === "string") || value === undefined ) {  
var classNames = (value || "").split( rspaces );  
 
for ( var i = 0, l = this.length; i < l; i++ ) {  
var elem = this[i];  
 
if ( elem.nodeType === 1 && elem.className ) {  
if ( value ) {  
var className = (" " + elem.className + " ").replace(rclass, " ");  
for ( var c = 0, cl = classNames.length; c < cl; c++ ) {  
className = className.replace(" " + classNames[c] + " ", " ");  
}  
elem.className = jQuery.trim( className );  
 
} else {  
elem.className = "";  
}  
}  
}  
}  
 
return this;  
},  
 
toggleClass: function( value, stateVal ) {  
var type = typeof value,  
isBool = typeof stateVal === "boolean";  
 
if ( jQuery.isFunction( value ) ) {  
return this.each(function(i) {  
var self = jQuery(this);  
self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );  
});  
}  
 
return this.each(function() {  
if ( type === "string" ) {  
// toggle individual class names  
var className,  
i = 0,  
self = jQuery( this ),  
state = stateVal,  
classNames = value.split( rspaces );  
 
while ( (className = classNames[ i++ ]) ) {  
// check each className given, space seperated list  
state = isBool ? state : !self.hasClass( className );  
self[ state ? "addClass" : "removeClass" ]( className );  
}  
 
} else if ( type === "undefined" || type === "boolean" ) {  
if ( this.className ) {  
// store className if set  
jQuery._data( this, "__className__", this.className );  
}  
 
// toggle whole className  
this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";  
}  
});  
},  
 
hasClass: function( selector ) {  
var className = " " + selector + " ";  
for ( var i = 0, l = this.length; i < l; i++ ) {  
if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {  
return true;  
}  
}  
 
return false;  
},  
 
val: function( value ) {  
if ( !arguments.length ) {  
var elem = this[0];  
 
if ( elem ) {  
if ( jQuery.nodeName( elem, "option" ) ) {  
// attributes.value is undefined in Blackberry 4.7 but  
// uses .value. See #6932  
var val = elem.attributes.value;  
return !val || val.specified ? elem.value : elem.text;  
}  
 
// We need to handle select boxes special  
if ( jQuery.nodeName( elem, "select" ) ) {  
var index = elem.selectedIndex,  
values = [],  
options = elem.options,  
one = elem.type === "select-one";  
 
// Nothing was selected  
if ( index < 0 ) {  
return null;  
}  
 
// Loop through all the selected options  
for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {  
var option = options[ i ];  
 
// Don't return options that are disabled or in a disabled optgroup  
if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&  
(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {  
 
// Get the specific value for the option  
value = jQuery(option).val();  
 
// We don't need an array for one selects  
if ( one ) {  
return value;  
}  
 
// Multi-Selects return an array  
values.push( value );  
}  
}  
 
return values;  
}  
 
// Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified  
if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {  
return elem.getAttribute("value") === null ? "on" : elem.value;  
}  
 
// Everything else, we just grab the value  
return (elem.value || "").replace(rreturn, "");  
 
}  
 
return undefined;  
}  
 
var isFunction = jQuery.isFunction(value);  
 
return this.each(function(i) {  
var self = jQuery(this), val = value;  
 
if ( this.nodeType !== 1 ) {  
return;  
}  
 
if ( isFunction ) {  
val = value.call(this, i, self.val());  
}  
 
// Treat null/undefined as ""; convert numbers to string  
if ( val == null ) {  
val = "";  
} else if ( typeof val === "number" ) {  
val += "";  
} else if ( jQuery.isArray(val) ) {  
val = jQuery.map(val, function (value) {  
return value == null ? "" : value + "";  
});  
}  
 
if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {  
this.checked = jQuery.inArray( self.val(), val ) >= 0;  
 
} else if ( jQuery.nodeName( this, "select" ) ) {  
var values = jQuery.makeArray(val);  
 
jQuery( "option", this ).each(function() {  
this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;  
});  
 
if ( !values.length ) {  
this.selectedIndex = -1;  
}  
 
} else {  
this.value = val;  
}  
});  
}  
});  
 
jQuery.extend({  
attrFn: {  
val: true,  
css: true,  
html: true,  
text: true,  
data: true,  
width: true,  
height: true,  
offset: true  
},  
 
attr: function( elem, name, value, pass ) {  
// don't get/set attributes on text, comment and attribute nodes  
if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {  
return undefined;  
}  
 
if ( pass && name in jQuery.attrFn ) {  
return jQuery(elem)[name](value);  
}  
 
var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),  
// Whether we are setting (or getting)  
set = value !== undefined;  
 
// Try to normalize/fix the name  
name = notxml && jQuery.props[ name ] || name;  
 
// Only do all the following if this is a node (faster for style)  
if ( elem.nodeType === 1 ) {  
// These attributes require special treatment  
var special = rspecialurl.test( name );  
 
// Safari mis-reports the default selected property of an option  
// Accessing the parent's selectedIndex property fixes it  
if ( name === "selected" && !jQuery.support.optSelected ) {  
var parent = elem.parentNode;  
if ( parent ) {  
parent.selectedIndex;  
 
// Make sure that it also works with optgroups, see #5701  
if ( parent.parentNode ) {  
parent.parentNode.selectedIndex;  
}  
}  
}  
 
// If applicable, access the attribute via the DOM 0 way  
// 'in' checks fail in Blackberry 4.7 #6931  
if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {  
if ( set ) {  
// We can't allow the type property to be changed (since it causes problems in IE)  
if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {  
jQuery.error( "type property can't be changed" );  
}  
 
if ( value === null ) {  
if ( elem.nodeType === 1 ) {  
elem.removeAttribute( name );  
}  
 
} else {  
elem[ name ] = value;  
}  
}  
 
// browsers index elements by id/name on forms, give priority to attributes.  
if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {  
return elem.getAttributeNode( name ).nodeValue;  
}  
 
// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set  
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/  
if ( name === "tabIndex" ) {  
var attributeNode = elem.getAttributeNode( "tabIndex" );  
 
return attributeNode && attributeNode.specified ?  
attributeNode.value :  
rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?  
0 :  
undefined;  
}  
 
return elem[ name ];  
}  
 
if ( !jQuery.support.style && notxml && name === "style" ) {  
if ( set ) {  
elem.style.cssText = "" + value;  
}  
 
return elem.style.cssText;  
}  
 
if ( set ) {  
// convert the value to a string (all browsers do this but IE) see #1070  
elem.setAttribute( name, "" + value );  
}  
 
// Ensure that missing attributes return undefined  
// Blackberry 4.7 returns "" from getAttribute #6938  
if ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {  
return undefined;  
}  
 
var attr = !jQuery.support.hrefNormalized && notxml && special ?  
// Some attributes require a special call on IE  
elem.getAttribute( name, 2 ) :  
elem.getAttribute( name );  
 
// Non-existent attributes return null, we normalize to undefined  
return attr === null ? undefined : attr;  
}  
// Handle everything which isn't a DOM element node  
if ( set ) {  
elem[ name ] = value;  
}  
return elem[ name ];  
}  
});  
 
 
 
 
var rnamespaces = /\.(.*)$/,  
rformElems = /^(?:textarea|input|select)$/i,  
rperiod = /\./g,  
rspace = / /g,  
rescape = /[^\w\s.|`]/g,  
fcleanup = function( nm ) {  
return nm.replace(rescape, "\\$&");  
},  
eventKey = "events";  
 
/*  
* A number of helper functions used for managing events.  
* Many of the ideas behind this code originated from  
* Dean Edwards' addEvent library.  
*/  
jQuery.event = {  
 
// Bind an event to an element  
// Original by Dean Edwards  
add: function( elem, types, handler, data ) {  
if ( elem.nodeType === 3 || elem.nodeType === 8 ) {  
return;  
}  
 
// For whatever reason, IE has trouble passing the window object  
// around, causing it to be cloned in the process  
if ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {  
elem = window;  
}  
 
if ( handler === false ) {  
handler = returnFalse;  
} else if ( !handler ) {  
// Fixes bug #7229. Fix recommended by jdalton  
return;  
}  
 
var handleObjIn, handleObj;  
 
if ( handler.handler ) {  
handleObjIn = handler;  
handler = handleObjIn.handler;  
}  
 
// Make sure that the function being executed has a unique ID  
if ( !handler.guid ) {  
handler.guid = jQuery.guid++;  
}  
 
// Init the element's event structure  
var elemData = jQuery._data( elem );  
 
// If no elemData is found then we must be trying to bind to one of the  
// banned noData elements  
if ( !elemData ) {  
return;  
}  
 
var events = elemData[ eventKey ],  
eventHandle = elemData.handle;  
 
if ( typeof events === "function" ) {  
// On plain objects events is a fn that holds the the data  
// which prevents this data from being JSON serialized  
// the function does not need to be called, it just contains the data  
eventHandle = events.handle;  
events = events.events;  
 
} else if ( !events ) {  
if ( !elem.nodeType ) {  
// On plain objects, create a fn that acts as the holder  
// of the values to avoid JSON serialization of event data  
elemData[ eventKey ] = elemData = function(){};  
}  
 
elemData.events = events = {};  
}  
 
if ( !eventHandle ) {  
elemData.handle = eventHandle = function() {  
// Handle the second event of a trigger and when  
// an event is called after a page has unloaded  
return typeof jQuery !== "undefined" && !jQuery.event.triggered ?  
jQuery.event.handle.apply( eventHandle.elem, arguments ) :  
undefined;  
};  
}  
 
// Add elem as a property of the handle function  
// This is to prevent a memory leak with non-native events in IE.  
eventHandle.elem = elem;  
 
// Handle multiple events separated by a space  
// jQuery(...).bind("mouseover mouseout", fn);  
types = types.split(" ");  
 
var type, i = 0, namespaces;  
 
while ( (type = types[ i++ ]) ) {  
handleObj = handleObjIn ?  
jQuery.extend({}, handleObjIn) :  
{ handler: handler, data: data };  
 
// Namespaced event handlers  
if ( type.indexOf(".") > -1 ) {  
namespaces = type.split(".");  
type = namespaces.shift();  
handleObj.namespace = namespaces.slice(0).sort().join(".");  
 
} else {  
namespaces = [];  
handleObj.namespace = "";  
}  
 
handleObj.type = type;  
if ( !handleObj.guid ) {  
handleObj.guid = handler.guid;  
}  
 
// Get the current list of functions bound to this event  
var handlers = events[ type ],  
special = jQuery.event.special[ type ] || {};  
 
// Init the event handler queue  
if ( !handlers ) {  
handlers = events[ type ] = [];  
 
// Check for a special event handler  
// Only use addEventListener/attachEvent if the special  
// events handler returns false  
if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {  
// Bind the global event handler to the element  
if ( elem.addEventListener ) {  
elem.addEventListener( type, eventHandle, false );  
 
} else if ( elem.attachEvent ) {  
elem.attachEvent( "on" + type, eventHandle );  
}  
}  
}  
 
if ( special.add ) {  
special.add.call( elem, handleObj );  
 
if ( !handleObj.handler.guid ) {  
handleObj.handler.guid = handler.guid;  
}  
}  
 
// Add the function to the element's handler list  
handlers.push( handleObj );  
 
// Keep track of which events have been used, for global triggering  
jQuery.event.global[ type ] = true;  
}  
 
// Nullify elem to prevent memory leaks in IE  
elem = null;  
},  
 
global: {},  
 
// Detach an event or set of events from an element  
remove: function( elem, types, handler, pos ) {  
// don't do events on text and comment nodes  
if ( elem.nodeType === 3 || elem.nodeType === 8 ) {  
return;  
}  
 
if ( handler === false ) {  
handler = returnFalse;  
}  
 
var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,  
elemData = jQuery.hasData( elem ) && jQuery._data( elem ),  
events = elemData && elemData[ eventKey ];  
 
if ( !elemData || !events ) {  
return;  
}  
 
if ( typeof events === "function" ) {  
elemData = events;  
events = events.events;  
}  
 
// types is actually an event object here  
if ( types && types.type ) {  
handler = types.handler;  
types = types.type;  
}  
 
// Unbind all events for the element  
if ( !types || typeof types === "string" && types.charAt(0) === "." ) {  
types = types || "";  
 
for ( type in events ) {  
jQuery.event.remove( elem, type + types );  
}  
 
return;  
}  
 
// Handle multiple events separated by a space  
// jQuery(...).unbind("mouseover mouseout", fn);  
types = types.split(" ");  
 
while ( (type = types[ i++ ]) ) {  
origType = type;  
handleObj = null;  
all = type.indexOf(".") < 0;  
namespaces = [];  
 
if ( !all ) {  
// Namespaced event handlers  
namespaces = type.split(".");  
type = namespaces.shift();  
 
namespace = new RegExp("(^|\\.)" +  
jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");  
}  
 
eventType = events[ type ];  
 
if ( !eventType ) {  
continue;  
}  
 
if ( !handler ) {  
for ( j = 0; j < eventType.length; j++ ) {  
handleObj = eventType[ j ];  
 
if ( all || namespace.test( handleObj.namespace ) ) {  
jQuery.event.remove( elem, origType, handleObj.handler, j );  
eventType.splice( j--, 1 );  
}  
}  
 
continue;  
}  
 
special = jQuery.event.special[ type ] || {};  
 
for ( j = pos || 0; j < eventType.length; j++ ) {  
handleObj = eventType[ j ];  
 
if ( handler.guid === handleObj.guid ) {  
// remove the given handler for the given type  
if ( all || namespace.test( handleObj.namespace ) ) {  
if ( pos == null ) {  
eventType.splice( j--, 1 );  
}  
 
if ( special.remove ) {  
special.remove.call( elem, handleObj );  
}  
}  
 
if ( pos != null ) {  
break;  
}  
}  
}  
 
// remove generic event handler if no more handlers exist  
if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {  
if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {  
jQuery.removeEvent( elem, type, elemData.handle );  
}  
 
ret = null;  
delete events[ type ];  
}  
}  
 
// Remove the expando if it's no longer used  
if ( jQuery.isEmptyObject( events ) ) {  
var handle = elemData.handle;  
if ( handle ) {  
handle.elem = null;  
}  
 
delete elemData.events;  
delete elemData.handle;  
 
if ( typeof elemData === "function" ) {  
jQuery.removeData( elem, eventKey, true );  
 
} else if ( jQuery.isEmptyObject( elemData ) ) {  
jQuery.removeData( elem, undefined, true );  
}  
}  
},  
 
// bubbling is internal  
trigger: function( event, data, elem /*, bubbling */ ) {  
// Event object or event type  
var type = event.type || event,  
bubbling = arguments[3];  
 
if ( !bubbling ) {  
event = typeof event === "object" ?  
// jQuery.Event object  
event[ jQuery.expando ] ? event :  
// Object literal  
jQuery.extend( jQuery.Event(type), event ) :  
// Just the event type (string)  
jQuery.Event(type);  
 
if ( type.indexOf("!") >= 0 ) {  
event.type = type = type.slice(0, -1);  
event.exclusive = true;  
}  
 
// Handle a global trigger  
if ( !elem ) {  
// Don't bubble custom events when global (to avoid too much overhead)  
event.stopPropagation();  
 
// Only trigger if we've ever bound an event for it  
if ( jQuery.event.global[ type ] ) {  
// XXX This code smells terrible. event.js should not be directly  
// inspecting the data cache  
jQuery.each( jQuery.cache, function() {  
// internalKey variable is just used to make it easier to find  
// and potentially change this stuff later; currently it just  
// points to jQuery.expando  
var internalKey = jQuery.expando,  
internalCache = this[ internalKey ];  
if ( internalCache && internalCache.events && internalCache.events[type] ) {  
jQuery.event.trigger( event, data, internalCache.handle.elem );  
}  
});  
}  
}  
 
// Handle triggering a single element  
 
// don't do events on text and comment nodes  
if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {  
return undefined;  
}  
 
// Clean up in case it is reused  
event.result = undefined;  
event.target = elem;  
 
// Clone the incoming data, if any  
data = jQuery.makeArray( data );  
data.unshift( event );  
}  
 
event.currentTarget = elem;  
 
// Trigger the event, it is assumed that "handle" is a function  
var handle = elem.nodeType ?  
jQuery._data( elem, "handle" ) :  
(jQuery._data( elem, eventKey ) || {}).handle;  
 
if ( handle ) {  
handle.apply( elem, data );  
}  
 
var parent = elem.parentNode || elem.ownerDocument;  
 
// Trigger an inline bound script  
try {  
if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {  
if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {  
event.result = false;  
event.preventDefault();  
}  
}  
 
// prevent IE from throwing an error for some elements with some event types, see #3533  
} catch (inlineError) {}  
 
if ( !event.isPropagationStopped() && parent ) {  
jQuery.event.trigger( event, data, parent, true );  
 
} else if ( !event.isDefaultPrevented() ) {  
var old,  
target = event.target,  
targetType = type.replace( rnamespaces, "" ),  
isClick = jQuery.nodeName( target, "a" ) && targetType === "click",  
special = jQuery.event.special[ targetType ] || {};  
 
if ( (!special._default || special._default.call( elem, event ) === false) &&  
!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {  
 
try {  
if ( target[ targetType ] ) {  
// Make sure that we don't accidentally re-trigger the onFOO events  
old = target[ "on" + targetType ];  
 
if ( old ) {  
target[ "on" + targetType ] = null;  
}  
 
jQuery.event.triggered = true;  
target[ targetType ]();  
}  
 
// prevent IE from throwing an error for some elements with some event types, see #3533  
} catch (triggerError) {}  
 
if ( old ) {  
target[ "on" + targetType ] = old;  
}  
 
jQuery.event.triggered = false;  
}  
}  
},  
 
handle: function( event ) {  
var all, handlers, namespaces, namespace_re, events,  
namespace_sort = [],  
args = jQuery.makeArray( arguments );  
 
event = args[0] = jQuery.event.fix( event || window.event );  
event.currentTarget = this;  
 
// Namespaced event handlers  
all = event.type.indexOf(".") < 0 && !event.exclusive;  
 
if ( !all ) {  
namespaces = event.type.split(".");  
event.type = namespaces.shift();  
namespace_sort = namespaces.slice(0).sort();  
namespace_re = new RegExp("(^|\\.)" + namespace_sort.join("\\.(?:.*\\.)?") + "(\\.|$)");  
}  
 
event.namespace = event.namespace || namespace_sort.join(".");  
 
events = jQuery._data(this, eventKey);  
 
if ( typeof events === "function" ) {  
events = events.events;  
}  
 
handlers = (events || {})[ event.type ];  
 
if ( events && handlers ) {  
// Clone the handlers to prevent manipulation  
handlers = handlers.slice(0);  
 
for ( var j = 0, l = handlers.length; j < l; j++ ) {  
var handleObj = handlers[ j ];  
 
// Filter the functions by class  
if ( all || namespace_re.test( handleObj.namespace ) ) {  
// Pass in a reference to the handler function itself  
// So that we can later remove it  
event.handler = handleObj.handler;  
event.data = handleObj.data;  
event.handleObj = handleObj;  
 
var ret = handleObj.handler.apply( this, args );  
 
if ( ret !== undefined ) {  
event.result = ret;  
if ( ret === false ) {  
event.preventDefault();  
event.stopPropagation();  
}  
}  
 
if ( event.isImmediatePropagationStopped() ) {  
break;  
}  
}  
}  
}  
 
return event.result;  
},  
 
props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),  
 
fix: function( event ) {  
if ( event[ jQuery.expando ] ) {  
return event;  
}  
 
// store a copy of the original event object  
// and "clone" to set read-only properties  
var originalEvent = event;  
event = jQuery.Event( originalEvent );  
 
for ( var i = this.props.length, prop; i; ) {  
prop = this.props[ --i ];  
event[ prop ] = originalEvent[ prop ];  
}  
 
// Fix target property, if necessary  
if ( !event.target ) {  
// Fixes #1925 where srcElement might not be defined either  
event.target = event.srcElement || document;  
}  
 
// check if target is a textnode (safari)  
if ( event.target.nodeType === 3 ) {  
event.target = event.target.parentNode;  
}  
 
// Add relatedTarget, if necessary  
if ( !event.relatedTarget && event.fromElement ) {  
event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;  
}  
 
// Calculate pageX/Y if missing and clientX/Y available  
if ( event.pageX == null && event.clientX != null ) {  
var doc = document.documentElement,  
body = document.body;  
 
event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);  
event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);  
}  
 
// Add which for key events  
if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {  
event.which = event.charCode != null ? event.charCode : event.keyCode;  
}  
 
// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)  
if ( !event.metaKey && event.ctrlKey ) {  
event.metaKey = event.ctrlKey;  
}  
 
// Add which for click: 1 === left; 2 === middle; 3 === right  
// Note: button is not normalized, so don't use it  
if ( !event.which && event.button !== undefined ) {  
event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));  
}  
 
return event;  
},  
 
// Deprecated, use jQuery.guid instead  
guid: 1E8,  
 
// Deprecated, use jQuery.proxy instead  
proxy: jQuery.proxy,  
 
special: {  
ready: {  
// Make sure the ready event is setup  
setup: jQuery.bindReady,  
teardown: jQuery.noop  
},  
 
live: {  
add: function( handleObj ) {  
jQuery.event.add( this,  
liveConvert( handleObj.origType, handleObj.selector ),  
jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );  
},  
 
remove: function( handleObj ) {  
jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );  
}  
},  
 
beforeunload: {  
setup: function( data, namespaces, eventHandle ) {  
// We only want to do this special case on windows  
if ( jQuery.isWindow( this ) ) {  
this.onbeforeunload = eventHandle;  
}  
},  
 
teardown: function( namespaces, eventHandle ) {  
if ( this.onbeforeunload === eventHandle ) {  
this.onbeforeunload = null;  
}  
}  
}  
}  
};  
 
jQuery.removeEvent = document.removeEventListener ?  
function( elem, type, handle ) {  
if ( elem.removeEventListener ) {  
elem.removeEventListener( type, handle, false );  
}  
} :  
function( elem, type, handle ) {  
if ( elem.detachEvent ) {  
elem.detachEvent( "on" + type, handle );  
}  
};  
 
jQuery.Event = function( src ) {  
// Allow instantiation without the 'new' keyword  
if ( !this.preventDefault ) {  
return new jQuery.Event( src );  
}  
 
// Event object  
if ( src && src.type ) {  
this.originalEvent = src;  
this.type = src.type;  
 
// Events bubbling up the document may have been marked as prevented  
// by a handler lower down the tree; reflect the correct value.  
this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||  
src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;  
 
// Event type  
} else {  
this.type = src;  
}  
 
// timeStamp is buggy for some events on Firefox(#3843)  
// So we won't rely on the native value  
this.timeStamp = jQuery.now();  
 
// Mark it as fixed  
this[ jQuery.expando ] = true;  
};  
 
function returnFalse() {  
return false;  
}  
function returnTrue() {  
return true;  
}  
 
// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding  
// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html  
jQuery.Event.prototype = {  
preventDefault: function() {  
this.isDefaultPrevented = returnTrue;  
 
var e = this.originalEvent;  
if ( !e ) {  
return;  
}  
 
// if preventDefault exists run it on the original event  
if ( e.preventDefault ) {  
e.preventDefault();  
 
// otherwise set the returnValue property of the original event to false (IE)  
} else {  
e.returnValue = false;  
}  
},  
stopPropagation: function() {  
this.isPropagationStopped = returnTrue;  
 
var e = this.originalEvent;  
if ( !e ) {  
return;  
}  
// if stopPropagation exists run it on the original event  
if ( e.stopPropagation ) {  
e.stopPropagation();  
}  
// otherwise set the cancelBubble property of the original event to true (IE)  
e.cancelBubble = true;  
},  
stopImmediatePropagation: function() {  
this.isImmediatePropagationStopped = returnTrue;  
this.stopPropagation();  
},  
isDefaultPrevented: returnFalse,  
isPropagationStopped: returnFalse,  
isImmediatePropagationStopped: returnFalse  
};  
 
// Checks if an event happened on an element within another element  
// Used in jQuery.event.special.mouseenter and mouseleave handlers  
var withinElement = function( event ) {  
// Check if mouse(over|out) are still within the same parent element  
var parent = event.relatedTarget;  
 
// Firefox sometimes assigns relatedTarget a XUL element  
// which we cannot access the parentNode property of  
try {  
// Traverse up the tree  
while ( parent && parent !== this ) {  
parent = parent.parentNode;  
}  
 
if ( parent !== this ) {  
// set the correct event type  
event.type = event.data;  
 
// handle event if we actually just moused on to a non sub-element  
jQuery.event.handle.apply( this, arguments );  
}  
 
// assuming we've left the element since we most likely mousedover a xul element  
} catch(e) { }  
},  
 
// In case of event delegation, we only need to rename the event.type,  
// liveHandler will take care of the rest.  
delegate = function( event ) {  
event.type = event.data;  
jQuery.event.handle.apply( this, arguments );  
};  
 
// Create mouseenter and mouseleave events  
jQuery.each({  
mouseenter: "mouseover",  
mouseleave: "mouseout"  
}, function( orig, fix ) {  
jQuery.event.special[ orig ] = {  
setup: function( data ) {  
jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );  
},  
teardown: function( data ) {  
jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );  
}  
};  
});  
 
// submit delegation  
if ( !jQuery.support.submitBubbles ) {  
 
jQuery.event.special.submit = {  
setup: function( data, namespaces ) {  
if ( this.nodeName && this.nodeName.toLowerCase() !== "form" ) {  
jQuery.event.add(this, "click.specialSubmit", function( e ) {  
var elem = e.target,  
type = elem.type;  
 
if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {  
e.liveFired = undefined;  
return trigger( "submit", this, arguments );  
}  
});  
 
jQuery.event.add(this, "keypress.specialSubmit", function( e ) {  
var elem = e.target,  
type = elem.type;  
 
if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {  
e.liveFired = undefined;  
return trigger( "submit", this, arguments );  
}  
});  
 
} else {  
return false;  
}  
},  
 
teardown: function( namespaces ) {  
jQuery.event.remove( this, ".specialSubmit" );  
}  
};  
 
}  
 
// change delegation, happens here so we have bind.  
if ( !jQuery.support.changeBubbles ) {  
 
var changeFilters,  
 
getVal = function( elem ) {  
var type = elem.type, val = elem.value;  
 
if ( type === "radio" || type === "checkbox" ) {  
val = elem.checked;  
 
} else if ( type === "select-multiple" ) {  
val = elem.selectedIndex > -1 ?  
jQuery.map( elem.options, function( elem ) {  
return elem.selected;  
}).join("-") :  
"";  
 
} else if ( elem.nodeName.toLowerCase() === "select" ) {  
val = elem.selectedIndex;  
}  
 
return val;  
},  
 
testChange = function testChange( e ) {  
var elem = e.target, data, val;  
 
if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {  
return;  
}  
 
data = jQuery._data( elem, "_change_data" );  
val = getVal(elem);  
 
// the current data will be also retrieved by beforeactivate  
if ( e.type !== "focusout" || elem.type !== "radio" ) {  
jQuery._data( elem, "_change_data", val );  
}  
 
if ( data === undefined || val === data ) {  
return;  
}  
 
if ( data != null || val ) {  
e.type = "change";  
e.liveFired = undefined;  
return jQuery.event.trigger( e, arguments[1], elem );  
}  
};  
 
jQuery.event.special.change = {  
filters: {  
focusout: testChange,  
 
beforedeactivate: testChange,  
 
click: function( e ) {  
var elem = e.target, type = elem.type;  
 
if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {  
return testChange.call( this, e );  
}  
},  
 
// Change has to be called before submit  
// Keydown will be called before keypress, which is used in submit-event delegation  
keydown: function( e ) {  
var elem = e.target, type = elem.type;  
 
if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||  
(e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||  
type === "select-multiple" ) {  
return testChange.call( this, e );  
}  
},  
 
// Beforeactivate happens also before the previous element is blurred  
// with this event you can't trigger a change event, but you can store  
// information  
beforeactivate: function( e ) {  
var elem = e.target;  
jQuery._data( elem, "_change_data", getVal(elem) );  
}  
},  
 
setup: function( data, namespaces ) {  
if ( this.type === "file" ) {  
return false;  
}  
 
for ( var type in changeFilters ) {  
jQuery.event.add( this, type + ".specialChange", changeFilters[type] );  
}  
 
return rformElems.test( this.nodeName );  
},  
 
teardown: function( namespaces ) {  
jQuery.event.remove( this, ".specialChange" );  
 
return rformElems.test( this.nodeName );  
}  
};  
 
changeFilters = jQuery.event.special.change.filters;  
 
// Handle when the input is .focus()'d  
changeFilters.focus = changeFilters.beforeactivate;  
}  
 
function trigger( type, elem, args ) {  
args[0].type = type;  
return jQuery.event.handle.apply( elem, args );  
}  
 
// Create "bubbling" focus and blur events  
if ( document.addEventListener ) {  
jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {  
jQuery.event.special[ fix ] = {  
setup: function() {  
this.addEventListener( orig, handler, true );  
},  
teardown: function() {  
this.removeEventListener( orig, handler, true );  
}  
};  
 
function handler( e ) {  
e = jQuery.event.fix( e );  
e.type = fix;  
return jQuery.event.handle.call( this, e );  
}  
});  
}  
 
jQuery.each(["bind", "one"], function( i, name ) {  
jQuery.fn[ name ] = function( type, data, fn ) {  
// Handle object literals  
if ( typeof type === "object" ) {  
for ( var key in type ) {  
this[ name ](key, data, type[key], fn);  
}  
return this;  
}  
 
if ( jQuery.isFunction( data ) || data === false ) {  
fn = data;  
data = undefined;  
}  
 
var handler = name === "one" ? jQuery.proxy( fn, function( event ) {  
jQuery( this ).unbind( event, handler );  
return fn.apply( this, arguments );  
}) : fn;  
 
if ( type === "unload" && name !== "one" ) {  
this.one( type, data, fn );  
 
} else {  
for ( var i = 0, l = this.length; i < l; i++ ) {  
jQuery.event.add( this[i], type, handler, data );  
}  
}  
 
return this;  
};  
});  
 
jQuery.fn.extend({  
unbind: function( type, fn ) {  
// Handle object literals  
if ( typeof type === "object" && !type.preventDefault ) {  
for ( var key in type ) {  
this.unbind(key, type[key]);  
}  
 
} else {  
for ( var i = 0, l = this.length; i < l; i++ ) {  
jQuery.event.remove( this[i], type, fn );  
}  
}  
 
return this;  
},  
 
delegate: function( selector, types, data, fn ) {  
return this.live( types, data, fn, selector );  
},  
 
undelegate: function( selector, types, fn ) {  
if ( arguments.length === 0 ) {  
return this.unbind( "live" );  
 
} else {  
return this.die( types, null, fn, selector );  
}  
},  
 
trigger: function( type, data ) {  
return this.each(function() {  
jQuery.event.trigger( type, data, this );  
});  
},  
 
triggerHandler: function( type, data ) {  
if ( this[0] ) {  
var event = jQuery.Event( type );  
event.preventDefault();  
event.stopPropagation();  
jQuery.event.trigger( event, data, this[0] );  
return event.result;  
}  
},  
 
toggle: function( fn ) {  
// Save reference to arguments for access in closure  
var args = arguments,  
i = 1;  
 
// link all the functions, so any of them can unbind this click handler  
while ( i < args.length ) {  
jQuery.proxy( fn, args[ i++ ] );  
}  
 
return this.click( jQuery.proxy( fn, function( event ) {  
// Figure out which function to execute  
var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;  
jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );  
 
// Make sure that clicks stop  
event.preventDefault();  
 
// and execute the function  
return args[ lastToggle ].apply( this, arguments ) || false;  
}));  
},  
 
hover: function( fnOver, fnOut ) {  
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );  
}  
});  
 
var liveMap = {  
focus: "focusin",  
blur: "focusout",  
mouseenter: "mouseover",  
mouseleave: "mouseout"  
};  
 
jQuery.each(["live", "die"], function( i, name ) {  
jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {  
var type, i = 0, match, namespaces, preType,  
selector = origSelector || this.selector,  
context = origSelector ? this : jQuery( this.context );  
 
if ( typeof types === "object" && !types.preventDefault ) {  
for ( var key in types ) {  
context[ name ]( key, data, types[key], selector );  
}  
 
return this;  
}  
 
if ( jQuery.isFunction( data ) ) {  
fn = data;  
data = undefined;  
}  
 
types = (types || "").split(" ");  
 
while ( (type = types[ i++ ]) != null ) {  
match = rnamespaces.exec( type );  
namespaces = "";  
 
if ( match ) {  
namespaces = match[0];  
type = type.replace( rnamespaces, "" );  
}  
 
if ( type === "hover" ) {  
types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );  
continue;  
}  
 
preType = type;  
 
if ( type === "focus" || type === "blur" ) {  
types.push( liveMap[ type ] + namespaces );  
type = type + namespaces;  
 
} else {  
type = (liveMap[ type ] || type) + namespaces;  
}  
 
if ( name === "live" ) {  
// bind live handler  
for ( var j = 0, l = context.length; j < l; j++ ) {  
jQuery.event.add( context[j], "live." + liveConvert( type, selector ),  
{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );  
}  
 
} else {  
// unbind live handler  
context.unbind( "live." + liveConvert( type, selector ), fn );  
}  
}  
 
return this;  
};  
});  
 
function liveHandler( event ) {  
var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,  
elems = [],  
selectors = [],  
events = jQuery._data( this, eventKey );  
 
if ( typeof events === "function" ) {  
events = events.events;  
}  
 
// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)  
if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) {  
return;  
}  
 
if ( event.namespace ) {  
namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");  
}  
 
event.liveFired = this;  
 
var live = events.live.slice(0);  
 
for ( j = 0; j < live.length; j++ ) {  
handleObj = live[j];  
 
if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {  
selectors.push( handleObj.selector );  
 
} else {  
live.splice( j--, 1 );  
}  
}  
 
match = jQuery( event.target ).closest( selectors, event.currentTarget );  
 
for ( i = 0, l = match.length; i < l; i++ ) {  
close = match[i];  
 
for ( j = 0; j < live.length; j++ ) {  
handleObj = live[j];  
 
if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) ) {  
elem = close.elem;  
related = null;  
 
// Those two events require additional checking  
if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {