Commit 830b33f6

mista mo <cake-eater@mokhan.ca>
2011-06-16 00:43:25
add new template and update application layout.
1 parent f112e91
app/views/layouts/application.html.erb
@@ -8,13 +8,50 @@
   <meta name="author" content="">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <link rel="shortcut icon" href="/favicon.ico">
-<script src="javascripts/libs/modernizr-1.7.min.js"></script>
+<script src="/javascripts/libs/modernizr-1.7.min.js"></script>
 <%= stylesheet_link_tag :all %>
 <%= csrf_meta_tag %>
 <%= yield :head %>
 </head>
 <body>
 
+
+<!-- start ribbon background -->
+<div id="page_bg">
+  <!-- start content -->
+  <div id="container">
+    <!-- start header -->
+    <div id="header">
+      <div id="header_logo"> <a href="index.html#"><img src="/images/template/logo.png" alt="Logo" width="322" height="56" border="0" /></a> </div>
+      <div id="header_slogan"><img src="/images/template/slogan.png" alt="Gourmet Online Shop" width="213" height="40" /></div>
+    </div>
+    <!-- end header -->
+    <div id="menu_container">
+      <ul id="navigation">
+        <li class="current"><a href="index.html">Home</a></li>
+        <li><a href="about.html">About</a></li>
+        <li><a href="shop.html">Products</a>
+          <ul class="second-level">
+            <li> <a href="index.html#">Product 1</a> </li>
+            <li> <a href="index.html#">Product 2</a> </li>
+            <li> <a href="index.html#">Product 3</a> </li>
+            <li> <a href="index.html#">Product 4</a> </li>
+            <li> <a href="index.html#">Product 5</a> </li>
+          </ul>
+        </li>
+        <li><a href="index.html#">Gifts</a></li>
+        <li><a href="index.html#">Stores</a></li>
+        <li><a href="index.html#">FAQ</a></li>
+        <li class="last"><a href="contact.html">Contact</a></li>
+      </ul>
+    </div>
+    <div id="mainContent">
+      <!-- start body content -->
+      <div id="right_side">
+        <div id="s1" class="slide"> <img style="display: none;" src="/images/template/banner_cupcakes.jpg" alt="" width="666" height="226" /> <img style="display: none;" src="/images/template/banner_weddings.jpg" alt="" width="666" height="226" /> </div>
+        <div id="body_text">
+          <!-- begin main page content -->
+
 <% form_tag(search_index_path, :method => "get") do %>
     <%= text_field_tag(:q) %>
     <%= submit_tag("search") %>
@@ -37,6 +74,59 @@
 <% end %>
 
 <%= yield %>
+          <!-- end main page content -->
+        </div>
+      </div>
+      <!-- end body content -->
+      <div id="left_side">
+        <!-- start left menu -->
+        <div style="position:relative; margin-top:-47px; width:147px; height:93px; background:url(/images/template/tag_top.gif);"></div>
+        <div class="tag">
+          <ul>
+            <li><a href="index.html#">Father's Day</a></li>
+            <li><a href="index.html#">Chocolates</a></li>
+            <li><a href="index.html#">Fudge</a></li>
+            <li><a href="index.html#">Lollies</a></li>
+            <li><a href="index.html#">Hampers</a></li>
+            <li><a href="index.html#">Special Diet</a></li>
+            <li><a href="index.html#">On Sale</a></li>
+          </ul>
+          <p>&nbsp; </p>
+        </div>
+        <!-- end left menu -->
+        <!-- start search tag -->
+        <div id="search_box">
+          <form action="index.html#" method="get" name="search">
+            <div>
+              <div id="search_box_inner">
+                <input name="search_query" id="search_query" type="text" style="" value="    SEARCH" onfocus="if(this.value=='    SEARCH')this.value='';" />
+              </div>
+              <!-- set padding-top:1px in IE 6 and 7 if statement -->
+              <div id="search_box_go">
+                <input type="image" src="/images/template/go.gif" alt="Go!" style="margin:0px; padding:0px;" />
+              </div>
+            </div>
+          </form>
+        </div>
+        <!-- end search -->
+        <div id="shopping_cart_summary">
+          <div> <a href="index.html#">3 Items</a> | <a href="index.html#">$2.00</a> </div>
+          <div> <a href="index.html#">Check out</a> </div>
+        </div>
+      </div>
+      <hr class="clear" />
+    </div>
+    <!-- start footer -->
+    <div id="footer">
+      <div style="float:left">&copy; Candy Cakes</div>
+      <div style="float:right; "><a href="http://themeforest.net/user/dtbaker/portfolio?ref=dtbaker">Template design by dtbaker</a> | <a href="index.html#">Privacy Policy</a> | <a href="sitemap.php">Site Map</a></div>
+    </div>
+    <!-- end footer -->
+  </div>
+</div>
+<!-- end content --><script type="text/javascript">
+
+
 
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
 <%= javascript_include_tag :all %>
@@ -53,3 +143,4 @@
   </script>
 </body>
 </html>
