climate-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jo...@apache.org
Subject [02/51] [abbrv] [partial] Adding Jinwon's custom RCMET
Date Fri, 09 May 2014 02:03:11 GMT
http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/.svn/text-base/.htaccess.svn-base
----------------------------------------------------------------------
diff --git a/src/main/webapp/.svn/text-base/.htaccess.svn-base b/src/main/webapp/.svn/text-base/.htaccess.svn-base
new file mode 100755
index 0000000..e3a557a
--- /dev/null
+++ b/src/main/webapp/.svn/text-base/.htaccess.svn-base
@@ -0,0 +1,45 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Rewrite rules for OODT Balance web applications. 
+#
+# Enable the rewrite engine
+RewriteEngine On
+
+# Make sure that the value for RewriteBase exactly matches the 
+# value for site_root in config.ini. This value should point to the 
+# location (relative to the server's document root) of the 
+# Balance webapp directory (the directory containing config.ini). For
+# example, if the application lives at the server's document root, then
+# RewriteBase should be set to '/'. If, on the other hand, the application
+# has been installed into a subdirectory 'foo' underneath the server's 
+# document root, RewriteBase (and site_root in config.ini) should be set
+# to '/foo/'
+RewriteBase /
+
+# This section forwards all requests to the Balance application's front
+# controller. Unless you are modifying the low-level behavior of the 
+# Balance application framework, there should be no need to make any
+# modifications below this line. -----------------------------------------
+#
+# Send all other non-static requests to the main controller
+RewriteCond %{REQUEST_URI} !/static/(.*)$
+RewriteCond %{REQUEST_URI} !/scripts/(.*)$
+RewriteCond %{REQUEST_URI} !/global/(.*)$
+RewriteCond %{REQUEST_URI} !index\.php/.+$
+RewriteRule ^(.+)$ ./index\.php/$1 [L,NC]
+

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/.svn/text-base/config.ini.svn-base
----------------------------------------------------------------------
diff --git a/src/main/webapp/.svn/text-base/config.ini.svn-base b/src/main/webapp/.svn/text-base/config.ini.svn-base
new file mode 100755
index 0000000..3d424c7
--- /dev/null
+++ b/src/main/webapp/.svn/text-base/config.ini.svn-base
@@ -0,0 +1,66 @@
+; OODT Balance
+; Web Application Base Framework
+;
+; Application Configuration File. This file should be called 'config.ini' and 
+; should reside in the root directory of your site. This file follows standard
+; ini file conventions. Lines beginning with ';' are comments and are ignored.
+;
+
+[Application Environment]
+
+; site_root
+; If the site lives at the document root of the server, this will be '/'. On
+; the other hand, if the site lives in a sub-directory of the document root, 
+; this will be the full path (starting from the document root) to the root 
+; directory of the site. Always start with a slash (/) and always omit the
+; trailing slash. 
+;
+; examples: 
+;    (document root) http://domain.com/          (site_root: '/')
+;    (subdirectory)  http://domain.com/apps/site (site_root: '/apps/site')
+;
+; Note: The value for site_root should always match the value for 'RewriteBase'
+;       in the .htaccess file located in the site's root directory.
+;
+site_root = /
+
+
+[Application Content]
+
+; views_dir
+; This is the directory inside your site root where your application's views
+; reside. This should be a relative path (./). If you have set things up
+; according to the instructions, the framework will use the location of this 
+; file (config.ini) as the base.
+;
+; Note: The value provided is simply an example. It is up to you to provide
+;       valid paths.
+views_dir = ./views
+
+; header_file_path
+; This is the file that contains a site-wide header code/layout to be included
+; in each view. This should be a relative path (./). If you have set things up
+; according to the instructions, the framework will use the location of this 
+; file (config.ini) as the base.
+;
+; Note: The value provided is simply an example. It is up to you to provide
+;       valid paths.
+header_file_path = ./views/common/header.php
+
+; footer_file_path
+; This is the file that contains a site-wide footer code/layout to be included
+; in each view. This should be a relative path (./). If you have set things up
+; according to the instructions, the framework will use the location of this 
+; file (config.ini) as the base.
+;
+; Note: The value provided is simply an example. It is up to you to provide
+;       valid paths.
+footer_file_path = ./views/common/footer.php
+
+
+[RCMET_CONFIG]
+rcmet_working_directory = /path/to/working/directory
+rcmet_cache_directory   = /path/to/cache/directory
+rcmet_service_url_base  = http://host:port
+rcmet_service_use_curl  = false
+rcmed_query_api_url_base = http://rcmes.jpl.nasa.gov/query-api
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/.svn/text-base/hooks.php.svn-base
----------------------------------------------------------------------
diff --git a/src/main/webapp/.svn/text-base/hooks.php.svn-base b/src/main/webapp/.svn/text-base/hooks.php.svn-base
new file mode 100755
index 0000000..769cfc0
--- /dev/null
+++ b/src/main/webapp/.svn/text-base/hooks.php.svn-base
@@ -0,0 +1,83 @@
+<?php
+/**
+ * Copyright (c) 2010, California Institute of Technology.
+ * ALL RIGHTS RESERVED. U.S. Government sponsorship acknowledged.
+ * 
+ * $Id$
+ * 
+ * 
+ * OODT Balance
+ * Web Application Base Framework
+ */
+/**
+ * HOOKS.PHP
+ * 
+ * Hooks provide the ability, as the name implies, to hook into various parts of 
+ * the view rendering process and insert customizations. The contents of these 
+ * functions are run at the appropriate time *EVERY* time a view is rendered, i.e.
+ * the content of the hooks is not by default view-specific but rather will be 
+ * applied to all views. (However, there is nothing that prevents developers from 
+ * inserting conditional logic inside a hook that then causes view-specific
+ * them to exhibit view-specific behavior).
+ * 
+ * As an example, consider a hook that adds the amount of time Balance took to render
+ * the page as an inline HTML comment at the bottom of each page after it has been sent:
+ * 
+ * function hook_after_send() {
+ *     $timeStart = $GLOBALS['balance_request_start'];
+ *     $timeNow   = microtime(true);
+ *     $elapsed   = $timeNow - $timeStart;
+ *     echo "<!-- page rendered in {$elapsed} seconds -->";
+ * }
+ * 
+ * 
+ * Take a look at the docblock descriptions of each hook to get a sense of where
+ * in the view rendering process the hook is invoked.
+ * 
+ * @author ahart
+ */
+
+/**
+ * hook_before_header
+ * 
+ * This hook is executed before the contents of the header file are processed.
+ */
+function hook_before_header() {}
+
+/**
+ * hook_before_view
+ * 
+ * This hook is executed before the contents of the main view are processed.
+ */
+function hook_before_view() {}
+
+/**
+ * hook_before_footer
+ * 
+ * This hook is executed before the contents of the footer are processed
+ */
+function hook_before_footer() {}
+
+/**
+ * hook_before_send
+ * 
+ * This hook is after all of the view components (header, view, footer) have been
+ * processed but before the processed results are sent out across the wire to the 
+ * browser. HTTP headers have not yet been sent to the browser.
+ */
+function hook_before_send() {}
+
+/**
+ * hook_after_send
+ * 
+ * This hook is after all of the view components (header, view, footer) have been
+ * processed and sent out across the wire to the browser. It can be used for logging
+ * or analytics purposes, or to append a common trailer to all content.
+ */
+function hook_after_send() {
+	$timeStart = $GLOBALS['balance_request_start'];
+	$timeEnd   = microtime(true);
+	$elapsed   = $timeEnd - $timeStart;
+	
+	echo "\r\n<!-- page rendered in {$elapsed} seconds -->";
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/.svn/text-base/index.php.svn-base
----------------------------------------------------------------------
diff --git a/src/main/webapp/.svn/text-base/index.php.svn-base b/src/main/webapp/.svn/text-base/index.php.svn-base
new file mode 100755
index 0000000..e02633d
--- /dev/null
+++ b/src/main/webapp/.svn/text-base/index.php.svn-base
@@ -0,0 +1,48 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * OODT Balance
+ * Web Application Base Framework
+ *
+ * Front-controller
+ * This file handles the marshalling of requests to the appropriate
+ * application view.
+ *
+ */
+define ("DEBUG", true); // Change this to `false` when no longer debugging
+
+// Application root directory path (should never need to change this)
+define ("HOME",  dirname(__FILE__));
+
+/* Set up application environment ***************************************/
+require_once("Org/Apache/Oodt/Balance/Boot/bootstrap.php");
+
+/* Initialize the application with the settings from config.ini *********/
+$app = $GLOBALS['app'] = App::Create(parse_ini_file(HOME . '/config.ini'));
+
+/* Initialize any globally required modules here ************************/
+// Example:
+// To load a module 'foo', located at ./modules/foo, on every request:
+// App::Get()->loadModule('foo');
+
+/* Generate and send a response to the browser **************************/
+$response = $app->getResponse()->send();
+
+/* Clean up after ourselves *********************************************/
+$app->cleanup();

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/classes/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/src/main/webapp/classes/.svn/all-wcprops b/src/main/webapp/classes/.svn/all-wcprops
new file mode 100755
index 0000000..2bf2652
--- /dev/null
+++ b/src/main/webapp/classes/.svn/all-wcprops
@@ -0,0 +1,17 @@
+K 25
+svn:wc:ra_dav:version-url
+V 81
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/classes
+END
+RCMETWizardTask.class.php
+K 25
+svn:wc:ra_dav:version-url
+V 107
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/classes/RCMETWizardTask.class.php
+END
+WizardTask.class.php
+K 25
+svn:wc:ra_dav:version-url
+V 102
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/classes/WizardTask.class.php
+END

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/classes/.svn/entries
----------------------------------------------------------------------
diff --git a/src/main/webapp/classes/.svn/entries b/src/main/webapp/classes/.svn/entries
new file mode 100755
index 0000000..ed5ba86
--- /dev/null
+++ b/src/main/webapp/classes/.svn/entries
@@ -0,0 +1,96 @@
+10
+
+dir
+1485921
+https://svn.apache.org/repos/asf/incubator/climate/trunk/rcmet/src/main/webapp/classes
+https://svn.apache.org/repos/asf
+
+
+
+2011-12-13T03:57:45.293099Z
+1471825
+mattmann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13f79535-47bb-0310-9956-ffa450edef68
+
+RCMETWizardTask.class.php
+file
+
+
+
+
+2013-05-24T10:13:59.000000Z
+be8e652b1c96b429c22fab8350c0c53e
+2011-12-13T03:57:45.293099Z
+1471825
+mattmann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3660
+
+WizardTask.class.php
+file
+
+
+
+
+2013-05-24T10:13:59.000000Z
+09fc5b72f6615b9e8f96970f8a1e6edd
+2011-12-13T03:57:45.293099Z
+1471825
+mattmann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1327
+

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/classes/.svn/text-base/RCMETWizardTask.class.php.svn-base
----------------------------------------------------------------------
diff --git a/src/main/webapp/classes/.svn/text-base/RCMETWizardTask.class.php.svn-base b/src/main/webapp/classes/.svn/text-base/RCMETWizardTask.class.php.svn-base
new file mode 100755
index 0000000..6e985f7
--- /dev/null
+++ b/src/main/webapp/classes/.svn/text-base/RCMETWizardTask.class.php.svn-base
@@ -0,0 +1,125 @@
+<?php
+require_once(HOME . '/classes/WizardTask.class.php');
+
+class RCMETWizardTask extends WizardTask {
+	
+	public $modelFilePaths = array();
+	public $modelVars      = array();
+	public $modelBounds    = array();
+	
+	public $modelParameter = '';
+	public $observationalParameter = '';
+	public $observationalParameterId = '';
+	public $observationalDataset   = '';
+	public $observationalDatasetId = '';
+	
+	// Time Range
+	public $rangeStart;
+	public $rangeEnd;
+	
+	// Regrid
+	public $spatialRegridOption;
+	public $temporalRegridOption;
+	
+	// Options
+	public $computeAreaAverages;
+	
+	// Metrics
+	public $metric;
+	
+	// Plot Options	
+	
+	public function dictTemporalRegrid($key) {
+		
+		$dict = array(
+			"full" => "Time mean for full period",
+			"annual" => "Annual Means",
+			"monthly" => "Monthly Means",
+			"daily" => "Daily means (from sub-daily data)"	
+		);
+		return (isset($dict[$key]))
+			? $dict[$key]
+			: false;
+	}
+	
+	public function dictSpatialRegrid($key) {
+		
+		$dict = array(
+			"model" => "Use the model data grid",
+			"obs" => "Use the observational data grid",
+			"regular" => "Monthly Means"	
+		);
+		return (isset($dict[$key]))
+			? $dict[$key]
+			: false;
+	}
+	
+	public function dictMetrics($key) {
+		$dict = array(
+			"bias" => "Bias: mean bias across full time range",
+			"mae"  => "Mean Absolute Error: across full time range",
+			"difference" => "Difference: calculated at each time unit",
+			"acc"  => "Anomaly Correlation",
+			"patcor" => "Pattern Correlation",
+			"pdf" => "Probability Distribution Function similarity score",
+			"rms" => "RMS Error"	
+		);
+		return (isset($dict[$key]))
+			? $dict[$key]
+			: false;
+	}
+	
+	public function getTimeRange($observationalDatasetId) {
+		$dsTimes = array(
+			"1" => array('1989-01-01 00:00:00','2009-12-31 00:00:00'),	// ERA-Interim
+			"2" => array('2002-08-31 00:00:00','2010-01-01 00:00:00'),	// AIRS
+			"3" => array('1998-01-01 00:00:00','2010-01-01 00:00:00'),	// TRMM
+			"4" => array('1948-01-01 00:00:00','2010-01-01 00:00:00'),	// URD
+			"5" => array('2000-02-24 00:00:00','2010-05-30 00:00:00'),	// MODIS
+			"6" => array('1901-01-01 00:00:00','2006-12-01 00:00:00')); // CRU
+		 
+		if (isset($dsTimes[$observationalDatasetId]))
+			return $dsTimes[$observationalDatasetId];
+		else 
+			return false;
+	}
+	
+	public function computeOverlap($modelStart,$modelEnd,$obsStart,$obsEnd) {
+		$mstart = strtotime($modelStart);
+		$mend   = strtotime($modelEnd);
+		$ostart = strtotime($obsStart);
+		$oend   = strtotime($obsEnd);
+		
+		// The "later" of the two start times is the beginning of the overlap
+		$rangeStart = ($mstart > $ostart) ? $mstart : $ostart;
+		
+		// The "earlier" of the two end times is the end of the overlap
+		$rangeEnd   = ($mend < $oend) ? $mend : $oend;
+		
+		// Format the return values
+		return array(date('Y-m-d H:i:s',$rangeStart),
+					 date('Y-m-d H:i:s',$rangeEnd));
+	}
+	
+	
+	
+	public function __construct () {
+		
+		parent::__construct();
+		
+		$this->steps = array(
+			//     URL_NAME             HUMAN_READABLE
+			array("selectModelFiles",   "Select Model Files"),
+			array("selectLatLonVars",   "Select Latitude and Longitude Variables"),
+			array("selectTimeVars",     "Select Time Variable"),
+			array("selectModelVar",     "Select Model Variable"),
+			array("selectObservationalData", "Select Observational Data"),
+			array("selectTimeRange",    "Select Time Range for Calculation"),
+			array("selectRegrid",       "Select Regridding Options"),
+			array("selectOptionalTasks","Select Optional Calculation Tasks"),
+			array("selectMetricOptions","Select Metrics"),
+			array("selectPlotOptions",  "Select Plot Options"),
+			array("generatePlots",      "Generate Plots"),
+		);
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/classes/.svn/text-base/WizardTask.class.php.svn-base
----------------------------------------------------------------------
diff --git a/src/main/webapp/classes/.svn/text-base/WizardTask.class.php.svn-base b/src/main/webapp/classes/.svn/text-base/WizardTask.class.php.svn-base
new file mode 100755
index 0000000..8de173f
--- /dev/null
+++ b/src/main/webapp/classes/.svn/text-base/WizardTask.class.php.svn-base
@@ -0,0 +1,55 @@
+<?php
+class WizardTask {
+	
+	public $currentStep = '';
+	public $steps = array();
+	
+	public function __construct() {}
+	
+	public function save() {
+		$_SESSION['wizardTask'] = serialize($this);
+	}
+	
+	public function setStep($which) {
+		$this->currentStep = $which;
+	}
+	
+	public function firstStep() {
+		$this->goToStep($this->steps[0][0]);
+	}
+	
+	public function nextStep() {
+		for($i=0;$i<count($this->steps);$i++) {
+			if (strtolower($this->steps[$i][0]) == strtolower($this->currentStep)) {
+				return (isset($this->steps[$i + 1]))
+					? $this->goToStep($this->steps[$i+1][0])
+					: false;
+			}
+		}
+	}
+	
+	public function previousStep($current) {
+		for($i=0;$i<count($this->steps);$i++) {
+			if (strtolower($this->steps[$i]) == strtolower($this->currentStep)) {
+				return (isset($this->steps[$i - 1]))
+					? $this->goToStep($this->steps[$i - 1][0])
+					: false;
+			}
+		}
+	}	
+	
+	protected function goToStep($step) {
+		$this->save();
+		header("Location: " . SITE_ROOT . "/wizard/step/" . $step);
+		exit();
+	}
+	
+	public function showPreviousNextLinks() {
+		for($i=1;$i<count($this->steps);$i++) {
+			if (strtolower($this->steps[$i][0]) == strtolower($this->currentStep)) { 
+				echo "<div class='box nav'>Back to <a href='".SITE_ROOT
+					."/wizard/step/{$this->steps[$i-1][0]}'>{$this->steps[$i-1][1]}</a></div>";
+			}
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/classes/RCMETWizardTask.class.php
----------------------------------------------------------------------
diff --git a/src/main/webapp/classes/RCMETWizardTask.class.php b/src/main/webapp/classes/RCMETWizardTask.class.php
new file mode 100755
index 0000000..6e985f7
--- /dev/null
+++ b/src/main/webapp/classes/RCMETWizardTask.class.php
@@ -0,0 +1,125 @@
+<?php
+require_once(HOME . '/classes/WizardTask.class.php');
+
+class RCMETWizardTask extends WizardTask {
+	
+	public $modelFilePaths = array();
+	public $modelVars      = array();
+	public $modelBounds    = array();
+	
+	public $modelParameter = '';
+	public $observationalParameter = '';
+	public $observationalParameterId = '';
+	public $observationalDataset   = '';
+	public $observationalDatasetId = '';
+	
+	// Time Range
+	public $rangeStart;
+	public $rangeEnd;
+	
+	// Regrid
+	public $spatialRegridOption;
+	public $temporalRegridOption;
+	
+	// Options
+	public $computeAreaAverages;
+	
+	// Metrics
+	public $metric;
+	
+	// Plot Options	
+	
+	public function dictTemporalRegrid($key) {
+		
+		$dict = array(
+			"full" => "Time mean for full period",
+			"annual" => "Annual Means",
+			"monthly" => "Monthly Means",
+			"daily" => "Daily means (from sub-daily data)"	
+		);
+		return (isset($dict[$key]))
+			? $dict[$key]
+			: false;
+	}
+	
+	public function dictSpatialRegrid($key) {
+		
+		$dict = array(
+			"model" => "Use the model data grid",
+			"obs" => "Use the observational data grid",
+			"regular" => "Monthly Means"	
+		);
+		return (isset($dict[$key]))
+			? $dict[$key]
+			: false;
+	}
+	
+	public function dictMetrics($key) {
+		$dict = array(
+			"bias" => "Bias: mean bias across full time range",
+			"mae"  => "Mean Absolute Error: across full time range",
+			"difference" => "Difference: calculated at each time unit",
+			"acc"  => "Anomaly Correlation",
+			"patcor" => "Pattern Correlation",
+			"pdf" => "Probability Distribution Function similarity score",
+			"rms" => "RMS Error"	
+		);
+		return (isset($dict[$key]))
+			? $dict[$key]
+			: false;
+	}
+	
+	public function getTimeRange($observationalDatasetId) {
+		$dsTimes = array(
+			"1" => array('1989-01-01 00:00:00','2009-12-31 00:00:00'),	// ERA-Interim
+			"2" => array('2002-08-31 00:00:00','2010-01-01 00:00:00'),	// AIRS
+			"3" => array('1998-01-01 00:00:00','2010-01-01 00:00:00'),	// TRMM
+			"4" => array('1948-01-01 00:00:00','2010-01-01 00:00:00'),	// URD
+			"5" => array('2000-02-24 00:00:00','2010-05-30 00:00:00'),	// MODIS
+			"6" => array('1901-01-01 00:00:00','2006-12-01 00:00:00')); // CRU
+		 
+		if (isset($dsTimes[$observationalDatasetId]))
+			return $dsTimes[$observationalDatasetId];
+		else 
+			return false;
+	}
+	
+	public function computeOverlap($modelStart,$modelEnd,$obsStart,$obsEnd) {
+		$mstart = strtotime($modelStart);
+		$mend   = strtotime($modelEnd);
+		$ostart = strtotime($obsStart);
+		$oend   = strtotime($obsEnd);
+		
+		// The "later" of the two start times is the beginning of the overlap
+		$rangeStart = ($mstart > $ostart) ? $mstart : $ostart;
+		
+		// The "earlier" of the two end times is the end of the overlap
+		$rangeEnd   = ($mend < $oend) ? $mend : $oend;
+		
+		// Format the return values
+		return array(date('Y-m-d H:i:s',$rangeStart),
+					 date('Y-m-d H:i:s',$rangeEnd));
+	}
+	
+	
+	
+	public function __construct () {
+		
+		parent::__construct();
+		
+		$this->steps = array(
+			//     URL_NAME             HUMAN_READABLE
+			array("selectModelFiles",   "Select Model Files"),
+			array("selectLatLonVars",   "Select Latitude and Longitude Variables"),
+			array("selectTimeVars",     "Select Time Variable"),
+			array("selectModelVar",     "Select Model Variable"),
+			array("selectObservationalData", "Select Observational Data"),
+			array("selectTimeRange",    "Select Time Range for Calculation"),
+			array("selectRegrid",       "Select Regridding Options"),
+			array("selectOptionalTasks","Select Optional Calculation Tasks"),
+			array("selectMetricOptions","Select Metrics"),
+			array("selectPlotOptions",  "Select Plot Options"),
+			array("generatePlots",      "Generate Plots"),
+		);
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/classes/WizardTask.class.php
----------------------------------------------------------------------
diff --git a/src/main/webapp/classes/WizardTask.class.php b/src/main/webapp/classes/WizardTask.class.php
new file mode 100755
index 0000000..8de173f
--- /dev/null
+++ b/src/main/webapp/classes/WizardTask.class.php
@@ -0,0 +1,55 @@
+<?php
+class WizardTask {
+	
+	public $currentStep = '';
+	public $steps = array();
+	
+	public function __construct() {}
+	
+	public function save() {
+		$_SESSION['wizardTask'] = serialize($this);
+	}
+	
+	public function setStep($which) {
+		$this->currentStep = $which;
+	}
+	
+	public function firstStep() {
+		$this->goToStep($this->steps[0][0]);
+	}
+	
+	public function nextStep() {
+		for($i=0;$i<count($this->steps);$i++) {
+			if (strtolower($this->steps[$i][0]) == strtolower($this->currentStep)) {
+				return (isset($this->steps[$i + 1]))
+					? $this->goToStep($this->steps[$i+1][0])
+					: false;
+			}
+		}
+	}
+	
+	public function previousStep($current) {
+		for($i=0;$i<count($this->steps);$i++) {
+			if (strtolower($this->steps[$i]) == strtolower($this->currentStep)) {
+				return (isset($this->steps[$i - 1]))
+					? $this->goToStep($this->steps[$i - 1][0])
+					: false;
+			}
+		}
+	}	
+	
+	protected function goToStep($step) {
+		$this->save();
+		header("Location: " . SITE_ROOT . "/wizard/step/" . $step);
+		exit();
+	}
+	
+	public function showPreviousNextLinks() {
+		for($i=1;$i<count($this->steps);$i++) {
+			if (strtolower($this->steps[$i][0]) == strtolower($this->currentStep)) { 
+				echo "<div class='box nav'>Back to <a href='".SITE_ROOT
+					."/wizard/step/{$this->steps[$i-1][0]}'>{$this->steps[$i-1][1]}</a></div>";
+			}
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/config.ini
----------------------------------------------------------------------
diff --git a/src/main/webapp/config.ini b/src/main/webapp/config.ini
new file mode 100755
index 0000000..3d424c7
--- /dev/null
+++ b/src/main/webapp/config.ini
@@ -0,0 +1,66 @@
+; OODT Balance
+; Web Application Base Framework
+;
+; Application Configuration File. This file should be called 'config.ini' and 
+; should reside in the root directory of your site. This file follows standard
+; ini file conventions. Lines beginning with ';' are comments and are ignored.
+;
+
+[Application Environment]
+
+; site_root
+; If the site lives at the document root of the server, this will be '/'. On
+; the other hand, if the site lives in a sub-directory of the document root, 
+; this will be the full path (starting from the document root) to the root 
+; directory of the site. Always start with a slash (/) and always omit the
+; trailing slash. 
+;
+; examples: 
+;    (document root) http://domain.com/          (site_root: '/')
+;    (subdirectory)  http://domain.com/apps/site (site_root: '/apps/site')
+;
+; Note: The value for site_root should always match the value for 'RewriteBase'
+;       in the .htaccess file located in the site's root directory.
+;
+site_root = /
+
+
+[Application Content]
+
+; views_dir
+; This is the directory inside your site root where your application's views
+; reside. This should be a relative path (./). If you have set things up
+; according to the instructions, the framework will use the location of this 
+; file (config.ini) as the base.
+;
+; Note: The value provided is simply an example. It is up to you to provide
+;       valid paths.
+views_dir = ./views
+
+; header_file_path
+; This is the file that contains a site-wide header code/layout to be included
+; in each view. This should be a relative path (./). If you have set things up
+; according to the instructions, the framework will use the location of this 
+; file (config.ini) as the base.
+;
+; Note: The value provided is simply an example. It is up to you to provide
+;       valid paths.
+header_file_path = ./views/common/header.php
+
+; footer_file_path
+; This is the file that contains a site-wide footer code/layout to be included
+; in each view. This should be a relative path (./). If you have set things up
+; according to the instructions, the framework will use the location of this 
+; file (config.ini) as the base.
+;
+; Note: The value provided is simply an example. It is up to you to provide
+;       valid paths.
+footer_file_path = ./views/common/footer.php
+
+
+[RCMET_CONFIG]
+rcmet_working_directory = /path/to/working/directory
+rcmet_cache_directory   = /path/to/cache/directory
+rcmet_service_url_base  = http://host:port
+rcmet_service_use_curl  = false
+rcmed_query_api_url_base = http://rcmes.jpl.nasa.gov/query-api
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/hooks.php
----------------------------------------------------------------------
diff --git a/src/main/webapp/hooks.php b/src/main/webapp/hooks.php
new file mode 100755
index 0000000..769cfc0
--- /dev/null
+++ b/src/main/webapp/hooks.php
@@ -0,0 +1,83 @@
+<?php
+/**
+ * Copyright (c) 2010, California Institute of Technology.
+ * ALL RIGHTS RESERVED. U.S. Government sponsorship acknowledged.
+ * 
+ * $Id$
+ * 
+ * 
+ * OODT Balance
+ * Web Application Base Framework
+ */
+/**
+ * HOOKS.PHP
+ * 
+ * Hooks provide the ability, as the name implies, to hook into various parts of 
+ * the view rendering process and insert customizations. The contents of these 
+ * functions are run at the appropriate time *EVERY* time a view is rendered, i.e.
+ * the content of the hooks is not by default view-specific but rather will be 
+ * applied to all views. (However, there is nothing that prevents developers from 
+ * inserting conditional logic inside a hook that then causes view-specific
+ * them to exhibit view-specific behavior).
+ * 
+ * As an example, consider a hook that adds the amount of time Balance took to render
+ * the page as an inline HTML comment at the bottom of each page after it has been sent:
+ * 
+ * function hook_after_send() {
+ *     $timeStart = $GLOBALS['balance_request_start'];
+ *     $timeNow   = microtime(true);
+ *     $elapsed   = $timeNow - $timeStart;
+ *     echo "<!-- page rendered in {$elapsed} seconds -->";
+ * }
+ * 
+ * 
+ * Take a look at the docblock descriptions of each hook to get a sense of where
+ * in the view rendering process the hook is invoked.
+ * 
+ * @author ahart
+ */
+
+/**
+ * hook_before_header
+ * 
+ * This hook is executed before the contents of the header file are processed.
+ */
+function hook_before_header() {}
+
+/**
+ * hook_before_view
+ * 
+ * This hook is executed before the contents of the main view are processed.
+ */
+function hook_before_view() {}
+
+/**
+ * hook_before_footer
+ * 
+ * This hook is executed before the contents of the footer are processed
+ */
+function hook_before_footer() {}
+
+/**
+ * hook_before_send
+ * 
+ * This hook is after all of the view components (header, view, footer) have been
+ * processed but before the processed results are sent out across the wire to the 
+ * browser. HTTP headers have not yet been sent to the browser.
+ */
+function hook_before_send() {}
+
+/**
+ * hook_after_send
+ * 
+ * This hook is after all of the view components (header, view, footer) have been
+ * processed and sent out across the wire to the browser. It can be used for logging
+ * or analytics purposes, or to append a common trailer to all content.
+ */
+function hook_after_send() {
+	$timeStart = $GLOBALS['balance_request_start'];
+	$timeEnd   = microtime(true);
+	$elapsed   = $timeEnd - $timeStart;
+	
+	echo "\r\n<!-- page rendered in {$elapsed} seconds -->";
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/index.php
----------------------------------------------------------------------
diff --git a/src/main/webapp/index.php b/src/main/webapp/index.php
new file mode 100755
index 0000000..e02633d
--- /dev/null
+++ b/src/main/webapp/index.php
@@ -0,0 +1,48 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * OODT Balance
+ * Web Application Base Framework
+ *
+ * Front-controller
+ * This file handles the marshalling of requests to the appropriate
+ * application view.
+ *
+ */
+define ("DEBUG", true); // Change this to `false` when no longer debugging
+
+// Application root directory path (should never need to change this)
+define ("HOME",  dirname(__FILE__));
+
+/* Set up application environment ***************************************/
+require_once("Org/Apache/Oodt/Balance/Boot/bootstrap.php");
+
+/* Initialize the application with the settings from config.ini *********/
+$app = $GLOBALS['app'] = App::Create(parse_ini_file(HOME . '/config.ini'));
+
+/* Initialize any globally required modules here ************************/
+// Example:
+// To load a module 'foo', located at ./modules/foo, on every request:
+// App::Get()->loadModule('foo');
+
+/* Generate and send a response to the browser **************************/
+$response = $app->getResponse()->send();
+
+/* Clean up after ourselves *********************************************/
+$app->cleanup();

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/modules/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/src/main/webapp/modules/.svn/all-wcprops b/src/main/webapp/modules/.svn/all-wcprops
new file mode 100755
index 0000000..eef8ad5
--- /dev/null
+++ b/src/main/webapp/modules/.svn/all-wcprops
@@ -0,0 +1,5 @@
+K 25
+svn:wc:ra_dav:version-url
+V 81
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/modules
+END

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/modules/.svn/entries
----------------------------------------------------------------------
diff --git a/src/main/webapp/modules/.svn/entries b/src/main/webapp/modules/.svn/entries
new file mode 100755
index 0000000..ebc01cf
--- /dev/null
+++ b/src/main/webapp/modules/.svn/entries
@@ -0,0 +1,28 @@
+10
+
+dir
+1485921
+https://svn.apache.org/repos/asf/incubator/climate/trunk/rcmet/src/main/webapp/modules
+https://svn.apache.org/repos/asf
+
+
+
+2011-12-13T03:57:45.293099Z
+1471825
+mattmann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13f79535-47bb-0310-9956-ffa450edef68
+

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/scripts/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/src/main/webapp/scripts/.svn/all-wcprops b/src/main/webapp/scripts/.svn/all-wcprops
new file mode 100755
index 0000000..b39f422
--- /dev/null
+++ b/src/main/webapp/scripts/.svn/all-wcprops
@@ -0,0 +1,29 @@
+K 25
+svn:wc:ra_dav:version-url
+V 81
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/scripts
+END
+plotView.php
+K 25
+svn:wc:ra_dav:version-url
+V 94
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/scripts/plotView.php
+END
+dirlist.php
+K 25
+svn:wc:ra_dav:version-url
+V 93
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/scripts/dirlist.php
+END
+rcmed.php
+K 25
+svn:wc:ra_dav:version-url
+V 91
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/scripts/rcmed.php
+END
+plots.php
+K 25
+svn:wc:ra_dav:version-url
+V 91
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/scripts/plots.php
+END

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/scripts/.svn/entries
----------------------------------------------------------------------
diff --git a/src/main/webapp/scripts/.svn/entries b/src/main/webapp/scripts/.svn/entries
new file mode 100755
index 0000000..b0bd000
--- /dev/null
+++ b/src/main/webapp/scripts/.svn/entries
@@ -0,0 +1,167 @@
+10
+
+dir
+1485921
+https://svn.apache.org/repos/asf/incubator/climate/trunk/rcmet/src/main/webapp/scripts
+https://svn.apache.org/repos/asf
+
+
+
+2012-11-20T16:20:28.221964Z
+1474523
+ahart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13f79535-47bb-0310-9956-ffa450edef68
+
+plotView.php
+file
+
+
+
+
+2013-05-24T10:13:58.000000Z
+10b10c5774246a1fec683bdf04c45875
+2011-12-13T03:57:45.293099Z
+1471825
+mattmann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+209
+
+dirlist.php
+file
+
+
+
+
+2013-05-24T10:13:58.000000Z
+400da9d2b4ea5af6d48779babc88caf0
+2011-12-13T03:57:45.293099Z
+1471825
+mattmann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+722
+
+rcmed.php
+file
+
+
+
+
+2013-05-24T10:13:58.000000Z
+340f58e12a77b484c101df7b3008fc8d
+2011-12-13T03:57:45.293099Z
+1471825
+mattmann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+531
+
+widgets
+dir
+
+plots.php
+file
+
+
+
+
+2013-05-24T10:13:58.000000Z
+e53fb128a3081ee148cb5f02dbad9c43
+2012-11-20T16:20:28.221964Z
+1474523
+ahart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+900
+

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/scripts/.svn/text-base/dirlist.php.svn-base
----------------------------------------------------------------------
diff --git a/src/main/webapp/scripts/.svn/text-base/dirlist.php.svn-base b/src/main/webapp/scripts/.svn/text-base/dirlist.php.svn-base
new file mode 100755
index 0000000..7d8ee39
--- /dev/null
+++ b/src/main/webapp/scripts/.svn/text-base/dirlist.php.svn-base
@@ -0,0 +1,25 @@
+<?php
+if (file_exists($_GET['path'])) {
+	echo json_encode(getDirectoryList($_GET['path']));
+} else {
+	echo json_encode(array());
+}
+
+function getDirectoryList ($directory) {
+    // create an array to hold directory list
+    $results = array();
+    // create a handler for the directory
+    $handler = opendir($directory);
+    // open directory and walk through the filenames
+    while ($file = readdir($handler)) {
+      // if file isn't this directory or its parent, add it to the results
+      if ($file[0] != '.') {
+        $results[] = is_dir($directory . '/' . $file) ? "{$file}/" : $file;
+      }
+    }
+    // tidy up: close the handler
+    closedir($handler);
+    // done!
+    sort($results);
+    return $results;
+}

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/scripts/.svn/text-base/plotView.php.svn-base
----------------------------------------------------------------------
diff --git a/src/main/webapp/scripts/.svn/text-base/plotView.php.svn-base b/src/main/webapp/scripts/.svn/text-base/plotView.php.svn-base
new file mode 100755
index 0000000..e7d6f34
--- /dev/null
+++ b/src/main/webapp/scripts/.svn/text-base/plotView.php.svn-base
@@ -0,0 +1,13 @@
+<?php
+/**
+ * Serve a .png from the specified path
+ */
+if (isset($_REQUEST['path'])) {
+	
+	$im = imagecreatefrompng($_REQUEST['path']);
+
+	header('Content-type: image/png');
+
+	imagepng($im);
+	imagedestroy($im);
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/scripts/.svn/text-base/plots.php.svn-base
----------------------------------------------------------------------
diff --git a/src/main/webapp/scripts/.svn/text-base/plots.php.svn-base b/src/main/webapp/scripts/.svn/text-base/plots.php.svn-base
new file mode 100755
index 0000000..e581e91
--- /dev/null
+++ b/src/main/webapp/scripts/.svn/text-base/plots.php.svn-base
@@ -0,0 +1,35 @@
+<?php
+
+switch (strtoupper($_REQUEST['action'])) {
+	
+	case "GENERATE":
+		$url        = App::Get()->settings['rcmet_service_url_base'] . '/rcmes/run/';
+		$postFields = http_build_query($_REQUEST);
+		
+		if (isset(App::Get()->settings['rcmet_service_use_curl']) 
+		   && App::Get()->settings['rcmet_service_use_curl'] == true) {
+		   $ch = curl_init();
+		   curl_setopt($ch,CURLOPT_URL,$url);
+		   curl_setopt($ch,CURLOPT_POST, 1);
+		   curl_setopt($ch,CURLOPT_POSTFIELDS,$postFields);
+		   curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
+		   $response = curl_exec($ch);
+		   curl_close($ch);
+		} else {
+		  $params = array('http' => array(
+		     'method' => 'POST',
+		     'content' => $postFields));
+		  $ctx = stream_context_create($params);
+		  $fp = @fopen($url, 'rb', false, $ctx);
+		  $response = @stream_get_contents($fp);
+		}
+
+		echo $response;
+		break;
+	default:
+		echo "{}";
+		break;
+	
+}
+
+exit();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/scripts/.svn/text-base/rcmed.php.svn-base
----------------------------------------------------------------------
diff --git a/src/main/webapp/scripts/.svn/text-base/rcmed.php.svn-base b/src/main/webapp/scripts/.svn/text-base/rcmed.php.svn-base
new file mode 100755
index 0000000..e081a8e
--- /dev/null
+++ b/src/main/webapp/scripts/.svn/text-base/rcmed.php.svn-base
@@ -0,0 +1,23 @@
+<?php
+
+/***
+ * Fetch various information from the RCMED query API. Serves as a workaround
+ * for cross-domain ajax calls.
+ */
+$action = $_REQUEST['action'];
+
+switch (strtoupper($action)) {
+	case "DATASETS":
+		echo file_get_contents(
+			App::Get()->settings['rcmed_query_api_url_base'] . "/datasets.php");
+		break;	
+	case "PARAMETERS":
+		$dataset = $_REQUEST['dataset'];
+		echo file_get_contents(
+			App::Get()->settings['rcmed_query_api_url_base'] . '/parameters.php?dataset=' . $dataset);
+		break;
+	default:
+		echo "{}";	
+}
+
+exit;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/scripts/dirlist.php
----------------------------------------------------------------------
diff --git a/src/main/webapp/scripts/dirlist.php b/src/main/webapp/scripts/dirlist.php
new file mode 100755
index 0000000..7d8ee39
--- /dev/null
+++ b/src/main/webapp/scripts/dirlist.php
@@ -0,0 +1,25 @@
+<?php
+if (file_exists($_GET['path'])) {
+	echo json_encode(getDirectoryList($_GET['path']));
+} else {
+	echo json_encode(array());
+}
+
+function getDirectoryList ($directory) {
+    // create an array to hold directory list
+    $results = array();
+    // create a handler for the directory
+    $handler = opendir($directory);
+    // open directory and walk through the filenames
+    while ($file = readdir($handler)) {
+      // if file isn't this directory or its parent, add it to the results
+      if ($file[0] != '.') {
+        $results[] = is_dir($directory . '/' . $file) ? "{$file}/" : $file;
+      }
+    }
+    // tidy up: close the handler
+    closedir($handler);
+    // done!
+    sort($results);
+    return $results;
+}

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/scripts/plotView.php
----------------------------------------------------------------------
diff --git a/src/main/webapp/scripts/plotView.php b/src/main/webapp/scripts/plotView.php
new file mode 100755
index 0000000..e7d6f34
--- /dev/null
+++ b/src/main/webapp/scripts/plotView.php
@@ -0,0 +1,13 @@
+<?php
+/**
+ * Serve a .png from the specified path
+ */
+if (isset($_REQUEST['path'])) {
+	
+	$im = imagecreatefrompng($_REQUEST['path']);
+
+	header('Content-type: image/png');
+
+	imagepng($im);
+	imagedestroy($im);
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/scripts/plots.php
----------------------------------------------------------------------
diff --git a/src/main/webapp/scripts/plots.php b/src/main/webapp/scripts/plots.php
new file mode 100755
index 0000000..e581e91
--- /dev/null
+++ b/src/main/webapp/scripts/plots.php
@@ -0,0 +1,35 @@
+<?php
+
+switch (strtoupper($_REQUEST['action'])) {
+	
+	case "GENERATE":
+		$url        = App::Get()->settings['rcmet_service_url_base'] . '/rcmes/run/';
+		$postFields = http_build_query($_REQUEST);
+		
+		if (isset(App::Get()->settings['rcmet_service_use_curl']) 
+		   && App::Get()->settings['rcmet_service_use_curl'] == true) {
+		   $ch = curl_init();
+		   curl_setopt($ch,CURLOPT_URL,$url);
+		   curl_setopt($ch,CURLOPT_POST, 1);
+		   curl_setopt($ch,CURLOPT_POSTFIELDS,$postFields);
+		   curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
+		   $response = curl_exec($ch);
+		   curl_close($ch);
+		} else {
+		  $params = array('http' => array(
+		     'method' => 'POST',
+		     'content' => $postFields));
+		  $ctx = stream_context_create($params);
+		  $fp = @fopen($url, 'rb', false, $ctx);
+		  $response = @stream_get_contents($fp);
+		}
+
+		echo $response;
+		break;
+	default:
+		echo "{}";
+		break;
+	
+}
+
+exit();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/scripts/rcmed.php
----------------------------------------------------------------------
diff --git a/src/main/webapp/scripts/rcmed.php b/src/main/webapp/scripts/rcmed.php
new file mode 100755
index 0000000..e081a8e
--- /dev/null
+++ b/src/main/webapp/scripts/rcmed.php
@@ -0,0 +1,23 @@
+<?php
+
+/***
+ * Fetch various information from the RCMED query API. Serves as a workaround
+ * for cross-domain ajax calls.
+ */
+$action = $_REQUEST['action'];
+
+switch (strtoupper($action)) {
+	case "DATASETS":
+		echo file_get_contents(
+			App::Get()->settings['rcmed_query_api_url_base'] . "/datasets.php");
+		break;	
+	case "PARAMETERS":
+		$dataset = $_REQUEST['dataset'];
+		echo file_get_contents(
+			App::Get()->settings['rcmed_query_api_url_base'] . '/parameters.php?dataset=' . $dataset);
+		break;
+	default:
+		echo "{}";	
+}
+
+exit;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/scripts/widgets/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/src/main/webapp/scripts/widgets/.svn/all-wcprops b/src/main/webapp/scripts/widgets/.svn/all-wcprops
new file mode 100755
index 0000000..72a0cc9
--- /dev/null
+++ b/src/main/webapp/scripts/widgets/.svn/all-wcprops
@@ -0,0 +1,5 @@
+K 25
+svn:wc:ra_dav:version-url
+V 89
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/scripts/widgets
+END

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/scripts/widgets/.svn/entries
----------------------------------------------------------------------
diff --git a/src/main/webapp/scripts/widgets/.svn/entries b/src/main/webapp/scripts/widgets/.svn/entries
new file mode 100755
index 0000000..0753653
--- /dev/null
+++ b/src/main/webapp/scripts/widgets/.svn/entries
@@ -0,0 +1,28 @@
+10
+
+dir
+1485921
+https://svn.apache.org/repos/asf/incubator/climate/trunk/rcmet/src/main/webapp/scripts/widgets
+https://svn.apache.org/repos/asf
+
+
+
+2011-12-13T03:57:45.293099Z
+1471825
+mattmann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13f79535-47bb-0310-9956-ffa450edef68
+

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/static/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/src/main/webapp/static/.svn/all-wcprops b/src/main/webapp/static/.svn/all-wcprops
new file mode 100755
index 0000000..47eb07f
--- /dev/null
+++ b/src/main/webapp/static/.svn/all-wcprops
@@ -0,0 +1,5 @@
+K 25
+svn:wc:ra_dav:version-url
+V 80
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/static
+END

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/static/.svn/entries
----------------------------------------------------------------------
diff --git a/src/main/webapp/static/.svn/entries b/src/main/webapp/static/.svn/entries
new file mode 100755
index 0000000..24a8ce7
--- /dev/null
+++ b/src/main/webapp/static/.svn/entries
@@ -0,0 +1,40 @@
+10
+
+dir
+1485921
+https://svn.apache.org/repos/asf/incubator/climate/trunk/rcmet/src/main/webapp/static
+https://svn.apache.org/repos/asf
+
+
+
+2012-08-30T21:06:35.842635Z
+1473975
+ahart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13f79535-47bb-0310-9956-ffa450edef68
+
+css
+dir
+
+img
+dir
+
+js
+dir
+
+bootstrap
+dir
+

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/static/bootstrap/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/src/main/webapp/static/bootstrap/.svn/all-wcprops b/src/main/webapp/static/bootstrap/.svn/all-wcprops
new file mode 100755
index 0000000..a241075
--- /dev/null
+++ b/src/main/webapp/static/bootstrap/.svn/all-wcprops
@@ -0,0 +1,5 @@
+K 25
+svn:wc:ra_dav:version-url
+V 90
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/static/bootstrap
+END

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/static/bootstrap/.svn/entries
----------------------------------------------------------------------
diff --git a/src/main/webapp/static/bootstrap/.svn/entries b/src/main/webapp/static/bootstrap/.svn/entries
new file mode 100755
index 0000000..ac37539
--- /dev/null
+++ b/src/main/webapp/static/bootstrap/.svn/entries
@@ -0,0 +1,37 @@
+10
+
+dir
+1485921
+https://svn.apache.org/repos/asf/incubator/climate/trunk/rcmet/src/main/webapp/static/bootstrap
+https://svn.apache.org/repos/asf
+
+
+
+2012-08-30T16:45:04.524228Z
+1473968
+ahart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13f79535-47bb-0310-9956-ffa450edef68
+
+css
+dir
+
+img
+dir
+
+js
+dir
+

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/static/bootstrap/css/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/src/main/webapp/static/bootstrap/css/.svn/all-wcprops b/src/main/webapp/static/bootstrap/css/.svn/all-wcprops
new file mode 100755
index 0000000..eaca17e
--- /dev/null
+++ b/src/main/webapp/static/bootstrap/css/.svn/all-wcprops
@@ -0,0 +1,29 @@
+K 25
+svn:wc:ra_dav:version-url
+V 94
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/static/bootstrap/css
+END
+bootstrap-responsive.css
+K 25
+svn:wc:ra_dav:version-url
+V 119
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/static/bootstrap/css/bootstrap-responsive.css
+END
+bootstrap-responsive.min.css
+K 25
+svn:wc:ra_dav:version-url
+V 123
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/static/bootstrap/css/bootstrap-responsive.min.css
+END
+bootstrap.css
+K 25
+svn:wc:ra_dav:version-url
+V 108
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/static/bootstrap/css/bootstrap.css
+END
+bootstrap.min.css
+K 25
+svn:wc:ra_dav:version-url
+V 112
+/repos/asf/!svn/ver/1476460/incubator/climate/trunk/rcmet/src/main/webapp/static/bootstrap/css/bootstrap.min.css
+END

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/static/bootstrap/css/.svn/entries
----------------------------------------------------------------------
diff --git a/src/main/webapp/static/bootstrap/css/.svn/entries b/src/main/webapp/static/bootstrap/css/.svn/entries
new file mode 100755
index 0000000..53cfe24
--- /dev/null
+++ b/src/main/webapp/static/bootstrap/css/.svn/entries
@@ -0,0 +1,164 @@
+10
+
+dir
+1485921
+https://svn.apache.org/repos/asf/incubator/climate/trunk/rcmet/src/main/webapp/static/bootstrap/css
+https://svn.apache.org/repos/asf
+
+
+
+2012-08-30T16:45:04.524228Z
+1473968
+ahart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13f79535-47bb-0310-9956-ffa450edef68
+
+bootstrap-responsive.css
+file
+
+
+
+
+2013-05-24T10:13:59.000000Z
+034fa29d420e7a5de345fa9743a6e0dc
+2012-08-30T16:45:04.524228Z
+1473968
+ahart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+20470
+
+bootstrap-responsive.min.css
+file
+
+
+
+
+2013-05-24T10:13:59.000000Z
+7a18012520a1ea95142a19602c7e7d5b
+2012-08-30T16:45:04.524228Z
+1473968
+ahart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+15545
+
+bootstrap.css
+file
+
+
+
+
+2013-05-24T10:13:59.000000Z
+0b9b6b1fd516e87b4089aaa3d0e5960b
+2012-08-30T16:45:04.524228Z
+1473968
+ahart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+115072
+
+bootstrap.min.css
+file
+
+
+
+
+2013-05-24T10:13:59.000000Z
+db98b4ff646c20c142172eb838d2fe9b
+2012-08-30T16:45:04.524228Z
+1473968
+ahart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+95583
+

http://git-wip-us.apache.org/repos/asf/climate/blob/a6aa1cd2/src/main/webapp/static/bootstrap/css/.svn/text-base/bootstrap-responsive.css.svn-base
----------------------------------------------------------------------
diff --git a/src/main/webapp/static/bootstrap/css/.svn/text-base/bootstrap-responsive.css.svn-base b/src/main/webapp/static/bootstrap/css/.svn/text-base/bootstrap-responsive.css.svn-base
new file mode 100755
index 0000000..daafa91
--- /dev/null
+++ b/src/main/webapp/static/bootstrap/css/.svn/text-base/bootstrap-responsive.css.svn-base
@@ -0,0 +1,1040 @@
+/*!
+ * Bootstrap Responsive v2.1.0
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+
+.clearfix {
+  *zoom: 1;
+}
+
+.clearfix:before,
+.clearfix:after {
+  display: table;
+  line-height: 0;
+  content: "";
+}
+
+.clearfix:after {
+  clear: both;
+}
+
+.hide-text {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+
+.input-block-level {
+  display: block;
+  width: 100%;
+  min-height: 30px;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.hidden {
+  display: none;
+  visibility: hidden;
+}
+
+.visible-phone {
+  display: none !important;
+}
+
+.visible-tablet {
+  display: none !important;
+}
+
+.hidden-desktop {
+  display: none !important;
+}
+
+.visible-desktop {
+  display: inherit !important;
+}
+
+@media (min-width: 768px) and (max-width: 979px) {
+  .hidden-desktop {
+    display: inherit !important;
+  }
+  .visible-desktop {
+    display: none !important ;
+  }
+  .visible-tablet {
+    display: inherit !important;
+  }
+  .hidden-tablet {
+    display: none !important;
+  }
+}
+
+@media (max-width: 767px) {
+  .hidden-desktop {
+    display: inherit !important;
+  }
+  .visible-desktop {
+    display: none !important;
+  }
+  .visible-phone {
+    display: inherit !important;
+  }
+  .hidden-phone {
+    display: none !important;
+  }
+}
+
+@media (min-width: 1200px) {
+  .row {
+    margin-left: -30px;
+    *zoom: 1;
+  }
+  .row:before,
+  .row:after {
+    display: table;
+    line-height: 0;
+    content: "";
+  }
+  .row:after {
+    clear: both;
+  }
+  [class*="span"] {
+    float: left;
+    margin-left: 30px;
+  }
+  .container,
+  .navbar-static-top .container,
+  .navbar-fixed-top .container,
+  .navbar-fixed-bottom .container {
+    width: 1170px;
+  }
+  .span12 {
+    width: 1170px;
+  }
+  .span11 {
+    width: 1070px;
+  }
+  .span10 {
+    width: 970px;
+  }
+  .span9 {
+    width: 870px;
+  }
+  .span8 {
+    width: 770px;
+  }
+  .span7 {
+    width: 670px;
+  }
+  .span6 {
+    width: 570px;
+  }
+  .span5 {
+    width: 470px;
+  }
+  .span4 {
+    width: 370px;
+  }
+  .span3 {
+    width: 270px;
+  }
+  .span2 {
+    width: 170px;
+  }
+  .span1 {
+    width: 70px;
+  }
+  .offset12 {
+    margin-left: 1230px;
+  }
+  .offset11 {
+    margin-left: 1130px;
+  }
+  .offset10 {
+    margin-left: 1030px;
+  }
+  .offset9 {
+    margin-left: 930px;
+  }
+  .offset8 {
+    margin-left: 830px;
+  }
+  .offset7 {
+    margin-left: 730px;
+  }
+  .offset6 {
+    margin-left: 630px;
+  }
+  .offset5 {
+    margin-left: 530px;
+  }
+  .offset4 {
+    margin-left: 430px;
+  }
+  .offset3 {
+    margin-left: 330px;
+  }
+  .offset2 {
+    margin-left: 230px;
+  }
+  .offset1 {
+    margin-left: 130px;
+  }
+  .row-fluid {
+    width: 100%;
+    *zoom: 1;
+  }
+  .row-fluid:before,
+  .row-fluid:after {
+    display: table;
+    line-height: 0;
+    content: "";
+  }
+  .row-fluid:after {
+    clear: both;
+  }
+  .row-fluid [class*="span"] {
+    display: block;
+    float: left;
+    width: 100%;
+    min-height: 30px;
+    margin-left: 2.564102564102564%;
+    *margin-left: 2.5109110747408616%;
+    -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+            box-sizing: border-box;
+  }
+  .row-fluid [class*="span"]:first-child {
+    margin-left: 0;
+  }
+  .row-fluid .span12 {
+    width: 100%;
+    *width: 99.94680851063829%;
+  }
+  .row-fluid .span11 {
+    width: 91.45299145299145%;
+    *width: 91.39979996362975%;
+  }
+  .row-fluid .span10 {
+    width: 82.90598290598291%;
+    *width: 82.8527914166212%;
+  }
+  .row-fluid .span9 {
+    width: 74.35897435897436%;
+    *width: 74.30578286961266%;
+  }
+  .row-fluid .span8 {
+    width: 65.81196581196582%;
+    *width: 65.75877432260411%;
+  }
+  .row-fluid .span7 {
+    width: 57.26495726495726%;
+    *width: 57.21176577559556%;
+  }
+  .row-fluid .span6 {
+    width: 48.717948717948715%;
+    *width: 48.664757228587014%;
+  }
+  .row-fluid .span5 {
+    width: 40.17094017094017%;
+    *width: 40.11774868157847%;
+  }
+  .row-fluid .span4 {
+    width: 31.623931623931625%;
+    *width: 31.570740134569924%;
+  }
+  .row-fluid .span3 {
+    width: 23.076923076923077%;
+    *width: 23.023731587561375%;
+  }
+  .row-fluid .span2 {
+    width: 14.52991452991453%;
+    *width: 14.476723040552828%;
+  }
+  .row-fluid .span1 {
+    width: 5.982905982905983%;
+    *width: 5.929714493544281%;
+  }
+  .row-fluid .offset12 {
+    margin-left: 105.12820512820512%;
+    *margin-left: 105.02182214948171%;
+  }
+  .row-fluid .offset12:first-child {
+    margin-left: 102.56410256410257%;
+    *margin-left: 102.45771958537915%;
+  }
+  .row-fluid .offset11 {
+    margin-left: 96.58119658119658%;
+    *margin-left: 96.47481360247316%;
+  }
+  .row-fluid .offset11:first-child {
+    margin-left: 94.01709401709402%;
+    *margin-left: 93.91071103837061%;
+  }
+  .row-fluid .offset10 {
+    margin-left: 88.03418803418803%;
+    *margin-left: 87.92780505546462%;
+  }
+  .row-fluid .offset10:first-child {
+    margin-left: 85.47008547008548%;
+    *margin-left: 85.36370249136206%;
+  }
+  .row-fluid .offset9 {
+    margin-left: 79.48717948717949%;
+    *margin-left: 79.38079650845607%;
+  }
+  .row-fluid .offset9:first-child {
+    margin-left: 76.92307692307693%;
+    *margin-left: 76.81669394435352%;
+  }
+  .row-fluid .offset8 {
+    margin-left: 70.94017094017094%;
+    *margin-left: 70.83378796144753%;
+  }
+  .row-fluid .offset8:first-child {
+    margin-left: 68.37606837606839%;
+    *margin-left: 68.26968539734497%;
+  }
+  .row-fluid .offset7 {
+    margin-left: 62.393162393162385%;
+    *margin-left: 62.28677941443899%;
+  }
+  .row-fluid .offset7:first-child {
+    margin-left: 59.82905982905982%;
+    *margin-left: 59.72267685033642%;
+  }
+  .row-fluid .offset6 {
+    margin-left: 53.84615384615384%;
+    *margin-left: 53.739770867430444%;
+  }
+  .row-fluid .offset6:first-child {
+    margin-left: 51.28205128205128%;
+    *margin-left: 51.175668303327875%;
+  }
+  .row-fluid .offset5 {
+    margin-left: 45.299145299145295%;
+    *margin-left: 45.1927623204219%;
+  }
+  .row-fluid .offset5:first-child {
+    margin-left: 42.73504273504273%;
+    *margin-left: 42.62865975631933%;
+  }
+  .row-fluid .offset4 {
+    margin-left: 36.75213675213675%;
+    *margin-left: 36.645753773413354%;
+  }
+  .row-fluid .offset4:first-child {
+    margin-left: 34.18803418803419%;
+    *margin-left: 34.081651209310785%;
+  }
+  .row-fluid .offset3 {
+    margin-left: 28.205128205128204%;
+    *margin-left: 28.0987452264048%;
+  }
+  .row-fluid .offset3:first-child {
+    margin-left: 25.641025641025642%;
+    *margin-left: 25.53464266230224%;
+  }
+  .row-fluid .offset2 {
+    margin-left: 19.65811965811966%;
+    *margin-left: 19.551736679396257%;
+  }
+  .row-fluid .offset2:first-child {
+    margin-left: 17.094017094017094%;
+    *margin-left: 16.98763411529369%;
+  }
+  .row-fluid .offset1 {
+    margin-left: 11.11111111111111%;
+    *margin-left: 11.004728132387708%;
+  }
+  .row-fluid .offset1:first-child {
+    margin-left: 8.547008547008547%;
+    *margin-left: 8.440625568285142%;
+  }
+  input,
+  textarea,
+  .uneditable-input {
+    margin-left: 0;
+  }
+  .controls-row [class*="span"] + [class*="span"] {
+    margin-left: 30px;
+  }
+  input.span12,
+  textarea.span12,
+  .uneditable-input.span12 {
+    width: 1156px;
+  }
+  input.span11,
+  textarea.span11,
+  .uneditable-input.span11 {
+    width: 1056px;
+  }
+  input.span10,
+  textarea.span10,
+  .uneditable-input.span10 {
+    width: 956px;
+  }
+  input.span9,
+  textarea.span9,
+  .uneditable-input.span9 {
+    width: 856px;
+  }
+  input.span8,
+  textarea.span8,
+  .uneditable-input.span8 {
+    width: 756px;
+  }
+  input.span7,
+  textarea.span7,
+  .uneditable-input.span7 {
+    width: 656px;
+  }
+  input.span6,
+  textarea.span6,
+  .uneditable-input.span6 {
+    width: 556px;
+  }
+  input.span5,
+  textarea.span5,
+  .uneditable-input.span5 {
+    width: 456px;
+  }
+  input.span4,
+  textarea.span4,
+  .uneditable-input.span4 {
+    width: 356px;
+  }
+  input.span3,
+  textarea.span3,
+  .uneditable-input.span3 {
+    width: 256px;
+  }
+  input.span2,
+  textarea.span2,
+  .uneditable-input.span2 {
+    width: 156px;
+  }
+  input.span1,
+  textarea.span1,
+  .uneditable-input.span1 {
+    width: 56px;
+  }
+  .thumbnails {
+    margin-left: -30px;
+  }
+  .thumbnails > li {
+    margin-left: 30px;
+  }
+  .row-fluid .thumbnails {
+    margin-left: 0;
+  }
+}
+
+@media (min-width: 768px) and (max-width: 979px) {
+  .row {
+    margin-left: -20px;
+    *zoom: 1;
+  }
+  .row:before,
+  .row:after {
+    display: table;
+    line-height: 0;
+    content: "";
+  }
+  .row:after {
+    clear: both;
+  }
+  [class*="span"] {
+    float: left;
+    margin-left: 20px;
+  }
+  .container,
+  .navbar-static-top .container,
+  .navbar-fixed-top .container,
+  .navbar-fixed-bottom .container {
+    width: 724px;
+  }
+  .span12 {
+    width: 724px;
+  }
+  .span11 {
+    width: 662px;
+  }
+  .span10 {
+    width: 600px;
+  }
+  .span9 {
+    width: 538px;
+  }
+  .span8 {
+    width: 476px;
+  }
+  .span7 {
+    width: 414px;
+  }
+  .span6 {
+    width: 352px;
+  }
+  .span5 {
+    width: 290px;
+  }
+  .span4 {
+    width: 228px;
+  }
+  .span3 {
+    width: 166px;
+  }
+  .span2 {
+    width: 104px;
+  }
+  .span1 {
+    width: 42px;
+  }
+  .offset12 {
+    margin-left: 764px;
+  }
+  .offset11 {
+    margin-left: 702px;
+  }
+  .offset10 {
+    margin-left: 640px;
+  }
+  .offset9 {
+    margin-left: 578px;
+  }
+  .offset8 {
+    margin-left: 516px;
+  }
+  .offset7 {
+    margin-left: 454px;
+  }
+  .offset6 {
+    margin-left: 392px;
+  }
+  .offset5 {
+    margin-left: 330px;
+  }
+  .offset4 {
+    margin-left: 268px;
+  }
+  .offset3 {
+    margin-left: 206px;
+  }
+  .offset2 {
+    margin-left: 144px;
+  }
+  .offset1 {
+    margin-left: 82px;
+  }
+  .row-fluid {
+    width: 100%;
+    *zoom: 1;
+  }
+  .row-fluid:before,
+  .row-fluid:after {
+    display: table;
+    line-height: 0;
+    content: "";
+  }
+  .row-fluid:after {
+    clear: both;
+  }
+  .row-fluid [class*="span"] {
+    display: block;
+    float: left;
+    width: 100%;
+    min-height: 30px;
+    margin-left: 2.7624309392265194%;
+    *margin-left: 2.709239449864817%;
+    -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+            box-sizing: border-box;
+  }
+  .row-fluid [class*="span"]:first-child {
+    margin-left: 0;
+  }
+  .row-fluid .span12 {
+    width: 100%;
+    *width: 99.94680851063829%;
+  }
+  .row-fluid .span11 {
+    width: 91.43646408839778%;
+    *width: 91.38327259903608%;
+  }
+  .row-fluid .span10 {
+    width: 82.87292817679558%;
+    *width: 82.81973668743387%;
+  }
+  .row-fluid .span9 {
+    width: 74.30939226519337%;
+    *width: 74.25620077583166%;
+  }
+  .row-fluid .span8 {
+    width: 65.74585635359117%;
+    *width: 65.69266486422946%;
+  }
+  .row-fluid .span7 {
+    width: 57.18232044198895%;
+    *width: 57.12912895262725%;
+  }
+  .row-fluid .span6 {
+    width: 48.61878453038674%;
+    *width: 48.56559304102504%;
+  }
+  .row-fluid .span5 {
+    width: 40.05524861878453%;
+    *width: 40.00205712942283%;
+  }
+  .row-fluid .span4 {
+    width: 31.491712707182323%;
+    *width: 31.43852121782062%;
+  }
+  .row-fluid .span3 {
+    width: 22.92817679558011%;
+    *width: 22.87498530621841%;
+  }
+  .row-fluid .span2 {
+    width: 14.3646408839779%;
+    *width: 14.311449394616199%;
+  }
+  .row-fluid .span1 {
+    width: 5.801104972375691%;
+    *width: 5.747913483013988%;
+  }
+  .row-fluid .offset12 {
+    margin-left: 105.52486187845304%;
+    *margin-left: 105.41847889972962%;
+  }
+  .row-fluid .offset12:first-child {
+    margin-left: 102.76243093922652%;
+    *margin-left: 102.6560479605031%;
+  }
+  .row-fluid .offset11 {
+    margin-left: 96.96132596685082%;
+    *margin-left: 96.8549429881274%;
+  }
+  .row-fluid .offset11:first-child {
+    margin-left: 94.1988950276243%;
+    *margin-left: 94.09251204890089%;
+  }
+  .row-fluid .offset10 {
+    margin-left: 88.39779005524862%;
+    *margin-left: 88.2914070765252%;
+  }
+  .row-fluid .offset10:first-child {
+    margin-left: 85.6353591160221%;
+    *margin-left: 85.52897613729868%;
+  }
+  .row-fluid .offset9 {
+    margin-left: 79.8342541436464%;
+    *margin-left: 79.72787116492299%;
+  }
+  .row-fluid .offset9:first-child {
+    margin-left: 77.07182320441989%;
+    *margin-left: 76.96544022569647%;
+  }
+  .row-fluid .offset8 {
+    margin-left: 71.2707182320442%;
+    *margin-left: 71.16433525332079%;
+  }
+  .row-fluid .offset8:first-child {
+    margin-left: 68.50828729281768%;
+    *margin-left: 68.40190431409427%;
+  }
+  .row-fluid .offset7 {
+    margin-left: 62.70718232044199%;
+    *margin-left: 62.600799341718584%;
+  }
+  .row-fluid .offset7:first-child {
+    margin-left: 59.94475138121547%;
+    *margin-left: 59.838368402492065%;
+  }
+  .row-fluid .offset6 {
+    margin-left: 54.14364640883978%;
+    *margin-left: 54.037263430116376%;
+  }
+  .row-fluid .offset6:first-child {
+    margin-left: 51.38121546961326%;
+    *margin-left: 51.27483249088986%;
+  }
+  .row-fluid .offset5 {
+    margin-left: 45.58011049723757%;
+    *margin-left: 45.47372751851417%;
+  }
+  .row-fluid .offset5:first-child {
+    margin-left: 42.81767955801105%;
+    *margin-left: 42.71129657928765%;
+  }
+  .row-fluid .offset4 {
+    margin-left: 37.01657458563536%;
+    *margin-left: 36.91019160691196%;
+  }
+  .row-fluid .offset4:first-child {
+    margin-left: 34.25414364640884%;
+    *margin-left: 34.14776066768544%;
+  }
+  .row-fluid .offset3 {
+    margin-left: 28.45303867403315%;
+    *margin-left: 28.346655695309746%;
+  }
+  .row-fluid .offset3:first-child {
+    margin-left: 25.69060773480663%;
+    *margin-left: 25.584224756083227%;
+  }
+  .row-fluid .offset2 {
+    margin-left: 19.88950276243094%;
+    *margin-left: 19.783119783707537%;
+  }
+  .row-fluid .offset2:first-child {
+    margin-left: 17.12707182320442%;
+    *margin-left: 17.02068884448102%;
+  }
+  .row-fluid .offset1 {
+    margin-left: 11.32596685082873%;
+    *margin-left: 11.219583872105325%;
+  }
+  .row-fluid .offset1:first-child {
+    margin-left: 8.56353591160221%;
+    *margin-left: 8.457152932878806%;
+  }
+  input,
+  textarea,
+  .uneditable-input {
+    margin-left: 0;
+  }
+  .controls-row [class*="span"] + [class*="span"] {
+    margin-left: 20px;
+  }
+  input.span12,
+  textarea.span12,
+  .uneditable-input.span12 {
+    width: 710px;
+  }
+  input.span11,
+  textarea.span11,
+  .uneditable-input.span11 {
+    width: 648px;
+  }
+  input.span10,
+  textarea.span10,
+  .uneditable-input.span10 {
+    width: 586px;
+  }
+  input.span9,
+  textarea.span9,
+  .uneditable-input.span9 {
+    width: 524px;
+  }
+  input.span8,
+  textarea.span8,
+  .uneditable-input.span8 {
+    width: 462px;
+  }
+  input.span7,
+  textarea.span7,
+  .uneditable-input.span7 {
+    width: 400px;
+  }
+  input.span6,
+  textarea.span6,
+  .uneditable-input.span6 {
+    width: 338px;
+  }
+  input.span5,
+  textarea.span5,
+  .uneditable-input.span5 {
+    width: 276px;
+  }
+  input.span4,
+  textarea.span4,
+  .uneditable-input.span4 {
+    width: 214px;
+  }
+  input.span3,
+  textarea.span3,
+  .uneditable-input.span3 {
+    width: 152px;
+  }
+  input.span2,
+  textarea.span2,
+  .uneditable-input.span2 {
+    width: 90px;
+  }
+  input.span1,
+  textarea.span1,
+  .uneditable-input.span1 {
+    width: 28px;
+  }
+}
+
+@media (max-width: 767px) {
+  body {
+    padding-right: 20px;
+    padding-left: 20px;
+  }
+  .navbar-fixed-top,
+  .navbar-fixed-bottom {
+    margin-right: -20px;
+    margin-left: -20px;
+  }
+  .container-fluid {
+    padding: 0;
+  }
+  .dl-horizontal dt {
+    float: none;
+    width: auto;
+    clear: none;
+    text-align: left;
+  }
+  .dl-horizontal dd {
+    margin-left: 0;
+  }
+  .container {
+    width: auto;
+  }
+  .row-fluid {
+    width: 100%;
+  }
+  .row,
+  .thumbnails {
+    margin-left: 0;
+  }
+  .thumbnails > li {
+    float: none;
+    margin-left: 0;
+  }
+  [class*="span"],
+  .row-fluid [class*="span"] {
+    display: block;
+    float: none;
+    width: auto;
+    margin-left: 0;
+  }
+  .span12,
+  .row-fluid .span12 {
+    width: 100%;
+    -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+            box-sizing: border-box;
+  }
+  .input-large,
+  .input-xlarge,
+  .input-xxlarge,
+  input[class*="span"],
+  select[class*="span"],
+  textarea[class*="span"],
+  .uneditable-input {
+    display: block;
+    width: 100%;
+    min-height: 30px;
+    -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+            box-sizing: border-box;
+  }
+  .input-prepend input,
+  .input-append input,
+  .input-prepend input[class*="span"],
+  .input-append input[class*="span"] {
+    display: inline-block;
+    width: auto;
+  }
+  .modal {
+    position: fixed;
+    top: 20px;
+    right: 20px;
+    left: 20px;
+    width: auto;
+    margin: 0;
+  }
+  .modal.fade.in {
+    top: auto;
+  }
+}
+
+@media (max-width: 480px) {
+  .nav-collapse {
+    -webkit-transform: translate3d(0, 0, 0);
+  }
+  .page-header h1 small {
+    display: block;
+    line-height: 20px;
+  }
+  input[type="checkbox"],
+  input[type="radio"] {
+    border: 1px solid #ccc;
+  }
+  .form-horizontal .control-group > label {
+    float: none;
+    width: auto;
+    padding-top: 0;
+    text-align: left;
+  }
+  .form-horizontal .controls {
+    margin-left: 0;
+  }
+  .form-horizontal .control-list {
+    padding-top: 0;
+  }
+  .form-horizontal .form-actions {
+    padding-right: 10px;
+    padding-left: 10px;
+  }
+  .modal {
+    top: 10px;
+    right: 10px;
+    left: 10px;
+  }
+  .modal-header .close {
+    padding: 10px;
+    margin: -10px;
+  }
+  .carousel-caption {
+    position: static;
+  }
+}
+
+@media (max-width: 979px) {
+  body {
+    padding-top: 0;
+  }
+  .navbar-fixed-top,
+  .navbar-fixed-bottom {
+    position: static;
+  }
+  .navbar-fixed-top {
+    margin-bottom: 20px;
+  }
+  .navbar-fixed-bottom {
+    margin-top: 20px;
+  }
+  .navbar-fixed-top .navbar-inner,
+  .navbar-fixed-bottom .navbar-inner {
+    padding: 5px;
+  }
+  .navbar .container {
+    width: auto;
+    padding: 0;
+  }
+  .navbar .brand {
+    padding-right: 10px;
+    padding-left: 10px;
+    margin: 0 0 0 -5px;
+  }
+  .nav-collapse {
+    clear: both;
+  }
+  .nav-collapse .nav {
+    float: none;
+    margin: 0 0 10px;
+  }
+  .nav-collapse .nav > li {
+    float: none;
+  }
+  .nav-collapse .nav > li > a {
+    margin-bottom: 2px;
+  }
+  .nav-collapse .nav > .divider-vertical {
+    display: none;
+  }
+  .nav-collapse .nav .nav-header {
+    color: #555555;
+    text-shadow: none;
+  }
+  .nav-collapse .nav > li > a,
+  .nav-collapse .dropdown-menu a {
+    padding: 9px 15px;
+    font-weight: bold;
+    color: #555555;
+    -webkit-border-radius: 3px;
+       -moz-border-radius: 3px;
+            border-radius: 3px;
+  }
+  .nav-collapse .btn {
+    padding: 4px 10px 4px;
+    font-weight: normal;
+    -webkit-border-radius: 4px;
+       -moz-border-radius: 4px;
+            border-radius: 4px;
+  }
+  .nav-collapse .dropdown-menu li + li a {
+    margin-bottom: 2px;
+  }
+  .nav-collapse .nav > li > a:hover,
+  .nav-collapse .dropdown-menu a:hover {
+    background-color: #f2f2f2;
+  }
+  .navbar-inverse .nav-collapse .nav > li > a:hover,
+  .navbar-inverse .nav-collapse .dropdown-menu a:hover {
+    background-color: #111111;
+  }
+  .nav-collapse.in .btn-group {
+    padding: 0;
+    margin-top: 5px;
+  }
+  .nav-collapse .dropdown-menu {
+    position: static;
+    top: auto;
+    left: auto;
+    display: block;
+    float: none;
+    max-width: none;
+    padding: 0;
+    margin: 0 15px;
+    background-color: transparent;
+    border: none;
+    -webkit-border-radius: 0;
+       -moz-border-radius: 0;
+            border-radius: 0;
+    -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+            box-shadow: none;
+  }
+  .nav-collapse .dropdown-menu:before,
+  .nav-collapse .dropdown-menu:after {
+    display: none;
+  }
+  .nav-collapse .dropdown-menu .divider {
+    display: none;
+  }
+  .nav-collapse .navbar-form,
+  .nav-collapse .navbar-search {
+    float: none;
+    padding: 10px 15px;
+    margin: 10px 0;
+    border-top: 1px solid #f2f2f2;
+    border-bottom: 1px solid #f2f2f2;
+    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+       -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+  }
+  .navbar .nav-collapse .nav.pull-right {
+    float: none;
+    margin-left: 0;
+  }
+  .nav-collapse,
+  .nav-collapse.collapse {
+    height: 0;
+    overflow: hidden;
+  }
+  .navbar .btn-navbar {
+    display: block;
+  }
+  .navbar-static .navbar-inner {
+    padding-right: 10px;
+    padding-left: 10px;
+  }
+}
+
+@media (min-width: 980px) {
+  .nav-collapse.collapse {
+    height: auto !important;
+    overflow: visible !important;
+  }
+}


Mime
View raw message