+
public/images/template/banner_cupcakes.jpg
Binary file
public/images/template/banner_shop.jpg
Binary file
public/images/template/banner_weddings.jpg
Binary file
public/images/template/body_top_shadow.jpg
Binary file
public/images/template/button_add_to_cart.gif
Binary file
public/images/template/button_chocolate.jpg
Binary file
public/images/template/button_coffee.jpg
Binary file
public/images/template/button_next.gif
Binary file
public/images/template/button_submit.gif
Binary file
public/images/template/go.gif
Binary file
public/images/template/header_bg.jpg
Binary file
public/images/template/icon_tick.gif
Binary file
public/images/template/logo.png
Binary file
public/images/template/page_bg.gif
Binary file
public/images/template/photo.jpg
Binary file
public/images/template/ribbon.gif
Binary file
public/images/template/search.gif
Binary file
public/images/template/shop_1.jpg
Binary file
public/images/template/shop_2.jpg
Binary file
public/images/template/shop_3.jpg
Binary file
public/images/template/shop_4.jpg
Binary file
public/images/template/shop_5.jpg
Binary file
public/images/template/slogan.png
Binary file
public/images/template/tag_bottom.gif
Binary file
public/images/template/tag_icon.gif
Binary file
public/images/template/tag_line.gif
Binary file
public/images/template/tag_top.gif
Binary file
public/images/template/we_accept.gif
Binary file
public/javascripts/template/hide-select.js
@@ -0,0 +1,74 @@
+function hideSelectBoxes(object)
+{
+	if (!object) return;
+	if (!object.sboxes)
+		object.sboxes = [];
+	var ol = getElementX(object);
+	var ot = getElementY(object);
+	var ow = object.offsetWidth;
+	var oh = object.offsetHeight;
+	var sboxes = document.all.tags("select");
+	for (var i=0; i<sboxes.length; i++)
+	{
+		var node = sboxes[i].parentNode;
+		while (node != object && node.tagName != "BODY")
+			node = node.parentNode;
+		var skip = (node == object);
+		if (skip) continue;
+		var t = getElementY(sboxes[i]);
+		var l = getElementX(sboxes[i]);
+		var w = sboxes[i].offsetWidth;
+		var h = sboxes[i].offsetHeight;
+		var ver = false;
+		if (t > ot && t < (ot + oh))
+			ver = true;
+		else if ((t + h) > ot && (t + h) < (ot + oh))
+			ver = true;
+		var hor = false;
+		if (l > ol && l < (ol + ow))
+			hor = true;
+		else if ((l + w) > ol && (l + w) < (ol + ow))
+			hor = true;
+		else if (l < ol && (l + w) > ol)
+			hor = true;
+		if (true || ver && hor && sboxes[i].style.visibility != "hidden")
+			object.sboxes[object.sboxes.length] = sboxes[i];
+	}
+		
+	for (var i=0; i<object.sboxes.length; i++)
+		object.sboxes[i].style.visibility = "hidden";
+}
+
+function showSelectBoxes(object)
+{
+	if (!object) return;
+	if (!object.sboxes) return;
+	for (var i=0; i<object.sboxes.length; i++)
+		object.sboxes[i].style.visibility = "";
+	object.sboxes = [];
+}
+
+function getElementX(object) {return getElementC(object, true)}
+function getElementY(object) {return getElementC(object, false)}
+
+function getElementC(element, xAxis)
+{
+	var initialElement = element;
+	var c = 0;
+
+	while (element != null)
+	{
+		c += (xAxis) ? element.offsetLeft : element.offsetTop;
+		if (element.style.position == "absolute")
+			break;
+		else
+			element = element.offsetParent;
+	}
+
+	var elementWnd = document.window;
+	if (!elementWnd) return c;
+
+	if (!elementWnd.frameElement) return c;
+
+	return c + getElementC(elementWnd.frameElement, xAxis);
+}
public/javascripts/template/jquery.cycle.all.js
@@ -0,0 +1,542 @@
+/*
+ * jQuery Cycle Plugin for light-weight slideshows
+ * Examples and documentation at: http://malsup.com/jquery/cycle/
+ * Copyright (c) 2007-2008 M. Alsup
+ * Version: 2.10 (02/10/2008)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ * Requires: jQuery v1.1.3.1 or later
+ *
+ * Based on the work of:
+ *  1) Matt Oakes (http://portfolio.gizone.co.uk/applications/slideshow/)
+ *  2) Torsten Baldes (http://medienfreunde.com/lab/innerfade/)
+ *  3) Benjamin Sterling (http://www.benjaminsterling.com/experiments/jqShuffle/)
+ */
+(function($) {
+
+var ver = '2.10';
+var ie6 = $.browser.msie && /MSIE 6.0/.test(navigator.userAgent);
+
+$.fn.cycle = function(options) {
+    return this.each(function() {
+        options = options || {};
+        if (options.constructor == String) {
+            switch(options) {
+            case 'stop':
+                if (this.cycleTimeout) clearTimeout(this.cycleTimeout);
+                this.cycleTimeout = 0;
+                return;
+            case 'pause':
+                this.cyclePause = 1;
+                return;
+            case 'resume':
+                this.cyclePause = 0;
+                return;
+            default:
+                options = { fx: options };
+            };
+        }
+        var $cont = $(this);
+        var $slides = options.slideExpr ? $(options.slideExpr, this) : $cont.children();
+        var els = $slides.get();
+        if (els.length < 2) return; // don't bother
+
+        // support metadata plugin (v1.0 and v2.0)
+        var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {});
+        if (opts.autostop) 
+            opts.countdown = opts.autostopCount || els.length;
+            
+        opts.before = opts.before ? [opts.before] : [];
+        opts.after = opts.after ? [opts.after] : [];
+        opts.after.unshift(function(){ opts.busy=0; });
+
+        // clearType corrections
+        if (ie6 && opts.cleartype && !opts.cleartypeNoBg)
+            clearTypeFix($slides);
+
+        // allow shorthand overrides of width, height and timeout
+        var cls = this.className;
+        var w = parseInt((cls.match(/w:(\d+)/)||[])[1]) || opts.width;
+        var h = parseInt((cls.match(/h:(\d+)/)||[])[1]) || opts.height;
+        opts.timeout = parseInt((cls.match(/t:(\d+)/)||[])[1]) || opts.timeout;
+
+        if ($cont.css('position') == 'static') 
+            $cont.css('position', 'relative');
+        if (w) 
+            $cont.width(w);
+        if (h && h != 'auto') 
+            $cont.height(h);
+
+        if (opts.random) {
+            opts.randomMap = [];
+            for (var i = 0; i < els.length; i++) 
+                opts.randomMap.push(i);
+            opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;});
+            opts.randomIndex = 0;
+            opts.startingSlide = opts.randomMap[0];
+        }
+        else if (opts.startingSlide >= els.length)
+            opts.startingSlide = 0; // catch bogus input
+        var first = opts.startingSlide || 0;
+        $slides.css('position','absolute').hide().each(function(i) { 
+            var z = first ? i >= first ? els.length - (i-first) : first-i : els.length-i;
+            $(this).css('z-index', z) 
+        });
+        
+        $(els[first]).show();
+        if (opts.fit && w) 
+            $slides.width(w);
+        if (opts.fit && h && h != 'auto') 
+            $slides.height(h);
+        if (opts.pause) 
+            $cont.hover(function(){this.cyclePause=1;}, function(){this.cyclePause=0;});
+
+        // run transition init fn
+        var init = $.fn.cycle.transitions[opts.fx];
+        if ($.isFunction(init))
+            init($cont, $slides, opts);
+
+        $slides.each(function() {
+            var $el = $(this);
+            this.cycleH = (opts.fit && h) ? h : $el.height();
+            this.cycleW = (opts.fit && w) ? w : $el.width();
+        });
+
+        opts.cssBefore = opts.cssBefore || {};
+        opts.animIn = opts.animIn || {};
+        opts.animOut = opts.animOut || {};
+
+        $slides.not(':eq('+first+')').css(opts.cssBefore);
+        if (opts.cssFirst)
+            $($slides[first]).css(opts.cssFirst);
+
+        if (opts.timeout) {
+            // ensure that timeout and speed settings are sane
+            if (opts.speed.constructor == String)
+                opts.speed = {slow: 600, fast: 200}[opts.speed] || 400;
+            if (!opts.sync)
+                opts.speed = opts.speed / 2;
+            while((opts.timeout - opts.speed) < 250)
+                opts.timeout += opts.speed;
+        }
+        if (opts.easing) 
+            opts.easeIn = opts.easeOut = opts.easing;
+        if (!opts.speedIn) 
+            opts.speedIn = opts.speed;
+        if (!opts.speedOut) 
+            opts.speedOut = opts.speed;
+
+ 		opts.slideCount = els.length;
+        opts.currSlide = first;
+        if (opts.random) {
+            opts.nextSlide = opts.currSlide;
+            if (++opts.randomIndex == els.length) 
+                opts.randomIndex = 0;
+            opts.nextSlide = opts.randomMap[opts.randomIndex];
+        }
+        else
+            opts.nextSlide = opts.startingSlide >= (els.length-1) ? 0 : opts.startingSlide+1;
+
+        // fire artificial events
+        var e0 = $slides[first];
+        if (opts.before.length)
+            opts.before[0].apply(e0, [e0, e0, opts, true]);
+        if (opts.after.length > 1)
+            opts.after[1].apply(e0, [e0, e0, opts, true]);
+        
+        if (opts.click && !opts.next)
+            opts.next = opts.click;
+        if (opts.next)
+            $(opts.next).bind('click', function(){return advance(els,opts,opts.rev?-1:1)});
+        if (opts.prev)
+            $(opts.prev).bind('click', function(){return advance(els,opts,opts.rev?1:-1)});
+        if (opts.pager)
+            buildPager(els,opts);
+        if (opts.timeout)
+            this.cycleTimeout = setTimeout(function(){go(els,opts,0,!opts.rev)}, opts.timeout + (opts.delay||0));
+    });
+};
+
+function go(els, opts, manual, fwd) {
+    if (opts.busy) return;
+    var p = els[0].parentNode, curr = els[opts.currSlide], next = els[opts.nextSlide];
+    if (p.cycleTimeout === 0 && !manual) 
+        return;
+
+    if (!manual && !p.cyclePause && 
+        ((opts.autostop && (--opts.countdown <= 0)) ||
+        (opts.nowrap && !opts.random && opts.nextSlide < opts.currSlide)))
+        return;
+
+    if (manual || !p.cyclePause) {
+        if (opts.before.length)
+            $.each(opts.before, function(i,o) { o.apply(next, [curr, next, opts, fwd]); });
+        var after = function() {
+            if ($.browser.msie && opts.cleartype)
+                this.style.removeAttribute('filter');
+            $.each(opts.after, function(i,o) { o.apply(next, [curr, next, opts, fwd]); });
+        };
+
+        if (opts.nextSlide != opts.currSlide) {
+            opts.busy = 1;
+            if (opts.fxFn)
+                opts.fxFn(curr, next, opts, after, fwd);
+            else if ($.isFunction($.fn.cycle[opts.fx]))
+                $.fn.cycle[opts.fx](curr, next, opts, after);
+            else
+                $.fn.cycle.custom(curr, next, opts, after);
+        }
+        if (opts.random) {
+            opts.currSlide = opts.nextSlide;
+            if (++opts.randomIndex == els.length) 
+                opts.randomIndex = 0;
+            opts.nextSlide = opts.randomMap[opts.randomIndex];
+        }
+        else { // sequence
+            var roll = (opts.nextSlide + 1) == els.length;
+            opts.nextSlide = roll ? 0 : opts.nextSlide+1;
+            opts.currSlide = roll ? els.length-1 : opts.nextSlide-1;
+        }
+        if (opts.pager)
+            $(opts.pager).find('a').removeClass('activeSlide').filter('a:eq('+opts.currSlide+')').addClass('activeSlide');
+    }
+    if (opts.timeout)
+        p.cycleTimeout = setTimeout(function() { go(els,opts,0,!opts.rev) }, opts.timeout);
+};
+
+// advance slide forward or back
+function advance(els, opts, val) {
+    var p = els[0].parentNode, timeout = p.cycleTimeout;
+    if (timeout) {
+        clearTimeout(timeout);
+        p.cycleTimeout = 0;
+    }
+    opts.nextSlide = opts.currSlide + val;
+    if (opts.nextSlide < 0) {
+        if (opts.nowrap) return false;
+        opts.nextSlide = els.length - 1;
+    }
+    else if (opts.nextSlide >= els.length) {
+        if (opts.nowrap) return false;
+        opts.nextSlide = 0;
+    }
+    if (opts.prevNextClick && typeof opts.prevNextClick == 'function')
+        opts.prevNextClick(val > 0, opts.nextSlide, els[opts.nextSlide]);
+    go(els, opts, 1, val>=0);
+    return false;
+};
+
+function buildPager(els, opts) {
+    var $p = $(opts.pager);
+    $.each(els, function(i,o) {
+        var $a = (typeof opts.pagerAnchorBuilder == 'function')
+            ? $(opts.pagerAnchorBuilder(i,o))
+            : $('<a href="#">'+(i+1)+'</a>');
+        // don't reparent if anchor is in the dom
+        if ($a.parents('body').length == 0)
+            $a.appendTo($p);
+        $a.bind('click',function() {
+            opts.nextSlide = i;
+            var p = els[0].parentNode, timeout = p.cycleTimeout;
+            if (timeout) {
+                clearTimeout(timeout);
+                p.cycleTimeout = 0;
+            }            
+            if (typeof opts.pagerClick == 'function')
+                opts.pagerClick(opts.nextSlide, els[opts.nextSlide]);
+            go(els,opts,1,!opts.rev);
+            return false;
+        });
+    });
+   $p.find('a').filter('a:eq('+opts.startingSlide+')').addClass('activeSlide');
+};
+
+// this fixes clearType problems in ie6 by setting an explicit bg color
+function clearTypeFix($slides) {
+    function hex(s) {
+        var s = parseInt(s).toString(16);
+        return s.length < 2 ? '0'+s : s;
+    };
+    function getBg(e) {
+        for ( ; e && e.nodeName.toLowerCase() != 'html'; e = e.parentNode) {
+            var v = $.css(e,'background-color');
+            if (v.indexOf('rgb') >= 0 ) { 
+                var rgb = v.match(/\d+/g); 
+                return '#'+ hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]);
+            }
+            if (v && v != 'transparent')
+                return v;
+        }
+        return '#ffffff';
+    };
+    $slides.each(function() { $(this).css('background-color', getBg(this)); });
+};
+
+
+$.fn.cycle.custom = function(curr, next, opts, cb) {
+    var $l = $(curr), $n = $(next);
+    $n.css(opts.cssBefore);
+    var fn = function() {$n.animate(opts.animIn, opts.speedIn, opts.easeIn, cb)};
+    $l.animate(opts.animOut, opts.speedOut, opts.easeOut, function() {
+        if (opts.cssAfter) $l.css(opts.cssAfter);
+        if (!opts.sync) fn();
+    });
+    if (opts.sync) fn();
+};
+
+$.fn.cycle.transitions = {
+    fade: function($cont, $slides, opts) {
+        $slides.not(':eq('+opts.startingSlide+')').css('opacity',0);
+        opts.before.push(function() { $(this).show() });
+        opts.animIn    = { opacity: 1 };
+        opts.animOut   = { opacity: 0 };
+        opts.cssAfter  = { display: 'none' };
+    }
+};
+
+$.fn.cycle.ver = function() { return ver; };
+
+// override these globally if you like (they are all optional)
+$.fn.cycle.defaults = {
+    fx:           'fade', // one of: fade, shuffle, zoom, slideX, slideY, scrollUp/Down/Left/Right
+    timeout:       4000,  // milliseconds between slide transitions (0 to disable auto advance)
+    speed:         1000,  // speed of the transition (any valid fx speed value)
+    speedIn:       null,  // speed of the 'in' transition
+    speedOut:      null,  // speed of the 'out' transition
+    click:         null,  // @deprecated; please use the 'next' option
+    next:          null,  // id of element to use as click trigger for next slide
+    prev:          null,  // id of element to use as click trigger for previous slide
+    prevNextClick: null,  // callback fn for prev/next clicks:  function(isNext, zeroBasedSlideIndex, slideElement)
+    pager:         null,  // id of element to use as pager container
+    pagerClick:    null,  // callback fn for pager clicks:  function(zeroBasedSlideIndex, slideElement)
+    pagerAnchorBuilder: null, // callback fn for building anchor links
+    before:        null,  // transition callback (scope set to element to be shown)
+    after:         null,  // transition callback (scope set to element that was shown)
+    easing:        null,  // easing method for both in and out transitions
+    easeIn:        null,  // easing for "in" transition
+    easeOut:       null,  // easing for "out" transition
+    shuffle:       null,  // coords for shuffle animation, ex: { top:15, left: 200 }
+    animIn:        null,  // properties that define how the slide animates in
+    animOut:       null,  // properties that define how the slide animates out
+    cssBefore:     null,  // properties that define the initial state of the slide before transitioning in
+    cssAfter:      null,  // properties that defined the state of the slide after transitioning out
+    fxFn:          null,  // function used to control the transition
+    height:       'auto', // container height
+    startingSlide: 0,     // zero-based index of the first slide to be displayed
+    sync:          1,     // true if in/out transitions should occur simultaneously
+    random:        0,     // true for random, false for sequence (not applicable to shuffle fx)
+    fit:           0,     // force slides to fit container
+    pause:         0,     // true to enable "pause on hover"
+    autostop:      0,     // true to end slideshow after X transitions (where X == slide count)
+    delay:         0,     // additional delay (in ms) for first transition (hint: can be negative)
+    slideExpr:     null,  // expression for selecting slides (if something other than all children is required)
+    cleartype:     0,     // true if clearType corrections should be applied (for IE)
+    nowrap:        0      // true to prevent slideshow from wrapping
+};
+
+})(jQuery);
+
+/*
+ * jQuery Cycle Plugin Transition Definitions
+ * This script is a plugin for the jQuery Cycle Plugin
+ * Examples and documentation at: http://malsup.com/jquery/cycle/
+ * Copyright (c) 2007 M. Alsup
+ * Version:  2.07
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+
+//
+// These functions define one-time slide initialization for the named
+// transitions. To save file size feel free to remove any of these that you 
+// don't need.
+//
+
+// scrollUp/Down/Left/Right
+jQuery.fn.cycle.transitions.scrollUp = function($cont, $slides, opts) {
+    $cont.css('overflow','hidden');
+    opts.before.push(function(curr, next, opts) {
+        jQuery(this).show();
+        opts.cssBefore.top = next.offsetHeight;
+        opts.animOut.top = 0-curr.offsetHeight;
+    });
+    opts.cssFirst = { top: 0 };
+    opts.animIn   = { top: 0 };
+    opts.cssAfter = { display: 'none' };
+};
+jQuery.fn.cycle.transitions.scrollDown = function($cont, $slides, opts) {
+    $cont.css('overflow','hidden');
+    opts.before.push(function(curr, next, opts) {
+        jQuery(this).show();
+        opts.cssBefore.top = 0-next.offsetHeight;
+        opts.animOut.top = curr.offsetHeight;
+    });
+    opts.cssFirst = { top: 0 };
+    opts.animIn   = { top: 0 };
+    opts.cssAfter = { display: 'none' };
+};
+jQuery.fn.cycle.transitions.scrollLeft = function($cont, $slides, opts) {
+    $cont.css('overflow','hidden');
+    opts.before.push(function(curr, next, opts) {
+        jQuery(this).show();
+        opts.cssBefore.left = next.offsetWidth;
+        opts.animOut.left = 0-curr.offsetWidth;
+    });
+    opts.cssFirst = { left: 0 };
+    opts.animIn   = { left: 0 };
+};
+jQuery.fn.cycle.transitions.scrollRight = function($cont, $slides, opts) {
+    $cont.css('overflow','hidden');
+    opts.before.push(function(curr, next, opts) {
+        jQuery(this).show();
+        opts.cssBefore.left = 0-next.offsetWidth;
+        opts.animOut.left = curr.offsetWidth;
+    });
+    opts.cssFirst = { left: 0 };
+    opts.animIn   = { left: 0 };
+};
+jQuery.fn.cycle.transitions.scrollHorz = function($cont, $slides, opts) {
+    $cont.css('overflow','hidden').width();
+//    $slides.show();
+    opts.before.push(function(curr, next, opts, fwd) {
+        jQuery(this).show();
+        var currW = curr.offsetWidth, nextW = next.offsetWidth;
+        opts.cssBefore = fwd ? { left: nextW } : { left: -nextW };
+        opts.animIn.left = 0;
+        opts.animOut.left = fwd ? -currW : currW;
+        $slides.not(curr).css(opts.cssBefore);
+    });
+    opts.cssFirst = { left: 0 };
+    opts.cssAfter = { display: 'none' }
+};
+jQuery.fn.cycle.transitions.scrollVert = function($cont, $slides, opts) {
+    $cont.css('overflow','hidden');
+//    $slides.show();
+    opts.before.push(function(curr, next, opts, fwd) {
+        jQuery(this).show();
+        var currH = curr.offsetHeight, nextH = next.offsetHeight;
+        opts.cssBefore = fwd ? { top: -nextH } : { top: nextH };
+        opts.animIn.top = 0;
+        opts.animOut.top = fwd ? currH : -currH;
+        $slides.not(curr).css(opts.cssBefore);
+    });
+    opts.cssFirst = { top: 0 };
+    opts.cssAfter = { display: 'none' }
+};
+
+// slideX/slideY
+jQuery.fn.cycle.transitions.slideX = function($cont, $slides, opts) {
+    opts.animIn  = { width: 'show' };
+    opts.animOut = { width: 'hide' };
+};
+jQuery.fn.cycle.transitions.slideY = function($cont, $slides, opts) {
+    opts.animIn  = { height: 'show' };
+    opts.animOut = { height: 'hide' };
+};
+
+// shuffle
+jQuery.fn.cycle.transitions.shuffle = function($cont, $slides, opts) {
+    var w = $cont.css('overflow', 'visible').width();
+    $slides.css({left: 0, top: 0});
+    opts.before.push(function() { jQuery(this).show() });
+    opts.speed = opts.speed / 2; // shuffle has 2 transitions        
+    opts.random = 0;
+    opts.shuffle = opts.shuffle || {left:-w, top:15};
+    opts.els = [];
+    for (var i=0; i < $slides.length; i++)
+        opts.els.push($slides[i]);
+
+    for (var i=0; i < opts.startingSlide; i++)
+        opts.els.push(opts.els.shift());
+
+    // custom transition fn (hat tip to Benjamin Sterling for this bit of sweetness!)
+    opts.fxFn = function(curr, next, opts, cb, fwd) {
+        var $el = fwd ? jQuery(curr) : jQuery(next);
+        $el.animate(opts.shuffle, opts.speedIn, opts.easeIn, function() {
+            fwd ? opts.els.push(opts.els.shift()) : opts.els.unshift(opts.els.pop());
+            if (fwd) 
+                for (var i=0, len=opts.els.length; i < len; i++)
+                    jQuery(opts.els[i]).css('z-index', len-i);
+            else {
+                var z = jQuery(curr).css('z-index');
+                $el.css('z-index', parseInt(z)+1);
+            }
+            $el.animate({left:0, top:0}, opts.speedOut, opts.easeOut, function() {
+                jQuery(fwd ? this : curr).hide();
+                if (cb) cb();
+            });
+        });
+    };
+};
+
+// turnUp/Down/Left/Right
+jQuery.fn.cycle.transitions.turnUp = function($cont, $slides, opts) {
+    opts.before.push(function(curr, next, opts) {
+        jQuery(this).show();
+        opts.cssBefore.top = next.cycleH;
+        opts.animIn.height = next.cycleH;
+    });
+    opts.cssFirst  = { top: 0 };
+    opts.cssBefore = { height: 0 };
+    opts.animIn    = { top: 0 };
+    opts.animOut   = { height: 0 };
+    opts.cssAfter  = { display: 'none' };
+};
+jQuery.fn.cycle.transitions.turnDown = function($cont, $slides, opts) {
+    opts.before.push(function(curr, next, opts) {
+        jQuery(this).show();
+        opts.animIn.height = next.cycleH;
+        opts.animOut.top   = curr.cycleH;
+    });
+    opts.cssFirst  = { top: 0 };
+    opts.cssBefore = { top: 0, height: 0 };
+    opts.animOut   = { height: 0 };
+    opts.cssAfter  = { display: 'none' };
+};
+jQuery.fn.cycle.transitions.turnLeft = function($cont, $slides, opts) {
+    opts.before.push(function(curr, next, opts) {
+        jQuery(this).show();
+        opts.cssBefore.left = next.cycleW;
+        opts.animIn.width = next.cycleW;
+    });
+    opts.cssBefore = { width: 0 };
+    opts.animIn    = { left: 0 };
+    opts.animOut   = { width: 0 };
+    opts.cssAfter  = { display: 'none' };
+};
+jQuery.fn.cycle.transitions.turnRight = function($cont, $slides, opts) {
+    opts.before.push(function(curr, next, opts) {
+        jQuery(this).show();
+        opts.animIn.width = next.cycleW;
+        opts.animOut.left = curr.cycleW;
+    });
+    opts.cssBefore = { left: 0, width: 0 };
+    opts.animIn    = { left: 0 };
+    opts.animOut   = { width: 0 };
+    opts.cssAfter  = { display: 'none' };
+};
+
+// zoom
+jQuery.fn.cycle.transitions.zoom = function($cont, $slides, opts) {
+    opts.cssFirst = { top:0, left: 0 }; 
+    opts.cssAfter = { display: 'none' };
+    
+    opts.before.push(function(curr, next, opts) {
+        jQuery(this).show();
+        opts.cssBefore = { width: 0, height: 0, top: next.cycleH/2, left: next.cycleW/2 };
+        opts.animIn    = { top: 0, left: 0, width: next.cycleW, height: next.cycleH };
+        opts.animOut   = { width: 0, height: 0, top: curr.cycleH/2, left: curr.cycleW/2 };
+    });    
+};
+
+// fadeZoom
+jQuery.fn.cycle.transitions.fadeZoom = function($cont, $slides, opts) {
+    opts.before.push(function(curr, next, opts) {
+        opts.cssBefore = { width: 0, height: 0, opacity: 1, left: next.cycleW/2, top: next.cycleH/2, zIndex: 1 };
+        opts.animIn    = { top: 0, left: 0, width: next.cycleW, height: next.cycleH };
+    });    
+    opts.animOut  = { opacity: 0 };
+    opts.cssAfter = { zIndex: 0 };
+};
public/stylesheets/styles.css
@@ -0,0 +1,440 @@
+/*Template Layout*/
+
+body {
+	font: 12px tahoma, Arial, Helvetica, sans-serif;
+	line-height: 1.5em;
+	margin: 0px;
+	padding: 0px;
+	color: #241a10;
+	background:#c9e4ec url(../images/template/page_bg.gif);
+}
+a, a:link, a:active, a:visited {
+	color: #605646;
+}
+a:hover {
+	text-decoration:none;
+}
+#page_bg {
+	background:url(../images/template/ribbon.gif) no-repeat center 108px;
+}
+#container {
+	width:850px;
+	margin: 0px auto;
+	padding:0px;
+}
+#header {
+	height: 108px;
+	padding: 0px;
+	background-image:url(../images/template/header_bg.jpg);
+	background-position:top;
+	background-repeat:no-repeat;
+}
+#header_logo {
+	height: 56px;
+	width: 322px;
+	float:left;
+	margin:40px 0px 0px 25px;
+}
+#header_slogan {
+	width:213px;
+	height:40px;
+	float:right;
+	margin:45px 25px 0px 0px;
+}
+#mainContent {
+	padding:0px;
+	background:#fffdee url(../images/template/body_top_shadow.jpg);
+	background-repeat:repeat-x;
+	background-position:top;
+	min-height:400px;
+}
+#left_side {
+	width:142px;
+	float:left;
+	margin-left:6px;
+}
+#right_side {
+	width:666px;
+	float:right;
+	margin-right:10px;
+	margin-top:10px;
+	padding-bottom:30px;
+}
+.inner_right {
+	float:right;
+	width:160px;
+	height:300px;
+	padding:4px 0 0 7px;
+}
+#footer {
+	padding: 10px;
+	height:15px;
+	margin:0px auto;
+	clear:both;
+	font-size:10px;
+	color:#1d6d85;
+	font-family:Verdana, Arial, Helvetica, sans-serif;
+}
+#footer a, #footer a:link, #footer a:visited {
+	color: #1d6d85;
+	text-decoration:none;
+}
+#footer a:hover {
+	color: #FFFFFF;
+	text-decoration:underline;
+}
+#footer a:active {
+	color: #1d6d85;
+	text-decoration:none;
+}
+/*-- navigation--*/
+
+#menu_container {
+	height:44px;
+}
+ul#navigation {
+	float:right;
+	position:relative;
+	z-index:30;
+	margin-top:2px;
+	margin-right:117px; /* Change this value to move the menu left / right */
+	margin-bottom:0;
+	margin-left:0;
+	padding:0;
+}
+ul#navigation li {
+	float:left;
+	list-style:none;
+	display:inline;
+	margin:0 0 0 0px;
+	padding:0;
+}
+ul#navigation li a, ul#navigation li a:link, ul#navigation li a:visited {
+	float:left;
+	color:#241a10;
+	padding:12px 16px;
+	display:block;
+	text-decoration:none;
+	font:13px tahoma, Arial, Helvetica, sans-serif;
+	text-transform:uppercase;
+	border-right:1px solid #eece81;
+}
+ul#navigation li.last a, ul#navigation li.last a:link, ul#navigation li.last a:visited {
+	border-right:0;
+}
+ul#navigation li.current a, ul#navigation li.hover a, ul#navigation li:hover a, ul#navigation a.active, ul#navigation a:hover {
+	color:#FFFFFF;
+	background-color:#eece81;
+}
+/*--second-level--*/
+ul#navigation li.hover, ul#navigation li:hover {
+	position:relative;
+}
+ul#navigation li.hover ul.second-level, ul#navigation li:hover ul.second-level {
+	display:block;
+}
+ul#navigation ul.second-level {
+	position:absolute;
+	top:40px;
+	left:-1px;
+	margin:0;
+	padding:0;
+	width:160px;
+	display:none;
+	background-color:#eece81;
+}
+ul#navigation ul.second-level li {
+	width:160px;
+	margin:0;
+}
+ul#navigation ul.second-level a, ul#navigation ul.second-level a:link, ul#navigation ul.second-level a:visited {
+	display:block;
+	float:none;
+	width:140px;
+	border-top: 1px solid #cfb371;
+	border-right:0;
+	padding:4px 10px;
+	background:none;
+	font:12px/20px tahoma, Arial, Helvetica, sans-serif;
+	color:#241a10;
+}
+ul#navigation ul.second-level li.hover a, ul#navigation ul.second-level li:hover a, ul#navigation ul.second-level a:hover {
+	color:#FFFFFF;
+	background:#cfb371;
+}
+/*end menu*/
+
+/*Tag Menu*/
+.tag {
+	background-image:url(../images/template/tag_bottom.gif);
+	background-repeat:no-repeat;
+	background-position:0px bottom;
+	width:148px;
+	margin-bottom:20px;
+}
+.tag p {
+	padding:0px 5px;
+}
+.tag ul {
+	padding:0 0 13px 0;
+	margin:0px;
+}
+.tag li {
+	list-style:none;
+	padding:0 0 0 15px;
+	margin:0px 0px 0px 8px; /* used to center the menu on its bg image */
+	line-height:22px;
+	background:url(../images/template/tag_line.gif) no-repeat 0 bottom;
+}
+.tag a, .tag a:link, .tag a:visited {
+	background-image:url(../images/template/tag_icon.gif);
+	background-position:left;
+	background-repeat:no-repeat;
+	display:block;
+	padding:0px 0 2px 15px;
+	color:#644d38;
+	text-decoration:none;
+	font-family:Tahoma, Arial;
+	font-size:12px;
+}
+.tag a:hover {
+	text-decoration:underline;
+	color:#605646;
+}
+/*Search Box on menu*/
+#search_box {
+	width:142px;
+	height:30px;
+	margin:0 0 16px 3px;
+}
+#search_box input {
+	font-family:"Times New Roman", Times, serif;
+	font-size:12px;
+	color:#605646;
+}
+#search_box p {
+	padding:0px 5px;
+}
+#search_box_inner {
+	margin-left:0px;
+	padding:0px;
+	width:105px;
+	height:21px;
+	float:left;
+}
+#search_query {
+	border:0px;
+	padding:3px 0px 0px 6px;
+	margin:0px 0px 0px 5px;
+	background-image:url(../images/template/search.gif);
+	background-repeat:no-repeat;
+	background-position:left;
+	width:105px;
+	height:20px;
+}
+#search_box_go {
+	float:left;
+	padding-top:0px;
+}
+/*Shopping Cart On the Menu*/
+#shopping_cart_summary {
+	background:url(../images/template/we_accept.gif) no-repeat;
+	width:142px;
+	height:71px;
+	color:#8f6637;
+	padding:24px 0 0 0;
+	font-family:Tahoma, Arial;
+	font-size:11px;
+	margin:0 0 0 4px;
+}
+#shopping_cart_summary div {
+	text-align:center;
+}
+#shopping_cart_summary a, #shopping_cart_summary a:link, #shopping_cart_summary a:visited {
+	color:#8f6637;
+	text-decoration:none;
+}
+#shopping_cart_summary a:hover {
+	color:#8f6637;
+	text-decoration:underline;
+}
+/*General Content*/
+
+h1 {
+	font-family:Georgia, "Times New Roman", Times, serif;
+	font-size:18px;
+	color:#cb4c72;
+	font-weight:normal;
+}
+h2 {
+	font-family:Georgia, "Times New Roman", Times, serif;
+	font-size:16px;
+	color:#936a39;
+	font-weight:normal;
+}
+h3 {
+	font-family:Georgia, "Times New Roman", Times, serif;
+	font-size:14px;
+	color:#1d6d85;
+}
+h4 {
+	font-family:Georgia, "Times New Roman", Times, serif;
+	font-size:12px;
+	color:#634f34;
+}
+form {
+	margin:0px;
+	padding:0px;
+}
+.image_border {
+	border: 1px solid #dfd0be;
+	margin: 3px 10px;
+	padding: 3px;
+}
+hr {
+	border: 0;
+	color: #dfd0be;
+	background-color: #dfd0be;
+	height: 1px;
+	width: 100%;
+	text-align: left;
+	clear:both;
+}
+hr.clear {
+	margin-top:10px;
+	margin:0px;
+	clear:both;
+	visibility:hidden;
+}
+/* font sizes */
+.size9 {
+	font-size:9px;
+}
+.size10 {
+	font-size:10px;
+}
+.size11 {
+	font-size:11px;
+}
+.size12 {
+	font-size:12px;
+}
+.size14 {
+	font-size:14px;
+}
+.size20 {
+	font-size:20px;
+}
+.size22 {
+	font-size:22px;
+}
+/*HOME PAGE*/
+
+.slide {
+	width:666px;
+	height:226px;
+}
+ul.ticklist {
+	padding:0px 0px 0px 15px; /*indent whole list*/
+}
+ul.ticklist li {
+	list-style:none;
+	background-image:url(../images/template/icon_tick.gif);
+	background-position:left 3px; /*the number here moves the tick down*/
+	background-repeat:no-repeat;
+	margin:0px 0px 5px 0px;
+	padding:0px;
+	padding-left:20px;
+	line-height:normal;
+}
+/*About Page*/
+
+.service_table td {
+	padding:3px 8px;
+	color:#624f34;
+	font-size:12px;
+	height:28px;
+}
+th { /*top row of the table*/
+	background-color:#fec1d1;
+	color:#FFFFFF;
+	font-weight:bold;
+	border-bottom:1px solid #ffffff;
+	height:28px;
+}
+.row1 {
+	background-color:#fff5f8;
+}
+.row2 {
+	background-color:#FFFFFF;
+}
+/*SHOP*/
+
+.product_box {
+	width:132px; /*140px minus padding*/
+	height:137px;
+	float:left;
+	background-color:#FFFFFF;
+	border:1px solid #e2dacf;
+	padding:4px;
+	margin:0px 9px 25px 9px;
+	text-align:center;
+	font-family:"Times New Roman", Times, serif;
+	font-size:13px;
+}
+.product_box p {
+	margin:0px;
+	padding:0px 0px 5px 0px;
+}
+/*Contact Page*/
+
+.left_details {
+	float:left;
+	width:240px;
+}
+.photo_contact {
+	width:357px;
+	height:225px;
+	float:right;
+}
+.contact_title {
+	color:#f07398;
+	font-weight:bold;
+	float:left;
+	width:70px;
+}
+.contact_detail {
+	float:left;
+	width:100px;
+	clear:right;
+}
+.forms {
+	background-color:#FFFFFF !important; /*the important gets rid of the yellow google toolbar field style*/
+	border:1px solid #f6a1ba !important;
+	margin:3px 0px;
+	padding:4px;
+}
+.pink {
+	color:#f07398;
+}
+#contact {
+	border:0;
+	width:480px;
+}
+#contact label {
+	float:left;
+	width:80px;
+	margin-right:15px;
+	clear:left;
+	color:#f07398;
+	font-weight:bold;
+	text-align:right;
+	height:32px;
+}
+#contact input, #contact textarea {
+	margin-right:40px;
+}
+#contact #submit {
+	clear:left;
+	margin-left:95px;
+}